
    i?                       d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZmZmZmZmZ ddlmZ  edg d          Zd&dZ G d de          Z d'dZ! G d de          Z"d'dZ# G d d e          Z$ G d! d"e          Z% G d# d$e&e'ef                   Z(d%S )(zSemantic analyzer test cases    )annotations)build)PYTHON3_VERSION)CompileError)BuildSource)TypeInfo)Options)StrConv)test_temp_dir)DataDrivenTestCase	DataSuite)assert_string_arrays_equalfind_test_filesnormalize_error_messagesparse_optionstestfile_pyversion)TypeStrVisitorzsemanal-*.test)semanal-errors.testsemanal-errors-python310.testsemanal-typeinfo.testsemanal-symtable.test)patternexcludeprogram_textstrtestcaser   returnr	   c                x    t          | |d          }d|_        d|_        d|_        t          |_        d|_        |S )N   T)r   use_builtins_fixturessemantic_analysis_onlyshow_tracebackr   python_versionreveal_verbose_types)r   r   optionss      T/root/projects/qq-shell/venv/lib64/python3.11/site-packages/mypy/test/testsemanal.pyget_semanal_optionsr'   %   s@    L(A66G$(G!%)G"!G,G#'G N    c                      e Zd ZeZdZddZdS )	SemAnalSuiteTr   r   r   Nonec                $    t          |           d S N)test_semanalselfr   s     r&   run_casezSemAnalSuite.run_case3   s    Xr(   Nr   r   r   r+   )__name__
__module____qualname__semanal_filesfiles
native_sepr1    r(   r&   r*   r*   /   s2        EJ     r(   r*   r+   c           	        	 d                     | j                  }t          ||           }t          | j                  |_        t          j        t          dd|          g|t                    }|j	        }|rt          |          t          |j                                                  D ]A}|| j        v r6||j        |                             |                              d          z  }Bn# t          $ r}|j        }Y d}~nd}~ww xY w| j        rt'          |          }t)          | j        |d| j         d| j         d           dS )zPerform a semantic analysis test case.

    The testcase argument contains a description of the test case
    (inputs and output).
    
mainNsourcesr%   alt_lib_path"Invalid semantic analyzer output (, line ))joininputr'   r   filer#   r   r   r   errorsr   sortedr7   keystest_modulesstr_with_optionssplitmessagesnormalize_outputr   r   outputline)r   srcr%   resultamodulees          r&   r.   r.   7   sx   ii''%c844!3HM!B!B s334gTa
 
 
 M 	"q//! V\..0011 	P 	PF...V\&)::7CCII$OOO	P    J  ($Q''	SX]SS8=SSS    s   C/C2 2
D<DDc                      e Zd ZddgZd	dZdS )
SemAnalErrorSuiter   r   r   r   r   r+   c                $    t          |           d S r-   )test_semanal_errorr/   s     r&   r1   zSemAnalErrorSuite.run_case^   s    8$$$$$r(   Nr2   )r3   r4   r5   r7   r1   r9   r(   r&   rV   rV   [   s3        "$CDE% % % % % %r(   rV   c           	     v   	 d                     | j                  }t          j        t          dd|          gt	          ||           t
                    }|j        }n# t          $ r}|j        }Y d}~nd}~ww xY w| j	        rt          |          }t          | j        |d| j         d| j         d           dS )Perform a test case.r;   r<   Nr=   zInvalid compiler output (rA   rB   )rC   rD   r   r   r'   r   rF   r   rL   rM   r   r   rN   rE   rO   )r   rP   resrR   rT   s        r&   rX   rX   b   s    ii''k s334'X66&
 
 

 J    J   ($Q''^^^hm^^^    s   AA 
A9(A44A9c                       e Zd ZdZdgZd	dZdS )
SemAnalSymtableSuiteTr   r   r   r   r+   c           	        	 d                     |j                  }t          j        t          dd|          gt	          ||          t
                    }|j        }|rt          |          t          |j	        
                                          D ]p}||j        v re|                    | d           t          |j	        |         j                                      d          D ]}|                    d|z              qn# t          $ r}|j        }Y d}~nd}~ww xY wt#          |j        |d|j         d|j         d	           dS )
rZ   r;   r<   Nr=   :  r@   rA   rB   )rC   rD   r   r   r'   r   rF   r   rG   r7   rH   rI   appendr   namesrK   rL   r   rN   rE   rO   )r0   r   rP   rQ   rR   rS   srT   s           r&   r1   zSemAnalSymtableSuite.run_case   sx   	))HN++C[$VT3778+C::*  F A &"1oo% !2!2!4!455 + +X222HH\\\*** f!5!;<<BB4HH + +****	+
  	 	 	
AAAAAA	"OWWWx}WWW	
 	
 	
 	
 	
s   DD 
D!DD!Nr2   )r3   r4   r5   required_out_sectionr7   r1   r9   r(   r&   r]   r]   {   s6        $%E
 
 
 
 
 
r(   r]   c                  2     e Zd ZdZdgZd	 fdZd
dZ xZS )SemAnalTypeInfoSuiteTr   r   r+   c                    t                                                       t          t                                | _        t          t                                | _        d S )N)r%   )supersetupr
   r	   str_convr   type_str_conv)r0   	__class__s    r&   ri   zSemAnalTypeInfoSuite.setup   sG    		222+GII>>>r(   r   r   c           	     P  
 d                     |j                  }t          ||          }|| j        _        || j        _        	 t          j        t          dd|          g|t                    }|j	        }|rt          |          t                      }|j                                        D ]|\  }}||j        v rn|j                                        D ]T
t#          
j        t&                    r8
j        sJ t+          
fd|j        D                       r
j        |
j        <   U}|                    | j        | j                                      d          }n# t          $ r}	|	j        }Y d}	~	nd}	~	ww xY wt3          |j        |d|j         d|j         d           dS )	rZ   r;   r<   Nr=   c              3  R   K   | ]!}j                             |d z             V  "dS ).N)fullname
startswith).0mns     r&   	<genexpr>z0SemAnalTypeInfoSuite.run_case.<locals>.<genexpr>   s7      "a"aa1:#8#8S#A#A"a"a"a"a"a"ar(   r@   rA   rB   )rC   rD   r'   rj   r%   rk   r   r   r   rF   r   TypeInfoMapr7   itemsrI   rb   values
isinstancenoder   rp   anydumprK   rL   r   rN   rE   rO   )r0   r   rP   r%   rQ   rR   	typeinfosrS   rE   rT   rt   s             @r&   r1   zSemAnalTypeInfoSuite.run_case   s   ii''%c844 '%,"	[$VT3778*  F
 A &"1oo% $I & 2 2 4 4 ? ?X222!Z..00 ? ?%afh77 ?#$:---""a"a"a"a8K`"a"a"aaa ?89	!* 5 t}d.@AAGGMMAA 	 	 	
AAAAAA	"OWWWx}WWW	
 	
 	
 	
 	
s   DE! !
E<+E77E<)r   r+   r2   )r3   r4   r5   rd   r7   ri   r1   __classcell__)rl   s   @r&   rf   rf      s_        $%E? ? ? ? ? ?
#
 #
 #
 #
 #
 #
 #
 #
r(   rf   c                      e Zd Zd	dZdS )
rv   rj   r
   rk   r   r   r   c                N   dg}t          |                                           D ]\\  }}d                    |                    ||                              d                    }|                    d| d|            ]|dxx         dz  cc<   d                    |          S )NzTypeInfoMap(z
  r;   r`   z : rB   )rG   rw   rC   r|   rK   ra   )r0   rj   rk   rR   xytis          r&   r|   zTypeInfoMap.dump   s    &'4::<<(( 	& 	&DAq##AFF8]$C$C$I$I$$O$OPPBHH_!____%%%%	"yy||r(   N)rj   r
   rk   r   r   r   )r3   r4   r5   r|   r9   r(   r&   rv   rv      s(             r(   rv   N)r   r   r   r   r   r	   r2   ))__doc__
__future__r   mypyr   mypy.defaultsr   mypy.errorsr   mypy.modulefinderr   
mypy.nodesr   mypy.optionsr	   mypy.strconvr
   mypy.test.configr   mypy.test.datar   r   mypy.test.helpersr   r   r   r   r   
mypy.typesr   r6   r'   r*   r.   rV   rX   r]   rf   dictr   rv   r9   r(   r&   <module>r      sk   " " " " " " " "       ) ) ) ) ) ) $ $ $ $ $ $ ) ) ) ) ) )                               * * * * * * 8 8 8 8 8 8 8 8              & % % % % %           9      H% % % % %	 % % %   2
 
 
 
 
9 
 
 
B,
 ,
 ,
 ,
 ,
9 ,
 ,
 ,
^    $sH}%     r(   