o
    2g                     @  s   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 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                   @  s"   e Zd ZeZeZdZd	ddZdS )
TestAnalysisTtestcaser   returnNonec                   s  t tj| jt| zt|j}W n ty( } z	|j	}W Y d}~nd}~ww g }|D ]}|j
tkr;|j
ds;q-t| |t| t|j}t|j}|j
}|drct|j||}	n4|drpt|j|}	n'|drtj|j||t|j|jd}	n|drt|j||}	nJ d	t|j|j t|	j d
d dD ]9}
dt fdd|	j|
 D }dt fdd|	j|
 D }| d|
d j!|
d fd| d| f  qq-t"||d W d   dS 1 sw   Y  dS )z'Perform a data-flow analysis test case.N	_toplevel_MaybeDefined	_Liveness_MustDefined)regs_BorrowedArgumentFz/No recognized _AnalysisName suffix in test casec                 S  s   | d j | d fS )Nr      )label)x r   P/home/garg/my-data/venv/lib/python3.10/site-packages/mypyc/test/test_analysis.py<lambda>F   s    z'TestAnalysis.run_case.<locals>.<lambda>)keyz, c                 3      | ]} | V  qd S Nr   .0regnamesr   r    	<genexpr>H       z(TestAnalysis.run_case.<locals>.<genexpr>c                 3  r#   r$   r   r%   r(   r   r    r*   I   r+   z%-8s %-23s %sr   r   z{%s}zInvalid source code output)#r   ospathjoindata_prefixr   r   inputr   messages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   )selfr   ireactualfncfgargsr2   analysis_resultr"   prepostr   r(   r    run_case    sN   






""""zTestAnalysis.run_caseN)r   r   r   r   )__name__
__module____qualname__filesr   	base_pathoptional_outrM   r   r   r   r    r      s
    r   ) __doc__
__future__r   os.pathr,   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   rQ   r   r   r   r   r    <module>   s    