+
    :id                     h   ^ RI t ^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RI	H
t
HtHt ^ RIHt / tRRR	R/tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%R t& ! R  R!]4      t' ! R" R#]4      t( ! R$ R%]4      t)]*R&8X  d   ]PV                  ! 4        R# R# )'    N)jit)CFGraphControlFlowAnalysis)types)FunctionIdentityByteCode_fix_LOAD_GLOBAL_arg)TestCase_nrtTnopythonc                 >    ^ p\        V 4       F  pW#,          pK  	  V# r   rangexyresultis   &&  [/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/test_flow_control.pyfor_loop_usecase1r      s!    F1X M    c                 d    ^ p\        \        WR4      4       F  w  r4W#V,          ,          pK  	  V# )r   )	enumerater   r   r   r   r   js   &&   r   for_loop_usecase2r      s.    F%b/*a% +Mr   c                 2    ^ pW.pV F  pW$,          pK  	  V# r    )r   r   r   lstr   s   &&   r   for_loop_usecase3r"      s$    F&C Mr   c                 d    ^ p\        ^
4       F  p\        ^
4       F  pV^,          pK  	  K   	  V# r   r   r   s   &&   r   for_loop_usecase4r$   %   s3    F2YrAaKF   Mr   c                 R    ^ p\        V 4       F  pV^,          pW!8  g   K   V# 	  V# r   r   r   s   &&  r   for_loop_usecase5r&   -   s2    F1X!:M	  Mr   c                 P    ^ p\        V 4       F  pW18  d   K  V^,          pK  	  V# r   r   r   s   &&  r   for_loop_usecase6r(   6   s-    F1X5!  Mr   c                 V    \        V 4       F  p^ p \        V 4       F  p  ^# 	  K  	  ^ # r   r   )r   r   r   r   s   &&  r   for_loop_usecase7r*   ?   s0    1XqA    r   c                 \    ^ p\        WW,
          ^,           4       F  pV^,          pK  	  V# r   r   r   s   &&  r   for_loop_usecase8r,   I   s,    F1#! $Mr   c                     ^ p\        V 4       F7  p^ p \        V 4       F  pW@^,          8X  g   K  W$,          p K-  	  W!,          pK9  	  V# r   r   )r   r   zr   r   s   &&   r   for_loop_usecase9r/   P   sK    	A1XqAEz 
 FA  Hr   c                 R    \        V 4       F  pW!8X  g   K  Tp V# 	  X^,          pV# )   r   )r   r   r   r.   s   &&  r   for_loop_usecase10r2   ^   s4    1X6A H 
 EHr   c                 @    ^ p^ pW08  d   W#,          pV^,          pK  V# r   r    r   s   &&  r   while_loop_usecase1r4   h   s&    F	A
%	QMr   c                 ,    ^ pW 8w  d   V^,          pK  V# r   r    r   r   r   s   && r   while_loop_usecase2r7   q   s    F
+!Mr   c                 t    ^ p^ p^ pW08  d,   WA8  g   K  W#V,           ,          pV^,          pV^,          pK+  V# r   r    r   s   &&   r   while_loop_usecase3r9   x   s=    F	A	A
%e!eOFFAFAMr   c                 0    ^ p V^,          pW 8  g   K   V# r   r    r6   s   && r   while_loop_usecase4r;      s     F
!:Mr   c                 N    ^ pW 8  d   W!8  d   V^,          pK  V^,          pK"  V# r   r    r6   s   && r   while_loop_usecase5r=      s+    F
*:aKF!Mr   c                 0    V ^ 8  d    R# V^ 8  d    R#  R# )r   Tr    r   r   s   &&r   ifelse_usecase1r@      s*    1u
 	 
Q  	r   c                 6    W8  d   ^# V ^ 8X  g   V^ 8X  d   ^# ^# )   r    r?   s   &&r   ifelse_usecase2rC      s    u	
a16r   c                 N    V ^ 8  d   V^ 8  d   ^# V^ 8  d   ^# ^ # V ^ 8  d   ^# ^ # r   r    r?   s   &&r   ifelse_usecase3rE      s-    1uq5U	
Qr   c                     W8X  d   ^# R# )rB   Nr    r?   s   &&r   ifelse_usecase4rG      s    v r   c                     W8  d   R # R# )TFr    r?   s   &&r   ternary_ifelse_usecase1rI      s    54#e#r   c                 j    T pTp  W2^,
          8X  d   MV^,          pK  V^,          pW28  g   K,   W23# )Tr    )r   r   Lr   s   &&  r   double_infinite_looprL      s?    	A	A
EzFA	Q64Kr   c                  ,     R #   \          d     R # i ; iN)	Exceptionr    r   r   try_except_usecaserP      s     s   c                     a  ] tR t^t o ]3R lt]3R ltR t]3R ltR t	]3R lt
R t]3R ltR	 t]3R
 ltR t]3R ltR t]3R ltR t]3R ltR t]3R ltR t]3R ltR t]3R ltR t]3R ltR t]3R ltR t]3R lt R t!]3R lt"R t#]3R  lt$R! t%]3R" lt&R# t']3R$ lt(R% t)]3R& lt*R' t+]3R( lt,R) t-]3R* lt.R+ t/R,t0V t1R-# ).TestFlowControlc                   \        \        P                  \        P                  33/ VB ! V4      p\        P                  ! W#4       FI  w  rgR pR p	 V! Wg4      p
 V! Wg4      pVe   V P                  RV,           4       V P                  X
V4       KK  	  R #   \
         d   pTp R p?LOR p?ii ; i  \
         d7   pTf   h Tp	T P                  \        T4      \        T	4      4        R p?K  R p?ii ; i)Nz(Invalid for pure-python but numba works
)	r   r   intp	itertoolsproductrO   failassertEqualtype)selfpyfunc
x_operands
y_operandsflagscfuncr   r   pyerrcerrpyresecress   &&&&&        r   run_testTestFlowControl.run_test   s    UZZ,66v>%%j=DAEDq.Q{ $III#$ %  -' >
  
  :=  ed4j99	:s0   BB0B-!B((B-0C1;+C,,C1c                >    V P                  \        . RO^ .VR7       R# 
   r^   N)ir   ri   )re   r   rZ   r^   s   &&r   test_for_loop1TestFlowControl.test_for_loop1   s    's%Hr   c                2    V P                  \        R 7       R# rj   N)rl   no_pyobj_flagsrZ   s   &r   test_for_loop1_npm"TestFlowControl.test_for_loop1_npm       .1r   c                @    V P                  \        . RO. ROVR7       R# rh   )re   r   rk   s   &&r   test_for_loop2TestFlowControl.test_for_loop2   s    '|! 	 	#r   c                2    V P                  \        R 7       R# ro   )rv   rp   rq   s   &r   test_for_loop2_npm"TestFlowControl.test_for_loop2_npm   rt   r   c                <    V P                  \        ^.^.VR7       R# )z
List requires pyobject
rj   N)re   r"   rk   s   &&r   test_for_loop3TestFlowControl.test_for_loop3   s#     	'!qc! 	 	#r   c                2    V P                  \        R 7       R# ro   )r|   rp   rq   s   &r   test_for_loop3_npm"TestFlowControl.test_for_loop3_npm  rt   r   c                <    V P                  \        ^
.^
.VR7       R# ri   rj   N)re   r$   rk   s   &&r   test_for_loop4TestFlowControl.test_for_loop4	  s    '"t5Ar   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_for_loop4_npm"TestFlowControl.test_for_loop4_npm  rt   r   c                <    V P                  \        ^d.^2.VR7       R# d   rj   N)re   r&   rk   s   &&r   test_for_loop5TestFlowControl.test_for_loop5      '#EBr   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_for_loop5_npm"TestFlowControl.test_for_loop5_npm  rt   r   c                <    V P                  \        ^d.^2.VR7       R# r   )re   r(   rk   s   &&r   test_for_loop6TestFlowControl.test_for_loop6  r   r   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_for_loop6_npm"TestFlowControl.test_for_loop6_npm  rt   r   c                <    V P                  \        ^.^ .VR7       R#    rj   N)re   r*   rk   s   &&r   test_for_loop7TestFlowControl.test_for_loop7  s    '!qc?r   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_for_loop7_npm"TestFlowControl.test_for_loop7_npm  rt   r   c                @    V P                  \        ^ ^.. ROVR7       R# r   rj   N)r   r1   ri   )re   r,   rk   s   &&r   test_for_loop8TestFlowControl.test_for_loop8!      '!Q5Ir   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_for_loop8_npm"TestFlowControl.test_for_loop8_npm$  rt   r   c                @    V P                  \        ^ ^.. ROVR7       R# r   )re   r/   rk   s   &&r   test_for_loop9TestFlowControl.test_for_loop9'  r   r   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_for_loop9_npm"TestFlowControl.test_for_loop9_npm*  rt   r   c                >    V P                  \        ^.^^.VR7       R# r   )re   r2   rk   s   &&r   test_for_loop10TestFlowControl.test_for_loop10-  s    (1#1vUCr   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_for_loop10_npm#TestFlowControl.test_for_loop10_npm0  s    >2r   c                <    V P                  \        ^
.^ .VR7       R# r   )re   r4   rk   s   &&r   test_while_loop1 TestFlowControl.test_while_loop13      )B4!EBr   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_while_loop1_npm$TestFlowControl.test_while_loop1_npm6      N3r   c                <    V P                  \        ^
.^ .VR7       R# r   )re   r7   rk   s   &&r   test_while_loop2 TestFlowControl.test_while_loop29  r   r   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_while_loop2_npm$TestFlowControl.test_while_loop2_npm<  r   r   c                <    V P                  \        ^
.^
.VR7       R# r   )re   r9   rk   s   &&r   test_while_loop3 TestFlowControl.test_while_loop3?  s    )B4"UCr   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_while_loop3_npm$TestFlowControl.test_while_loop3_npmB  r   r   c                <    V P                  \        ^
.^ .VR7       R# r   )re   r;   rk   s   &&r   test_while_loop4 TestFlowControl.test_while_loop4E  r   r   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_while_loop4_npm$TestFlowControl.test_while_loop4_npmH  r   r   c                @    V P                  \        . RO. ROVR7       R# )r   rj   N)r   r   ri   )re   r=   rk   s   &&r   test_while_loop5 TestFlowControl.test_while_loop5K  s    ):zOr   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_while_loop5_npm$TestFlowControl.test_while_loop5_npmN  r   r   c                @    V P                  \        . RO. ROVR7       R# rB   rj   N)r   r   rB   )re   r@   rk   s   &&r   test_ifelse1TestFlowControl.test_ifelse1Q      oz:UKr   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_ifelse1_npm TestFlowControl.test_ifelse1_npmT      /r   c                @    V P                  \        . RO. ROVR7       R# r   )re   rC   rk   s   &&r   test_ifelse2TestFlowControl.test_ifelse2W  r   r   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_ifelse2_npm TestFlowControl.test_ifelse2_npmZ  r   r   c                @    V P                  \        . RO. ROVR7       R# r   )re   rE   rk   s   &&r   test_ifelse3TestFlowControl.test_ifelse3]  r   r   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_ifelse3_npm TestFlowControl.test_ifelse3_npm`  r   r   c                @    V P                  \        . RO. ROVR7       R# r   )re   rG   rk   s   &&r   test_ifelse4TestFlowControl.test_ifelse4c  r   r   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_ifelse4_npm TestFlowControl.test_ifelse4_npmf  r   r   c                @    V P                  \        . RO. ROVR7       R# r   )re   rI   rk   s   &&r   test_ternary_ifelse1$TestFlowControl.test_ternary_ifelse1i  s    -z:! 	 	#r   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_ternary_ifelse1_npm(TestFlowControl.test_ternary_ifelse1_npmm  s    !!!7r   c                <    V P                  \        ^
.^ .VR7       R# r   )re   rL   rk   s   &&r   test_double_infinite_loop)TestFlowControl.test_double_infinite_loopp  s!    *RD1#! 	 	#r   c                2    V P                  \        R 7       R# ro   )r   rp   rq   s   &r   test_double_infinite_loop_npm-TestFlowControl.test_double_infinite_loop_npmt  s    &&^&<r   r    N)2__name__
__module____qualname____firstlineno__enable_pyobj_flagsre   rl   rr   rv   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes____classdictcell____classdict__s   @r   rR   rR      sa     *.0 $6 I2 $6 #2 $6 #2 $6 B2 $6 C2 $6 C2 $6 @2 $6 J2 $6 J2 %7 D3 &8 C4 &8 C4 &8 D4 &8 C4 &8 P4 "4 L0 "4 L0 "4 L0 "4 L0 *< #8 /A #= =r   rR   c                      a  ] tR tRt o RtR!R ltR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t Rt!V t"R # )"TestCFGraphix  z+
Test the numba.controlflow.CFGraph class.
c                    \        4       pV F  pVP                  V4       K  	  VP                  4        F  w  rEV F  pVP                  WF4       K  	  K!  	  V# )z7
Build a CFGraph class from a dict of adjacency lists.
)r   add_nodeitemsadd_edge)rZ   dentry_pointgnodedestsdests   &&&    r   from_adj_listTestCFGraph.from_adj_list}  sP     IDJJt 779KD

4&  % r   c           
         V P                  ^ ^^.^^.^^.^. /4      pVP                  ^ 4       VP                  4        V# )zs
A simple CFG corresponding to the following code structure:

    c = (... if ... else ...) + ...
    return b + c
r  set_entry_pointprocessrZ   r  s   & r   	loopless1TestCFGraph.loopless1  sI     B8R"rB4RHI	!			r   c                    V P                  ^ ^^.^^.^^.^. ^[^^ .^\^[^].^]^\.^^. /4      pVP                  ^ 4       VP                  4        V# )zK
Same as loopless1(), but with added dead blocks (some of them
in a loop).
r  r  s   & r   loopless1_dead_nodes TestCFGraph.loopless1_dead_nodes  sq    
 R"""a"b"	 	
!			r   c                    V P                  ^c^^.^^.^^.^^*^".^". ^*. /4      pVP                  ^c4       VP                  4        V# )z
A loopless CFG corresponding to the following code structure:

    c = (... if ... else ...) + ...
    if c:
        return ...
    else:
        return ...

Note there are two exit points, and the entry point has been
changed to a non-zero value.
r  r  s   & r   	loopless2TestCFGraph.loopless2  sY     "b2tR"rB8RRLN	"			r   c                    V P                  / ^ ^.b^^
^<.b^
^.b^^.b^^8^.b^^ ^,.b^ ^.b^,^.b^8^9.b^9^.b^<^=.b^=^D.b^D^W^G.b^G^P^D.b^P. b^W^X.b^X. b4      pVP                  ^ 4       VP                  4        V# )z
A CFG with multiple nested loops:

    for y in b:
        for x in a:
            # This loop has two back edges
            if b:
                continue
            else:
                continue
    for z in c:
        if z:
            return ...
r  r  s   & r   multiple_loopsTestCFGraph.multiple_loops  s$      (A3  ( !B8 ( "RD ( !#RD ( !#RH	 (
 !#RH ( !#RD ( !#RD ( !#RD ( !#QC ( !#RD ( !#RD ( !#RH ( !#RH ( !#B ( !#RD (  !#B! ( !$ 	
!			r   c                    V P                  ^ ^.^^
^$.^
^^.^. ^^^.^^%.^$^%.^%. /4      pVP                  ^ 4       VP                  4        V# )z
A CFG with three loop exits, one of which is also a function
exit point, and another function exit point:

    for x in a:
        if a:
            return b
        elif b:
            break
    return c
r  r  s   & r   multiple_exitsTestCFGraph.multiple_exits  sq     R"b"a""	 	
!			r   c                    V P                  ^ ^
^.^. ^
^.^^^.^^.^^./4      pVP                  ^ 4       VP                  4        V# )z
A CFG with a infinite loop and an alternate exit point:

    if c:
        return
    while True:
        if a:
            ...
        else:
            ...
r  r  s   & r   infinite_loop1TestCFGraph.infinite_loop1  s[     QBRD"r2hRD"rdKM	!			r   c           
         V P                  ^ ^.^^^	.^	^.^^./4      pVP                  ^ 4       VP                  4        V# )zo
A CFG with no exit point at all:

    while True:
        if a:
            ...
        else:
            ...
r  r  s   & r   infinite_loop2TestCFGraph.infinite_loop2  sK     A3B7AsBDE	!			r   c                ~   V P                  4       pV P                  \        VP                  ^ 4      4      RR.4       V P                  \        VP                  ^4      4      . 4       V P                  \        VP	                  ^ 4      4      . 4       V P                  \        VP	                  ^4      4      RR.4       R# )r   N)   N)   N)r  rX   sorted
successorspredecessorsr  s   & r   test_simple_properties"TestCFGraph.test_simple_properties  s    NNQ0:z2JKR 0126q 12B7r 23j*5MNr   c                6   V P                  4       pV P                  \        VP                  4       4      ^.4       V P	                  4       pV P                  \        VP                  4       4      ^.4       V P                  4       pV P                  \        VP                  4       4      ^"^*.4       V P                  4       pV P                  \        VP                  4       4      ^P^X.4       V P                  4       pV P                  \        VP                  4       4      ^.4       V P                  4       pV P                  \        VP                  4       4      . 4       V P                  4       pV P                  \        VP                  4       4      ^^%.4       R# )   N)
r  rX   r-  exit_pointsr  r  r  r%  r(  r"  r  s   & r   test_exit_pointsTestCFGraph.test_exit_points#  s/   NN02$7%%'02$7NN02r(;!02r(;!01#6!0"5!02r(;r   c                   V P                  4       pV P                  \        VP                  4       4      ^ 4       V P                  \	        VP                  4       4      . RO4       V P                  4       pV P                  \        VP                  4       4      ^ 4       V P                  \	        VP                  4       4      . RO4       V P                  4       pV P                  \        VP                  4       4      ^ 4       V P                  4       pV P                  \        VP                  4       4      ^ 4       V P                  4       pV P                  \        VP                  4       4      ^ 4       V P                  4       pV P                  \	        VP                  4       4      . RO4       V P                  \	        VP                  4       4      . RO4       R# )r   Nr   r+  r,  r3  )r+  r,  r3  "   *   c   )[   \   ]   ^   )r  rX   len
dead_nodesr-  nodesr  r  r%  r"  r  r  s   & r   test_dead_nodesTestCFGraph.test_dead_nodes3  sQ   NNQ\\^,a0	*(	*NNQ\\^,a0	*1	3!Q\\^,a0!Q\\^,a0!Q\\^,a0%%'/)	+	*(	*r   c                   V P                  4       pVP                  ^"4      pV P                  \        V4      . 4       VP                  ^*4      pV P                  \        V4      . 4       VP                  ^4      pV P                  \        V4      ^"^*.4       VP                  ^c4      pV P                  \        V4      . RO4       V P	                  4       pVP                  ^4      pV P                  \        V4      . 4       VP                  ^4      pV P                  \        V4      . 4       VP                  ^4      pV P                  \        V4      ^^.4       VP                  ^
4      pV P                  \        V4      . RO4       VP                  ^4      pV P                  \        V4      . 4       VP                  ^ 4      pV P                  \        V4      . RO4       R# )r9  N)r+  r,  r3  r9  r:           )   ri   rG  rH  rI  )r  descendentsrX   r-  r%  )rZ   r  r	  s   &  r   test_descendentsTestCFGraph.test_descendentsI  sz   NNMM"B'MM"B'MM"RH-MM"$89!MM"B'MM"B'MM"RH-MM"L1MM!B'MM!$78r   c                   V P                  4       pV P                  VP                  4       . RO. RO34       V P                  4       pV P                  VP                  4       . RO. RO34       V P	                  4       pV P                  VP                  4       . RO. RO34       V P                  4       pV P                  VP                  4       . RO. R	O. R
O. RO34       R# )r   Nr8  )r   r,  r+  r3  )r;  r,  r+  r3  r9  r:  )r;  r+  r,  r3  r9  r:  )r      	      )r   rO  rQ  rP  )r   rJ  ri   rG  rH  rI  )r   rJ  ri   rG  rI  rH  )r   ri   rG  rH  rI  rJ  )r   ri   rG  rI  rH  rJ  )r  assertIn
topo_orderr  r(  r%  r  s   & r   test_topo_orderTestCFGraph.test_topo_ordera  s    NNalln&8	:NNalln/1IJ	L!alln$m4	6!alln-/E-/EG	Hr   c                   a a VV 3R  lpS P                  4       oV! . RO. RO34       V! . RO. RO. RO34       S P                  4       oV! . RO. RO. R	O. R
O34       R# )c           
        < SP                  \        SP                  V 4      4      V4       SP                  \        SP                  V R R R1,          4      4      V4       SP                  \        SP                  V RR7      4      R R R1,          V4       SP                  \        SP                  V R R R1,          RR7      4      R R R1,          V4       SP                  P	                  V 4       SP                  \        SP                  V 4      4      V4       SP                  \        SP                  V RR7      4      R R R1,          V4       R # )NT)reverser   )rR  list	topo_sortrandomshuffle)rB  expectedr  rZ   s   &&r   check_topo_sort3TestCFGraph.test_topo_sort.<locals>.check_topo_sortq  s    MM$q{{512H=MM$q{{52;78(CMM$q{{5${?@2F"$MM$q{{52;{EFttL"$KK&MM$q{{512H=MM$q{{5${?@2F"$r   N)r3  r;  r+  r9  )r;  r+  r3  r9  )r,  r+  r:  r;  )r;  r+  r,  r:  )r;  r,  r+  r:  )rH  ri      $   )r`  ri   rH  ra  )r`  ri   ra  rH  )r`  ra  ri   rH  )r  r"  )rZ   r^  r  s   f @r   test_topo_sortTestCFGraph.test_topo_sortp  s\    
	$ NN(+;*=>()+;<	>!(/?K	Mr   c                    V P                  \        V4      \        V4      4       \        V4       F8  pV P                  \        W,          4      \        W#,          4      R V: 24       K:  	  R# )zmismatch for NrX   r-  )rZ   gotr]  r  s   &&& r   check_dominatorsTestCFGraph.check_dominators  sO    fX&673KDVCI.x~0F268:  r   c                  a a VV 3R  lpS P                  4       S P                  4       3 F>  pVP                  4       oV! ^ ^ .4       V! ^^ ^.4       V! ^^ ^.4       V! ^^ ^.4       K@  	  S P                  4       pVP                  4       oV! ^c^c.4       V! ^^^c.4       V! ^^^c.4       V! ^^^c.4       V! ^". RO4       V! ^*. RO4       R# )c                 L   < SP                  \        SV ,          4      V4       R # rN   re  r	  ldomsrZ   s   &&r   eq_1TestCFGraph.test_dominators_loopless.<locals>.eq_      VDG_a0r   N)r3  r9  r;  )r3  r:  r;  )r  r  
dominatorsr  rZ   rn  r  rm  s   f  @r   test_dominators_loopless$TestCFGraph.test_dominators_loopless  s    	1.."D$=$=$?@A<<>DA3KQGQGQG A NN||~BBRBRBRBBr   c                F   V P                  4       pVP                  4       pV P                  V^ ^ .^^ ^.^
. RO^. RO^. RO^. RO^$. RO^%. RO/4       V P                  4       pVP                  4       pV P                  V/ ^ ^ .b^^ ^.b^
. ROb^. R	Ob^. R
Ob^. ROb^ . ROb^,. ROb^8. ROb^9. ROb^<. ROb^=. ROb^D. ROb^G. ROb^P. ROb^W. ROb^X. ROb4       V P	                  4       pVP                  4       pV P                  V^ ^ .^^ ^.^
^ ^
.^. RO^. RO^. RO/4       R# )r   N)r   r`  ri   )r   r`  ri   rH  )r   r`  ri      )r   r`  ri   rv     )r   r`  ra  )r   r`  %   )r   ri   r`  )r   ri   rG  r`  )r   ri      rG  r`  )r   ry  rv  r`  ri   rG  )    r   ry  rv  r`  ri   rG  )r   ry  rv  r`  ri   ,   rG  )r   ry  r`  8   ri   rG  )r   ry  r`  r|  9   ri   rG  )r   <   r`  )r   r~  =   r`  )r   D   r~  r  r`  )r   r  G   r`  r~  r  )P   r   r  r  r`  r~  r  )r   r  W   r`  r~  r  )r   r  r  X   r`  r~  r  )r   ri   rG  )r   ri   rH  rG  )r   ri   rG  rI  )r"  rq  rg  r  r%  rZ   r  rm  s   &  r   test_dominators_loops!TestCFGraph.test_dominators_loops  s   !||~d 1# 1a&!:!>!>!#5!:!:!		" !||~d!q1# ! 1a&!!:!  ">!  "#5	!
  "#9!  "#=!  "#=!  "#9!  "#=!  ":!  ">!  "#5!  "#9!  "#=!  "#9!   "#=!!	"& !||~d 1# 1a&!Ar7!;!?!?!	"r   c                  a a VV 3R  lpS P                  4       S P                  4       3 F>  pVP                  4       oV! ^ ^ ^.4       V! ^^^.4       V! ^^^.4       V! ^^.4       K@  	  S P                  4       pVP                  4       oV! ^"^".4       V! ^*^*.4       V! ^^.4       V! ^^^.4       V! ^^^.4       V! ^c^^c.4       R# )c                 L   < SP                  \        SV ,          4      V4       R # rN   re  rk  s   &&r   rn  6TestCFGraph.test_post_dominators_loopless.<locals>.eq_  rp  r   N)r  r  post_dominatorsr  rr  s   f  @r   test_post_dominators_loopless)TestCFGraph.test_post_dominators_loopless  s    	1.."D$=$=$?@A$$&DAr7ORHRHRDM A NN  "BBBBRBRBRr   c                   V P                  4       pVP                  4       pV P                  V^ ^ ^.^^.^
^
.^^.^^.^^^%.^$^$^%.^%^%./4       V P                  4       pVP                  4       pV P                  V/ ^ . ROb^. ROb^
. ROb^. ROb^. ROb^. ROb^ . ROb^,. R	Ob^8. R
Ob^9. ROb^<. ROb^=^D^=.b^D^D.b^G^G.b^P^P.b^W^X^W.b^X^X.b4       R# )r   N)r   r~  r  r  r`  )r~  r  r  r`  )	r  r`  ri   rG  ry  r|  r}  r~  r  )r  r`  rG  ry  r|  r}  r~  r  )ry  r  r`  r|  r}  r~  r  )r  r`  ry  rv  r|  r}  r~  r  )rz  r  r`  ry  r|  r}  r~  r  )r  r`  r{  ry  r|  r}  r~  r  )r  r`  r|  r}  r~  r  )r}  r~  r  r  r`  )r~  r  r  )r"  r  rg  r  r  s   &  r   test_post_dominators_loops&TestCFGraph.test_post_dominators_loops  s   !  "d 1a& 1#!B4!B4!B4!B8!B8!B4!		" !  "d!q"4 ! /!!#F!  "#B!  "#>	!
  "#B!  "#B!  "#B!  "#:!  "#6!  "<!  "B8!  "B4!  "B4!  "B4!  "B8!   "B4!!	"r   c                   V P                  4       pVP                  4       pV P                  V^ ^ .^^.^
^
^.^^.^^.^^./4       V P                  4       pVP                  4       pV P                  V^ ^ ^.^^.^	^	.^^./4       R# r   N)r%  r  rg  r(  r  s   &  r   #test_post_dominators_infinite_loops/TestCFGraph.test_post_dominators_infinite_loops   s     !  "d 1# 1#!B8!B4!B4!B4!	" !  "d 1a& 1# 1#!B4!	"r   c                  a  V 3R  lpV! S P                  4       ^ 0 Rm^\        4       ^\        4       ^\        4       /4       V! S P                  4       ^\        4       ^\        4       ^^"^*0^"\        4       ^*\        4       ^c0 Rm/4       V! S P                  4       ^ 0 Rm^\        4       ^\        4       ^\        4       /4       V! S P	                  4       / ^ ^0b^^
^<0b^<^=0b^=^D0b^D^G^W0b^W^X0b^X\        4       b^G^P0b^P\        4       b^
^0b^^0b^^8^0b^^ ^,0b^,\        4       b^ \        4       b^8^90b^9\        4       b4       V! S P                  4       ^ ^0^0 Rm^$\        4       ^
^^0^^0^\        4       ^%\        4       ^\        4       /4       V! S P                  4       ^ ^
^0^\        4       ^
^0^^^0^\        4       ^\        4       /4       V! S P                  4       ^ ^0^^^	0^	\        4       ^\        4       /4       R# )c                 J   < V P                  4       pSP                  W!4       R # rN   )dominator_treerX   )graphr]  domtreerZ   s   && r   check.TestCFGraph.test_dominator_tree.<locals>.check  s    **,GW/r   N>   r+  r,  r3  >   ri   ra  rx  r  setr  r  r  r"  r%  r(  rZ   r  s   f r   test_dominator_treeTestCFGraph.test_dominator_tree  sR   	0 	dnn,CE2sub#%@	Bdnn35"ceR"b2sub#%<!	" 	d''),CE2sub#%@	Bd!!#/q1# /q2r( /B /b2$ /RH /B4/SU/$&/.0#%/9;bT/B4/b"X/')B8/57/ 35/ rd/ %'/	0
 	d!!#1#q,CE2BxB4SUBr35:	; 	d!!#2q'1ceR"rB8R35	 	d!!#1#q2q'1ceR7	9r   c                <  a  V 3R  lpV! S P                  4       ^ ^ ^^ ^^ ^^ /4       V! S P                  4       ^^c^^c^^c^*^^"^^c^c/4       V! S P                  4       ^ ^ ^^ ^^ ^^ /4       V! S P                  4       / ^ ^ b^^ b^
^b^^
b^^b^^b^ ^b^,^b^8^b^9^8b^<^b^=^<b^D^=b^G^Db^P^Gb^W^Db^X^Wb4       V! S P	                  4       ^ ^ ^^ ^
^^^
^^
^^^$^^%^/4       V! S P                  4       ^ ^ ^^ ^
^ ^^
^^^^/4       V! S P                  4       ^ ^ ^^ ^	^^^/4       R# )c                 J   < V P                  4       pSP                  W!4       R # rN   )immediate_dominatorsrX   )r  r]  idomsrZ   s   && r   r  4TestCFGraph.test_immediate_dominators.<locals>.check1  s    ..0EU-r   N)r  r  r  r  r"  r%  r(  r  s   f r   test_immediate_dominators%TestCFGraph.test_immediate_dominators0  s   	. 	dnn!RB2q)	+dnn2r2r2r2r2r2>	@d'')!RB2q)	+d!!#7q! 7Q 72q 7"b 7"b 7"b 72727!27')27/11768"72727!27')27/127	8 	d!!#Aq"aRRRQAF	Hd!!#!Q2q"b"b"b9	;d!!#!Q1aQ'	)r   c                  a  V 3R  lpV! S P                  4       ^ \        4       ^^0^^0^\        4       /4       V! S P                  4       ^^0^^0^\        4       ^*\        4       ^"\        4       ^c\        4       /4       V! S P                  4       ^ \        4       ^^0^^0^\        4       /4       V! S P	                  4       / ^ \        4       b^^0b^
^0b^^0b^^^0b^^0b^ ^0b^,^0b^8^0b^9^0b^<\        4       b^=\        4       b^D^D0b^G^D0b^P\        4       b^W\        4       b^X\        4       b4       V! S P                  4       ^ \        4       ^^0^
^%^0^\        4       ^^%^0^^%0^$^%0^%\        4       /4       V! S P                  4       ^ \        4       ^\        4       ^
\        4       ^^0^^0^^0/4       V! S P                  4       ^ \        4       ^^0^	^0^^0/4       R# )c                 J   < V P                  4       pSP                  W!4       R # rN   )dominance_frontierrX   )r  r]  dfrZ   s   && r   r  2TestCFGraph.test_dominance_frontier.<locals>.checkG  s    ))+BR*r   Nr  r  s   f r   test_dominance_frontier#TestCFGraph.test_dominance_frontierF  sP   	+ 	dnn#%bT2tR7	9dnnB4bT2sub#%SUBN	Pd'')#%bT2tR7	9d!!#Dq#% DQC DaS D"qc D2Aw DRD DB4DbTD#%sD,.D57D@BCEDB4DbTD#%suD.0#%D9;SUD	E 	d!!##%QCb!Wb#%B7Bb2$CE;	< 	d!!##%CE2sub2$RD"rdK	Md!!##%QCQCaS1	3r   c                    V P                  4       V P                  4       3 F.  pV P                  \        VP	                  4       4      ^ ^.4       K0  	  V P                  4       pV P                  \        VP	                  4       4      ^^c.4       R# r  )r  r  rX   r-  backboner  r  s   & r   test_backbone_loopless"TestCFGraph.test_backbone_loopless]  sl    .."D$=$=$?@AVAJJL1Ar7; ANN

-Bx8r   c                f   V P                  4       pV P                  \        VP                  4       4      . RO4       V P	                  4       pV P                  \        VP                  4       4      ^ .4       V P                  4       pV P                  \        VP                  4       4      ^ ^.4       R# )r   N)r   r`  r~  r  r  )r  rX   r-  r  r%  r(  r  s   & r   test_backbone_loopsTestCFGraph.test_backbone_loopsc  s    !

-/AB!

-s3!

-1v6r   c                   V P                  4       V P                  4       V P                  4       3 F,  pV P                  \	        VP                  4       4      ^ 4       K.  	  V P                  4       pV P                  \        VP                  4       4      . RO4       VP                  4       ^,          pVP                  4       ^,          pVP                  4       ^D,          pV P                  VP                  ^4       V P                  \        VP                  4      ^ .4       V P                  \        VP                  4      ^<.4       V P                  \        VP                  4      . RO4       V P                  VP                  ^4       V P                  \        VP                  4      ^.4       V P                  \        VP                  4      ^8.4       V P                  \        VP                  4      . RO4       V P                  VP                  ^D4       V P                  \        VP                  4      ^=.4       V P                  \        VP                  4      ^P^W.4       V P                  \        VP                  4      ^D^G.4       R F$  pV P                  VP                  V4      . 4       K&  	  R F%  pV P                  VP                  V4      V.4       K'  	  R F%  pV P                  VP                  V4      W2.4       K'  	  R F%  pV P                  VP                  V4      V.4       K'  	  V P                  4       pV P                  \        VP                  4       4      ^.4       VP                  4       ^,          pV P                  VP                  ^4       V P                  \        VP                  4      ^
.4       V P                  \        VP                  4      . 4       V P                  \        VP                  4      . RO4       R	 F$  pV P                  VP                  V4      . 4       K&  	  R F%  pV P                  VP                  V4      V.4       K'  	  V P                  4       pV P                  \        VP                  4       4      ^.4       VP                  4       ^,          pV P                  VP                  ^4       V P                  \        VP                  4      ^ .4       V P                  \        VP                  4      . 4       V P                  \        VP                  4      . R
O4       R F$  pV P                  VP                  V4      . 4       K&  	  R
 F%  pV P                  VP                  V4      V.4       K'  	  V P                  4       pV P                  \        VP                  4       4      ^.4       VP                  4       ^,          pV P                  VP                  ^4       V P                  \        VP                  4      ^ .4       V P                  \        VP                  4      . RO4       V P                  \        VP                  4      . RO4       R F$  pV P                  VP                  V4      . 4       K&  	  R F%  pV P                  VP                  V4      V.4       K'  	  R# )r   N)r`  ry  r  )	r`  ri   rG  ry  rv  rz  r{  r|  r}  )ry  rv  rz  r{  )r   r~  r  r  r  r  )r`  ri   rG  r|  r}  )r  r  rF  )r   rJ  ri   )rO  rP  rQ  r   )rH  rw  ra  )r`  ri   rv  )r   rH  rw  ra  )r  r  r  rX   r@  loopsr  r-  headerentriesexitsbodyin_loopsr%  r(  r"  )rZ   r  outer1inner1outer2r  loops   &      r   
test_loopsTestCFGraph.test_loopsk  s   .."D$=$=$?.."$AS^Q/$ !	*K8122*/!5-t4,<	>+/"6-t4,.>?+/"6-Bx8,r2h7+DQZZ-r2 ,'DQZZ-x8 ($DQZZ-/?@ %DQZZ-x8  !	*RD1wwy}b)-t4

+R0		*L9DQZZ-r2  DQZZ-v6 ! !	*QC0wwy|a(-s3

+R0		*J7DQZZ-r2 DQZZ-v6  !	*QC0wwy|a(-s3

+\:		*K8#DQZZ-r2 $DQZZ-v6  r   c                0   V P                  / ^ ^&^0b^^&^0b^^&^0b^^*^&0b^&^*0b^*^@^20b^2^@^:0b^:^0b^@^H^V0b^H^P^V0b^P^0b^V^l^^0b^^^l^f0b^f^0b^l^^t0b^t^^|0b^|^0b/ ^^^0b^^0b^^^0b^^0b^^^0b^^0b^RR0bRR0bRRR0bRR0bRR0bRRR0bRR0bRR0bRR	R
0bR	R
0bR
RR0bC/ RRR0bRR0bRRR0bRRR0bR\        4       bRRR0bRR0bRRR0bRR0bRR0bRRR0bRRR0bRRR0bRRR0bRR0bRR0bRR0bCRR0RR0RR 0R R!R"0R"R#R$0R$R%R&0R%R#R&0R&R#0R#R 0R!R0R\        4       /C4      pVP                  ^ 4       VP                  4        / pVP	                  VR'7      pV P                  VR*R+04       V P                  VR(,          ^4       R)# ),r   i  i  i(  iF  iJ  ir  iT  iv  i|  i~  i2  i  i  i  i  i6  i$  iJ  i<  i  iT  i`  b  i  il    iv  i|  i  i  i    i0  i  
  i  i  i  )statsiteration_countN)r  r  )r  r  )r  r  r  r  _find_back_edgesrX   )rZ   r  r  
back_edgess   &   r   test_loop_dfs_pathological&TestCFGraph.test_loop_dfs_pathological  s    ? 
Bx? 
R? 
 R? 
 R	? 

 ? 
 R? 
 R? 
 ? 
 R? 
 R? 
 ? 
 b	? 
 c
? 
 #? 
 #s? 
  #s!? 
" ##? 
$ #s%? 
& #'? 
( #s)? 
* #+? 
, #s-? 
. #/? 
0 #s1? 
2 #3? 
4 #s5? 
6 #7? 
8 #9? 
: #s;? 
< #=? 
> #?? 
@ #sA? 
B #C? 
D #sE? 
F #sG? 
H #I? 
J #sK? 
L #sM? 
N O? 
P #sQ? 
R #S? 
T #sU? 
V #W? 
X #Y? 
Z #s[? 
\ #s]? 
^ #s_? 
` #sa? 
b #c? 
d #e? 
f #g? 
h ####s#s#s#s###}? 
 ?@ 	
!			''e'4
j*%=>0137r   c                  a  V 3R  lpV! 4       pV! 4       pS P                  W#4       S P                  ^ ^^.^^.^. ^^./4      pVP                  ^ 4       VP                  4        S P                  W$4       V! 4       pVP                  ^4       VP                  4        S P	                  W%4       S P                  ^ ^^.^^.^^.^^.^. /4      pVP                  ^ 4       VP                  4        S P	                  W%4       S P                  ^ ^^.^^ .^. /4      pVP                  ^ 4       VP                  4        S P                  ^ ^^.^^.^. /4      pVP                  ^ 4       VP                  4        S P	                  We4       R# )c            
         < SP                  ^ ^^.^^.^^.^. /4      p V P                  ^ 4       V P                  4        V # r   r  )r  rZ   s    r   get_new(TestCFGraph.test_equals.<locals>.get_new  sH    ""ABxbT2tR#LMAa IIKHr   N)rX   r  r  r  assertNotEqual)rZ   r  r   r   r  r.   as   f      r   test_equalsTestCFGraph.test_equals  s   	 II 	 B8R"r2rB4HI	!			 I	"			A! B8R"rB4bT "B ( )	!			A! B8R!b"=>	!			B8R"r2>?	!			A!r   r    Nr   )#r   r   r   r   __doc__r  r  r  r  r  r"  r%  r(  r0  r5  rC  rL  rT  rb  rg  rs  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  s   @r   r  r  x  s     
&&#J4$O< *,90HM,:$+"Z$!"F",94),3.97F7PH8T(" ("r   r  c                   T   a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tRtV tR# )TestRealCodeDomFronti(  a  Test IDOM and DOMFRONT computation on real python bytecode.
Note: there will be less testing on IDOM (esp in loop) because of
the extra blocks inserted by the interpreter.  But, testing on DOMFRONT
(which depends on IDOM) is easier.

Testing is done by associating names to basicblock by using globals of
the pattern "SET_BLOCK_<name>", which are scanned by
`.get_cfa_and_namedblocks` into *namedblocks* dictionary.  That way, we
can check that a block of a certain name is a IDOM or DOMFRONT of another
named block.
c                <    \        V4      pVP                  4        V# rN   )r   run)rZ   bccfas   && r   r  TestRealCodeDomFront.cfa4  s    !"%	
r   c                    \         P                  ! V4      p\        VR 7      pV P                  V4      pV P	                  W44      pWE3# ))func_id)r   from_functionr   r  _scan_namedblocks)rZ   fnfidr  r  namedblockss   &&    r   get_cfa_and_namedblocks,TestRealCodeDomFront.get_cfa_and_namedblocks9  sD    ,,R0c"hhrl,,R5 r   c                   / p\        VP                  4        Uu. uF  qDP                  NK  	  up4      pRpV F  pVP                  R8X  g   K  VP                  \        VP                  4      ,          pVP                  V4      '       g   KU  V\        V4      R p	\        WUR,          VR,          ^,           .,           4       F#  w  rWP                  u;8:  d
   V8  g   K  M K#   M	  \        R4      hT
pWV	&   K  	  V# u upi )zScan namedblocks as denoted by a LOAD_GLOBAL bytecode referring
to global variables with the pattern "SET_BLOCK_<name>", where "<name>"
would be the name for the current block.

SET_BLOCK_LOAD_GLOBALN:rB   NNzunreachable loopr   )r-  
iterblocksoffsetopnameco_namesr	   arg
startswithr@  zipAssertionError)rZ   r  r  r  r   blocksprefixinstgvnamesrc   blknos   &&&          r   r  &TestRealCodeDomFront._scan_namedblocksL  s    
 3>>+;<+;a+;<=D{{m+[[!5dhh!?@==((c&kl+D #F2J&*q.9I,I J/a//! !K --?@@E(-%  # =s   Dc                    R  pV P                  V4      w  r#VP                  P                  4       pV P                  WCR,          ,          4       V P                  WCR,          ,          4       R# )c                 r    ^ p\          ^ p\        '       d   \         V^,          pV^,          pK&  \         V# r   )SET_BLOCK_ASET_BLOCK_B0SET_BLOCK_B1SET_BLOCK_C)ncr   s   &  r   foo+TestRealCodeDomFront.test_loop.<locals>.foof  s1    AA,QQHr   ACN)r  r  r  assertFalserZ   r  r  blkptsdomfronts   &    r   	test_loopTestRealCodeDomFront.test_loope  sY    		 2237
 99//1+./+./r   c                   R  pV P                  V4      w  r#V P                  VR,          VR,          4       VP                  P                  4       pV P	                  WCR,          ,          4       V P	                  WCR,          ,          4       V P                  VR,          0WCR,          ,          4       V P                  VR,          0WCR,          ,          4       R	# )
c                     \          \        '       dJ   \         \        '       d0   \         \
        '       d   \         MV '       d   \         \         K;  \         KU  \         R # rN   )r  r  r  SET_BLOCK_C0SET_BLOCK_C1SET_BLOCK_D0SET_BLOCK_D1SET_BLOCK_D2SET_BLOCK_ESET_BLOCK_FSET_BLOCK_G)r   s   &r   r  <TestRealCodeDomFront.test_loop_nested_and_break.<locals>.foo{  s/    ,"l #|$$r   D0C1r  GFD1ED2N)r  rX   r  r  r  r  s   &    r   test_loop_nested_and_break/TestRealCodeDomFront.test_loop_nested_and_breakz  s    	 2237vd|4 99//1+./+./ 	&+(>?&+(>?r   c                   R  pV P                  V4      w  r#VP                  P                  4       pV P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       VP                  P	                  4       pV P                  WSR,          ,          4       V P                  WSR,          ,          4       V P                  WSR,          ,          4       V P                  VR,          0WSR,          ,          4       V P                  VR,          0WSR,          ,          4       V P                  VR,          0WSR,          ,          4       V P                  VR,          0WSR,          ,          4       V P                  VR,          0WSR,          ,          4       R	# )
c                     ^ p\          W8  d
   \         ^pM\        '       d
   \         ^pM\         ^p\
         W,          ^ 8X  d   \         V^,          p\         V# r   )r  SET_BLOCK_Br  r  SET_BLOCK_Dr  r  r  )r  br  s   && r   r  .TestRealCodeDomFront.test_if_else.<locals>.foo  sL    AuuzQHr   r  BC0r  Dr  r  r  Nr  r  r  rX   r  r  rZ   r  r  r  r  r	  s   &     r   test_if_else!TestRealCodeDomFront.test_if_else  s   	( 2237		..0e3K&89e4L&9:uD\':;uC['9:e3K&89e3K&89e3K&8999//1+./+./+./&+(=>&+(>?&+(>?&+(=>&+(=>r   c                   R  pV P                  V4      w  r#VP                  P                  4       pV P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       V P                  VR,          WCR,          ,          4       VP                  P	                  4       pV P                  WSR,          ,          4       V P                  WSR,          ,          4       V P                  VR,          0WSR,          ,          4       V P                  VR,          0WSR,          ,          4       V P                  VR,          0WSR,          ,          4       V P                  VR,          0WSR,          ,          4       R	# )
c                      \         '       dE   \         \        '       d
   \         ^ p M#\        '       d
   \
         ^p M\         ^p \         \         \         X # r   )
SET_BLOCK_A0SET_BLOCK_A1r  r  r  r  SET_BLOCK_C2r#  r  r  )r  s    r   r  5TestRealCodeDomFront.test_if_else_nested.<locals>.foo  s:    |< A#|$$Hr   A0A1B1r'  r(  r  r  r  Nr)  r*  s   &     r   test_if_else_nested(TestRealCodeDomFront.test_if_else_nested  s   	$ 2237		..0uD\':;uD\':;uD\':;uC['9:uC['9:uC['9:99//1,/0+./&+(>?&+(>?&+(=>&+(=>r   c                j   R  pV P                  V4      w  r#VP                  P                  4       pV P                  RV4       V P	                  VR,          WCR,          ,          4       V P	                  VR,          WCR,          ,          4       VP                  P                  4       pV P                  WSR,          ,          4       V P                  WSR,          ,          4       V P	                  VR,          0WSR,          ,          4       V P	                  VR,          0WSR,          ,          4       R# )c                  H    \           \        '       d	   \         R# \         K  )TN)r  r"  r  r#  r  r    r   r   r  4TestRealCodeDomFront.test_infinite_loop.<locals>.foo  s    ;r   r  r&  r  r(  r  N)r  r  r  assertNotInrX   r  r  r*  s   &     r   test_infinite_loop'TestRealCodeDomFront.test_infinite_loop  s    	 2237		..0 	f%e3K&89e3K&8999//1+./+./&+(=>&+(=>r   r    N)r   r   r   r   r  r  r  r  r
  r  r+  r6  r<  r   r   r  s   @r   r  r  (  s:     

 &20*@8(?T#?J? ?r   r  __main__),rU   unittestnumbar   numba.core.controlflowr   r   
numba.corer   numba.core.bytecoder   r   r	   numba.tests.supportr
   r   rp   r   r   r"   r$   r&   r(   r*   r,   r/   r2   r4   r7   r9   r;   r=   r@   rC   rE   rG   rI   rL   rP   rR   r  r  r   mainr    r   r   <module>rF     s       ?  P P ( $
D1	
$ ]=h ]=@m
"( m
"`T?8 T?n zMMO r   