
    X-Ph                        d Z ddlmZ ddl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 dgZ G d de          ZdS )z.Test runner for data-flow analysis test cases.    )annotationsN)CompileError)test_temp_dir)DataDrivenTestCase)dataflow)TOP_LEVEL_NAME)
all_values)Value)format_funcgenerate_names_for_ir)ICODE_GEN_BUILTINSMypycDataSuiteassert_test_outputbuild_ir_for_single_fileuse_custom_builtins)
exceptionszanalysis.testc                  "    e Zd ZeZeZdZddZdS )	TestAnalysisTtestcaser   returnNonec                   t          t          j                            | j        t
                    |          5  	 t          |j                  }g }|D ]o}|j        t          k    r|j        
                    d          s.t          j        |           |                    t          |                     t          j        |j                  }t%          |j                  }|j        }|
                    d          rt          j        |j        ||          }n|
                    d          rt          j        |j        |          }n|
                    d          r6t          j        |j        ||t/          |j        |j                            }n;|
                    d          rt          j        |j        ||          }n
J d            t3          |j        |j                  t5          |j                                        d	 
          D ]}	d                    t5          fd|j        |	         D                                 }
d                    t5          fd|j        |	         D                                 }|                    |	d         j        |	d         fddd|
z  ddd|z             qn# t@          $ r}|j!        }Y d}~nd}~ww xY wtE          ||d           ddd           dS # 1 swxY w Y   dS )z'Perform a data-flow analysis test case.	_toplevel_MaybeDefined	_Liveness_MustDefined)regs_BorrowedArgumentFz/No recognized _AnalysisName suffix in test casec                ,    | d         j         | d         fS )Nr      )label)xs    X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypyc/test/test_analysis.py<lambda>z'TestAnalysis.run_case.<locals>.<lambda>F   s    adjRSTURVEW     )keyz, c              3  (   K   | ]}|         V  d S N .0regnamess     r#   	<genexpr>z(TestAnalysis.run_case.<locals>.<genexpr>H   s'      .a.acuSz.a.a.a.a.a.ar%   c              3  (   K   | ]}|         V  d S r(   r)   r*   s     r#   r.   z(TestAnalysis.run_case.<locals>.<genexpr>I   s'      /a/asc
/a/a/a/a/a/ar%   r   r    8 z{%s}23NzInvalid source code output)#r   ospathjoindata_prefixr   r   inputnamer   endswithr   insert_exception_handlingextendr   r   get_cfgblockssetarg_regsanalyze_maybe_defined_regsanalyze_live_regsanalyze_must_defined_regsr	   analyze_borrowed_argumentsr   sortedbeforekeysafterappendr!   r   messagesr   )selfr   iractualfncfgargsr8   analysis_resultr&   preposter-   s                @r#   run_casezTestAnalysis.run_case    s    !d.>@R!S!SU]^^ *	O *	O(-hn==  " "Bw.009O9OP[9\9\0 8<<<MM+b//222"*2955C'*2;'7'7D#=D}}_55 X*2*MbiY\^b*c*c{33 X*2*DRYPS*T*T~66 	X*2*LIsDz"+ry7Y7Y+ + + ':;; X*2*MbiY\^b*c*cW&WWWW1"+ryIIE%'.3355;W;W        #ii.a.a.a.a_E[\_E`.a.a.a(a(abb#yy/a/a/a/aoF[\_F`/a/a/a)a)abb03Ac!f/E/E/E/EvPS||||U[^bUbUbc   7"	   $ $ $$N x1MNNNU*	O *	O *	O *	O *	O *	O *	O *	O *	O *	O *	O *	O *	O *	O *	O *	O *	O *	Os;   LKI6L
K!KLK!!LL	LN)r   r   r   r   )__name__
__module____qualname__filesr   	base_pathoptional_outrT   r)   r%   r#   r   r      s=        EIL-O -O -O -O -O -Or%   r   ) __doc__
__future__r   os.pathr3   mypy.errorsr   mypy.test.configr   mypy.test.datar   mypyc.analysisr   mypyc.commonr   mypyc.ir.func_irr	   mypyc.ir.opsr
   mypyc.ir.pprintr   r   mypyc.test.testutilr   r   r   r   r   mypyc.transformr   rX   r   r)   r%   r#   <module>rh      s\   4 4 " " " " " "  $ $ $ $ $ $ * * * * * * - - - - - - # # # # # # ' ' ' ' ' ' ' ' ' ' ' '       > > > > > > > >              ' & & & & &	2O 2O 2O 2O 2O> 2O 2O 2O 2O 2Or%   