
    ܙd                     $   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 Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Z G d de	          Zedk    r ej                     dS dS )    N)compile_isolatedFlags)typeserrors)TestCaseCompilationCacheTc                 .    t          |           x}}||z   S Nstrabcs      9lib/python3.11/site-packages/numba/tests/test_dataflow.pyassignmentsr      s    FFNAq5L    c                 8    t          |           x}x}}||z   |z   S r
   r   )r   r   r   ds       r   assignments2r      s%    AAAq519r   c                      | |k    r| n|dz   }|S N    r   s      r   var_propagate1r      s    !eeaAHr   c                 ,    d| |k    r| n|dz   dz  z   }|S )Nr      g       @r   r   s      r   var_propagate2r   #   s&    	!a%%QQQVs**AHr   c                      d| |k    r| p|z   }|S r   r   r   s      r   var_propagate3r    (   s    	QU[qAAHr   c                 4    d| dz
  o|dz   z   p	| dz   o|dz
  }|S )Nr      r   r   s      r   var_propagate4r#   -   s.    	QU_q1u2!a%/AEAHr   c                 "    d| cxk     odk     nc S )Nr"      r   )r   s    r   chained_comparer&   3   s    q999919999r   c                 H    d}d}|| k    rt          d          D ]}|}||z   S )N   r"   r%   range)xir   s      r   stack_effect_errorr-   8   s:    	A	AAvvq 	 	AAAq5Lr   c                 F    t          |           D ]}d} ||k    r n|} || fS )Nr   r)   )nr+   r,   s      r   	for_breakr0   A   s?    1XX  66E  a4Kr   c                 H    || }} |||}}}|||| f\  } }}}| |z   |z   |z   |z   S r
   r   )r   r   r   r   es        r   var_swappingr3   K   sD    aqAA!qAAq!JAq!Qq519q=!r   c                       e Zd Zd ZefdZefdZd Zd Zd Z	d Z
d Zefd	Zd
 ZefdZd ZefdZd ZefdZd ZdS )TestDataFlowc                 ,    t                      | _        d S r
   )r   cacheselfs    r   setUpzTestDataFlow.setUpS   s    %''


r   c                     t           }t          |t          j        f|          }|j        }dD ]*}|                      ||           ||                     +d S )Nflagsr   r"   )r   r   r   int32entry_pointassertPreciseEqualr9   r=   pyfunccrcfuncr+   s         r   test_assignmentszTestDataFlow.test_assignmentsV   sh    fu{nEBBB 	9 	9A##FF1IIuuQxx8888	9 	9r   c                     t           }t          |t          j        f|          }|j        }dD ]*}|                      ||           ||                     +|t          u r |d           d S d S )Nr<   r>   r   )r   r   r   r@   rA   rB   force_pyobj_flagsrC   s         r   test_assignments2zTestDataFlow.test_assignments2]   s    fu{nEBBB 	9 	9A##FF1IIuuQxx8888%%%E#JJJJJ &%r   c                     | j                             |t          j        t          j        ft                    }|j        }|                      ||  ||            d S )Nr<   )r7   compiler   r@   no_pyobj_flagsrA   rB   )r9   rD   argsrE   rF   s        r   run_propagate_funczTestDataFlow.run_propagate_funcj   s]    Zek(B&4   6 6tffdm<<<<<r   c                 r    |                      t          d           |                      t          d           d S Nr(   r%   r%   r(   )rO   r   r8   s    r   test_var_propagate1z TestDataFlow.test_var_propagate1p   4    77777777r   c                 r    |                      t          d           |                      t          d           d S rQ   )rO   r   r8   s    r   test_var_propagate2z TestDataFlow.test_var_propagate2t   rU   r   c                 J   |                      t          d           |                      t          d           |                      t          d           |                      t          d           |                      t          d           |                      t          d           d S )NrR   rS   )r(   r   r?   r   )r   r(   r   r?   )rO   r    r8   s    r   test_var_propagate3z TestDataFlow.test_var_propagate3x   s    77777777788877788888r   c                    |                      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"   r?   )r   r"   )r   r   rZ   )r?   r"   rY   )r?   r?   )rO   r#   r8   s    r   test_var_propagate4z TestDataFlow.test_var_propagate4   s    77777788877777788888888899999r   c                     t           }t          |t          j        f|          }|j        }dD ]*}|                      ||           ||                     +d S )Nr<   )r   r"   r(   r%      )r&   r   r   r@   rA   rB   rC   s         r   test_chained_comparez!TestDataFlow.test_chained_compare   sh     fu{nEBBB  	9 	9A##FF1IIuuQxx8888	9 	9r   c                 :    |                      t                     d S r
   )r`   rM   r8   s    r   test_chained_compare_npmz%TestDataFlow.test_chained_compare_npm   s    !!.11111r   c                     t           }t          |t          j        f|          }|j        }dD ]*}|                      ||           ||                     +d S )Nr<   )r   r"   r(   r%   )r-   r   r   r@   rA   rB   rC   s         r   test_stack_effect_errorz$TestDataFlow.test_stack_effect_error   sj     $fu{nEBBB 	9 	9A##FF1IIuuQxx8888	9 	9r   c                 :    |                      t                     d S r
   )rd   rM   r8   s    r   test_stack_effect_error_npmz(TestDataFlow.test_stack_effect_error_npm   s    $$^44444r   c                     t           }t          |t          j        fdz  |          }|j        }t          t          ddd                    }|                      ||  ||            d S )Nr   r<   r   
   r(   )r3   r   r   r@   rA   tupler*   rB   )r9   r=   rD   rE   rF   rN   s         r   test_var_swappingzTestDataFlow.test_var_swapping   sj    fu{nq&8FFFU1b!__%%uud|<<<<<r   c                 :    |                      t                     d S r
   )rj   rM   r8   s    r   test_var_swapping_npmz"TestDataFlow.test_var_swapping_npm   s    ~.....r   c                     t           }t          |t          j        t          j        f|          }|j        }dD ]/\  }}|                      |||           |||                     0d S )Nr<   ))r_   r(   )r_      )r0   r   r   intprA   rB   )r9   r=   rD   rE   rF   r/   r+   s          r   test_for_breakzTestDataFlow.test_for_break   su    fuz5:&>eLLL& 	? 	?FQ##FF1aLL%%1++>>>>	? 	?r   c                 :    |                      t                     d S r
   )rp   rM   r8   s    r   test_for_break_npmzTestDataFlow.test_for_break_npm   s    N+++++r   N)__name__
__module____qualname__r:   rI   rG   rJ   rO   rT   rW   r[   r]   r`   rb   rd   rf   rj   rl   rp   rr   r   r   r   r5   r5   Q   s@       ( ( ( &7 9 9 9 9 '8    = = =8 8 88 8 89 9 9	: 	: 	: *; 9 9 9 92 2 2 -> 9 9 9 95 5 5 '8 = = = =/ / / $5 ? ? ? ?, , , , ,r   r5   __main__)warningsunittestnumba.core.compilerr   r   
numba.corer   r   numba.tests.supportr   r   enable_pyobj_flagsenable_pyobjectrI   force_pyobjectrM   r   r   r   r   r    r#   r&   r-   r0   r3   r5   rs   mainr   r   r   <module>r      s     7 7 7 7 7 7 7 7 $ $ $ $ $ $ $ $ : : : : : : : : UWW %)  "EGG #'     
    
  
  
    
      c, c, c, c, c,8 c, c, c,L zHMOOOOO r   