
    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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                L   t          t          j                            | j        t
                    |          5  t          |j                  }	 t          |j	                  }g }|D ]s}|j
        t          k    r|j
                            d          s-t          |           |                     |           |                    t!          |                     tn# 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	_toplevelz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          ]/var/www/html/test/jupyter/venv/lib/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 (,,,))"---MM+b//22223	   $ $ $$ x1M___	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	` 	`s<   DC#A9D
C7&C2-D2C77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#    r2   r,   r   r      sQ         
 I` ` ` `$" " " " " "r2   r   c                      e Zd ZdgZddZdS )	TestCopyPropagationzopt-copy-propagation.testr*   r   r   r   c                >    t          |t                                 d S r/   )r   r
   r1   s     r,   r#   z$TestCopyPropagation.do_optimizations<       B 1 122222r2   Nr3   r4   r5   r6   filesr#   r9   r2   r,   r;   r;   9   0        ()E3 3 3 3 3 3r2   r;   c                      e Zd ZdgZddZdS )	TestFlagEliminationzopt-flag-elimination.testr*   r   r   r   c                >    t          |t                                 d S r/   )r   r
   r1   s     r,   r#   z$TestFlagElimination.do_optimizationsC   r=   r2   Nr3   r>   r9   r2   r,   rB   rB   @   r@   r2   rB   )#r7   
__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;   rB   r9   r2   r,   <module>rQ      s   ' ' " " " " " "  $ $ $ $ $ $ * * * * * * - - - - - - ' ' ' ' ' ' # # # # # # ' ' ' ' ' ' ) ) ) ) ) )                A @ @ @ @ @ @ @ @ @ @ @ 7 7 7 7 7 7" " " " " " " "<3 3 3 3 3+ 3 3 33 3 3 3 3+ 3 3 3 3 3r2   