
    xKgY                        d dl mZ d dlZd dlmZmZmZmZ d dl	m
Z
mZmZmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZ d d	lmZ d d
lmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0 dZ1 G d dee      Z2 edd       G d de             Z3 G d dee      Z4 G d dee      Z5 G d dee      Z6 G d de      Z7d Z8 G d de      Z9 G d  d!e      Z:e;d"k(  r ejx                          yy)#    )
namedtupleN)TestCaseMemoryLeakMixinskip_parfors_unsupportedcaptured_stdout)njittypedliteral_unrollprange)typeserrorsir)unittest)overload)PassManagerregister_passFunctionPassAnalysisPassCompilerBase)	FixupArgsTranslateByteCodeIRProcessingInlineClosureLikesSimplifyCFGIterLoopCanonicalizationLiteralUnroll
PreserveIR)NopythonTypeInferenceIRLegalizationNoPythonBackendPartialTypeInferenceNativeLowering)compute_cfg_from_blocksflatten_labels)_header_lead
      c                   $    e Zd Zd Zd Zd Zd Zy)TestLiteralTupleInterpretationc                 "   |j                   |j                  d      }|j                  j                  |   }| j	                  t        |t        j                               |D ],  }| j	                  t        |t        j                        d       . y )Nr   non literal)		overloads
signaturesfndesctypemap
assertTrue
isinstancer   TupleLiteral)selffuncvarcrestysubtys         i/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_mixed_tuple_unroller.pycheckz$TestLiteralTupleInterpretation.check   sg    ~~dooa01[[  %
2u{{34EOOJuemm<mL     c                     t         d        }| j                   |       |j                                | j                  |d       y )Nc                      d} | d   S )N         rB    xs    r<   foozDTestLiteralTupleInterpretation.test_homogeneous_literal.<locals>.foo$   s    AQ4Kr>   rG   r   assertEqualpy_funcr=   r6   rH   s     r<   test_homogeneous_literalz7TestLiteralTupleInterpretation.test_homogeneous_literal#   <    		 
	 	.

3r>   c                     t         d        }| j                   |       |j                                | j                  |d       y )Nc                      d} | d   S )N)rB   rC   rD   arD   rE   rF   s    r<   rH   zFTestLiteralTupleInterpretation.test_heterogeneous_literal.<locals>.foo-   s    AQ4Kr>   rG   rI   rL   s     r<   test_heterogeneous_literalz9TestLiteralTupleInterpretation.test_heterogeneous_literal,   rN   r>   c                 (   t         d        }| j                   |       |j                                | j                  t              5 }| j                  |d       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nc                      d} | d   S )N)rB   rC   rD   rQ                 ?   rE   rF   s    r<   rH   z<TestLiteralTupleInterpretation.test_non_literal.<locals>.foo6   s    "AQ4Kr>   rG   r-   )	r   rJ   rK   assertRaisesAssertionErrorr=   assertInstr	exception)r6   rH   es      r<   test_non_literalz/TestLiteralTupleInterpretation.test_non_literal5   ss    		 
	 	.~.!JJsC  / 	mS%56 /.s   BBN)__name__
__module____qualname__r=   rM   rR   r]   rE   r>   r<   r+   r+      s    M
7r>   r+   Fmutates_CFGanalysis_onlyc                       e Zd ZdZd Zd Zy)ResetTypeInforeset_the_type_informationc                 .    t        j                  |        y Nr   __init__r6   s    r<   rj   zResetTypeInfo.__init__F   s    d#r>   c                 .    d |_         d |_        d |_        y)NT)r1   return_type	calltypes)r6   states     r<   run_passzResetTypeInfo.run_passI   s     r>   N)r^   r_   r`   _namerj   rp   rE   r>   r<   re   re   B   s    (E$r>   re   c                       e Zd ZddZ ed      Z ed      Z edd      Zd Zd Z e	j                  d      d        Zd Z e	j                  d      d	        Zd
 Zy)TestLoopCanonicalisationFc                 .      G  fddt               }|S )Nc                       e Zd Z fdZy):TestLoopCanonicalisation.get_pipeline.<locals>.NewCompilerc                 \   t        d      }|j                  t        d       |j                  t        d       |j                  t        d       r|j                  t
        d       r|j                  t        d       |j                  t        d       r|j                  t        d       |j                  t        d	       |j                  t        d
       |j                  t        d       |j                  t        d       |j                  t        d       |j                          |gS )Ncustom_pipelineanalyzing bytecodeprocessing IRz(inline calls to locally defined closureszdo partial typingzCanonicalise loopszSimplify the CFGzresets the type info statenopython frontendzensure IR is legalzsave IR for later inspectionnative loweringnopython mode backend)r   add_passr   r   r   r"   r   r   re   r   r    r   r#   r!   finalize)r6   pmuse_canonicaliseruse_partial_typings     r<   define_pipelineszKTestLoopCanonicalisation.get_pipeline.<locals>.NewCompiler.define_pipelinesU   s     !23 -/CDL/:.FH%KK 46IJ$KK 8:NOK);< &KK/KL13FG N,@A J(FG N,=>O-DE tr>   N)r^   r_   r`   r   )r   r   s   r<   NewCompilerrv   S   s    !r>   r   r   )r   r   r   s   `` r<   get_pipelinez%TestLoopCanonicalisation.get_pipelineR   s    #	, #	H r>   Tc                      fd} | j                         \  }} | j                        \  }} fd} |||        j                  t        |j                        dz   t        |j                               d } ||d      } j                  t        |      d        ||d      }	 j                  t        |	      d        ||d      }
 j                  t        |
      d        j                  |d   j
                  j                  |
d   j
                  j                         |j                  |	d      j                  d   } j                  t        |t        j                               y	)
- This heavily checks a simple loop transform c                     t        |       d        }d}j                   ||      |j                  |             |j                  |j                  d      }|j
                  d   }||j                  fS )Npipeline_classc                 "    d}| D ]  }||z  }	 |S Nr   rE   )tupaccis      r<   rH   zQTestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.get_info.<locals>.foo   s    A1HC 
r>   rA   r   preserved_irr   rJ   rK   r.   r/   metadatar0   pipelinerH   rG   r9   func_irr6   s        r<   get_infozDTestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.get_info   sq    * + ASVS[[^4==!23DmmN3GDKK''r>   c                     t        t        | j                              }t        t        |j                              }j                  ||       y rh   r$   r%   blocksrJ   rQ   ba_cfgb_cfgr6   s       r<   compare_cfgzGTestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.compare_cfg   9    +N188,DEE+N188,DEEUE*r>   rD   c                     | j                   j                         D cg c]-  }t        |t        j                        r|j
                  |k(  r|/ c}S c c}w rh   rn   keysr3   r   Expropfdr   rG   s      r<   	find_getXzETestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.find_getX   L    !||002 >2!!!RWW-!$$"* 2 > > >   2AgetiterrB   getitemr   NLoopIgnoringCompilerLoopCanonicalisingCompilerrJ   lenrn   valuenameargsr2   r3   r   	RangeTyper6   r   ignore_loops_irignore_loops_fndesccanonicalise_loops_ircanonicalise_loops_fndescr   r   il_getiterscl_getiterscl_getitems
range_insts   `           r<   test_simple_loop_in_depthz2TestLoopCanonicalisation.test_simple_loop_in_depth~   sY   	( T../ 	-, T445 	98	+
 	O%:; 	0::;a?6@@A	C	>   3Y?[)1- 99E[)1- 99E[)1- 	Q--22KN4H4H4M4MN /88QHMMaP

:u?@r>   c                      fd} | j                         \  }} | j                        \  }} fd} |||        j                  t        |j                        dz   t        |j                               d } ||d      } j                  t        |      d        ||d      }	 j                  t        |	      d        ||d      }
 j                  t        |
      d        j                  |d   j
                  j                  |
d   j
                  j                         |j                  |	d      j                  d   } j                  t        |t        j                               y	)
z This checks the transform, when there's no typemap, will happily
        transform a loop on something that's not tuple-like
        c                     t        |       d        }j                   |       |j                                |j                  |j                  d      }|j
                  d   }||j                  fS )Nr   c                  "    d} dD ]  }| |z  } 	 | S Nr   rA   rE   r   r   s     r<   rH   zLTestLoopCanonicalisation.test_transform_scope.<locals>.get_info.<locals>.foo   s    "A1HC #
r>   r   r   r   )r   rH   r9   r   r6   s       r<   r   z?TestLoopCanonicalisation.test_transform_scope.<locals>.get_info   sh    * + SUCKKM2==!23DmmN3GDKK''r>   c                     t        t        | j                              }t        t        |j                              }j                  ||       y rh   r   r   s       r<   r   zBTestLoopCanonicalisation.test_transform_scope.<locals>.compare_cfg   r   r>   rD   c                     | j                   j                         D cg c]-  }t        |t        j                        r|j
                  |k(  r|/ c}S c c}w rh   r   r   s      r<   r   z@TestLoopCanonicalisation.test_transform_scope.<locals>.find_getX   r   r   r   rB   r   r   Nr   r   s   `           r<   test_transform_scopez-TestLoopCanonicalisation.test_transform_scope   sY   	( T../ 	-, T445 	98	+
 	O%:; 	0::;a?6@@A	C	>   3Y?[)1- 99E[)1- 99E[)1- 	Q--22KN4H4H4M4MN /88QHMMaP

:u?@r>   z-Waiting for pass to be enabled for all tuplesc                      fd} | j                         \  }} | j                        \  }} fd} |||        j                  t        |j                        dz   t        |j                               d } ||d      } j                  t        |      d        ||d      }	 j                  t        |	      d        ||d      }
 j                  t        |
      d        j                  |d   j
                  j                  |
d   j
                  j                         |	D ]G  }|j                  |   j                  d   } j                  t        |t        j                               I y	)
zT This heavily checks a typed transformation only impacts tuple
        induced loopsc                     t        |       d        }d}j                   ||      |j                  |             |j                  |j                  d      }|j
                  d   }||j                  fS )Nr   c                 b    d}t        d      D ]  }| D ]  }t        d      D ]  }|dz  }	    |S Nr   rV   rD   rB   ranger   r   r   yjs        r<   rH   zYTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.get_info.<locals>.foo   s=    qA !&qA1HC "* ! " 
r>   rA   r   r   r   r   s        r<   r   zLTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.get_info   sq    * + ASVS[[^4==!23DmmI.GDKK''r>   c                     t        t        | j                              }t        t        |j                              }j                  ||       y rh   r   r   s       r<   r   zOTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.compare_cfg  r   r>   rD   c                     | j                   j                         D cg c]-  }t        |t        j                        r|j
                  |k(  r|/ c}S c c}w rh   r   r   s      r<   r   zMTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.find_getX  r   r   r   r   rB   r   Nr   TypedLoopCanonicalisingCompilerrJ   r   rn   r   r   r   r2   r3   r   r   r6   r   r   r   r   r   r   r   r   r   r   rG   r   s   `            r<   !test_influence_of_typed_transformz:TestLoopCanonicalisation.test_influence_of_typed_transform   s_   
	(" T../ 	-, T99: 	98	+
 	O%:; 	0::;a?6@@A	C	>   3Y?[)1- 99E[)1- 99E[)1- 	Q--22KN4H4H4M4MN A2<<Q?DDQGJOOJz5??CD r>   c                      fd} | j                         \  }} | j                        \  }} fd} |||        j                  t        |j                        dz   t        |j                               d } ||d      } j                  t        |      d        ||d      }	 j                  t        |	      d        ||d      }
 j                  t        |
      d        j                  |d   j
                  j                  |
d   j
                  j                         |	D ]G  }|j                  |   j                  d   } j                  t        |t        j                               I y	)
za This heavily checks a typed transformation only impacts loops with
        literal_unroll markerc                     t        |       d        }d}j                   ||      |j                  |             |j                  |j                  d      }|j
                  d   }||j                  fS )Nr   c                 t    d}t        d      D ]'  }t        |       D ]  }t        d      D ]  }|dz  }	  ) |S r   )r   r
   r   s        r<   rH   zhTestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.get_info.<locals>.foo6  sB    qA+C0!&qA1HC "* 1 " 
r>   rA   r   r   r   r   s        r<   r   z[TestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.get_info5  sq    * + ASVS[[^4==!23DmmN3GDKK''r>   c                     t        t        | j                              }t        t        |j                              }j                  ||       y rh   r   r   s       r<   r   z^TestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.compare_cfgK  r   r>   rD   c                     | j                   j                         D cg c]-  }t        |t        j                        r|j
                  |k(  r|/ c}S c c}w rh   r   r   s      r<   r   z\TestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.find_getXY  r   r   r   r   rB   r   Nr   r   s   `            r<   0test_influence_of_typed_transform_literal_unrollzITestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll1  s_   	(" T../ 	-, T99: 	98	+
 	O%:; 	0::;a?6@@A	C	>   3Y?[)1- 99E[)1- 99E[)1- 	Q--22KN4H4H4M4MN A2<<Q?DDQGJOOJz5??CD r>   c                       fd} | j                         \  }} | j                        \  }} fd} |||        j                  t        |j                        dz   t        |j                               y)r   c                     t        |       d        }d}j                   ||      |j                  |             |j                  |j                  d      }|j
                  d   }||j                  fS )Nr   c                 |    d}| D ]%  }||z  }| dz   D ]  }|d|z
  z  }|dkD  s   |dz  }' | D ]
  }||dz  z  } |S )Nr   )rV         rB   r   rC   rE   )r   r   r   r   s       r<   rH   zJTestLoopCanonicalisation.test_lots_of_loops.<locals>.get_info.<locals>.foot  sj    A1HC 9_q1uq5! -
 q  A1q5LC  
r>   rA   r   r   r   r   s        r<   r   z=TestLoopCanonicalisation.test_lots_of_loops.<locals>.get_infos  sq    * + ASVS[[^4==!23DmmN3GDKK''r>   c                     t        t        | j                              }t        t        |j                              }j                  ||       y rh   r   r   s       r<   r   z@TestLoopCanonicalisation.test_lots_of_loops.<locals>.compare_cfg  r   r>   	   Nr   r   rJ   r   rn   r6   r   r   r   r   r   r   s   `      r<   test_lots_of_loopsz+TestLoopCanonicalisation.test_lots_of_loopso  s    	(0 T../ 	-, T445 	98	+
 	O%:; 	0::;eC6@@A	Cr>   c                       fd} | j                         \  }} | j                        \  }} fd} |||        j                  t        |j                        dz   t        |j                               y)z( Checks a loop appearing from a closure c                     t        |       d        }d}j                   ||      |j                  |             |j                  |j                  d      }|j
                  d   }||j                  fS )Nr   c                 >    d }d}| D ]  }||z  }| ||      z  } |S )Nc                 4    d}t        |       D ]  }|dz  }	 |S Nr   rB   r   )nr   r   s      r<   barzWTestLoopCanonicalisation.test_inlined_loops.<locals>.get_info.<locals>.foo.<locals>.bar  s#    C"1Xq &Jr>   r   rE   )r   r   r   r   s       r<   rH   zJTestLoopCanonicalisation.test_inlined_loops.<locals>.get_info.<locals>.foo  s5     A1HC3q6MC  
r>   rA   r   r   r   r   s        r<   r   z=TestLoopCanonicalisation.test_inlined_loops.<locals>.get_info  sq    * + ASVS[[^4==!23DmmN3GDKK''r>   c                     t        t        | j                              }t        t        |j                              }j                  ||       y rh   r   r   s       r<   r   z@TestLoopCanonicalisation.test_inlined_loops.<locals>.compare_cfg  r   r>   r   Nr   r   s   `      r<   test_inlined_loopsz+TestLoopCanonicalisation.test_inlined_loops  s    	(. T../ 	-, T445 	98	+
 	O%:; 	0::;a?6@@A	Cr>   N)F)r^   r_   r`   r   r   r   r   r   r   r   skipr   r   r   r   rE   r>   r<   rs   rs   P   s    %P (.!-d!3&24&>#8At8At X]]BC<E D<E|<E| X]]BC,C D,C\,Cr>   rs   c                   &   e Zd Zd Zd Zd Zd Zd Z ej                  d      d        Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze d        Z!e d        Z"e d        Z#d  Z$d! Z%d" Z&d# Z'd$ Z(y%)&TestMixedTupleUnrollc                 v    t         d        }d}|}| j                   |d|      |j                  d|             y )Nc                     dddd|d|z  f}d}t        t        t        |                  D ]!  }|||   z  }|j                  dk  r|dz  }  |S  |S 	N   ffffff)@              @rV   rC   r      rB   r   r   r
   real)idxzrQ   r   r   s        r<   rH   z)TestMixedTupleUnroll.test_01.<locals>.foo  sf    T2q!QU+AC3~a012qt88b=1HCJ 3 Jr>   r   rC   r   rJ   rK   r6   rH   fks       r<   test_01zTestMixedTupleUnroll.test_01  sA    			 
		 QCKK1$56r>   c                 v    t         d        }d}|}| j                   |d|      |j                  d|             y )Nc                 x    dddd|d|z  f}d}t        |      D ]  }||z  }|j                  dk  r|dz  } |S  |S r   r
   r   )r   r   rG   r   rQ   s        r<   rH   z)TestMixedTupleUnroll.test_02.<locals>.foo  sX    T2q!QU+AC#A&q88b=1HCJ ' Jr>   r   rC   r   r   s       r<   test_02zTestMixedTupleUnroll.test_02  sC     
		 
		 QCKK1$56r>   c                 v    t         d        }d}|}| j                   |d|      |j                  d|             y )Nc                     dddd|d|z  f}d|d|z  f}d}t        |      D ]5  }||z  }|j                  dk  r|d	z  }t        |      D ]	  }||d
u z  }  |S  |S )Nr   r   r   rV   rC   rH   r   r   rB   Fr  )r   r   rG   r   r   rQ   ts          r<   rH   z)TestMixedTupleUnroll.test_03.<locals>.foo  s    T2q!QU+A1q5!AC#A&q88b=1HC+A.qEz) /J ' Jr>   r   rC   r   r   s       r<   test_03zTestMixedTupleUnroll.test_03  sA    		 
	 QCKK1$56r>   c                     t         d        }d}t        j                  |f      t        j                  ||f      t        j                  |||f      f}| j                   ||      |j	                  |             y )Nc                 P    d}t        |       D ]  }||j                         z  } |S r   r
   sumr   r   rQ   s      r<   rH   z)TestMixedTupleUnroll.test_04.<locals>.foo  s*    C#C(quuw )Jr>   r(   r   nponesrJ   rK   r6   rH   r   r   s       r<   test_04zTestMixedTupleUnroll.test_04  si    		 
	 wwt}bggq!forww1ay/ABS3;;s#34r>   c                 `   t         d        }d}d}t        j                  |f      t        j                  ||f      t        j                  |||f      t        j                  ||||f      t        j                  |||||f      f}| j                   |||      |j	                  ||             y )Nc                 V   d}t        |       D ]  }|dk(  r||d   j                         z  }|dk(  r||d   j                         z  };|dk(  r||d   j                         z  }W|dk(  r||d   j                         z  }s|d	k(  r||d
   j                         z  }t        d       |S )Nr   rQ   r   rB   crC   r   rD   r   rV   Unreachable)r
   r  RuntimeErrortup1tup2r   rQ   s       r<   rH   z)TestMixedTupleUnroll.test_05.<locals>.foo  s    C#D)847;;=(C#X47;;=(C#X47;;=(C"W47;;=(C"W47;;=(C&}55 * Jr>   r(   )rQ   r   r  r   r   r  )r6   rH   r   r  r  s        r<   test_05zTestMixedTupleUnroll.test_05  s    		 
	" 'rww1vAq	0BAq!%rww1aA'?AT4#++dD*ABr>   zneeds more clever branch prunec                 n    t         d        }d}| j                   ||      |j                  |             y )Nc                     d}t         j                  j                  t        j                        }t        |       D ]  }|dk(  r|j                  |       ||z  }  |S )Nr   rQ   )r	   List
empty_listr   unicode_typer
   append)r   r   str_bufrQ   s       r<   rH   z)TestMixedTupleUnroll.test_06.<locals>.foo7  sS    Cjj++E,>,>?G#C(8NN1%1HC	 )
 Jr>   )rQ   r   r   )r6   rH   r   s      r<   test_06zTestMixedTupleUnroll.test_063  s:     
	 
	 S3;;s#34r>   c                     t         d        }d}t        j                  |f      t        j                  ||f      dddh df}| j                   ||      |j	                  |             y )Nc                 F    d}t        |       D ]  }|t        |      z  } |S r   r
   r   r  s      r<   rH   z)TestMixedTupleUnroll.test_07.<locals>.fooG  s(    C#C(s1v )Jr>   r(   
ABCDEFGHJIrA   rB   rH   rC   r      rD   rV   r   r      r  r  s       r<   test_07zTestMixedTupleUnroll.test_07E  sc    		 
	 wwt}bggq!fo|Y#_6S3;;s#34r>   c                     t         d        }d }d} |d       |d       |d      f}| j                   |||      |j                  ||             y )Nc                     d}t        |       D ];  }|dk(  r| |d          z  }|dk(  r| |d          z  })|dk(  s/| |d          z  }= |S )Nr   rQ   r   rB   r  rC   r
   r  s       r<   rH   z)TestMixedTupleUnroll.test_08.<locals>.fooV  sh    C#D)87479$C#X7479$C#X7479$C * Jr>   c                 $      fd}t        |      S )Nc                       S rh   rE   rF   s   r<   implz7TestMixedTupleUnroll.test_08.<locals>.gen.<locals>.implc  s    r>   r   )rG   r1  s   ` r<   genz)TestMixedTupleUnroll.test_08.<locals>.genb  s    :r>   )rQ   r   r  r   r   )r   rB   rC   rD   r   )r6   rH   r3  r  r  s        r<   test_08zTestMixedTupleUnroll.test_08S  s[     
		 
			
 /AAA'T4#++dD*ABr>   c                 8   t         d        }t         d        }t         d        }t         d        }d}d}| j                  t        j                        5 } |||       d d d        | j	                  t
        t        j                               y # 1 sw Y   3xY w)Nc                     d}d}t        |       D ]0  }|dk(  r	|||   z  }n|dk(  r	|||   z  }n|dk(  r|||   z  }|dz  }2 ||fS )Nr   rQ   r   r  rB   r.  )r  r  r   r   rQ   s        r<   rH   z)TestMixedTupleUnroll.test_09.<locals>.foon  sn    CC#D)849$C#X49$C#X49$Cq * 8Or>   c                       yNrB   rE   rE   r>   r<   func1z+TestMixedTupleUnroll.test_09.<locals>.func1|      r>   c                       yNrC   rE   rE   r>   r<   func2z+TestMixedTupleUnroll.test_09.<locals>.func2  r:  r>   c                       yNrD   rE   rE   r>   r<   func3z+TestMixedTupleUnroll.test_09.<locals>.func3  r:  r>   rQ   r   r  )rU   rB   rC   r   rW   r   TypingErrorrY   r&   rZ   r[   )r6   rH   r9  r=  r@  r  r  raisess           r<   test_09zTestMixedTupleUnroll.test_09k  s     
	 
	 
	 
	 
	 
	 
	 
	 v112fdO 3 	lC(8(8$9: 32s   
BBc                     d t        d      d        }t        fd       }| j                   |       |j                                y )Nc                 <    | dk(  ry| dk(  ry| dk(  ry| dk(  rd| z   S y 	NapplerB   orangerC   bananarD      +# \rE   r   s    r<   dtz(TestMixedTupleUnroll.test_10.<locals>.dt  ;    ("("*$!E)) %r>   alwaysinlinec                     t        | t        j                        r*| j                  dk(  rd }|S dk(  rd }|S dk(  rd }S t        | t        j                        r| j                  dk(  rfd}|S y y )	NrI  c                      yr8  rE   lis    r<   r1  z9TestMixedTupleUnroll.test_10.<locals>.ol_dt.<locals>.impl       r>   rJ  c                      yr<  rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_10.<locals>.ol_dt.<locals>.impl  rX  r>   rK  c                      yr?  rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_10.<locals>.ol_dt.<locals>.impl  rX  r>   rL  c                     dz   S NrM  rE   rW  r   s    r<   r1  z9TestMixedTupleUnroll.test_10.<locals>.ol_dt.<locals>.impl      )E11r>   r3   r   StringLiteralliteral_valueIntegerLiteralrW  r1  r   s     @r<   ol_dtz+TestMixedTupleUnroll.test_10.<locals>.ol_dt      "e112((G#!  h&!
  h&!B 4 45((J&2  K	 ' 6r>   c                  B    d} t        d      D ]  }|  |      z  }  | S Nr   )rI  rJ  rK  rL  r.  r   r  rO  s     r<   rH   z)TestMixedTupleUnroll.test_10.<locals>.foo  s+    C#$MNr!u OJr>   r   r   rJ   rK   r6   rd  rH   rO  s      @r<   test_10zTestMixedTupleUnroll.test_10  Q    	* 
"X	&	  
'	 * 
	 
	 	.r>   c                 f    t         d        }| j                   |       |j                                y )Nc                      g } d}t        t        t        |                  D ]L  }||   }|dk(  r| j                  d       |dk(  r| j                  |       6|dk(  s<| j                  d       N | S N)rI  rJ  rK  rI  0rJ  rK  z2.0r   r   r
   r!  rG   r   r   r  s       r<   rH   z)TestMixedTupleUnroll.test_11.<locals>.foo  sk    A-A3~a012aD<HHSM(]HHQK(]HHUO 3 Hr>   r   rL   s     r<   test_11zTestMixedTupleUnroll.test_11  .    		 
	 	.r>   c                 f    t         d        }| j                   |       |j                                y )Nc                  
   t        j                         } d}t        t        t	        |                  D ]L  }||   }|dk(  r| j                  d       |dk(  r| j                  |       6|dk(  s<| j                  d       N | S ro  )r	   r  r   r   r
   r!  rr  s       r<   rH   z*TestMixedTupleUnroll.test_11a.<locals>.foo  sq    

A-A3~a012aD<HHSM(]HHQK(]HHUO 3 Hr>   r   rL   s     r<   test_11azTestMixedTupleUnroll.test_11a  rt  r>   c                 v    t         d        }d}|}| j                   |d|      |j                  d|             y )Nc                     dddd|d|z  f}d}t        |      D ]2  }||z  }|j                  dk  r|dz  }t        |      D ]  }||z  }	  n |d   d	k  r|dz  }|S 
Nr   r   r   rV   rC   r   r   rB      r  r   r   rQ   r   r   rG   s         r<   rH   z)TestMixedTupleUnroll.test_12.<locals>.foo  s    T2q!QU+AC#A&q88b=1HC+A.q / ' tbyqJr>   r   rC   r   r   s       r<   test_12zTestMixedTupleUnroll.test_12  A    		 
	 QCKK1$56r>   c                     t         d        }d}|}| j                  t        j                        5 } |d|       d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                 6   dddd|d|z  f}d}t        |      D ][  }||z  }|j                  dk  r|dz  }n*t        |      D ]  }t        |      D ]  }||z  }	 ||z  } t        |      D ]  }||z  }	 ] t        |      D ]  }||z  }	 |d   d	k  r|dz  }|S rz  r  )r   r   rQ   r   r   rG   r   s          r<   rH   z)TestMixedTupleUnroll.test_13.<locals>.foo  s    T2q!QU+AC#A&q88b=1HC+A.!/!2A1HC "3q / (*A1HC + ' $A&q 'tbyqJr>   r   rC   (Nesting of literal_unroll is unsupportedr   rW   r   UnsupportedErrorrY   rZ   r[   r6   rH   r   r   rD  s        r<   test_13zTestMixedTupleUnroll.test_13  sl    		 
	( v66761I 8 	@&**+	- 87   
A((A1c                 f    t         d        }| j                   |       |j                                y )Nc                  8    d} d}t        |       D ]  }||z  }	 S NrB   rC   rD   rV   r   r.  rG   r   rQ   s      r<   rH   z)TestMixedTupleUnroll.test_14.<locals>.foo  s)    AC#A&q 'Hr>   r   rL   s     r<   test_14zTestMixedTupleUnroll.test_14  s0     
	 
	 	.r>   c                 H   t         d        }d}t        j                  |f      t        j                  ||f      dddh df}| j                  t        j
                        5 } ||       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nc                 F    d}t        |       D ]  }|t        |      z  } S r   r&  r  s      r<   rH   z)TestMixedTupleUnroll.test_15.<locals>.foo'  s(    C#A&s1v 'Hr>   r   r'  rA   r(  r)  Cannot unify)	r   r  r  rW   r   rC  rY   rZ   r[   )r6   rH   r   r   rD  s        r<   test_15zTestMixedTupleUnroll.test_15$  s     
	 
	 wwt}bggq!fo|Y#_6 v112fH 3 	nc&*:*:&;< 32s   !	BB!c                     d t        d      d        }t        fd       }| j                   |       |j                                y )Nc                 4    | dk(  ry| dk(  ry| dk(  ry| dk(  ryy )	N  rQ     r     r    drE   rN  s    r<   rO  z(TestMixedTupleUnroll.test_16.<locals>.dt:  s/    }$$$ r>   rQ  rR  c                     t        | t        j                        r4| j                  }|dk(  rd }|S |dk(  rd }|S |dk(  rd }|S |dk(  rd }S y )	Nr  c                      yNrQ   rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_16.<locals>.ol_dt.<locals>.implI      "r>   r  c                      yNr   rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_16.<locals>.ol_dt.<locals>.implL  r  r>   r  c                      yNr  rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_16.<locals>.ol_dt.<locals>.implO  r  r>   r  c                      yNr  rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_16.<locals>.ol_dt.<locals>.implR  r  r>   )r3   r   rb  ra  rW  r   r1  s      r<   rd  z+TestMixedTupleUnroll.test_16.<locals>.ol_dtD  sr    "e223((D=#  d]#  d]#
  d]# 4r>   c                  L    d} d}t        | d d       D ]  }| |      z  } |S )Nr  r  r  r   rC   r.  rG   r   rQ   rO  s      r<   rH   z)TestMixedTupleUnroll.test_16.<locals>.fooV  s4    (AC#AbqE*r!u +Jr>   ri  rj  s      @r<   test_16zTestMixedTupleUnroll.test_167  sQ    	 
"X	&	 
'	" 
	 
	 	.r>   c                     d t        d      d        }t        fd       }| j                   |       |j                                y )Nc                 @    | dk(  ry| dk(  ry| dk(  ry| dk(  ry| d	k(  ry
y )Nr  rQ   r  r   r  r  r  r  r   EFFrE   rN  s    r<   rO  z(TestMixedTupleUnroll.test_17.<locals>.dtc  s9    }$$$# r>   rQ  rR  c                    t        | t        j                        r4| j                  }|dk(  rd }|S |dk(  rd }|S |dk(  rd }|S |dk(  rd }S t        | t        j                        r| j                  }|d	k(  rd
 }|S y y )Nr  c                      yr  rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.implt  r  r>   r  c                      yr  rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.implw  r  r>   r  c                      yr  rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.implz  r  r>   r  c                      yr  rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.impl}  r  r>   r   c                      y)Nr  rE   rV  s    r<   r1  z9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.impl  s    $r>   )r3   r   rb  ra  r`  r  s      r<   rd  z+TestMixedTupleUnroll.test_17.<locals>.ol_dto  s    "e223((D=#  d]#  d]#
  d]#B 3 34((C<%K   5r>   c                  L    d} d}t        | dd        D ]  }| |      z  } |S )N)r  r  r  r   r  rB   r.  r  s      r<   rH   z)TestMixedTupleUnroll.test_17.<locals>.foo  s4    'AC#AabE*r!u +Jr>   ri  rj  s      @r<   test_17zTestMixedTupleUnroll.test_17`  sQ    
	 
"X	&	  
'	 . 
	 
	 	.r>   c                 f    t         d        }| j                   |       |j                                y )Nc                  T    d} d}t        | d d d         D ]  }|dz  }|dk  s |S  |S )N)r  r  r  r  i  ip  r   rB   r  r.  )rG   countrQ   s      r<   rH   z)TestMixedTupleUnroll.test_18.<locals>.foo  sB    4AE#AddG,
t8L	 - Lr>   r   rL   s     r<   test_18zTestMixedTupleUnroll.test_18  s.    		 
	 	.r>   c                 f    t         d        }| j                   |       |j                                y )Nc                      d} g d}ddg}||f}t        j                  d      }t        j                  dt         j                        }||||f}t	        |      D ]  }| t        |      z  }  | S )Nr   r  r(      r   dtyper  aranger  
complex128r
   r   r   l1l2r   a1a2r  s          r<   rH   z)TestMixedTupleUnroll.test_19.<locals>.foo  sn    CBbBr(C2B"--0Br2r"C#C(s1v )Jr>   r   rL   s     r<   test_19zTestMixedTupleUnroll.test_19  s.    	
	 

	 	.r>   c                 f    t         d        }| j                   |       |j                                y )Nc                      g } t        j                  d      }t        j                  dt         j                        }||f}t	        |      D ]!  }| j                  |j                                # | S )Nr  r   r  )r  r  r  r  r
   r!  r  )lr  r  r   r  s        r<   rH   z)TestMixedTupleUnroll.test_20.<locals>.foo  sW    A2B"--0Br(C#C(! )Hr>   r   rL   s     r<   test_20zTestMixedTupleUnroll.test_20  s0     
	 
	 	.r>   c                 r    t         d        }d}|}| j                   ||      |j                  |             y )Nc                 B    dfd}d}dD ]  }| |       |z   z  } |S )Nr{  gfffff7@y              @   c                  6    d} t              D ]  }| |z  } 	 | S r   r.  r   r   r   s     r<   r   z6TestMixedTupleUnroll.test_21.<locals>.foo.<locals>.bar  %    '*A1HC +
r>   r   r  rE   r   r   	outer_accrG   r   s       @r<   rH   z)TestMixedTupleUnroll.test_21.<locals>.foo  s6    !A
 I!SUQY&	 " r>   r   r   r   s       r<   test_21zTestMixedTupleUnroll.test_21  s<    		 
	 QQ0r>   c                     t         d        }d}|}| j                  t        j                        5 } ||       d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                 f    dddd| d| z  df}dfd}d	}t        |      D ]  }| |       z  } |S )
Nr   r   r   rV   rC   rQ   r  c                  6    d} t              D ]  }| |z  } 	 | S r   r.  r  s     r<   r   z6TestMixedTupleUnroll.test_22.<locals>.foo.<locals>.bar  r  r>   r   r.  )r   rQ   r   r   rG   r   s        @r<   rH   z)TestMixedTupleUnroll.test_22.<locals>.foo  sO    T2q!QUC0A!A
 C $A&su ' Jr>   r   r  r  r  s        r<   test_22zTestMixedTupleUnroll.test_22  sl    $ 
	 
	" v6676F 8 	@&**+	- 87   	A''A0c                     t         d        }d}|}| j                  t        j                        5 } ||       d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                 T    dfd}d}t              D ]  }| |       |z   z  } |S )Nr  c                  6    d} t              D ]  }| |z  } 	 | S r   r.  r  s     r<   r   z6TestMixedTupleUnroll.test_23.<locals>.foo.<locals>.bar  r  r>   r   r.  r  s       @r<   rH   z)TestMixedTupleUnroll.test_23.<locals>.foo  s=    !A
 I $A&SUQY&	 ' r>   r   r  r  r  s        r<   test_23zTestMixedTupleUnroll.test_23  sj    		 
	" v6676F 8 	@&**+	- 87r  c                     t         d        }| j                  t        j                        5 } |        d d d        d}| j	                  |t        j                               y # 1 sw Y   1xY w)Nc                  :    t        d      D ]  } t        |         y )NABCDEr
   printrF   s    r<   rH   z)TestMixedTupleUnroll.test_24.<locals>.foo   s    #G,a -r>   z7argument should be a tuple or a list of constant valuesr  )r6   rH   rD  msgs       r<   test_24zTestMixedTupleUnroll.test_24  s`    		 
	 v6676E 8 Hc3v//01	 87s   A$$A-c                 f    t         d        }| j                   |       |j                                y )Nc                  v    t        ddddgdf      } | }|}g }|D ]  }|j                  t        |              |S )NrA   )               @r   rB   rC   xyz)r
   r!  r   )valalias1alias2lensrG   s        r<   rH   z)TestMixedTupleUnroll.test_25.<locals>.foo-  sG     )X1vu!EFCFFDCF# Kr>   r   rL   s     r<   test_25zTestMixedTupleUnroll.test_25+  s.    		 
	 	.r>   c                 r    t         d        }d}|}| j                   ||      |j                  |             y )Nc                     dddd| d| z  f}d}d}d}d}t        j                  t        |      ft         j                  	      }t	        |      D ]  }||z  }|||<   |d
z  }||z   } ||||fS )Nr   r   r   rV   rC   r   6      r  rB   )r  emptyr   r  r
   )	r   rQ   r   r  	untouched	read_onlymutatedrG   escapes	            r<   rH   z)TestMixedTupleUnroll.test_26.<locals>.foo>  s    T2q!QU+ACEIIhhAy>G#A&q!"
*	 '
 3	9g==r>   r   )r   assertPreciseEqualrK   r   s       r<   test_26zTestMixedTupleUnroll.test_269  s>    
 
	> 
	> AA7r>   c                 ~    t        d      d        }d}|}| j                   ||      |j                  |             y )NTparallelc                 j    dddd| d| z  f}d}t        |      D ]  }t        d      D ]  }|dz  }	  |S )	Nr   r   r   rV   rC   r   r(   rB   r
   r   r   rQ   r   rG   r   s        r<   rH   z)TestMixedTupleUnroll.test_27.<locals>.fooU  J    T2q!QU+AC#A&A1HC $ ' Jr>   r   r   r   s       r<   test_27zTestMixedTupleUnroll.test_27R  sC     
t		 
	 QQ0r>   c                     t        d      d        }d}|}t        j                  j                   ||      |j	                  |             y )NTr  c                 j    dddd| d| z  f}d}t        |      D ]  }t        d      D ]  }||z  }	  |S Nr   r   r   rV   rC   r   r(   r  r  s        r<   rH   z)TestMixedTupleUnroll.test_28.<locals>.foof  r  r>   r   )r   r  testingassert_allcloserK   r   s       r<   test_28zTestMixedTupleUnroll.test_28c  sI     
t		 
	  	

""3q63;;q>:r>   c                 ~    t        d      d        }d}|}| j                   ||      |j                  |             y )NTr  c                 j    dddd| d| z  f}d}t        d      D ]  }t        |      D ]  }||z  }	  |S r  )r   r
   )r   rQ   r   r   rG   s        r<   rH   z)TestMixedTupleUnroll.test_29.<locals>.fooy  sJ    T2q!QU+ACBZ'*A1HC +   Jr>   r   r   r   s       r<   test_29zTestMixedTupleUnroll.test_29u  sC     
t		 
	 QQ0r>   c                 f    t         d        }| j                   |       |j                                y )Nc                  P    dfd} t        | d      D cg c]  }| c}S c c}w )N  c                 D    d}d}t        |      D ]
  }||z   z  } || fS Nr   r   r   r   rV   r.  r  r   rQ   rG   consts       r<   r   z6TestMixedTupleUnroll.test_30.<locals>.foo.<locals>.bar  3    %'*A1u9$C +Avr>   rB   rC   mapr   rG   r  s     @r<   rH   z)TestMixedTupleUnroll.test_30.<locals>.foo  s0    E  #3/0/!A/000   	#r   rL   s     r<   test_30zTestMixedTupleUnroll.test_30  s.    			1 
		1 	.r>   c                 .   t         d        }| j                  t        j                        5 } |        d d d        | j	                  t
        t        j                               | j	                  dt        |j                               y # 1 sw Y   XxY w)Nc                  P    dfd} t        | d      D cg c]  }| c}S c c}w )Nr  c                 D    d}d}t        |      D ]
  }||z   z  } || fS r  r.  r  s       r<   r   z6TestMixedTupleUnroll.test_31.<locals>.foo.<locals>.bar  r  r>   )rB   r  r  r  s     @r<   rH   z)TestMixedTupleUnroll.test_31.<locals>.foo  s0    E  #3010!A0111r  ziprB  r6   rH   rD  s      r<   test_31zTestMixedTupleUnroll.test_31  su     
		2 
		2 v112fE 3 	lC(8(8$9:eS!1!123	 32s   BBc                     t         d        t         fd       }| j                   |       |j                                y )Nc              3   4   K   t        |       D ]  }|  y wrh   r.  rQ   rG   s     r<   r3  z)TestMixedTupleUnroll.test_32.<locals>.gen  s     #A& '   c                  :     d      D  cg c]  } |  c} S c c} w )NrB   gffffff@y              @rE   )rG   r3  s    r<   rH   z)TestMixedTupleUnroll.test_32.<locals>.foo  s"    "=121!A1222s   	r   )r6   rH   r3  s     @r<   test_32zTestMixedTupleUnroll.test_32  sC    		 
	 
	3 
	3 	.r>   c                     t         d        }d } ||      } ||j                        j                  }| j                   |        |              y )Nc              3       K    | |       y wrh   rE   )r7   args     r<   consumerz.TestMixedTupleUnroll.test_33.<locals>.consumer  s     s)Os   c                 $     t          fd       }|S )Nc                  T    d }  | d      D cg c]  }t        |       c}S c c}w )Nc              3   4   K   t        |       D ]  }|  y wrh   r.  r   s     r<   r3  zCTestMixedTupleUnroll.test_33.<locals>.get.<locals>.foo.<locals>.gen  s     +A. /r!  r#  )next)r3  rG   conss     r<   rH   z6TestMixedTupleUnroll.test_33.<locals>.get.<locals>.foo  s/      *.c=)AB)AAQ)ABBBs   %r2  )r-  rH   s   ` r<   getz)TestMixedTupleUnroll.test_33.<locals>.get  s    C C
 Jr>   )r   rK   rJ   )r6   r(  r.  cfuncpyfuncs        r<   test_33zTestMixedTupleUnroll.test_33  sP     
	 
		 HX%%&..&(+r>   c                 &   t         d        }| j                  t        j                        5 } |        d d d        | j	                  dt        j                               | j	                  dt        |j                               y # 1 sw Y   TxY w)Nc                      d} g d}ddg}| dz
  dkD  r||f}n@t        j                  d      }t        j                  dt         j                        }||||f}t	        |      D ]  }| t        |      z  }  | S )	Nr   r  r(   r  rC   rD   r   r  r  r  s          r<   rH   z)TestMixedTupleUnroll.test_34.<locals>.foo  sy    CBbBQw{2hYYr]WWQbmm42r2&#C(s1v )Jr>   zInvalid use ofz&found multiple definitions of variabler  r  s      r<   test_34zTestMixedTupleUnroll.test_34  sx    		 
	 v6676E 8 	&F,<,<(=>>&**+	-	 87s   BBN))r^   r_   r`   r   r  r  r  r  r   r   r#  r+  r4  rE  rk  rs  rw  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r$  r1  r4  rE   r>   r<   r   r     s   7&7(7,5C4 X]]345 55"5C0#;J*/X/$/$7.-@/=&'/R//b//"/1*+-Z-:2/82 1 1  ; ;" 1 1"/ 4,/,,-r>   r   c                   `    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zy)TestConstListUnrollc                 f    t         d        }| j                   |       |j                                y )Nc                      g d} d}t        t        t        |                   D ]!  }|| |   z  }|j                  dk  r|dz  }  |S  |S Nr  r   r   rB   r   )rQ   r   r   s      r<   rH   z(TestConstListUnroll.test_01.<locals>.foo  sU    !AC3~a012qt88b=1HCJ 3 Jr>   r   rL   s     r<   r   zTestConstListUnroll.test_01  s.    			 
		 	.r>   c                 f    t         d        }| j                   |       |j                                y )Nc                  j    g d} d}t        |       D ]  }||z  }|j                  dk  r|dz  } |S  |S r9  r  r  s      r<   rH   z(TestConstListUnroll.test_02.<locals>.foo  sG    !AC#A&q88b=1HCJ ' Jr>   r   rL   s     r<   r  zTestConstListUnroll.test_02  s0     
		 
		 	.r>   c                 f    t         d        }| j                   |       |j                                y )Nc                      g d} ddg}d}t        |       D ]5  }||z  }|j                  dk  r|dz  }t        |      D ]	  }||du z  }  |S  |S )Nr  rH   r  r   r   rB   Fr  rG   r   r   rQ   r  s        r<   rH   z(TestConstListUnroll.test_03.<locals>.foo  sm    !A
AC#A&q88b=1HC+A.qEz) /J ' Jr>   r   rL   s     r<   r  zTestConstListUnroll.test_03  .    		 
	 	.r>   c                 f    t         d        }| j                   |       |j                                y )Nc                      g d} d}d}t        |       D ]5  }||z  }|j                  dk  r|dz  }t        |      D ]	  }||du z  }  |S  |S )Nr  )rH   r  r   r   rB   Fr  r>  s        r<   rH   z(TestConstListUnroll.test_04.<locals>.foo!  si    !AAC#A&q88b=1HC+A.qEz) /J ' Jr>   r   rL   s     r<   r  zTestConstListUnroll.test_04  r?  r>   c                 &   t         d        }d}t        j                  d      t        j                  d      g}t        j                  |f      t        j                  ||f      t        j                  |||f      t        j                  ||||f      t        j                  |||||f      f}| j	                  t
        j                        5 } |||       d d d        d}| j                  |t        j                               y # 1 sw Y   1xY w)Nc                 h    d}t        |       D ]!  }|d   dkD  s||d   j                         z  }# |S r   r  r  s       r<   rH   z(TestConstListUnroll.test_05.<locals>.foo4  s<    C#D)Q4!847;;=(C * Jr>   r(   z6Invalid use of literal_unroll with a function argument)
r   r  zerosr  rW   r   r  rY   rZ   r[   )r6   rH   r   r  r  rD  r  s          r<   r  zTestConstListUnroll.test_052  s    		 
	 bhhrl+rww1vAq	0BAq!%rww1aA'?A v6676dO 8 Gc3v//01	 87s   
DDc                     t         d        }| j                  t        j                        5 } |        d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                      d} t        j                  | f      t        j                  | | f      dddh dg}d}t        |      D ]  }|t        |      z  } |S )Nr(   r'  rA   r(  r)  r   )r  r  r
   r   )r   r   r   rQ   s       r<   rH   z(TestConstListUnroll.test_06.<locals>.fooI  sX    A77A4="''1a&/<':CC#C(s1v )Jr>   z&Found non-constant value at position 0r  r  s      r<   r#  zTestConstListUnroll.test_06G  s^    		 
	 v6676E 8 	>&**+	- 87   A""A+c                     d t        d      d        }t        fd       }| j                   |       |j                                y )Nc                 <    | dk(  ry| dk(  ry| dk(  ry| dk(  rd| z   S y rH  rE   rN  s    r<   rO  z&TestConstListUnroll.test_7.<locals>.dt\  rP  r>   rQ  rR  c                     t        | t        j                        r*| j                  dk(  rd }|S dk(  rd }|S dk(  rd }S t        | t        j                        r| j                  dk(  rfd}|S y y )	NrI  c                      yr8  rE   rV  s    r<   r1  z7TestConstListUnroll.test_7.<locals>.ol_dt.<locals>.implk  rX  r>   rJ  c                      yr<  rE   rV  s    r<   r1  z7TestConstListUnroll.test_7.<locals>.ol_dt.<locals>.impln  rX  r>   rK  c                      yr?  rE   rV  s    r<   r1  z7TestConstListUnroll.test_7.<locals>.ol_dt.<locals>.implq  rX  r>   rL  c                     dz   S r\  rE   r]  s    r<   r1  z7TestConstListUnroll.test_7.<locals>.ol_dt.<locals>.implw  r^  r>   r_  rc  s     @r<   rd  z)TestConstListUnroll.test_7.<locals>.ol_dtf  re  r>   c                  F    d} t        g d      D ]  }|  |      z  }  | S rg  r.  rh  s     r<   rH   z'TestConstListUnroll.test_7.<locals>.foo|  s+    C#$MNr!u OJr>   ri  rj  s      @r<   test_7zTestConstListUnroll.test_7Y  rl  r>   c                 f    t         d        }| j                   |       |j                                y )Nc                      g } g d}t        t        t        |                  D ]L  }||   }|dk(  r| j                  d       |dk(  r| j                  |       6|dk(  s<| j                  d       N | S ro  rq  rr  s       r<   rH   z'TestConstListUnroll.test_8.<locals>.foo  sk    A-A3~a012aD<HHSM(]HHQK(]HHUO 3 Hr>   r   rL   s     r<   test_8zTestConstListUnroll.test_8  rt  r>   c                 v    t         d        }d}|}| j                   |d|      |j                  d|             y )Nc                     g d}d}t        |      D ]2  }||z  }|j                  dk  r|dz  }t        |      D ]  }||z  }	  n |d   dk  r|dz  }|S )Nr  r   r   rB   r{  rC   r  r|  s         r<   rH   z'TestConstListUnroll.test_9.<locals>.foo  sn    !AC#A&q88b=1HC+A.q / ' tbyqJr>   r   rC   r   r   s       r<   test_9zTestConstListUnroll.test_9  r~  r>   c                     t         d        }d}|}| j                  t        j                        5 } |d|       d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                 >   dddd|d|z  f}g d}d}t        |      D ][  }||z  }|j                  dk  r|d	z  }n*t        |      D ]  }t        |      D ]  }||z  }	 ||z  } t        |      D ]  }||z  }	 ] t        |      D ]  }||z  }	 |d   d
k  r|dz  }|S )Nr   r   r   rV   rC   r  r   r   rB   r{  r  )r   r   rQ   r   r   r   rG   r   s           r<   rH   z(TestConstListUnroll.test_10.<locals>.foo  s    T2q!QU+A!AC#A&q88b=1HC+A.!/!2A1HC "3q / (*A1HC + ' $A&q 'tbyqJr>   r   rC   r  r  r  s        r<   rk  zTestConstListUnroll.test_10  sl    		 
	* v66761I 8 	@&**+	- 87r  c                 f    t         d        }| j                   |       |j                                y )Nc                  <    g d} d}t        |       D ]  }||z  }	 S r  r.  r  s      r<   rH   z(TestConstListUnroll.test_11.<locals>.foo  s)    AC#A&q 'Hr>   r   rL   s     r<   rs  zTestConstListUnroll.test_11  s0     
	 
	 	.r>   c                     t         d        }| j                  t        j                        5 } |        d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                  N    d} g d}t        |      D ]  }| t        |      z  }  S )Nr   )rB   rC   rQ   )r
   bool)r   rG   rQ   s      r<   rH   z(TestConstListUnroll.test_12.<locals>.foo  s-    CA#A&tAw 'Hr>   r  r   rW   r   rC  rY   rZ   r[   r  s      r<   r}  zTestConstListUnroll.test_12  sZ    		 
	 v112fE 3 	nc&*:*:&;< 32rG  c                     t         d        }| j                  t        j                        5 } |        d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                  B    g d} d}t        | d d       D ]  }||z  }	 |S )Nr  r   rC   r.  r  s      r<   rH   z(TestConstListUnroll.test_13.<locals>.foo  s/    (AC#AbqE*q +Jr>   zInvalid use of literal_unrollr  r  s      r<   r  zTestConstListUnroll.test_13  s]     
	 
	 v6676E 8 	5s6;K;K7LM 87rG  c                     t         d        }| j                  t        j                        5 } |        d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                  ^    g d} d}t        |       D ]  }||z  }	 | j                  d       |S )Nr  r   r(   )r
   r!  r  s      r<   rH   z(TestConstListUnroll.test_14.<locals>.foo  s4    (AC#A&q 'HHRLJr>   z(Unknown attribute 'append' of type Tupler^  r  s      r<   r  zTestConstListUnroll.test_14  s`     
	 
	 v112fE 3 	@&**+	- 32rG  N)r^   r_   r`   r   r  r  r  r  r#  rP  rS  rV  rk  rs  r}  r  r  rE   r>   r<   r6  r6    sK    / /"/&/&2*-$*/X/$7.-B/=N -r>   r6  c                       e Zd Zd Zd Z ej                  d      d        Z ej                  d      d        Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestMorec                     t         d        }| j                  t        j                        5 } |        d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                  :    d} d}t        | |       D ]  }||z  }	 |S )N)r(   r  r   r.  rG   rrQ   s      r<   rH   z2TestMore.test_invalid_use_of_unroller.<locals>.foo  s+    AA#Aq)Q *Hr>   z*literal_unroll takes one argument, found 2r  r  s      r<   test_invalid_use_of_unrollerz%TestMore.test_invalid_use_of_unroller  s\    		 
	 v6676E 88  !	
 87rG  c                     t         d        }| j                  t        j                        5 } |d       d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                 <    d| g}d}t        |      D ]  }||z  }	 |S Nr(   r   r.  r   rG   rh  rQ   s       r<   rH   z,TestMore.test_non_constant_list.<locals>.foo"  -    QAA#A&Q 'Hr>   r(   zKFound non-constant value at position 1 in a list argument to literal_unrollr  r  s      r<   test_non_constant_listzTestMore.test_non_constant_list   s`    		 
	 v6676G 8  !	
 87s   	A##A,z!numba.literally not supported yetc                 j    ddl m t        fd        d       t        fd       } |        y )Nr   )	literallyc                 J    d |       g}d}t        |      D ]  }||z  }	 |S rl  r.  )r   rG   rh  rQ   rq  s       r<   rH   z2TestMore.test_literally_constant_list.<locals>.foo7  s3    Yq\"AA#A&Q 'Hr>   r   c                        d      S Nr   rE   rH   s   r<   r   z2TestMore.test_literally_constant_list.<locals>.barC      r7Nr>   )numbarq  r   )r6   r   rH   rq  s     @@r<   test_literally_constant_listz%TestMore.test_literally_constant_list2  s<     	$		 
	 	B		 
	
 	r>   z8inlining of foo doesn't have const prop so y isn't constc                 t    t        d      d        t         fd       }| j                   |       d       y )NrQ  rR  c                 <    d| g}d}t        |      D ]  }||z  }	 |S rl  r.  rm  s       r<   rH   z.TestMore.test_inlined_unroll_list.<locals>.fooM  rn  r>   c                        d      S rt  rE   ru  s   r<   r   z.TestMore.test_inlined_unroll_list.<locals>.barU  rv  r>      )r   rJ   )r6   r   rH   s     @r<   test_inlined_unroll_listz!TestMore.test_inlined_unroll_listK  sB    	X		 
	 
	 
	 	(r>   c                     t         d        }| j                   |d      |j                  d             | j                   |d      |j                  d             y )Nc                 <    d| f}d}t        |      D ]  }||z  }	 |S rl  r.  rm  s       r<   rH   z+TestMore.test_unroll_tuple_arg.<locals>.foo\  rn  r>   r   333333?r   rL   s     r<   test_unroll_tuple_argzTestMore.test_unroll_tuple_arg[  sO    		 
	 	R#++b/2S3;;s#34r>   c                     t         d        }| j                   |d      |j                  d             | j                   |d      |j                  d             y )Nc                 4    d}t        |       D ]  }||z  }	 |S r   r.  rg  s      r<   rH   z,TestMore.test_unroll_tuple_arg2.<locals>.fooh  s$    A#A&Q 'Hr>   )r   r  r   rL   s     r<   test_unroll_tuple_arg2zTestMore.test_unroll_tuple_arg2g  sP    		 
	 	YY)?@YY)?@r>   c                 f    t         d        }| j                   |       |j                                y )Nc                  L    d} d}t        |       D ]  }|}|}|||z   |z   z  } |S )Nr(   r  r   r.  )rG   outr   r   r   s        r<   rH   z-TestMore.test_unroll_tuple_alias.<locals>.foos  s>    AC#A&q1uqy  ' Jr>   r   rL   s     r<   test_unroll_tuple_aliasz TestMore.test_unroll_tuple_aliasr  s.    		 
	 	.r>   c                 *   t         d        }| j                  t        j                        5 } |        d d d        | j	                  dt        j                               d}| j                  t        |j                        |       y # 1 sw Y   VxY w)Nc                  F    d} d}t        |       D ]  }|D ]  }||z  }	  |S )N)r  )rU   g      @r   r.  )rG   r  r   r   s       r<   rH   z.TestMore.test_unroll_tuple_nested.<locals>.foo  s5    %AC#A&A1HC  ' Jr>   r   z#.*Tuple\(int[0-9][0-9], float64\).*)r   rW   r   rC  rY   rZ   r[   assertRegex)r6   rH   rD  res       r<   test_unroll_tuple_nestedz!TestMore.test_unroll_tuple_nested  sz    		 
	 v112fE 3 	iV%5%5!673V--.3 32s   B		Bc                     t         d        }t               5 } |        d d d        j                         j                         }| j	                  |g d       y # 1 sw Y   <xY w)Nc                      i } d| d<   d| d<   i }d|d<   d|d<   t        | |f      D ]&  }|j                         D ]  \  }}t        ||        ( y )	NrB   rQ   rC   r   r  rD   r  rV   )r
   itemsr  )rG   r   itr   vs        r<   rH   z/TestMore.test_unroll_tuple_of_dict.<locals>.foo  s`    AAcFAcFAAaDAaD$aV,HHJDAq!QK ' -r>   )za 1zb 2z3 cz4 d)r   r   getvalue
splitlinesrJ   )r6   rH   stdoutliness       r<   test_unroll_tuple_of_dictz"TestMore.test_unroll_tuple_of_dict  sZ    	
	  

	  &E !,,.(	
 s   AA#c                     t        dg d      t        fd       }| j                   |       |j                                y )NABCrA  c                  J     ddd      } d}t        |       D ]  }||z  }	 |S )NrB   r  333333@r   r.  abcr  r   r  s      r<   rH   z-TestMore.test_unroll_named_tuple.<locals>.foo  s2    aS/CC#C(q )Jr>   r   r   rJ   rK   r6   rH   r  s     @r<   test_unroll_named_tuplez TestMore.test_unroll_named_tuple  ;    0		 
	 	.r>   c                     t        dg d      }t        d        } |ddd      }| j                   ||      |j                  |             y )Nr  rA  c                 4    d}t        |       D ]  }||z  }	 |S r   r.  rG   r  r   s      r<   rH   z1TestMore.test_unroll_named_tuple_arg.<locals>.foo  $    C#A&q 'Jr>   rB   r  r  r  r6   r  rH   r  s       r<   test_unroll_named_tuple_argz$TestMore.test_unroll_named_tuple_arg  sL    0		 
	 !RoS3;;s#34r>   c                     t        dg d      t        fd       }| j                   |       |j                                y )Nr  rA  c                  J     ddd      } d}t        |       D ]  }||z  }	 |S )NrB   rC   rD   r   r.  r  s      r<   rH   z0TestMore.test_unroll_named_unituple.<locals>.foo  s2    aA,CC#C(q )Jr>   r  r  s     @r<   test_unroll_named_unituplez#TestMore.test_unroll_named_unituple  r  r>   c                     t        dg d      }t        d        } |ddd      }| j                   ||      |j                  |             y )Nr  rA  c                 4    d}t        |       D ]  }||z  }	 |S r   r.  r  s      r<   rH   z4TestMore.test_unroll_named_unituple_arg.<locals>.foo  r  r>   rB   rC   rD   r  r  s       r<   test_unroll_named_unituple_argz'TestMore.test_unroll_named_unituple_arg  sL    0		 
	 !QlS3;;s#34r>   c                 f    t         d        }| j                   |       |j                                y )Nc                  <    d} t        t              D ]  }| |z  } 	 | S r   )r
   	_X_GLOBAL)r  r   s     r<   rH   z.TestMore.test_unroll_global_tuple.<locals>.foo  s$    C#I.q /Jr>   r   rL   s     r<   test_unroll_global_tuplez!TestMore.test_unroll_global_tuple  s.    		 
	 	.r>   c                 p    dt         fd       }| j                   |       |j                                y )Nr'   c                  6    d} t              D ]  }| |z  } 	 | S r   r.  )r  r   rG   s     r<   rH   z/TestMore.test_unroll_freevar_tuple.<locals>.foo  s%    C#A&q 'Jr>   r   )r6   rH   rG   s     @r<   test_unroll_freevar_tuplez"TestMore.test_unroll_freevar_tuple  s4    		 
	 	.r>   c                     t         d        }t         d        }||ft         fd       }| j                   |       |j                                y )Nc                       yr8  rE   rE   r>   r<   rQ   z.TestMore.test_unroll_function_tuple.<locals>.a  r:  r>   c                       yr<  rE   rE   r>   r<   r   z.TestMore.test_unroll_function_tuple.<locals>.b  r:  r>   c                  @    d} t              D ]  }|  |       z  }  | S r   r.  )r  r   rG   s     r<   rH   z0TestMore.test_unroll_function_tuple.<locals>.foo   s'    C#A&qs
 'Jr>   r   )r6   rQ   r   rH   rG   s       @r<   test_unroll_function_tuplez#TestMore.test_unroll_function_tuple  s`    		 
	 
	 
	 F		 
	 	.r>   c                    t         d        }t        d      D cg c]  }| }}t               5  | j                   ||      |j	                  |             d d d        t               5 } ||       d d d        j                         j                         }| j                  |g d       y c c}w # 1 sw Y   \xY w# 1 sw Y   MxY w)Nc                     d}d}| D cg c]  }| }}d}t        |      D ]  }|||   z  }|dz  }t        |        ||fS c c}w )Nr   )rQ      gq=
ףp?NrB   r  )contr   r   rQ   normal_listheter_tupleitems          r<   rH   z/TestMore.test_unroll_indexing_list.<locals>.foo  sb    AC&*+d1dK+/K&{3{1~%Qd 4 c6M ,s   	ArV   )rQ   25z0.23None)r   r   r   rJ   rK   r  r  )r6   rH   r   datar  r  s         r<   test_unroll_indexing_listz"TestMore.test_unroll_indexing_list	  s    			 
		 !8$8a8$ SYD(9:  &I !,,.'	
 %  s   	B-(B2)	B>2B;>Cc                     t        j                  d      t        j                  d      t        j                  d      fddlm t        fd       }| j                   |       |j                                y )N)rB   )rB   rB   )rB   rB   rB   r   r.  c                  D    d}        D ]  }| |j                   z  }  | S r   )ndim)r  r   freevar_unrollmixeds     r<   rH   z.TestMore.test_unroller_as_freevar.<locals>.foo*  s)    C#E*qvv +Jr>   )r  r  rw  r
   r   rJ   rK   )r6   rH   r  r  s     @@r<   test_unroller_as_freevarz!TestMore.test_unroller_as_freevar&  sW    1CD:		 
	 	.r>   c                 &    t        d      d        }y )Nz(Tuple((int64, float64)),)c                 D    t        |       D ]  } d}|dk(  r	d}|dk(  ry y )NrB   r   r.  )r   r  rG   s      r<   rH   zCTestMore.test_unroll_with_non_conformant_loops_present.<locals>.foo6  s0    #C( ) Aq& q&r>   r2  rL   s     r<   -test_unroll_with_non_conformant_loops_presentz6TestMore.test_unroll_with_non_conformant_loops_present3  s     
*	+	 
,	r>   c                     t        j                  ddgddg      }t        |j                  j                  j                               t        fd       }| j                   ||      d       y )Nr  rC   rD   )r  f8)r  r  r  c                 ~    d}t              D ]+  }|t        j                  | |         j                         z   }- |S r   r
   r  absr  arrresr   fieldss      r<   rH   z>TestMore.test_literal_unroll_legalize_var_names01.<locals>.fooD  ;    C#F+BFF3q6N..00 ,Jr>          @r  arraytupler  r  r   r   rJ   r6   testrH   r  s      @r<   (test_literal_unroll_legalize_var_names01z1TestMore.test_literal_unroll_legalize_var_names01?  sb    xx(|0LMtzz((--/0		 
	 	TC(r>   c                     t        j                  ddgddg      }t        |j                  j                  j                               t        fd       }| j                   ||      d       y )Nr  r  )za1[0]r  )za2[1]r  r  c                 ~    d}t              D ]+  }|t        j                  | |         j                         z   }- |S r   r  r  s      r<   rH   z>TestMore.test_literal_unroll_legalize_var_names02.<locals>.fooS  r  r>   r  r  r  s      @r<   (test_literal_unroll_legalize_var_names02z1TestMore.test_literal_unroll_legalize_var_names02M  sf    xx(.@Btzz((--/0		 
	 	TC(r>   N)r^   r_   r`   ri  ro  r   r   rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rE   r>   r<   rd  rd    s    
 
$ X]]67 80 X]]MN) O)
5	A/4$
./5/5	/
//(
:/
))r>   rd  c                 J     t        dd       G  fddt                     }|S )zg Returns a compiler pass that captures the mutation state reported
    by the pass used in the argumentFTra   c                   D    e Zd ZdW  j                  z  ZW  Zd Z fdZy)capture.<locals>.ResultCapturerz
capture_%sc                 .    t        j                  |        y rh   ri   rk   s    r<   rj   z(capture.<locals>.ResultCapturer.__init__e  s    !!$'r>   c                 v            j                  |      }|j                  j                  di       }||<   |S )Nmutation_results)rp   r   
setdefault)r6   ro   resultr  	real_passs       r<   rp   z(capture.<locals>.ResultCapturer.run_passh  s=    [))%0F$~~889KRP*0Y'Mr>   N)r^   r_   r`   rq   
_real_passrj   rp   )r  s   r<   ResultCapturerr  `  s     y.
	(	r>   r  )r   r   )r  r  s   ` r<   capturer  ]  s-     uD9  : r>   c                       e Zd ZdZd Zy)CapturingCompilerz? Simple pipeline that wraps passes with the ResultCapturer passc                    t        d      fd} |t        d        |t        d        |t        d        |t        d        |t
        d        |t        d        |t        d	        |t        d
       j                          gS )NzCapturing Compilerc                 :    j                  t        |       |      S rh   )r~   r  )rG   r   r   s     r<   r~   z4CapturingCompiler.define_pipelines.<locals>.add_passw  s    ;;wqz1--r>   ry   zfix up argsrz   zhandles literal_unrollr{   z$ensure IR is legal prior to loweringr|   r}   )
r   r   r   r   r   r   r    r#   r!   r   )r6   r~   r   s     @r<   r   z"CapturingCompiler.define_pipelinest  s    -.	. 	"$89M*/ 89 	&(;< 	7	9 	!23"9:
tr>   N)r^   r_   r`   __doc__r   rE   r>   r<   r  r  q  s
    Ir>   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestLiteralUnrollPassTriggeringc                     t        t              d        } |        |j                  |j                  d      }| j	                  |j
                  d   t                  y )Nr   c                  "    d} dD ]  }| |z  } 	 | S r   rE   r   s     r<   rH   zLTestLiteralUnrollPassTriggering.test_literal_unroll_not_invoked.<locals>.foo  s    Cq Jr>   r   r  r   r  r.   r/   assertFalser   r   r6   rH   r9   s      r<   test_literal_unroll_not_invokedz?TestLiteralUnrollPassTriggering.test_literal_unroll_not_invoked  sU    	.	/	 
0	 	}}S^^A./'9:=IJr>   c                     t        t              d        } |        |j                  |j                  d      }| j	                  |j
                  d   t                  y )Nr   c                  4    d} t        d      D ]  }| |z  } 	 | S r   r.  r   s     r<   rH   zKTestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked.<locals>.foo  s$    C#I.q /Jr>   r   r  )r   r  r.   r/   r2   r   r   r  s      r<   test_literal_unroll_is_invokedz>TestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked  sS    	.	/	 
0	 	}}S^^A./&89-HIr>   c                     t         t        t              fd       } |        |j                  |j                  d      }| j                  |j                  d   t                  y )Nr   c                  0    d}  d      D ]  }| |z  } 	 | S r   rE   )r   r   aliass     r<   rH   zUTestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked_via_alias.<locals>.foo  s%    C9%q &Jr>   r   r  )r
   r   r  r.   r/   r2   r   r   )r6   rH   r9   r  s      @r<   (test_literal_unroll_is_invoked_via_aliaszHTestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked_via_alias  sY    	.	/	 
0	 	}}S^^A./&89-HIr>   c                     t        t              d        } |        |j                  |j                  d      }| j	                  |j
                  d   t                  y )Nr   c                       y rh   rE   rE   r>   r<   rH   zVTestLiteralUnrollPassTriggering.test_literal_unroll_assess_empty_function.<locals>.foo  s    r>   r   r  r  r  s      r<   )test_literal_unroll_assess_empty_functionzITestLiteralUnrollPassTriggering.test_literal_unroll_assess_empty_function  sU    	.	/	 
0	 	}}S^^A./'9:=IJr>   c                     d}i }t        |i |        t        t              |d         } |        |j                  |j                  d      }| j                  |j                  d   t                  y )Nzdef foo():
	passr   rH   r   r  )execr   r  r.   r/   r  r   r   )r6   r   r  rH   r9   s        r<   "test_literal_unroll_not_in_globalszBTestLiteralUnrollPassTriggering.test_literal_unroll_not_in_globals  sf    $QA4d"34QuX>}}S^^A./'9:=IJr>   c                    d}i }t        |i |        t        t              |d         }| j                  t        j
                        5 } |        d d d        | j                  dt        j                               i }t        |dt        i|        t        t              |d         } |        |j                  |j                  d      }| j                  |j                  d   t                  ddlm} d	}i }t         ||      i |        t        t              |d
         } |        |j                  |j                  d      }| j                  |j                  d   t                  ddlm} d}i }t         ||      i |        t        t              |d
         } |        |j                  |j                  d      }| j                  |j                  d   t                  y # 1 sw Y   xY w)Nz1def foo():
	for x in literal_unroll((1,)):
		passr   rH   z$Untyped global name 'literal_unroll'r
   r   r  )dedentz
            def gen():
                from numba import literal_unroll
                def foo():
                    for x in literal_unroll((1,)):
                        pass
                return foo
            bar = gen()
            r   a  
            def gen():
                from numba import literal_unroll as something_else
                def foo():
                    for x in something_else((1,)):
                        pass
                return foo
            bar = gen()
            )r  r   r  rW   r   rC  rY   rZ   r[   r
   r.   r/   r2   r   r   textwrapr  )r6   r   r  rH   rD  r9   r  s          r<   &test_literal_unroll_globals_and_localszFTestLiteralUnrollPassTriggering.test_literal_unroll_globals_and_locals  s   HQA4d"34QuX>v112fE 3<&**+	- Q!>2A64d"34QuX>}}S^^A./&89-HI 	$ VAYA4d"34QuX>}}S^^A./&89-HI 	$ VAYA4d"34QuX>}}S^^A./&89-HI_ 32s   
G22G<N)	r^   r_   r`   r  r  r  r  r	  r  rE   r>   r<   r  r    s&    
K
JJKK4Jr>   r  __main__)=collectionsr   numpyr  numba.tests.supportr   r   r   r   rw  r   r	   r
   r   
numba.corer   r   r   numba.testingr   numba.core.extendingr   numba.core.compiler_machineryr   r   r   r   numba.core.compilerr   numba.core.untyped_passesr   r   r   r   r   r   r   r   numba.core.typed_passesr   r    r!   r"   r#   numba.core.ir_utilsr$   r%   numba.core.types.functionsr&   r  r+   re   rs   r   r6  rd  r  r  r  r^   mainrE   r>   r<   <module>r     s   " L L 5 5 ( ( " )G G ,B B B5 5 J 3	%7_h %7P 56
L 
 7
zC zCzY-?H Y-xc-/8 c-L	K)x K)\
( 8nJh nJb zHMMO r>   