o
    8ήc                     @   s   d dl Z d dlZd dlmZmZ d dlmZmZ d dlm	Z	m
Z
 e Zde_e Zde_e Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZG dd de	Zedkrme  dS dS )    N)compile_isolatedFlags)typeserrors)TestCaseCompilationCacheTc                 C   s   t |  }}|| S Nstrabc r   @/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/test_dataflow.pyassignments   s   r   c                 C   s   t |  } }}|| | S r   r	   )r   r   r   dr   r   r   assignments2   s   r   c                 C   s   | |kr| n|d }|S N   r   r   r   r   r   var_propagate1      r   c                 C   s    d| |kr| n|d d  }|S )Nr      g       @r   r   r   r   r   var_propagate2#   s   r   c                 C   s   d| |kr| p| }|S r   r   r   r   r   r   var_propagate3(   r   r   c                 C   s(   d| d o|d  p| d o|d }|S )Nr      r   r   r   r   r   var_propagate4-   s   $r   c                 C   s   d|   k o	dk S   S )Nr      r   )r   r   r   r   chained_compare3   s   r   c                 C   s*   d}d}|| krt dD ]}|}q|| S )N   r   r   range)xir   r   r   r   stack_effect_error8   s   r$   c                 C   s0   t | D ]}d} ||kr || fS q|} || fS )Nr   r    )nr"   r#   r   r   r   	for_breakA   s   r&   c                 C   sB   || } }|||}}}|||| f\} }}}| | | | | S r   r   )r   r   r   r   er   r   r   var_swappingK   s   
r(   c                   C   s   zW d S    Y d S r   r   r   r   r   r   unsupported_op_codeQ   s   r)   c                   @   s   e Zd Zdd ZefddZefddZdd Zd	d
 Zdd Z	dd Z
dd ZefddZdd ZefddZdd ZefddZdd ZefddZdd  Zd!S )"TestDataFlowc                 C   s   t  | _d S r   )r   cacheselfr   r   r   setUpZ   s   zTestDataFlow.setUpc                 C   >   t }t|tjf|d}|j}dD ]}| |||| qd S )Nflagsr   r   )r   r   r   int32entry_pointassertPreciseEqualr-   r1   pyfunccrcfuncr"   r   r   r   test_assignments]      zTestDataFlow.test_assignmentsc                 C   sR   t }t|tjf|d}|j}dD ]}| |||| q|tu r'|d d S d S )Nr0   r2   r   )r   r   r   r4   r5   r6   force_pyobj_flagsr7   r   r   r   test_assignments2d   s   zTestDataFlow.test_assignments2c                 C   s8   | j j|tjtjftd}|j}| || ||  d S )Nr0   )r+   compiler   r4   no_pyobj_flagsr5   r6   )r-   r8   argsr9   r:   r   r   r   run_propagate_funcq   s
   zTestDataFlow.run_propagate_funcc                 C      |  td |  td d S Nr   r   r   r   )rB   r   r,   r   r   r   test_var_propagate1w      z TestDataFlow.test_var_propagate1c                 C   rC   rD   )rB   r   r,   r   r   r   test_var_propagate2{   rH   z TestDataFlow.test_var_propagate2c                 C   sL   |  td |  td |  td |  td |  td |  td d S )NrE   rF   )r   r   r3   r   )r   r   r   r3   )rB   r   r,   r   r   r   test_var_propagate3   s   z TestDataFlow.test_var_propagate3c                 C   sp   |  td |  td |  td |  td |  td |  td |  td |  td |  td	 d S )
N)r   r   )r   r   )r   r3   )r   r   )r   r   rK   )r3   r   rJ   )r3   r3   )rB   r   r,   r   r   r   test_var_propagate4   s   z TestDataFlow.test_var_propagate4c                 C   r/   )Nr0   )r   r   r   r      )r   r   r   r4   r5   r6   r7   r   r   r   test_chained_compare   r<   z!TestDataFlow.test_chained_comparec                 C      |  t d S r   )rO   r@   r,   r   r   r   test_chained_compare_npm      z%TestDataFlow.test_chained_compare_npmc                 C   r/   )Nr0   )r   r   r   r   )r$   r   r   r4   r5   r6   r7   r   r   r   test_stack_effect_error   s   z$TestDataFlow.test_stack_effect_errorc                 C   rP   r   )rS   r@   r,   r   r   r   test_stack_effect_error_npm   rR   z(TestDataFlow.test_stack_effect_error_npmc                 C   sH   t }t|tjfd |d}|j}ttddd}| || ||  d S )Nr   r0   r   
   r   )r(   r   r   r4   r5   tupler!   r6   )r-   r1   r8   r9   r:   rA   r   r   r   test_var_swapping   s
   zTestDataFlow.test_var_swappingc                 C   rP   r   )rW   r@   r,   r   r   r   test_var_swapping_npm   rR   z"TestDataFlow.test_var_swapping_npmc                 C   sJ   t }t|tjtjf|d}|j}dD ]\}}| |||||| qd S )Nr0   ))rN   r   )rN      )r&   r   r   intpr5   r6   )r-   r1   r8   r9   r:   r%   r"   r   r   r   test_for_break   s   zTestDataFlow.test_for_breakc                 C   rP   r   )r[   r@   r,   r   r   r   test_for_break_npm   rR   zTestDataFlow.test_for_break_npmN)__name__
__module____qualname__r.   r=   r;   r>   rB   rG   rI   rL   rM   rO   rQ   rS   rT   rW   rX   r[   r\   r   r   r   r   r*   X   s"    	r*   __main__)warningsunittestnumba.core.compilerr   r   
numba.corer   r   numba.tests.supportr   r   enable_pyobj_flagsenable_pyobjectr=   force_pyobjectr@   r   r   r   r   r   r   r   r$   r&   r(   r)   r*   r]   mainr   r   r   r   <module>   s2    	
f