
    i	                    
   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mZmZmZmZ ddlmZ ddlmZ ddlmZ  G d de          Z  G d de           Z! G d de           Z"dS )z!Runner for IR optimization tests.    )annotationsN)CompileError)test_temp_dir)DataDrivenTestCase)TOP_LEVEL_NAME)FuncIR)format_func)CompilerOptions)ICODE_GEN_BUILTINSMypycDataSuiteassert_test_outputbuild_ir_for_single_fileremove_comment_linesuse_custom_builtins)do_copy_propagation)do_flag_elimination)insert_uninit_checksc                  &    e Zd ZdZeZddZdd	Zd
S )OptimizationSuitez~Base class for IR optimization test suites.

    To use this, add a base class and define "files" and "do_optimizations".
    testcaser   returnNonec                N   t          t          j                            | j        t
                    |          5  t          |j                  }	 t          |j	                  }g }|D ]t}|j
        t          k    r|j
                            d          s-t          |d           |                     |           |                    t!          |                     un# t"          $ r}|j        }Y d }~nd }~ww xY wt'          ||d|           d d d            d S # 1 swxY w Y   d S )N	_toplevelTzInvalid source code output)r   ospathjoindata_prefixr   r   outputr   inputnamer   endswithr   do_optimizationsextendr	   r   messagesr   )selfr   expected_outputiractualfnes          \/root/projects/qq-shell/venv/lib64/python3.11/site-packages/mypyc/test/test_optimizations.pyrun_casezOptimizationSuite.run_case#   s    d.>@R!S!SU]^^ 	` 	`28?CCO3-hn==  3 3Bw.009O9OP[9\9\0 (T222))"---MM+b//22223	   $ $ $$ x1M___	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	`s<   DC#A:D
C8'C3.D3C88DD!Dr*   r   c                    t           )N)NotImplementedErrorr&   r*   s     r,   r#   z"OptimizationSuite.do_optimizations5   s    !!    N)r   r   r   r   r*   r   r   r   )__name__
__module____qualname____doc__r   	base_pathr-   r#    r1   r,   r   r      sQ         
 I` ` ` `$" " " " " "r1   r   c                      e Zd ZdgZddZdS )	TestCopyPropagationzopt-copy-propagation.testr*   r   r   r   c                B    t          |t          d                     d S NT)strict_traceback_checks)r   r
   r0   s     r,   r#   z$TestCopyPropagation.do_optimizations<   #    B M M MNNNNNr1   Nr2   r3   r4   r5   filesr#   r8   r1   r,   r:   r:   9   6        ()EO O O O O Or1   r:   c                      e Zd ZdgZddZdS )	TestFlagEliminationzopt-flag-elimination.testr*   r   r   r   c                B    t          |t          d                     d S r<   )r   r
   r0   s     r,   r#   z$TestFlagElimination.do_optimizationsC   r>   r1   Nr2   r?   r8   r1   r,   rC   rC   @   rA   r1   rC   )#r6   
__future__r   os.pathr   mypy.errorsr   mypy.test.configr   mypy.test.datar   mypyc.commonr   mypyc.ir.func_irr   mypyc.ir.pprintr	   mypyc.optionsr
   mypyc.test.testutilr   r   r   r   r   r    mypyc.transform.copy_propagationr    mypyc.transform.flag_eliminationr   mypyc.transform.uninitr   r   r:   rC   r8   r1   r,   <module>rR      s   ' ' " " " " " "  $ $ $ $ $ $ * * * * * * - - - - - - ' ' ' ' ' ' # # # # # # ' ' ' ' ' ' ) ) ) ) ) )                A @ @ @ @ @ @ @ @ @ @ @ 7 7 7 7 7 7" " " " " " " "<O O O O O+ O O OO O O O O+ O O O O Or1   