
    shY                        S SK Jr  S SKrS SKJrJrJrJr  S SK	J
r
JrJrJr  S SKJrJrJr  S SKJr  S SKJr  S SKJrJrJrJr  S S	KJr  S S
KJrJrJ r J!r!J"r"J#r#J$r$J%r%  S SK&J'r'J(r(J)r)J*r*J+r+  S SK,J-r-J.r.  S SK/J0r0  Sr1 " S S\\5      r2\" SSS9 " S S\5      5       r3 " S S\\5      r4 " S S\\5      r5 " S S\\5      r6 " S S\5      r7S r8 " S S\5      r9 " S  S!\5      r:\;S":X  a  \Rx                  " 5         gg)#    )
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                   ,    \ rS rSrS rS rS rS rSrg)TestLiteralTupleInterpretation   c                 &   UR                   UR                  S      nUR                  R                  U   nU R	                  [        U[        R                  5      5        U H-  nU R	                  [        U[        R                  5      S5        M/     g )Nr   non literal)		overloads
signaturesfndesctypemap
assertTrue
isinstancer   TupleLiteral)selffuncvarcrestysubtys         y/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_mixed_tuple_unroller.pycheck$TestLiteralTupleInterpretation.check   sg    ~~dooa01[[  %
2u{{34EOOJuemm<mL     c                     [         S 5       nU R                  U" 5       UR                  5       5        U R                  US5        g )Nc                      Sn U S   $ )N         rD    xs    r=   fooDTestLiteralTupleInterpretation.test_homogeneous_literal.<locals>.foo$   s    AQ4Kr@   rI   r   assertEqualpy_funcr>   r7   rJ   s     r=   test_homogeneous_literal7TestLiteralTupleInterpretation.test_homogeneous_literal#   <    		 
	 	.

3r@   c                     [         S 5       nU R                  U" 5       UR                  5       5        U R                  US5        g )Nc                      Sn U S   $ )N)rD   rE   rF   arF   rG   rH   s    r=   rJ   FTestLiteralTupleInterpretation.test_heterogeneous_literal.<locals>.foo-   s    AQ4Kr@   rI   rL   rO   s     r=   test_heterogeneous_literal9TestLiteralTupleInterpretation.test_heterogeneous_literal,   rR   r@   c                 2   [         S 5       nU R                  U" 5       UR                  5       5        U R                  [        5       nU R                  US5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                      Sn U S   $ )N)rD   rE   rF   rU                 ?   rG   rH   s    r=   rJ   <TestLiteralTupleInterpretation.test_non_literal.<locals>.foo6   s    "AQ4Kr@   rI   r.   )	r   rM   rN   assertRaisesAssertionErrorr>   assertInstr	exception)r7   rJ   es      r=   test_non_literal/TestLiteralTupleInterpretation.test_non_literal5   ss    		 
	 	.~.!JJsC  / 	mS%56 /.s   B
BrG   N)	__name__
__module____qualname____firstlineno__r>   rP   rW   rd   __static_attributes__rG   r@   r=   r+   r+      s    M
7r@   r+   Fmutates_CFGanalysis_onlyc                   $    \ rS rSrSrS rS rSrg)ResetTypeInfoB   reset_the_type_informationc                 0    [         R                  " U 5        g Nr   __init__r7   s    r=   ru   ResetTypeInfo.__init__F   s    d#r@   c                 .    S Ul         S Ul        S Ul        g)NT)r2   return_type	calltypes)r7   states     r=   run_passResetTypeInfo.run_passI   s     r@   rG   N)rf   rg   rh   ri   _nameru   r|   rj   rG   r@   r=   ro   ro   B   s    (E$r@   ro   c                       \ rS rSrSS jr\" S5      r\" S5      r\" SS5      rS rS r	\
R                  " S5      S 5       rS	 r\
R                  " S5      S
 5       rS rSrg)TestLoopCanonicalisationP   Fc                 0   ^ ^  " U U4S jS[         5      nU$ )Nc                   $   > \ rS rSrU U4S jrSrg):TestLoopCanonicalisation.get_pipeline.<locals>.NewCompilerS   c                 z  > [        S5      nUR                  [        S5        UR                  [        S5        UR                  [        S5        T(       a  UR                  [
        S5        T(       a  UR                  [        S5        UR                  [        S5        T(       a  UR                  [        S5        UR                  [        S	5        UR                  [        S
5        UR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  5         U/$ )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   ro   r   r    r   r#   r!   finalize)r7   pmuse_canonicaliseruse_partial_typings     r=   define_pipelinesKTestLoopCanonicalisation.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@   rG   N)rf   rg   rh   ri   r   rj   )r   r   s   r=   NewCompilerr   S   s    ! !r@   r   r   )r   r   r   s   `` r=   get_pipeline%TestLoopCanonicalisation.get_pipelineR   s    #	 #	, #	H r@   Tc                   ^  U 4S jnU" T R                   5      u  p#U" T R                  5      u  pEU 4S jnU" X$5        T R                  [        UR                  5      S-   [        UR                  5      5        S nU" US5      nT R                  [        U5      S5        U" US5      n	T R                  [        U	5      S5        U" US5      n
T R                  [        U
5      S5        T R                  US   R
                  R                  U
S   R
                  R                  5        UR                  U	S      R                  S   nT R                  [        U[        R                  5      5        g	)
,This heavily checks a simple loop transform c                    > [        U S9S 5       nSnTR                  U" U5      UR                  U5      5        UR                  UR                  S      nUR
                  S   nXCR                  4$ )Npipeline_classc                 $    SnU  H  nX-  nM	     U$ Nr   rG   )tupaccis      r=   rJ   QTestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.get_info.<locals>.foo   s    AHC 
r@   rC   r   preserved_irr   rM   rN   r/   r0   metadatar1   pipelinerJ   rI   r:   func_irr7   s        r=   get_infoDTestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.get_info   so    * + ASVS[[^4==!23DmmN3GKK''r@   c                    > [        [        U R                  5      5      n[        [        UR                  5      5      nTR                  X#5        g rs   r$   r%   blocksrM   rU   ba_cfgb_cfgr7   s       r=   compare_cfgGTestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.compare_cfg   7    +N188,DEE+N188,DEEU*r@   rF   c                     U R                   R                  5        Vs/ s H8  n[        U[        R                  5      (       d  M$  UR
                  U:X  d  M6  UPM:     sn$ s  snf rs   rz   keysr4   r   Expropfdr   rI   s      r=   	find_getXETestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.find_getX   R    !||002 >2!!!RWW- 23$$"* 2 > > >   #AAAgetiterrD   getitemr   NLoopIgnoringCompilerLoopCanonicalisingCompilerrM   lenrz   valuenameargsr3   r4   r   	RangeTyper7   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_depth2TestLoopCanonicalisation.test_simple_loop_in_depth~   sP   	( T../ 	- T445 	9	+
 	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                   ^  U 4S jnU" T R                   5      u  p#U" T R                  5      u  pEU 4S jnU" X$5        T R                  [        UR                  5      S-   [        UR                  5      5        S nU" US5      nT R                  [        U5      S5        U" US5      n	T R                  [        U	5      S5        U" US5      n
T R                  [        U
5      S5        T R                  US   R
                  R                  U
S   R
                  R                  5        UR                  U	S      R                  S   nT R                  [        U[        R                  5      5        g	)
zuThis checks the transform, when there's no typemap, will happily
transform a loop on something that's not tuple-like
c                    > [        U S9S 5       nTR                  U" 5       UR                  5       5        UR                  UR                  S      nUR
                  S   nX2R                  4$ )Nr   c                  $    Sn S H  nX-  n M	     U $ Nr   rC   rG   r   r   s     r=   rJ   LTestLoopCanonicalisation.test_transform_scope.<locals>.get_info.<locals>.foo   s    "AHC #
r@   r   r   r   )r   rJ   r:   r   r7   s       r=   r   ?TestLoopCanonicalisation.test_transform_scope.<locals>.get_info   sf    * + SUCKKM2==!23DmmN3GKK''r@   c                    > [        [        U R                  5      5      n[        [        UR                  5      5      nTR                  X#5        g rs   r   r   s       r=   r   BTestLoopCanonicalisation.test_transform_scope.<locals>.compare_cfg   r   r@   rF   c                     U R                   R                  5        Vs/ s H8  n[        U[        R                  5      (       d  M$  UR
                  U:X  d  M6  UPM:     sn$ s  snf rs   r   r   s      r=   r   @TestLoopCanonicalisation.test_transform_scope.<locals>.find_getX   r   r   r   rD   r   r   Nr   r   s   `           r=   test_transform_scope-TestLoopCanonicalisation.test_transform_scope   sP   	( T../ 	- T445 	9	+
 	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                   ^  U 4S jnU" T R                   5      u  p#U" T R                  5      u  pEU 4S jnU" X$5        T R                  [        UR                  5      S-   [        UR                  5      5        S nU" US5      nT R                  [        U5      S5        U" US5      n	T R                  [        U	5      S5        U" US5      n
T R                  [        U
5      S5        T R                  US   R
                  R                  U
S   R
                  R                  5        U	 HH  nUR                  U   R                  S   nT R                  [        U[        R                  5      5        MJ     g	)
zKThis heavily checks a typed transformation only impacts tuple
induced loopsc                    > [        U S9S 5       nSnTR                  U" U5      UR                  U5      5        UR                  UR                  S      nUR
                  S   nXCR                  4$ )Nr   c                 n    Sn[        S5       H#  nU  H  n[        S5       H  nUS-  nM
     M     M%     U$ Nr   r\   rF   rD   ranger   r   r   yjs        r=   rJ   YTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.get_info.<locals>.foo   s=    qA !&qA1HC "* ! " 
r@   rC   r   r   r   r   s        r=   r   LTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.get_info   so    * + ASVS[[^4==!23DmmI.GKK''r@   c                    > [        [        U R                  5      5      n[        [        UR                  5      5      nTR                  X#5        g rs   r   r   s       r=   r   OTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.compare_cfg  r   r@   rF   c                     U R                   R                  5        Vs/ s H8  n[        U[        R                  5      (       d  M$  UR
                  U:X  d  M6  UPM:     sn$ s  snf rs   r   r   s      r=   r   MTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.find_getX  r   r   r   r   rD   r   Nr   TypedLoopCanonicalisingCompilerrM   r   rz   r   r   r   r3   r4   r   r   r7   r   r   r   r   r   r   r   r   r   r   rI   r   s   `            r=   !test_influence_of_typed_transform:TestLoopCanonicalisation.test_influence_of_typed_transform   sV   
	(" T../ 	- T99: 	9	+
 	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                   ^  U 4S jnU" T R                   5      u  p#U" T R                  5      u  pEU 4S jnU" X$5        T R                  [        UR                  5      S-   [        UR                  5      5        S nU" US5      nT R                  [        U5      S5        U" US5      n	T R                  [        U	5      S5        U" US5      n
T R                  [        U
5      S5        T R                  US   R
                  R                  U
S   R
                  R                  5        U	 HH  nUR                  U   R                  S   nT R                  [        U[        R                  5      5        MJ     g	)
zXThis heavily checks a typed transformation only impacts loops with
literal_unroll markerc                    > [        U S9S 5       nSnTR                  U" U5      UR                  U5      5        UR                  UR                  S      nUR
                  S   nXCR                  4$ )Nr   c                     Sn[        S5       H,  n[        U 5       H  n[        S5       H  nUS-  nM
     M     M.     U$ r   )r   r
   r   s        r=   rJ   hTestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.get_info.<locals>.foo6  sB    qA+C0!&qA1HC "* 1 " 
r@   rC   r   r   r   r   s        r=   r   [TestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.get_info5  so    * + ASVS[[^4==!23DmmN3GKK''r@   c                    > [        [        U R                  5      5      n[        [        UR                  5      5      nTR                  X#5        g rs   r   r   s       r=   r   ^TestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.compare_cfgK  r   r@   rF   c                     U R                   R                  5        Vs/ s H8  n[        U[        R                  5      (       d  M$  UR
                  U:X  d  M6  UPM:     sn$ s  snf rs   r   r   s      r=   r   \TestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.find_getXY  r   r   r   r   rD   r   Nr   r   s   `            r=   0test_influence_of_typed_transform_literal_unrollITestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll1  sV   	(" T../ 	- T99: 	9	+
 	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                    ^  U 4S jnU" T R                   5      u  p#U" T R                  5      u  pEU 4S jnU" X$5        T R                  [        UR                  5      S-   [        UR                  5      5        g)r   c                    > [        U S9S 5       nSnTR                  U" U5      UR                  U5      5        UR                  UR                  S      nUR
                  S   nXCR                  4$ )Nr   c                     SnU  H)  nX-  nU S-    H  nUSU-
  -  nUS:  d  M    M"     US-  nM+     U  H
  nXS-  -  nM     U$ )Nr   )r\         rD   r  rE   rG   )r   r   r   r   s       r=   rJ   JTestLoopCanonicalisation.test_lots_of_loops.<locals>.get_info.<locals>.foot  sf    AHC 9_q1uq5! -
 q  Aq5LC  
r@   rC   r   r   r   r   s        r=   r   =TestLoopCanonicalisation.test_lots_of_loops.<locals>.get_infos  so    * + ASVS[[^4==!23DmmN3GKK''r@   c                    > [        [        U R                  5      5      n[        [        UR                  5      5      nTR                  X#5        g rs   r   r   s       r=   r   @TestLoopCanonicalisation.test_lots_of_loops.<locals>.compare_cfg  r   r@   	   Nr   r   rM   r   rz   r7   r   r   r   r   r   r   s   `      r=   test_lots_of_loops+TestLoopCanonicalisation.test_lots_of_loopso  sy    	(0 T../ 	- T445 	9	+
 	O; 	0::;eC6@@A	Cr@   c                    ^  U 4S jnU" T R                   5      u  p#U" T R                  5      u  pEU 4S jnU" X$5        T R                  [        UR                  5      S-   [        UR                  5      5        g)z'Checks a loop appearing from a closure c                    > [        U S9S 5       nSnTR                  U" U5      UR                  U5      5        UR                  UR                  S      nUR
                  S   nXCR                  4$ )Nr   c                 >    S nSnU  H  nX#-  nX!" U5      -  nM     U$ )Nc                 8    Sn[        U 5       H  nUS-  nM
     U$ Nr   rD   r   )nr   r   s      r=   barWTestLoopCanonicalisation.test_inlined_loops.<locals>.get_info.<locals>.foo.<locals>.bar  s#    C"1Xq &Jr@   r   rG   )r   r  r   r   s       r=   rJ   JTestLoopCanonicalisation.test_inlined_loops.<locals>.get_info.<locals>.foo  s3     AHC3q6MC  
r@   rC   r   r   r   r   s        r=   r   =TestLoopCanonicalisation.test_inlined_loops.<locals>.get_info  so    * + ASVS[[^4==!23DmmN3GKK''r@   c                    > [        [        U R                  5      5      n[        [        UR                  5      5      nTR                  X#5        g rs   r   r   s       r=   r   @TestLoopCanonicalisation.test_inlined_loops.<locals>.compare_cfg  r   r@   r  Nr
  r  s   `      r=   test_inlined_loops+TestLoopCanonicalisation.test_inlined_loops  sy    	(. T../ 	- T445 	9	+
 	O; 	0::;a?6@@A	Cr@   rG   N)F)rf   rg   rh   ri   r   r   r   r   r   r   r   skipr   r   r  r  rj   rG   r@   r=   r   r   P   s    %P (.!-d!3&24&>#8At8At ]]BC<E D<E|<E| ]]BC,C D,C\,Cr@   r   c                   .   \ rS rSrS rS rS rS rS r\	R                  " S5      S 5       rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r \!S 5       r"\!S 5       r#\!S  5       r$S! r%S" r&S# r'S$ r(S% r)S&r*g')(TestMixedTupleUnrolli  c                 v    [         S 5       nSnUnU R                  U" SU5      UR                  SU5      5        g )Nc                     SSSSUSU-  4nSn[        [        [        U5      5      5       H"  nX2U   -  nUR                  S:  a  US-  nM!    U$    U$ 	N   ffffff)@              @r\   rE   r   r,   rD   r   r   r
   real)idxzrU   r   r   s        r=   rJ   )TestMixedTupleUnroll.test_01.<locals>.foo  sd    T2q!QU+AC3~a012t88b=1HCJ 3 Jr@   r	  rE   r   rM   rN   r7   rJ   fks       r=   test_01TestMixedTupleUnroll.test_01  sA    			 
		 QCKK1$56r@   c                 v    [         S 5       nSnUnU R                  U" SU5      UR                  SU5      5        g )Nc                 |    SSSSUSU-  4nSn[        U5       H  nX4-  nUR                  S:  a  US-  nM    U$    U$ r!  r
   r&  )r'  r(  rI   r   rU   s        r=   rJ   )TestMixedTupleUnroll.test_02.<locals>.foo  sV    T2q!QU+AC#A&88b=1HCJ ' Jr@   r	  rE   r*  r+  s       r=   test_02TestMixedTupleUnroll.test_02  sC     
		 
		 QCKK1$56r@   c                 v    [         S 5       nSnUnU R                  U" SU5      UR                  SU5      5        g )Nc                     SSSSUSU-  4nSUSU-  4nSn[        U5       H7  nXE-  nUR                  S:  a  US	-  nM  [        U5       H	  nXFS
L -  nM       U$    U$ )Nr"  r#  r$  r\   rE   rJ   r   r,   rD   Fr2  )r'  r(  rI   r   r   rU   ts          r=   rJ   )TestMixedTupleUnroll.test_03.<locals>.foo  s    T2q!QU+A1q5!AC#A&88b=1HC+A.Ez) /J ' Jr@   r	  rE   r*  r+  s       r=   test_03TestMixedTupleUnroll.test_03  sA    		 
	 QCKK1$56r@   c                     [         S 5       nSn[        R                  " U45      [        R                  " X"45      [        R                  " X"U45      4nU R                  U" U5      UR	                  U5      5        g )Nc                 R    Sn[        U 5       H  nXR                  5       -  nM     U$ r   r
   sumr   r   rU   s      r=   rJ   )TestMixedTupleUnroll.test_04.<locals>.foo  s(    C#C(uuw )Jr@   r(   r   nponesrM   rN   r7   rJ   r  r   s       r=   test_04TestMixedTupleUnroll.test_04  se    		 
	 wwt}bggqforwway/ABS3;;s#34r@   c                 Z   [         S 5       nSnSn[        R                  " U45      [        R                  " X"45      [        R                  " X"U45      [        R                  " X"X"45      [        R                  " X"X"U45      4nU R                  U" X45      UR	                  X45      5        g )Nc                 b   Sn[        U 5       H  nUS:X  a  X!S   R                  5       -  nM   US:X  a  X!S   R                  5       -  nM=  US:X  a  X!S   R                  5       -  nMZ  US:X  a  X!S   R                  5       -  nMw  US	:X  a  X!S
   R                  5       -  nM  [        S5      e   U$ )Nr   rU   r   rD   crE   r"  rF   r$  r\   Unreachable)r
   r?  RuntimeErrortup1tup2r   rU   s       r=   rJ   )TestMixedTupleUnroll.test_05.<locals>.foo  s    C#D)87;;=(C#X7;;=(C#X7;;=(C"W7;;=(C"W7;;=(C&}55 * Jr@   r(   )rU   r   rJ  r"  r$  rB  )r7   rJ   r  rN  rO  s        r=   test_05TestMixedTupleUnroll.test_05  s    		 
	" 'rwwvq	0Bq%rwwaA'?AT#++d*ABr@   zneeds more clever branch prunec                 n    [         S 5       nSnU R                  U" U5      UR                  U5      5        g )Nc                     Sn[         R                  R                  [        R                  5      n[        U 5       H   nUS:X  a  UR                  U5        M  X-  nM"     U$ )Nr   rU   )r	   List
empty_listr   unicode_typer
   append)r   r   str_bufrU   s       r=   rJ   )TestMixedTupleUnroll.test_06.<locals>.foo7  sQ    Cjj++E,>,>?G#C(8NN1%HC	 )
 Jr@   )rU   r"  r*  )r7   rJ   r   s      r=   test_06TestMixedTupleUnroll.test_063  s:     
	 
	 S3;;s#34r@   c                     [         S 5       nSn[        R                  " U45      [        R                  " X"45      SSS1 Sk4nU R                  U" U5      UR	                  U5      5        g )Nc                 J    Sn[        U 5       H  nU[        U5      -  nM     U$ r   r
   r   r@  s      r=   rJ   )TestMixedTupleUnroll.test_07.<locals>.fooG  s(    C#C(s1v )Jr@   r(   
ABCDEFGHJIrC   rD   rJ   rE   r     rF   r\   r  r     rB  rE  s       r=   test_07TestMixedTupleUnroll.test_07E  sa    		 
	 wwt}bggqfo|Y#_6S3;;s#34r@   c                     [         S 5       nS nSnU" S5      U" S5      U" S5      4nU R                  U" X45      UR                  X45      5        g )Nc                     Sn[        U 5       H?  nUS:X  a  X!S   " 5       -  nM  US:X  a  X!S   " 5       -  nM+  US:X  d  M3  X!S   " 5       -  nMA     U$ )Nr   rU   r   rD   rJ  rE   r
   rM  s       r=   rJ   )TestMixedTupleUnroll.test_08.<locals>.fooV  s\    C#D)879$C#X79$C#X79$C * Jr@   c                 &   ^  U 4S jn[        U5      $ )Nc                     > T $ rs   rG   rH   s   r=   impl7TestMixedTupleUnroll.test_08.<locals>.gen.<locals>.implc  s    r@   r   )rI   rm  s   ` r=   gen)TestMixedTupleUnroll.test_08.<locals>.genb  s    :r@   )rU   r   rJ  r"  r$  )r,  rD   rE   rF   r*  )r7   rJ   rp  rN  rO  s        r=   test_08TestMixedTupleUnroll.test_08S  sW     
		 
			
 /AAA'T#++d*ABr@   c                 @   [         S 5       n[         S 5       n[         S 5       n[         S 5       nSnSnU R                  [        R                  5       nU" XV5        S S S 5        U R	                  [
        [        WR                  5      5        g ! , (       d  f       N8= f)Nc                     SnSn[        U 5       H1  nUS:X  a  X!U   -  nOUS:X  a  X!U   -  nOUS:X  a  X!U   -  nUS-  nM3     X24$ )Nr   rU   r   rJ  rD   ri  )rN  rO  r   r'  rU   s        r=   rJ   )TestMixedTupleUnroll.test_09.<locals>.foon  sf    CC#D)89$C#X9$C#X9$Cq * 8Or@   c                      gNrD   rG   rG   r@   r=   func1+TestMixedTupleUnroll.test_09.<locals>.func1|      r@   c                      gNrE   rG   rG   r@   r=   func2+TestMixedTupleUnroll.test_09.<locals>.func2  r{  r@   c                      gNrF   rG   rG   r@   r=   func3+TestMixedTupleUnroll.test_09.<locals>.func3  r{  r@   rU   r   rJ  )r[   rD   rE   r   r^   r   TypingErrorr`   r&   ra   rb   )r7   rJ   ry  r~  r  rN  rO  raisess           r=   test_09TestMixedTupleUnroll.test_09k  s     
	 
	 
	 
	 
	 
	 
	 
	 v112fO 3 	lC(8(8$9: 32s   	B
Bc                    ^ S m[        TSS9S 5       n[        U4S j5       nU R                  U" 5       UR                  5       5        g )Nc                 D    U S:X  a  gU S:X  a  gU S:X  a  gU S:X  a  SU -   $ g 	NapplerD   orangerE   bananarF      +# \rG   r   s    r=   dt(TestMixedTupleUnroll.test_10.<locals>.dt  ;    ("("*$!E)) %r@   alwaysinlinec                   ^ [        U [        R                  5      (       a-  U R                  mTS:X  a  S nU$ TS:X  a  S nU$ TS:X  a  S nW$ [        U [        R                  5      (       a  U R                  mTS:X  a  U4S jnU$ g g )	Nr  c                     grx  rG   lis    r=   rm  9TestMixedTupleUnroll.test_10.<locals>.ol_dt.<locals>.impl       r@   r  c                     gr}  rG   r  s    r=   rm  r    r  r@   r  c                     gr  rG   r  s    r=   rm  r    r  r@   r  c                    > ST-   $ Nr  rG   r  r   s    r=   rm  r        )E11r@   r4   r   StringLiteralliteral_valueIntegerLiteralr  rm  r   s     @r=   ol_dt+TestMixedTupleUnroll.test_10.<locals>.ol_dt      "e1122((G#!  h&!
  h&!B 4 455((J&2  K	 ' 6r@   c                  F   > Sn [        S5       H  nU T" U5      -  n M     U $ Nr   )r  r  r  r  ri  r   r8  r  s     r=   rJ   )TestMixedTupleUnroll.test_10.<locals>.foo  s+    C#$MNr!u OJr@   r   r   rM   rN   r7   r  rJ   r  s      @r=   test_10TestMixedTupleUnroll.test_10  Q    	* 
"X	&	  
'	 * 
	 
	 	.r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                      / n Sn[        [        [        U5      5      5       HR  nX   nUS:X  a  U R                  S5        M   US:X  a  U R                  U5        M9  US:X  d  MA  U R                  S5        MT     U $ N)r  r  r  r  0r  r  z2.0r   r   r
   rX  rI   r(  r   r8  s       r=   rJ   )TestMixedTupleUnroll.test_11.<locals>.foo  si    A-A3~a012D<HHSM(]HHQK(]HHUO 3 Hr@   r*  rO   s     r=   test_11TestMixedTupleUnroll.test_11  .    		 
	 	.r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                     [         R                  " 5       n Sn[        [        [	        U5      5      5       HR  nX   nUS:X  a  U R                  S5        M   US:X  a  U R                  U5        M9  US:X  d  MA  U R                  S5        MT     U $ r  )r	   rU  r   r   r
   rX  r  s       r=   rJ   *TestMixedTupleUnroll.test_11a.<locals>.foo  so    

A-A3~a012D<HHSM(]HHQK(]HHUO 3 Hr@   r*  rO   s     r=   test_11aTestMixedTupleUnroll.test_11a  r  r@   c                 v    [         S 5       nSnUnU R                  U" SU5      UR                  SU5      5        g )Nc                     SSSSUSU-  4nSn[        U5       H4  nX4-  nUR                  S:  a  US-  nM  [        U5       H  nX5-  nM	       O   US   S	:  a  US-  nU$ 
Nr"  r#  r$  r\   rE   r   r,   rD      r2  r'  r(  rU   r   r   rI   s         r=   rJ   )TestMixedTupleUnroll.test_12.<locals>.foo  s{    T2q!QU+AC#A&88b=1HC+A. / ' tbyqJr@   r	  rE   r*  r+  s       r=   test_12TestMixedTupleUnroll.test_12  A    		 
	 QCKK1$56r@   c                     [         S 5       nSnUnU R                  [        R                  5       nU" SU5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                 D   SSSSUSU-  4nSn[        U5       H_  nX4-  nUR                  S:  a  US-  nO,[        U5       H  n[        U5       H  nX6-  nM	     X5-  nM     [        U5       H  nX5-  nM	     Ma     [        U5       H  nX5-  nM	     US   S	:  a  US-  nU$ r  r2  )r'  r(  rU   r   r   rI   r   s          r=   rJ   )TestMixedTupleUnroll.test_13.<locals>.foo  s    T2q!QU+AC#A&88b=1HC+A.!/!2AHC "3 / (*AHC + ' $A& 'tbyqJr@   r	  rE   (Nesting of literal_unroll is unsupportedr   r^   r   UnsupportedErrorr`   ra   rb   r7   rJ   r,  r-  r  s        r=   test_13TestMixedTupleUnroll.test_13  sl    		 
	( v66761I 8 	@&**+	- 87   
A((
A6c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                  :    Sn Sn[        U 5       H  nX-  nM	     W$ NrD   rE   rF   r\   r   ri  rI   r   rU   s      r=   rJ   )TestMixedTupleUnroll.test_14.<locals>.foo  s'    AC#A& 'Hr@   r*  rO   s     r=   test_14TestMixedTupleUnroll.test_14  s0     
	 
	 	.r@   c                 T   [         S 5       nSn[        R                  " U45      [        R                  " X"45      SSS1 Sk4nU R                  [        R
                  5       nU" U5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                 J    Sn[        U 5       H  nU[        U5      -  nM     W$ r   r_  r  s      r=   rJ   )TestMixedTupleUnroll.test_15.<locals>.foo'  s(    C#A&s1v 'Hr@   r  ra  rC   rb  rc  Cannot unify)	r   rC  rD  r^   r   r  r`   ra   rb   )r7   rJ   r  r   r  s        r=   test_15TestMixedTupleUnroll.test_15$  s     
	 
	 wwt}bggqfo|Y#_6 v112fH 3 	nc&*:*:&;< 32s   "	B
B'c                    ^ S m[        TSS9S 5       n[        U4S j5       nU R                  U" 5       UR                  5       5        g )Nc                 <    U S:X  a  gU S:X  a  gU S:X  a  gU S:X  a  gg )	N  rU     r     rJ    drG   r  s    r=   r  (TestMixedTupleUnroll.test_16.<locals>.dt:  s/    }$$$ r@   r  r  c                     [        U [        R                  5      (       a8  U R                  nUS:X  a  S nU$ US:X  a  S nU$ US:X  a  S nU$ US:X  a  S nW$ g )	Nr  c                     gNrU   rG   r  s    r=   rm  9TestMixedTupleUnroll.test_16.<locals>.ol_dt.<locals>.implI      "r@   r  c                     gNr   rG   r  s    r=   rm  r  L  r  r@   r  c                     gNrJ  rG   r  s    r=   rm  r  O  r  r@   r  c                     gNr  rG   r  s    r=   rm  r  R  r  r@   )r4   r   r  r  r  r   rm  s      r=   r  +TestMixedTupleUnroll.test_16.<locals>.ol_dtD  su    "e2233((D=#  d]#  d]#
  d]# 4r@   c                  P   > Sn Sn[        U S S 5       H  nUT" U5      -  nM     U$ )Nr  r  r  r   rE   ri  rI   r   rU   r  s      r=   rJ   )TestMixedTupleUnroll.test_16.<locals>.fooV  s4    (AC#AbqE*r!u +Jr@   r  r  s      @r=   test_16TestMixedTupleUnroll.test_167  sQ    	 
"X	&	 
'	" 
	 
	 	.r@   c                    ^ S m[        TSS9S 5       n[        U4S j5       nU R                  U" 5       UR                  5       5        g )Nc                 J    U S:X  a  gU S:X  a  gU S:X  a  gU S:X  a  gU S	:X  a  g
g )Nr  rU   r  r   r  rJ  r  r  r,  EFFrG   r  s    r=   r  (TestMixedTupleUnroll.test_17.<locals>.dtc  s9    }$$$# r@   r  r  c                     [        U [        R                  5      (       a8  U R                  nUS:X  a  S nU$ US:X  a  S nU$ US:X  a  S nU$ US:X  a  S nW$ [        U [        R                  5      (       a  U R                  nUS	:X  a  S
 nU$ g g )Nr  c                     gr  rG   r  s    r=   rm  9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.implt  r  r@   r  c                     gr  rG   r  s    r=   rm  r  w  r  r@   r  c                     gr  rG   r  s    r=   rm  r  z  r  r@   r  c                     gr  rG   r  s    r=   rm  r  }  r  r@   r,  c                     g)Nr  rG   r  s    r=   rm  r    s    $r@   )r4   r   r  r  r  r  s      r=   r  +TestMixedTupleUnroll.test_17.<locals>.ol_dto  s    "e2233((D=#  d]#  d]#
  d]#B 3 344((C<%K   5r@   c                  P   > Sn Sn[        U SS  5       H  nUT" U5      -  nM     U$ )N)r  r  r  r,  r  rD   ri  r  s      r=   rJ   )TestMixedTupleUnroll.test_17.<locals>.foo  s4    'AC#AabE*r!u +Jr@   r  r  s      @r=   test_17TestMixedTupleUnroll.test_17`  sQ    
	 
"X	&	  
'	 . 
	 
	 	.r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                  Z    Sn Sn[        U S S S2   5       H  nUS-  nUS:  d  M    U$    U$ )N)r  r  r  r  i  ip  r   rD   r  ri  )rI   countrU   s      r=   rJ   )TestMixedTupleUnroll.test_18.<locals>.foo  sB    4AE#AddG,
t8L	 - Lr@   r*  rO   s     r=   test_18TestMixedTupleUnroll.test_18  s.    		 
	 	.r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                      Sn / SQnSS/nX4n[         R                  " S5      n[         R                  " S[         R                  S9nXX%4n[	        U5       H  nU [        U5      -  n M     U $ )Nr   r  r(      r  dtyperC  arangerD  
complex128r
   r   r   l1l2r   a1a2r8  s          r=   rJ   )TestMixedTupleUnroll.test_19.<locals>.foo  sh    CBbB(C2B"--0B2"C#C(s1v )Jr@   r*  rO   s     r=   test_19TestMixedTupleUnroll.test_19  s.    	
	 

	 	.r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                      / n [         R                  " S5      n[         R                  " S[         R                  S9nX4n[	        U5       H"  nU R                  UR                  5       5        M$     U $ )Nr  r  r  )rC  r  rD  r   r
   rX  r?  )lr$  r%  r   r8  s        r=   rJ   )TestMixedTupleUnroll.test_20.<locals>.foo  sU    A2B"--0B(C#C(! )Hr@   r*  rO   s     r=   test_20TestMixedTupleUnroll.test_20  s0     
	 
	 	.r@   c                 r    [         S 5       nSnUnU R                  U" U5      UR                  U5      5        g )Nc                 F   ^ SmU4S jnSnS H  nX!" 5       U-   -  nM     U$ )Nr  gfffff7@y              @   c                  8   > Sn [        T5       H  nX-  n M	     U $ r   ri  r   r   r   s     r=   r  6TestMixedTupleUnroll.test_21.<locals>.foo.<locals>.bar  #    '*AHC +
r@   r   r  rG   r(  r  	outer_accrI   r   s       @r=   rJ   )TestMixedTupleUnroll.test_21.<locals>.foo  s6    !A
 I!SUQY&	 " r@   r	  r*  r+  s       r=   test_21TestMixedTupleUnroll.test_21  s<    		 
	 QQ0r@   c                     [         S 5       nSnUnU R                  [        R                  5       nU" U5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                 j   ^ SSSSU SU -  S4nSmU4S jnS	n[        U5       H  nX2" 5       -  nM     U$ )
Nr"  r#  r$  r\   rE   rU   r1  c                  8   > Sn [        T5       H  nX-  n M	     U $ r   ri  r4  s     r=   r  6TestMixedTupleUnroll.test_22.<locals>.foo.<locals>.bar  r6  r@   r   ri  )r(  rU   r  r   rI   r   s        @r=   rJ   )TestMixedTupleUnroll.test_22.<locals>.foo  sO    T2q!QUC0A!A
 C $A&su ' Jr@   r	  r  r  r  s        r=   test_22TestMixedTupleUnroll.test_22  sl    $ 
	 
	" v6676F 8 	@&**+	- 87   	A''
A5c                     [         S 5       nSnUnU R                  [        R                  5       nU" U5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                 X   ^ SmU4S jnSn[        T5       H  nX!" 5       U-   -  nM     U$ )Nr1  c                  8   > Sn [        T5       H  nX-  n M	     U $ r   ri  r4  s     r=   r  6TestMixedTupleUnroll.test_23.<locals>.foo.<locals>.bar  r6  r@   r   ri  r7  s       @r=   rJ   )TestMixedTupleUnroll.test_23.<locals>.foo  s=    !A
 I $A&SUQY&	 ' r@   r	  r  r  r  s        r=   test_23TestMixedTupleUnroll.test_23  sj    		 
	" v6676F 8 	@&**+	- 87rC  c                     [         S 5       nU R                  [        R                  5       nU" 5         S S S 5        SnU R	                  U[        WR                  5      5        g ! , (       d  f       N6= f)Nc                  >    [        S5       H  n [        U 5        M     g )NABCDEr
   printrH   s    r=   rJ   )TestMixedTupleUnroll.test_24.<locals>.foo   s    #G,a -r@   z7argument should be a tuple or a list of constant valuesr  )r7   rJ   r  msgs       r=   test_24TestMixedTupleUnroll.test_24  s`    		 
	 v6676E 8 Hc3v//01	 87s   A$$
A2c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                  z    [        SSSS/S45      n U nUn/ nU H  nUR                  [        U5      5        M     U$ )NrC   )               @r$  rD   rE   xyz)r
   rX  r   )valalias1alias2lensrI   s        r=   rJ   )TestMixedTupleUnroll.test_25.<locals>.foo-  sG     )X1vu!EFCFFDCF# Kr@   r*  rO   s     r=   test_25TestMixedTupleUnroll.test_25+  s.    		 
	 	.r@   c                 r    [         S 5       nSnUnU R                  U" U5      UR                  U5      5        g )Nc                     SSSSU SU -  4nSnSnSnSn[         R                  " [        U5      4[         R                  S	9n[	        U5       H  nX'-  nXvU'   US
-  nX5-   nM     WX$XV4$ )Nr"  r#  r$  r\   rE   r   6      r  rD   )rC  emptyr   r   r
   )	r(  rU   r   r  	untouched	read_onlymutatedrI   escapes	            r=   rJ   )TestMixedTupleUnroll.test_26.<locals>.foo>  s    T2q!QU+ACEIIhhAy>G#A&!"
*	 '
 39==r@   r	  )r   assertPreciseEqualrN   r+  s       r=   test_26TestMixedTupleUnroll.test_269  s>    
 
	> 
	> AA7r@   c                 x    [        SS9S 5       nSnUnU R                  U" U5      UR                  U5      5        g )NTparallelc                 r    SSSSU SU -  4nSn[        U5       H  n[        S5       H  nUS-  nM
     M     U$ )	Nr"  r#  r$  r\   rE   r   r(   rD   r
   r   r(  rU   r   rI   r-  s        r=   rJ   )TestMixedTupleUnroll.test_27.<locals>.fooU  sJ    T2q!QU+AC#A&A1HC $ ' Jr@   r	  r*  r+  s       r=   test_27TestMixedTupleUnroll.test_27R  sC     
t		 
	 QQ0r@   c                     [        SS9S 5       nSnUn[        R                  R                  U" U5      UR	                  U5      5        g )NTrm  c                 p    SSSSU SU -  4nSn[        U5       H  n[        S5       H  nX#-  nM	     M     U$ Nr"  r#  r$  r\   rE   r   r(   rp  rq  s        r=   rJ   )TestMixedTupleUnroll.test_28.<locals>.foof  sH    T2q!QU+AC#A&AHC $ ' Jr@   r	  )r   rC  testingassert_allcloserN   r+  s       r=   test_28TestMixedTupleUnroll.test_28c  sI     
t		 
	  	

""3q63;;q>:r@   c                 x    [        SS9S 5       nSnUnU R                  U" U5      UR                  U5      5        g )NTrm  c                 p    SSSSU SU -  4nSn[        S5       H  n[        U5       H  nX$-  nM	     M     U$ rw  )r   r
   )r(  rU   r   r-  rI   s        r=   rJ   )TestMixedTupleUnroll.test_29.<locals>.fooy  sH    T2q!QU+ACBZ'*AHC +   Jr@   r	  r*  r+  s       r=   test_29TestMixedTupleUnroll.test_29u  sC     
t		 
	 QQ0r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                  V   ^ SmU4S jn [        U S5       Vs/ s H  oPM     sn$ s  snf )N  c                 D   > SnSn[        U5       H
  nXT-   -  nM     X4$ Nr   r"  r#  r$  r\   ri  r8  r   rU   rI   consts       r=   r  6TestMixedTupleUnroll.test_30.<locals>.foo.<locals>.bar  /    %'*Au9$C +vr@   rD   rE   mapr  rI   r  s     @r=   rJ   )TestMixedTupleUnroll.test_30.<locals>.foo  s0    E  #3/0/!A/000   &r*  rO   s     r=   test_30TestMixedTupleUnroll.test_30  s.    			1 
		1 	.r@   c                 8   [         S 5       nU R                  [        R                  5       nU" 5         S S S 5        U R	                  [
        [        WR                  5      5        U R	                  S[        UR                  5      5        g ! , (       d  f       N]= f)Nc                  V   ^ SmU4S jn [        U S5       Vs/ s H  oPM     sn$ s  snf )Nr  c                 D   > SnSn[        U5       H
  nXT-   -  nM     X4$ r  ri  r  s       r=   r  6TestMixedTupleUnroll.test_31.<locals>.foo.<locals>.bar  r  r@   )rD   rV  r  r  s     @r=   rJ   )TestMixedTupleUnroll.test_31.<locals>.foo  s0    E  #3010!A0111r  zipr  r7   rJ   r  s      r=   test_31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                    ^ [         S 5       m[         U4S j5       nU R                  U" 5       UR                  5       5        g )Nc              3   8   #    [        U 5       H  nUv   M	     g 7frs   ri  rU   rI   s     r=   rp  )TestMixedTupleUnroll.test_32.<locals>.gen  s     #A& '   c                  >   > T" S5       V s/ s H  o PM     sn $ s  sn f )NrD   gffffff@y              @rG   )rI   rp  s    r=   rJ   )TestMixedTupleUnroll.test_32.<locals>.foo  s"    "=121!A1222s   r*  )r7   rJ   rp  s     @r=   test_32TestMixedTupleUnroll.test_32  sC    		 
	 
	3 
	3 	.r@   c                     [         S 5       nS nU" U5      nU" UR                  5      R                  nU R                  U" 5       U" 5       5        g )Nc              3       #    U " U5      v   g 7frs   rG   )r8   args     r=   consumer.TestMixedTupleUnroll.test_33.<locals>.consumer  s     s)Os   c                 &   ^  [         U 4S j5       nU$ )Nc                  Z   > S n T" U S5       Vs/ s H  n[        U5      PM     sn$ s  snf )Nc              3   8   #    [        U 5       H  nUv   M	     g 7frs   ri  r  s     r=   rp  CTestMixedTupleUnroll.test_33.<locals>.get.<locals>.foo.<locals>.gen  s     +A. /r  r  )next)rp  rI   conss     r=   rJ   6TestMixedTupleUnroll.test_33.<locals>.get.<locals>.foo  s/      *.c=)AB)AAQ)ABBBs   (ro  )r  rJ   s   ` r=   get)TestMixedTupleUnroll.test_33.<locals>.get  s    C C
 Jr@   )r   rN   rM   )r7   r  r  cfuncpyfuncs        r=   test_33TestMixedTupleUnroll.test_33  sP     
	 
		 HX%%&..&(+r@   c                 0   [         S 5       nU R                  [        R                  5       nU" 5         S S S 5        U R	                  S[        WR                  5      5        U R	                  S[        UR                  5      5        g ! , (       d  f       NY= f)Nc                      Sn / SQnSS/nU S-
  S:  a  X4nO=[         R                  " S5      n[         R                  " S[         R                  S9nXX%4n[	        U5       H  nU [        U5      -  n M     U $ )	Nr   r  r(   r  rE   rF   r  r  r  r!  s          r=   rJ   )TestMixedTupleUnroll.test_34.<locals>.foo  ss    CBbBQw{hYYr]WWQbmm4r&#C(s1v )Jr@   zInvalid use ofz&found multiple definitions of variabler  r  s      r=   test_34TestMixedTupleUnroll.test_34  sx    		 
	 v6676E 8 	&F,<,<(=>>&**+	-	 87s   B
BrG   N)+rf   rg   rh   ri   r.  r4  r:  rF  rQ  r   r  r[  re  rr  r  r  r  r  r  r  r  r  r   r  r  r'  r-  r:  rA  rI  rR  r]  rj  r   rs  r{  r  r  r  r  r  r  rj   rG   r@   r=   r  r    s    7&7(7,5C4 ]]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                   h    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)TestConstListUnrolli  c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                      / SQn Sn[        [        [        U 5      5      5       H"  nXU   -  nUR                  S:  a  US-  nM!    U$    U$ Nr  r   r,   rD   r%  )rU   r   r   s      r=   rJ   (TestConstListUnroll.test_01.<locals>.foo  sS    !AC3~a012t88b=1HCJ 3 Jr@   r*  rO   s     r=   r.  TestConstListUnroll.test_01  s.    			 
		 	.r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                  n    / SQn Sn[        U 5       H  nX-  nUR                  S:  a  US-  nM    U$    U$ r  r2  r  s      r=   rJ   (TestConstListUnroll.test_02.<locals>.foo  sE    !AC#A&88b=1HCJ ' Jr@   r*  rO   s     r=   r4  TestConstListUnroll.test_02  s0     
		 
		 	.r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                      / SQn SS/nSn[        U 5       H7  nX#-  nUR                  S:  a  US-  nM  [        U5       H	  nX$SL -  nM       U$    U$ )Nr  rJ   r2  r   r,   rD   Fr2  rI   r   r   rU   r8  s        r=   rJ   (TestConstListUnroll.test_03.<locals>.foo  si    !A
AC#A&88b=1HC+A.Ez) /J ' Jr@   r*  rO   s     r=   r:  TestConstListUnroll.test_03  .    		 
	 	.r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                      / SQn SnSn[        U 5       H7  nX#-  nUR                  S:  a  US-  nM  [        U5       H	  nX$SL -  nM       U$    U$ )Nr  )rJ   r2  r   r,   rD   Fr2  r  s        r=   rJ   (TestConstListUnroll.test_04.<locals>.foo!  se    !AAC#A&88b=1HC+A.Ez) /J ' Jr@   r*  rO   s     r=   rF  TestConstListUnroll.test_04  r  r@   c                 0   [         S 5       nSn[        R                  " S5      [        R                  " S5      /n[        R                  " U45      [        R                  " X"45      [        R                  " X"U45      [        R                  " X"X"45      [        R                  " X"X"U45      4nU R	                  [
        R                  5       nU" X45        S S S 5        SnU R                  U[        WR                  5      5        g ! , (       d  f       N6= f)Nc                 n    Sn[        U 5       H#  nUS   S:  d  M  X!S   R                  5       -  nM%     U$ r  r>  rM  s       r=   rJ   (TestConstListUnroll.test_05.<locals>.foo4  s:    C#D)Q4!87;;=(C * Jr@   r(   z6Invalid use of literal_unroll with a function argument)
r   rC  zerosrD  r^   r   r  r`   ra   rb   )r7   rJ   r  rN  rO  r  rQ  s          r=   rQ  TestConstListUnroll.test_052  s    		 
	 bhhrl+rwwvq	0Bq%rwwaA'?A v6676O 8 Gc3v//01	 87s   	D
Dc                     [         S 5       nU R                  [        R                  5       nU" 5         S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                      Sn [         R                  " U 45      [         R                  " X 45      SSS1 Sk/nSn[        U5       H  nU[        U5      -  nM     U$ )Nr(   ra  rC   rb  rc  r   )rC  rD  r
   r   )r  r   r   rU   s       r=   rJ   (TestConstListUnroll.test_06.<locals>.fooI  sV    A77A4="''1&/<':CC#C(s1v )Jr@   z&Found non-constant value at position 0r  r  s      r=   r[  TestConstListUnroll.test_06G  s^    		 
	 v6676E 8 	>&**+	- 87   A""
A0c                    ^ S m[        TSS9S 5       n[        U4S j5       nU R                  U" 5       UR                  5       5        g )Nc                 D    U S:X  a  gU S:X  a  gU S:X  a  gU S:X  a  SU -   $ g r  rG   r  s    r=   r  &TestConstListUnroll.test_7.<locals>.dt\  r  r@   r  r  c                   ^ [        U [        R                  5      (       a-  U R                  mTS:X  a  S nU$ TS:X  a  S nU$ TS:X  a  S nW$ [        U [        R                  5      (       a  U R                  mTS:X  a  U4S jnU$ g g )	Nr  c                     grx  rG   r  s    r=   rm  7TestConstListUnroll.test_7.<locals>.ol_dt.<locals>.implk  r  r@   r  c                     gr}  rG   r  s    r=   rm  r  n  r  r@   r  c                     gr  rG   r  s    r=   rm  r  q  r  r@   r  c                    > ST-   $ r  rG   r  s    r=   rm  r  w  r  r@   r  r  s     @r=   r  )TestConstListUnroll.test_7.<locals>.ol_dtf  r  r@   c                  J   > Sn [        / SQ5       H  nU T" U5      -  n M     U $ r  ri  r  s     r=   rJ   'TestConstListUnroll.test_7.<locals>.foo|  s+    C#$MNr!u OJr@   r  r  s      @r=   test_7TestConstListUnroll.test_7Y  r  r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                      / n / SQn[        [        [        U5      5      5       HR  nX   nUS:X  a  U R                  S5        M   US:X  a  U R                  U5        M9  US:X  d  MA  U R                  S5        MT     U $ r  r  r  s       r=   rJ   'TestConstListUnroll.test_8.<locals>.foo  si    A-A3~a012D<HHSM(]HHQK(]HHUO 3 Hr@   r*  rO   s     r=   test_8TestConstListUnroll.test_8  r  r@   c                 v    [         S 5       nSnUnU R                  U" SU5      UR                  SU5      5        g )Nc                     / SQnSn[        U5       H4  nX4-  nUR                  S:  a  US-  nM  [        U5       H  nX5-  nM	       O   US   S:  a  US-  nU$ )Nr  r   r,   rD   r  rE   r2  r  s         r=   rJ   'TestConstListUnroll.test_9.<locals>.foo  sj    !AC#A&88b=1HC+A. / ' tbyqJr@   r	  rE   r*  r+  s       r=   test_9TestConstListUnroll.test_9  r  r@   c                     [         S 5       nSnUnU R                  [        R                  5       nU" SU5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                 L   SSSSUSU-  4n/ SQnSn[        U5       H_  nXE-  nUR                  S:  a  US	-  nO,[        U5       H  n[        U5       H  nXG-  nM	     XF-  nM     [        U5       H  nXF-  nM	     Ma     [        U5       H  nXF-  nM	     US   S
:  a  US-  nU$ )Nr"  r#  r$  r\   rE   r  r   r,   rD   r  r2  )r'  r(  rU   r   r   r   rI   r   s           r=   rJ   (TestConstListUnroll.test_10.<locals>.foo  s    T2q!QU+A!AC#A&88b=1HC+A.!/!2AHC "3 / (*AHC + ' $A& 'tbyqJr@   r	  rE   r  r  r  s        r=   r  TestConstListUnroll.test_10  sl    		 
	* v66761I 8 	@&**+	- 87r  c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                  >    / SQn Sn[        U 5       H  nX-  nM	     W$ r  ri  r  s      r=   rJ   (TestConstListUnroll.test_11.<locals>.foo  s'    AC#A& 'Hr@   r*  rO   s     r=   r  TestConstListUnroll.test_11  s0     
	 
	 	.r@   c                     [         S 5       nU R                  [        R                  5       nU" 5         S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                  R    Sn / SQn[        U5       H  nU [        U5      -  n M     W$ )Nr   )rD   rE   rU   )r
   bool)r   rI   rU   s      r=   rJ   (TestConstListUnroll.test_12.<locals>.foo  s-    CA#A&tAw 'Hr@   r  r   r^   r   r  r`   ra   rb   r  s      r=   r  TestConstListUnroll.test_12  sZ    		 
	 v112fE 3 	nc&*:*:&;< 32r  c                     [         S 5       nU R                  [        R                  5       nU" 5         S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                  D    / SQn Sn[        U S S 5       H  nX-  nM	     U$ )Nr  r   rE   ri  r  s      r=   rJ   (TestConstListUnroll.test_13.<locals>.foo  s-    (AC#AbqE* +Jr@   zInvalid use of literal_unrollr  r  s      r=   r  TestConstListUnroll.test_13  s]     
	 
	 v6676E 8 	5s6;K;K7LM 87r  c                     [         S 5       nU R                  [        R                  5       nU" 5         S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                  `    / SQn Sn[        U 5       H  nX-  nM	     U R                  S5        U$ )Nr  r   r(   )r
   rX  r  s      r=   rJ   (TestConstListUnroll.test_14.<locals>.foo  s2    (AC#A& 'HHRLJr@   z(Unknown attribute 'append' of type Tupler  r  s      r=   r  TestConstListUnroll.test_14  s`     
	 
	 v112fE 3 	@&**+	- 32r  rG   N)rf   rg   rh   ri   r.  r4  r:  rF  rQ  r[  r  r  r  r  r  r  r  r  rj   rG   r@   r=   r  r    sK    / /"/&/&2*-$*/X/$7.-B/=N -r@   r  c                       \ rS rSrS rS r\R                  " S5      S 5       r\R                  " S5      S 5       r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestMorei  c                     [         S 5       nU R                  [        R                  5       nU" 5         S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                  :    Sn Sn[        X 5       H  nX-  nM	     U$ )N)r(   r  r   ri  rI   rrU   s      r=   rJ   2TestMore.test_invalid_use_of_unroller.<locals>.foo  s'    AA#A) *Hr@   z*literal_unroll takes one argument, found 2r  r  s      r=   test_invalid_use_of_unroller%TestMore.test_invalid_use_of_unroller  s\    		 
	 v6676E 88  !	
 87r  c                     [         S 5       nU R                  [        R                  5       nU" S5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                 >    SU /nSn[        U5       H  nX#-  nM	     U$ Nr(   r   ri  r   rI   r  rU   s       r=   rJ   ,TestMore.test_non_constant_list.<locals>.foo"  +    QAA#A& 'Hr@   r(   zKFound non-constant value at position 1 in a list argument to literal_unrollr  r  s      r=   test_non_constant_listTestMore.test_non_constant_list   s`    		 
	 v6676G 8  !	
 87s   	A##
A1z!numba.literally not supported yetc                 n   ^^ SSK Jm  [        U4S j5       mT" S5        [        U4S j5       nU" 5         g )Nr   )	literallyc                 L   > ST" U 5      /nSn[        U5       H  nX#-  nM	     U$ r  ri  )r   rI   r  rU   r  s       r=   rJ   2TestMore.test_literally_constant_list.<locals>.foo7  s1    Yq\"AA#A& 'Hr@   r"  c                     > T " S5      $ Nr"  rG   rJ   s   r=   r  2TestMore.test_literally_constant_list.<locals>.barC      r7Nr@   )numbar  r   )r7   r  rJ   r  s     @@r=   test_literally_constant_list%TestMore.test_literally_constant_list2  s<     	$		 
	 	B		 
	
 	r@   z8inlining of foo doesn't have const prop so y isn't constc                 p   ^ [        SS9S 5       m[         U4S j5       nU R                  U" 5       S5        g )Nr  r  c                 >    SU /nSn[        U5       H  nX#-  nM	     U$ r  ri  r  s       r=   rJ   .TestMore.test_inlined_unroll_list.<locals>.fooM  r  r@   c                     > T " S5      $ r!  rG   r"  s   r=   r  .TestMore.test_inlined_unroll_list.<locals>.barU  r$  r@      )r   rM   )r7   r  rJ   s     @r=   test_inlined_unroll_list!TestMore.test_inlined_unroll_listK  sB    	X		 
	 
	 
	 	(r@   c                     [         S 5       nU R                  U" S5      UR                  S5      5        U R                  U" S5      UR                  S5      5        g )Nc                 >    SU 4nSn[        U5       H  nX#-  nM	     U$ r  ri  r  s       r=   rJ   +TestMore.test_unroll_tuple_arg.<locals>.foo\  r  r@   r"  333333?r*  rO   s     r=   test_unroll_tuple_argTestMore.test_unroll_tuple_arg[  sO    		 
	 	R#++b/2S3;;s#34r@   c                     [         S 5       nU R                  U" S5      UR                  S5      5        U R                  U" S5      UR                  S5      5        g )Nc                 6    Sn[        U 5       H  nX-  nM	     U$ r   ri  r  s      r=   rJ   ,TestMore.test_unroll_tuple_arg2.<locals>.fooh  s"    A#A& 'Hr@   )r"  r3  r*  rO   s     r=   test_unroll_tuple_arg2TestMore.test_unroll_tuple_arg2g  sP    		 
	 	YY)?@YY)?@r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                  N    Sn Sn[        U 5       H  nUnUnXU-   U-   -  nM     U$ )Nr(   r3  r   ri  )rI   outr   r   r-  s        r=   rJ   -TestMore.test_unroll_tuple_alias.<locals>.foos  s<    AC#A&1uqy  ' Jr@   r*  rO   s     r=   test_unroll_tuple_alias TestMore.test_unroll_tuple_aliasr  s.    		 
	 	.r@   c                 4   [         S 5       nU R                  [        R                  5       nU" 5         S S S 5        U R	                  S[        WR                  5      5        SnU R                  [        UR                  5      U5        g ! , (       d  f       N[= f)Nc                  L    Sn Sn[        U 5       H  nU H  nX-  nM	     M     U$ )N)r=  )r[   g      @r   ri  )rI   r>  r   r   s       r=   rJ   .TestMore.test_unroll_tuple_nested.<locals>.foo  s3    %AC#A&AHC  ' Jr@   r   z#.*Tuple\(int[0-9][0-9], float64\).*)r   r^   r   r  r`   ra   rb   assertRegex)r7   rJ   r  res       r=   test_unroll_tuple_nested!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                     [         S 5       n[        5        nU" 5         S S S 5        WR                  5       R                  5       nU R	                  U/ SQ5        g ! , (       d  f       NA= f)Nc                      0 n SU S'   SU S'   0 nSUS'   SUS'   [        X45       H'  nUR                  5        H  u  p4[        X45        M     M)     g )	NrD   rU   rE   r   rJ  rF   r  r\   )r
   itemsrO  )rI   r   itr-  vs        r=   rJ   /TestMore.test_unroll_tuple_of_dict.<locals>.foo  sZ    AAcFAcFAAaDAaD$aV,HHJDA!K ' -r@   )za 1zb 2z3 cz4 d)r   r   getvalue
splitlinesrM   )r7   rJ   stdoutliness       r=   test_unroll_tuple_of_dict"TestMore.test_unroll_tuple_of_dict  sZ    	
	  

	  &E !,,.(	
 s   A
A(c                    ^ [        S/ SQ5      m[        U4S j5       nU R                  U" 5       UR                  5       5        g )NABCr  c                  L   > T" SSS5      n Sn[        U 5       H  nX-  nM	     U$ )NrD   rV  333333@r   ri  abcr>  r   rV  s      r=   rJ   -TestMore.test_unroll_named_tuple.<locals>.foo  s0    aS/CC#C( )Jr@   r   r   rM   rN   r7   rJ   rV  s     @r=   test_unroll_named_tuple TestMore.test_unroll_named_tuple  ;    0		 
	 	.r@   c                     [        S/ SQ5      n[        S 5       nU" SSS5      nU R                  U" U5      UR                  U5      5        g )NrV  r  c                 6    Sn[        U 5       H  nX-  nM	     U$ r   ri  rI   r>  r   s      r=   rJ   1TestMore.test_unroll_named_tuple_arg.<locals>.foo  "    C#A& 'Jr@   rD   rV  rX  r\  r7   rV  rJ   rZ  s       r=   test_unroll_named_tuple_arg$TestMore.test_unroll_named_tuple_arg  sL    0		 
	 !RoS3;;s#34r@   c                    ^ [        S/ SQ5      m[        U4S j5       nU R                  U" 5       UR                  5       5        g )NrV  r  c                  L   > T" SSS5      n Sn[        U 5       H  nX-  nM	     U$ )NrD   rE   rF   r   ri  rY  s      r=   rJ   0TestMore.test_unroll_named_unituple.<locals>.foo  s0    aA,CC#C( )Jr@   r\  r]  s     @r=   test_unroll_named_unituple#TestMore.test_unroll_named_unituple  r`  r@   c                     [        S/ SQ5      n[        S 5       nU" SSS5      nU R                  U" U5      UR                  U5      5        g )NrV  r  c                 6    Sn[        U 5       H  nX-  nM	     U$ r   ri  rc  s      r=   rJ   4TestMore.test_unroll_named_unituple_arg.<locals>.foo  re  r@   rD   rE   rF   r\  rf  s       r=   test_unroll_named_unituple_arg'TestMore.test_unroll_named_unituple_arg  sL    0		 
	 !QlS3;;s#34r@   c                 f    [         S 5       nU R                  U" 5       UR                  5       5        g )Nc                  >    Sn [        [        5       H  nX-  n M	     U $ r   )r
   	_X_GLOBAL)r>  r   s     r=   rJ   .TestMore.test_unroll_global_tuple.<locals>.foo  s"    C#I. /Jr@   r*  rO   s     r=   test_unroll_global_tuple!TestMore.test_unroll_global_tuple  s.    		 
	 	.r@   c                 r   ^ Sm[         U4S j5       nU R                  U" 5       UR                  5       5        g )Nr'   c                  8   > Sn [        T5       H  nX-  n M	     U $ r   ri  )r>  r   rI   s     r=   rJ   /TestMore.test_unroll_freevar_tuple.<locals>.foo  s#    C#A& 'Jr@   r*  )r7   rJ   rI   s     @r=   test_unroll_freevar_tuple"TestMore.test_unroll_freevar_tuple  s4    		 
	 	.r@   c                    ^ [         S 5       n[         S 5       nX4m[         U4S j5       nU R                  U" 5       UR                  5       5        g )Nc                      grx  rG   rG   r@   r=   rU   .TestMore.test_unroll_function_tuple.<locals>.a  r{  r@   c                      gr}  rG   rG   r@   r=   r   .TestMore.test_unroll_function_tuple.<locals>.b  r{  r@   c                  B   > Sn [        T5       H  nX" 5       -  n M     U $ r   ri  )r>  r,  rI   s     r=   rJ   0TestMore.test_unroll_function_tuple.<locals>.foo   s'    C#A&qs
 'Jr@   r*  )r7   rU   r   rJ   rI   s       @r=   test_unroll_function_tuple#TestMore.test_unroll_function_tuple  s^    		 
	 
	 
	 F		 
	 	.r@   c                    [         S 5       n[        S5       Vs/ s H  o"PM     nn[        5          U R                  U" U5      UR	                  U5      5        S S S 5        [        5        nU" U5        S S S 5        WR                  5       R                  5       nU R                  U/ SQ5        g s  snf ! , (       d  f       Na= f! , (       d  f       NW= f)Nc                     SnSnU  Vs/ s H  o3PM     nnSn[        U5       H  nX$U   -  nUS-  n[        U5        M     X4$ s  snf )Nr   )rU      gq=
ףp?NrD   rN  )contr   r   rU   normal_listheter_tupleitems          r=   rJ   /TestMore.test_unroll_indexing_list.<locals>.foo  s^    AC&*+d1dK+/K&{31~%Qd 4 6M ,s   Ar\   )rU   25z0.23None)r   r   r   rM   rN   rO  rP  )r7   rJ   r   datarQ  rR  s         r=   test_unroll_indexing_list"TestMore.test_unroll_indexing_list	  s    			 
		 !8$8a8$ SYD(9:  &I !,,.'	
 %  s   B/(B4+	C4
C
Cc                    ^^ [         R                  " S5      [         R                  " S5      [         R                  " S5      4mSSKJm  [        UU4S j5       nU R                  U" 5       UR                  5       5        g )N)rD   )rD   rD   )rD   rD   rD   r   ri  c                  F   > Sn T" T5       H  nXR                   -  n M     U $ r   )ndim)r>  r   freevar_unrollmixeds     r=   rJ   .TestMore.test_unroller_as_freevar.<locals>.foo*  s'    C#E*vv +Jr@   )rC  rD  r%  r
   r   rM   rN   )r7   rJ   r  r  s     @@r=   test_unroller_as_freevar!TestMore.test_unroller_as_freevar&  sW    1CD:		 
	 	.r@   c                 &    [        S5      S 5       ng )Nz(Tuple((int64, float64)),)c                 N    [        U 5       H  nM     SnUS:X  a  SnUS:X  a  M
  g g )NrD   r   ri  )r   r8  rI   s      r=   rJ   CTestMore.test_unroll_with_non_conformant_loops_present.<locals>.foo6  s0    #C( ) Aq& q&r@   ro  rO   s     r=   -test_unroll_with_non_conformant_loops_present6TestMore.test_unroll_with_non_conformant_loops_present3  s     
*	+	 
,	r@   c                    ^ [         R                  " SS/SS/S9n[        UR                  R                  R                  5       5      m[        U4S j5       nU R                  U" U5      S5        g )Nr  rE   rF   )r$  f8)r%  r  r  c                    > Sn[        T5       H,  nU[        R                  " X   5      R                  5       -   nM.     U$ r   r
   rC  absr?  arrresr-  fieldss      r=   rJ   >TestMore.test_literal_unroll_legalize_var_names01.<locals>.fooD  9    C#F+BFF36N..00 ,Jr@          @rC  arraytupler  r  r   r   rM   r7   testrJ   r  s      @r=   (test_literal_unroll_legalize_var_names011TestMore.test_literal_unroll_legalize_var_names01?  sb    xx(|0LMtzz((--/0		 
	 	TC(r@   c                    ^ [         R                  " SS/SS/S9n[        UR                  R                  R                  5       5      m[        U4S j5       nU R                  U" U5      S5        g )Nr  r  )za1[0]r  )za2[1]r  r  c                    > Sn[        T5       H,  nU[        R                  " X   5      R                  5       -   nM.     U$ r   r  r  s      r=   rJ   >TestMore.test_literal_unroll_legalize_var_names02.<locals>.fooS  r  r@   r  r  r  s      @r=   (test_literal_unroll_legalize_var_names021TestMore.test_literal_unroll_legalize_var_names02M  sf    xx(.@Btzz((--/0		 
	 	TC(r@   rG   N)rf   rg   rh   ri   r  r  r   r  r&  r.  r4  r9  r@  rG  rS  r^  rg  rl  rq  rw  r|  r  r  r  r  r  r  rj   rG   r@   r=   r  r    s    
 
$ ]]67 80 ]]MN) O)
5	A/4$
./5/5	/
//(
:/
))r@   r  c                 F   ^  [        SSS9 " U 4S jS[        5      5       nU$ )zbReturns a compiler pass that captures the mutation state reported
by the pass used in the argumentFTrk   c                   N   > \ rS rSrS Y R                  -  r Y rS rU 4S jrSrg)capture.<locals>.ResultCaptureri`  z
capture_%sc                 0    [         R                  " U 5        g rs   rt   rv   s    r=   ru   (capture.<locals>.ResultCapturer.__init__e  s    !!$'r@   c                 t   > T" 5       R                  U5      nUR                  R                  S0 5      nX#T'   U$ )Nmutation_results)r|   r   
setdefault)r7   r{   resultr  	real_passs       r=   r|   (capture.<locals>.ResultCapturer.run_passh  s:    [))%0F$~~889KRP*0Y'Mr@   rG   N)	rf   rg   rh   ri   r~   
_real_passru   r|   rj   )r  s   r=   ResultCapturerr  `  s%    y.
	(	 	r@   r  )r   r   )r  r  s   ` r=   capturer  ]  s-     uD9  : r@   c                       \ rS rSrSrS rSrg)CapturingCompileriq  z>Simple pipeline that wraps passes with the ResultCapturer passc                   ^ [        S5      mU4S jnU" [        S5        U" [        S5        U" [        S5        U" [        S5        U" [
        S5        U" [        S5        U" [        S	5        U" [        S
5        TR                  5         T/$ )NzCapturing Compilerc                 :   > TR                  [        U 5      U5      $ rs   )r   r  )rI   r   r   s     r=   r   4CapturingCompiler.define_pipelines.<locals>.add_passw  s    ;;wqz1--r@   r   zfix up argsr   zhandles literal_unrollr   z$ensure IR is legal prior to loweringr   r   )
r   r   r   r   r   r   r    r#   r!   r   )r7   r   r   s     @r=   r   "CapturingCompiler.define_pipelinest  s    -.	. 	"$89M*/ 89 	&(;< 	7	9 	!23"9:
tr@   rG   N)rf   rg   rh   ri   __doc__r   rj   rG   r@   r=   r  r  q  s
    Ir@   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestLiteralUnrollPassTriggeringi  c                     [        [        S9S 5       nU" 5         UR                  UR                  S      nU R	                  UR
                  S   [           5        g )Nr   c                  $    Sn S H  nX-  n M	     U $ r   rG   r   s     r=   rJ   LTestLiteralUnrollPassTriggering.test_literal_unroll_not_invoked.<locals>.foo  s    C Jr@   r   r  r   r  r/   r0   assertFalser   r   r7   rJ   r:   s      r=   test_literal_unroll_not_invoked?TestLiteralUnrollPassTriggering.test_literal_unroll_not_invoked  sU    	.	/	 
0	 	}}S^^A./'9:=IJr@   c                     [        [        S9S 5       nU" 5         UR                  UR                  S      nU R	                  UR
                  S   [           5        g )Nr   c                  6    Sn [        S5       H  nX-  n M	     U $ r   ri  r   s     r=   rJ   KTestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked.<locals>.foo  s"    C#I. /Jr@   r   r  )r   r  r/   r0   r3   r   r   r  s      r=   test_literal_unroll_is_invoked>TestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked  sS    	.	/	 
0	 	}}S^^A./&89-HIr@   c                    ^ [         m[        [        S9U4S j5       nU" 5         UR                  UR                  S      nU R                  UR                  S   [           5        g )Nr   c                  2   > Sn T" S5       H  nX-  n M	     U $ r   rG   )r   r   aliass     r=   rJ   UTestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked_via_alias.<locals>.foo  s#    C9% &Jr@   r   r  )r
   r   r  r/   r0   r3   r   r   )r7   rJ   r:   r  s      @r=   (test_literal_unroll_is_invoked_via_aliasHTestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked_via_alias  sY    	.	/	 
0	 	}}S^^A./&89-HIr@   c                     [        [        S9S 5       nU" 5         UR                  UR                  S      nU R	                  UR
                  S   [           5        g )Nr   c                      g rs   rG   rG   r@   r=   rJ   VTestLiteralUnrollPassTriggering.test_literal_unroll_assess_empty_function.<locals>.foo  s    r@   r   r  r  r  s      r=   )test_literal_unroll_assess_empty_functionITestLiteralUnrollPassTriggering.test_literal_unroll_assess_empty_function  sU    	.	/	 
0	 	}}S^^A./'9:=IJr@   c                     Sn0 n[        U0 U5        [        [        S9" US   5      nU" 5         UR                  UR                  S      nU R                  UR                  S   [           5        g )Nzdef foo():
	passr   rJ   r   r  )execr   r  r/   r0   r  r   r   )r7   r,  r+  rJ   r:   s        r=   "test_literal_unroll_not_in_globalsBTestLiteralUnrollPassTriggering.test_literal_unroll_not_in_globals  sd    $QA"34QuX>}}S^^A./'9:=IJr@   c                    Sn0 n[        U0 U5        [        [        S9" US   5      nU R                  [        R
                  5       nU" 5         S S S 5        U R                  S[        WR                  5      5        0 n[        US[        0U5        [        [        S9" US   5      nU" 5         UR                  UR                  S      nU R                  UR                  S   [           5        SSKJn  S	n0 n[        U" U5      0 U5        [        [        S9" US
   5      nU" 5         UR                  UR                  S      nU R                  UR                  S   [           5        SSKJn  Sn0 n[        U" U5      0 U5        [        [        S9" US
   5      nU" 5         UR                  UR                  S      nU R                  UR                  S   [           5        g ! , (       d  f       GN= f)Nz1def foo():
	for x in literal_unroll((1,)):
		passr   rJ   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  r^   r   r  r`   ra   rb   r
   r/   r0   r3   r   r   textwrapr  )r7   r,  r+  rJ   r  r:   r  s          r=   &test_literal_unroll_globals_and_localsFTestLiteralUnrollPassTriggering.test_literal_unroll_globals_and_locals  s   HQA"34QuX>v112fE 3<&**+	- Q!>2A6"34QuX>}}S^^A./&89-HI 	$ VAYA"34QuX>}}S^^A./&89-HI 	$ VAYA"34QuX>}}S^^A./&89-HI_ 32s   G&&
G5rG   N)rf   rg   rh   ri   r  r  r  r  r  r  rj   rG   r@   r=   r  r    s&    
K
JJKK4Jr@   r  __main__)=collectionsr   numpyrC  numba.tests.supportr   r   r   r   r%  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&   ru  r+   ro   r   r  r  r  r  r  r  rf   mainrG   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MMO r@   