
    sh\N                     p   S SK r S SKJr  S SKrS SKrS SKJr  S SKJ	r	J
r
  S SKJr  S SKJrJr  S SKJrJrJr  S SKJrJr  S S	KJr   " S
 S\ R                  5      r " S S\ R                  5      r " S S\5      r " S S\5      rSr " S S\5      r " S S\5      r\S:X  a  \ R>                  " 5         gg)    N)TestCase)objmode)ircompiler)errors)CompilerBaseReconstructSSA)FunctionPassPassManagerregister_pass)TranslateByteCodeIRProcessing)njitc                       \ rS rSrS rSrg)TestIR   c                    Sn[         R                  " S [         R                  " USS9S9n[         R                  " U[         R                  " USS9S9nUR                  S[         R                  " USS9S9nU R	                  UR                  S5      U5        U R                  [        UR                  5      S5        UR                  S	[         R                  " US
S9S9nU R                  [        UR                  5      S5        U R                  [        UR                  5      S5        U R	                  UR                  S	5      U5        U R	                  UR                  S	5      U5        UR                  S	[         R                  " USS9S9nU R	                  UR                  S	5      U5        U R                  UR                  S	5      U(       + 5        U R	                  UR                  S	5      U5         UR                  S	[         R                  " USS9S9  U R                  S[         R                  -  5        g ! [         R                   a     g f = f)Nz<?>   )filenamelineparentloc   apple   )r   orange      zExpecting an %s)r   ScopeLocdefineassertIsgetassertEquallen	localvarsassertIsNotfailRedefinedError)selfr   toplocalr   r   more_oranges          g/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_ir.pytest_IRScopeTestIR.test_IRScope   s   hhdq(IJ)JKW"&&(*KLeii(%0U__-q1H"&&(*KLU__-q1S]]+Q/cggh'0eii)62ll8=>2@l Acggh'08,&j9eii);7	=LLrvvxa'HLI II'"*;*;;<    		s   7#H= =II N)__name__
__module____qualname____firstlineno__r0   __static_attributes__r2       r/   r   r      s    =r8   r   c                      \ rS rSr\R
                  " SS\R                  5      r\R
                  " SS\R                  5      r\R
                  " SS\R                  5      r	\R
                  " SS\R                  5      r
\R
                  " SS\R                  5      r\R                  " SS	S
5      r\R                  " SSS
5      r\R                  " SSS
5      r/ / 4S jrSrg)CheckEquality8   Nabcdemockr   r   r   r   c                 t    U H  nU R                  X:H  5        M     U H  nU R                  X:g  5        M     g N)
assertTrue)r+   basesame	differentsr?   s         r/   checkCheckEquality.checkC   s2    AOODI& AOODI& r8   r2   )r3   r4   r5   r6   r   Varunknown_locvar_avar_bvar_cvar_dvar_er!   loc1loc2loc3rI   r7   r2   r8   r/   r:   r:   8   s    FF4bnn-EFF4bnn-EFF4bnn-EFF4bnn-EFF4bnn-E66&!QD66&!QD66&!QD!R 'r8   r:   c                   $    \ rS rSrSrS rS rSrg)
TestIRMetaJ   z(
Tests IR node meta, like Loc and Scope
c                    [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " SSS5      n[         R                  " SSS5      n[         R                  " SSS5      nU R                  X/X4U/S9  [         R                  " SSSSS9n[         R                  " SSSS	S9nU R                  XU/S
9  g )Nfiler   r   piler   rF   rG   F)maybe_decoratorTrF   )r   r!   rI   r+   r<   r=   r>   r?   r@   fgs           r/   test_locTestIRMeta.test_locN   s    FF61a FF61a FF61a FF61a FF61a 

14A!9
5FF61a7FF61a6

1q6
"r8   c                 n   [         R                  " S U R                  5      n[         R                  " S U R                  5      n[         R                  " S U R                  5      nU R	                  XU/S9  [         R                  " XR                  5      n[         R                  " XR                  5      n[         R                  " XR                  5      n[         R                  " X0R                  5      nU R	                  XEXg/S9  [         R                  " X R                  5      nU R	                  XH/S9  g Nr]   )r   r    rR   rS   rI   )	r+   parent1parent2parent3r<   r=   r>   r?   r@   s	            r/   
test_scopeTestIRMeta.test_scopeZ   s    ((4+((4+((4+

77!4
5HHWii(HHWii(HHWii(HHWii(

1q9
% HHWii(

14
 r8   r2   N)r3   r4   r5   r6   __doc__ra   rh   r7   r2   r8   r/   rV   rV   J   s    
#!r8   rV   c                       \ 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 rS rS rS rS rS rS rSrg)TestIRNodesl   z
Tests IR nodes
c                 x    [         R                  " 5       n[         R                  " 5       nU R                  X/S9  g rd   )r   
TerminatorrI   )r+   t1t2s      r/   test_terminatorTestIRNodes.test_terminatorp   s(    ]]_]]_

2D
!r8   c                 2   [         R                  " SU R                  5      n[         R                  " SU R                  5      n[         R                  " SU R                  5      n[         R                  " SU R                  5      nU R	                  XU/U/S9  g Nr   r   r[   )r   JumprR   rS   rI   r+   r<   r=   r>   r?   s        r/   	test_jumpTestIRNodes.test_jumpv   sh    GGAtyy!GGAtyy!GGAtyy!GGAtyy!

1q6aS
1r8   c                    [         R                  " U R                  U R                  5      n[         R                  " U R                  U R                  5      n[         R                  " U R                  U R                  5      n[         R                  " U R
                  U R                  5      nU R                  XU/U/S9  g Nr[   )r   ReturnrM   rR   rS   rN   rI   rw   s        r/   test_returnTestIRNodes.test_return}   sx    IIdjj$)),IIdjj$)),IIdjj$)),IIdjj$)),

1q6aS
1r8   c                    [         R                  " U R                  U R                  5      n[         R                  " U R                  U R                  5      n[         R                  " U R                  U R                  5      n[         R                  " U R
                  U R                  5      nU R                  XU/U/S9  g r{   )r   RaiserM   rR   rS   rN   rI   rw   s        r/   
test_raiseTestIRNodes.test_raise   sx    HHTZZ+HHTZZ+HHTZZ+HHTZZ+

1q6aS
1r8   c                    [         R                  " [        S U R                  5      n[         R                  " [        S U R                  5      n[         R                  " [        S U R                  5      n[         R                  " [        SU R                  5      n[         R                  " [
        S U R                  5      nU R                  XU/XT/S9  g )N)strr[   )r   StaticRaiseAssertionErrorrR   rS   RuntimeErrorrI   )r+   r<   r=   r>   r@   r?   s         r/   test_staticraiseTestIRNodes.test_staticraise   s    NN>4;NN>4;NN>4;NN>8TYY?NN<tyy9

1q6aV
4r8   c                 H   [         R                  " U R                  SSU R                  5      n[         R                  " U R                  SSU R                  5      n[         R                  " U R                  SSU R                  5      n[         R                  " U R
                  SSU R                  5      n[         R                  " U R                  SSU R                  5      n[         R                  " U R                  SSU R                  5      nU R                  XU/XEU/S9  g )Nr   r   r   r[   )r   BranchrM   rR   rS   rN   rI   r+   r<   r=   r>   r?   r@   r_   s          r/   test_branchTestIRNodes.test_branch   s    IIdjj!Q		2IIdjj!Q		2IIdjj!Q		2IIdjj!Q		2IIdjj!Q		2IIdjj!Q		2

1q6aAY
7r8   c                 2   [         R                  " SU R                  5      n[         R                  " SU R                  5      n[         R                  " SU R                  5      n[         R                  " SU R                  5      nU R	                  XU/U/S9  g )Nsome_opsome_other_opr[   )r   ExprrR   rS   rI   rw   s        r/   	test_exprTestIRNodes.test_expr   sh    GGItyy)GGItyy)GGItyy)GGOTYY/

1q6aS
1r8   c                 8   [         R                  " U R                  U R                  U R                  U R
                  5      n[         R                  " U R                  U R                  U R                  U R
                  5      n[         R                  " U R                  U R                  U R                  U R                  5      n[         R                  " U R                  U R                  U R                  U R
                  5      n[         R                  " U R                  U R                  U R                  U R
                  5      n[         R                  " U R                  U R                  U R                  U R
                  5      nU R                  XU/XEU/S9  g r{   )	r   SetItemrM   rN   rO   rR   rS   rP   rI   r   s          r/   test_setitemTestIRNodes.test_setitem   s    JJtzz4::tzz499EJJtzz4::tzz499EJJtzz4::tzz499EJJtzz4::tzz499EJJtzz4::tzz499EJJtzz4::tzz499E

1q6aAY
7r8   c                    [         R                  " U R                  SU R                  U R                  U R
                  5      n[         R                  " U R                  SU R                  U R                  U R
                  5      n[         R                  " U R                  SU R                  U R                  U R                  5      n[         R                  " U R                  SU R                  U R                  U R
                  5      n[         R                  " U R                  SU R                  U R                  U R
                  5      n[         R                  " U R                  SU R                  U R                  U R
                  5      n[         R                  " U R                  SU R                  U R                  U R
                  5      nU R                  XU/XEXg/S9  g ru   )	r   StaticSetItemrM   rN   rO   rR   rS   rP   rI   r^   s           r/   test_staticsetitemTestIRNodes.test_staticsetitem   s2   TZZDJJ

DIINTZZDJJ

DIINTZZDJJ

DIINTZZDJJ

DIINTZZDJJ

DIINTZZDJJ

DIINTZZDJJ

DIIN

1q6aA\
:r8   c                 F   [         R                  " U R                  U R                  U R                  5      n[         R                  " U R                  U R                  U R                  5      n[         R                  " U R                  U R                  U R
                  5      n[         R                  " U R                  U R                  U R                  5      n[         R                  " U R                  U R                  U R                  5      nU R                  XU/XE/S9  g r{   )r   DelItemrM   rN   rR   rS   rO   rI   r+   r<   r=   r>   r?   r@   s         r/   test_delitemTestIRNodes.test_delitem   s    JJtzz4::tyy9JJtzz4::tyy9JJtzz4::tyy9JJtzz4::tyy9JJtzz4::tyy9

1q6aV
4r8   c                    [         R                  " U R                  R                  U R                  5      n[         R                  " U R                  R                  U R                  5      n[         R                  " U R                  R                  U R
                  5      n[         R                  " U R                  R                  U R                  5      nU R                  XU/U/S9  g r{   )r   DelrM   namerR   rS   rN   rI   rw   s        r/   test_delTestIRNodes.test_del   s    FF4::??DII.FF4::??DII.FF4::??DII.FF4::??DII.

1q6aS
1r8   c                    [         R                  " U R                  SU R                  U R                  5      n[         R                  " U R                  SU R                  U R                  5      n[         R                  " U R                  SU R                  U R
                  5      n[         R                  " U R                  SU R                  U R                  5      n[         R                  " U R                  SU R                  U R                  5      n[         R                  " U R                  SU R                  U R                  5      nU R                  XU/XEU/S9  g Nfoobarr[   )r   SetAttrrM   rN   rR   rS   rO   rI   r   s          r/   test_setattrTestIRNodes.test_setattr   s    JJtzz5$**dii@JJtzz5$**dii@JJtzz5$**dii@JJtzz5$**dii@JJtzz5$**dii@JJtzz5$**dii@

1q6aAY
7r8   c                    [         R                  " U R                  SU R                  5      n[         R                  " U R                  SU R                  5      n[         R                  " U R                  SU R                  5      n[         R                  " U R
                  SU R                  5      n[         R                  " U R                  SU R                  5      nU R                  XU/XE/S9  g r   )r   DelAttrrM   rR   rS   rO   rI   r   s         r/   test_delattrTestIRNodes.test_delattr   s    JJtzz5$))4JJtzz5$))4JJtzz5$))4JJtzz5$))4JJtzz5$))4

1q6aV
4r8   c                 F   [         R                  " U R                  U R                  U R                  5      n[         R                  " U R                  U R                  U R                  5      n[         R                  " U R                  U R                  U R
                  5      n[         R                  " U R                  U R                  U R                  5      n[         R                  " U R                  U R                  U R                  5      nU R                  XU/XE/S9  g r{   )r   AssignrM   rN   rR   rS   rO   rI   r   s         r/   test_assignTestIRNodes.test_assign   s    IIdjj$**dii8IIdjj$**dii8IIdjj$**dii8IIdjj$**dii8IIdjj$**dii8

1q6aV
4r8   c                 P   [         R                  " U R                  4U R                  U R                  5      n[         R                  " U R                  4U R                  U R                  5      n[         R                  " U R                  4U R                  U R
                  5      n[         R                  " U R                  4U R                  U R                  5      n[         R                  " U R                  4U R                  U R                  5      nU R                  XU/XE/S9  g r{   )r   PrintrM   rN   rR   rS   rO   rI   r   s         r/   
test_printTestIRNodes.test_print   s    HHdjj]DJJ		:HHdjj]DJJ		:HHdjj]DJJ		:HHdjj]DJJ		:HHdjj]DJJ		:

1q6aV
4r8   c                 8   [         R                  " U R                  U R                  U R                  U R
                  5      n[         R                  " U R                  U R                  U R                  U R
                  5      n[         R                  " U R                  U R                  U R                  U R                  5      n[         R                  " U R                  U R                  U R                  U R
                  5      n[         R                  " U R                  U R                  U R                  U R
                  5      n[         R                  " U R                  U R                  U R                  U R
                  5      nU R                  XU/XEU/S9  g r{   )	r   StoreMaprM   rN   rO   rR   rS   rP   rI   r   s          r/   test_storemapTestIRNodes.test_storemap   s    KK

DJJ

DIIFKK

DJJ

DIIFKK

DJJ

DIIFKK

DJJ

DIIFKK

DJJ

DIIFKK

DJJ

DIIF

1q6aAY
7r8   c                    [         R                  " U R                  U R                  S5      n[         R                  " U R                  U R                  S5      n[         R                  " U R                  U R                  S5      n[         R                  " U R
                  U R                  S5      n[         R                  " U R                  U R                  S5      nU R                  XU/XE/S9  g )Nr   r   r[   )r   YieldrM   rR   rS   rN   rI   r   s         r/   
test_yieldTestIRNodes.test_yield   s    HHTZZA.HHTZZA.HHTZZA.HHTZZA.HHTZZA.

1q6aV
4r8   c                 H   [         R                  " U R                  SSU R                  5      n[         R                  " U R                  SSU R                  5      n[         R                  " U R                  SSU R                  5      n[         R                  " U R
                  SSU R                  5      n[         R                  " U R                  SSU R                  5      n[         R                  " U R                  SSU R                  5      nU R                  XU/XEU/S9  g )Nr   r   r   r[   )r   	EnterWithrM   rR   rS   rN   rI   r   s          r/   test_enterwithTestIRNodes.test_enterwith   s    LLQ4995LLQ4995LLQ4995LLQ4995LLQ4995LLQ4995

1q6aAY
7r8   c                 ~   [         R                  " SSU R                  5      n[         R                  " SSU R                  5      n[         R                  " SSU R                  5      n[         R                  " SSU R                  5      n[         R                  " SSU R                  5      nU R	                  XU/XE/S9  g Nr   r   r   r   r[   )r   ArgrR   rS   rI   r   s         r/   test_argTestIRNodes.test_arg   s    FF5!TYY'FF5!TYY'FF5!TYY'FF5!TYY'FF5!TYY'

1q6aV
4r8   c                 2   [         R                  " SU R                  5      n[         R                  " SU R                  5      n[         R                  " SU R                  5      n[         R                  " SU R                  5      nU R	                  XU/U/S9  g ru   )r   ConstrR   rS   rI   rw   s        r/   
test_constTestIRNodes.test_const  sh    HHQ		"HHQ		"HHQ		"HHQ		"

1q6aS
1r8   c                 ~   [         R                  " SSU R                  5      n[         R                  " SSU R                  5      n[         R                  " SSU R                  5      n[         R                  " SSU R                  5      n[         R                  " SSU R                  5      nU R	                  XU/XE/S9  g r   )r   GlobalrR   rS   rI   r   s         r/   test_globalTestIRNodes.test_global  s    IIeQ		*IIeQ		*IIeQ		*IIeQ		*IIeQ		*

1q6aV
4r8   c                    [         R                  " S SU R                  5      n[         R                  " S SU R                  5      n[         R                  " S SU R                  5      n[         R                  " [         R                  " S [         R
                  5      SU R                  5      n[         R                  " S SU R                  5      nU R                  XX4/U/S9  g r   )r   rK   rR   rS   r    rL   rI   r   s         r/   test_varTestIRNodes.test_var  s    FF4		*FF4		*FF4		*FF288D"..15$))DFF4		*

1q9
4r8   c                 x    [         R                  " 5       n[         R                  " 5       nU R                  X/S9  g rd   )r   UndefinedTyperI   )r+   r<   r=   s      r/   test_undefinedtypeTestIRNodes.test_undefinedtype  s.    

13
r8   c                     [         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      nU R                  X/X4/S9  g Nr   r   r   r   r[   )r   LooprI   rw   s        r/   	test_loopTestIRNodes.test_loop$  R    GGAqMGGAqMGGAqMGGAqM

131&
1r8   c                     [         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      nU R                  X/X4/S9  g r   )r   WithrI   rw   s        r/   	test_withTestIRNodes.test_with+  r   r8   r2   N)r3   r4   r5   r6   rj   rr   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r2   r8   r/   rl   rl   l   s    "2225828;5285558585255 
22r8   rl   i  c                   *    \ rS rSrSrS rS rS rSrg)TestIRCompoundsi7  z#
Tests IR concepts that have state
c                    [         R                  " 5       nUR                  U R                  S5        UR                  U R                  S5        [         R                  " 5       nUR                  U R                  S5        UR                  U R                  S5        [         R                  " 5       nUR                  U R                  S5        UR                  U R
                  S5        U R                  X/U/S9  g r   )r   VarMapr"   rM   rN   rO   rI   )r+   r<   r=   r>   s       r/   test_varmapTestIRCompounds.test_varmap;  s    IIK	U#	U#IIK	U#	U#IIK	U#	U#

131#
.r8   c                    ^  U 4S jnU" 5       nU" 5       nU" 5       R                  [        R                  " T R                  T R                  T R
                  5      5      nT R                  X#/U/S9  g )Nc                  6  > [         R                  " S TR                  5      n [         R                  " U TR                  5      n[         R
                  " TR                  TR                  TR                  5      n[         R
                  " TR                  TR                  TR                  5      n[         R
                  " TR                  TR                  TR                  5      nUR                  U5        UR                  U5        UR                  U5        U$ rC   )r   r    rR   BlockrS   r   rM   rN   rT   rO   append)r   tmpassign1assign2assign3r+   s        r/   	gen_block-TestIRCompounds.test_block.<locals>.gen_blockK  s    XXdDII.F((6499-Cii

DJJ		BGii

DJJ		BGii

DJJ		BGJJwJJwJJwJr8   r[   )r   r   r   rM   rN   rT   rI   )r+   r   r<   r=   r>   s   `    r/   
test_blockTestIRCompounds.test_blockJ  sW    		 KKKryyTZZKL

131#
.r8   c                 ~   S nS nU" 5       nU" 5       nU" U5      nU" U5      nU R                  UR                  U5      5        / 4S jnU R                  SUR                  U5      5        [	        [        UR                  R                  5       5      5       Hr  nUR                  U   n	[        U	R                  S   [        R                  5      (       d  M@  U	R                  S   n
U
R                  U
R                  sU
l        U
l          O   U" UR                  U5      S/5        U" 5       nU R                  UR                  U5      5        U" U5      n[        5       n[	        [        UR                  R                  5       5      5       H  nUR                  U   n	U	R                  S S n
S n[!        [#        U
5      S-
  5       HN  n[        X   [        R$                  5      (       d  M&  [        XS-      [        R$                  5      (       d  ML  Un  O   Uc  M  U	R                  nUR'                  [)        UUS-      5      5        UR'                  [)        UU   5      5        UUS-      UU   sUU'   UUS-   '     O   U R                  U5        U R                  UR                  U5      5        U R+                  [#        U5      S5        U H#  nU R                  UR-                  S	5      5        M%     U" UR                  U5      U5        S
 nS nS nU" U5      nU" U5      nU R                  UR                  U5      5        U R                  SUR                  U5      5        U" U5      nU R                  UR                  U5      5        UR                  U5      nU R                  SU5        U" USS/5        g )Nc                 ,    [         R                  " U SS9$ )NT)	emit_dels)r   run_frontend)xs    r/   r   5TestIRCompounds.test_functionir.<locals>.run_frontend^  s    ((d;;r8   c                     ^ SmSU4S jjn U $ )Ni  c                 B  > X-   nU T-  n [         R                  " U[         R                  S9nXV-   nSU-  n[         R                  " U5      S:  Ga  Xx-  n	[         R                  " SUS-   5      n
[        5          [        XI5        S S S 5        [         R                  " X-
  5      n[         R                  " US   5      S:  a<  Sn[        U 5       H$  nUS-  n[         R                  " U5      S:  d  M$    O   XS   -  nXj-  n/ n[        [        U5      5       HN  nUR                  UU   5        US:  a"  [        SS	S
9   SnSnS S S 5        WS:  a  WU-  nWUS   [        -   -  nMP     UW-   W-   W-   U-   U -   W-   $ ! , (       d  f       N= f! , (       d  f       NQ= f)N)dtype              ?r   r   r   r   r   intp
complex128)rH   t{   z   )npzeros	complex64absaranger   printsqrtranger&   r   _GLOBAL)r<   r=   r>   r?   r@   r_   r`   hiklmnopqrrH   r  _FREEVARs                      r/   r   9TestIRCompounds.test_functionir.<locals>.gen.<locals>.fooi  sw   EXHHQbll3EF66!9q=A		!QU+A a #Avvad|a'!&qAFA!vvay1} % "* qT	AA"3q6]1u9!(6\!B$'$% "C  !3w !QQqTG^+ + 1uqy1}q(1,q00- # "C!Bs   :E? F?
F
F	)   r   Nr2   )r   r  s    @r/   gen,TestIRCompounds.test_functionir.<locals>.genf  s    H1B Jr8   c                     U R                  5       nU H8  nU H#  nUR                  S5      (       d  M  X4;   d  M"    M*     [        SU-  5      e   g )Nz->zCould not find %s )
splitlines
startswithr   )stringpointing_atlinesitemr  s        r/   check_diffstr6TestIRCompounds.test_functionir.<locals>.check_diffstr  sN    %%'E#A||D))9! 
 ))=)DEE $r8   zIR is considered equivalentbranchr   r   zdel c                 D    U S-  nX!-   n[         R                  " U5      nU$ Nr   r  r  r<   r=   r>   r?   r@   s        r/   r   ,TestIRCompounds.test_functionir.<locals>.foo  $    AAA
AHr8   c                 D    U S-  nX!-   n[         R                  " U5      nU$ r)  r*  r+  s        r/   r   ,TestIRCompounds.test_functionir.<locals>.bar  r-  r8   c                 J    U S-  nX-   n[         R                  " US-   5      nU$ )Nr   r   r*  r+  s        r/   baz,TestIRCompounds.test_functionir.<locals>.baz  s(    AAAAAHr8   z$Other block contains more statementszc + bzb + c)rD   equal_irassertIndiff_strreversedlistblockskeys
isinstancebodyr   r   falsebrtruebrassertFalsesetr  r&   r   addr   r%   r  )r+   r   r  r   yx_iry_irr$  labelblkrefzz_ir
change_setidxr  r=   r#  r   r   r1  foo_irbar_irbaz_irr   s                            r/   test_functionirTestIRCompounds.test_functionir\  s   	<$	L EEAAd+,.0 	F 	3T]]45HI d4;;#3#3#567E++e$C#((2,		22hhrl*-++szz'
CK 8 	dmmD)H:6Et,-AU
d4;;#3#3#567E++e$C((3B-CC3s8a<(svrvv.."31u:rvv66C ) HHs1S1W:/s1S6{+%&sQwZ3"##'
 8$ 	
#t,-Z!,DOODOOF34 dmmD):6			 c"c"/03V__V5LMc"01oof%<cBcGW-.r8   r2   N)	r3   r4   r5   r6   rj   r   r   rN  r7   r2   r8   r/   r   r   7  s    //$H/r8   r   c                       \ rS rSrS rSrg)TestIRPedanticChecksi  c                 0  ^^ [        SSS9 " S S[        5      5       m[        SSS9 " S S[        5      5       m " UU4S jS[        5      n[        US	9S
 5       n[        R
                  " 5          [        R                  " S[        R                  5        U R                  [        R                  5       nU" S5        S S S 5        U R                  [        WR                  5      S5        S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)NF)mutates_CFGanalysis_onlyc                   $    \ rS rSrSrS rS rSrg)KTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.RemoveVarInScopei  _remove_var_in_scopec                 0    [         R                  " U 5        g rC   r
   __init__)r+   s    r/   rZ  TTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.RemoveVarInScope.__init__      %%d+r8   c                     UR                   nUR                  R                  5        H=  nUR                  n[        R
                  " UR                  UR                  S9Ul        M?     g)Nr   T)func_irr8  valuesscoper   r    r   r   )r+   stater^  rE  oldscopes        r/   run_passTTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.RemoveVarInScope.run_pass  sM    --">>002C"yyH "-5\\!;CI 3
 r8   r2   Nr3   r4   r5   r6   _namerZ  rc  r7   r2   r8   r/   RemoveVarInScoperV    s    *E,
r8   rg  c                   $    \ rS rSrSrS rS rSrg)CTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.FailPassi  _failc                 0    [         R                  " U 5        g rC   rY  )r+   argskwargss      r/   rZ  LTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.FailPass.__init__  r\  r8   c                     [        S5      e)Nunreachable)r   )r+   ra  s     r/   rc  LTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.FailPass.run_pass  s     %]33r8   r2   Nre  r2   r8   r/   FailPassri    s    E,4r8   rr  c                   $   > \ rS rSrU U4S jrSrg)ETestIRPedanticChecks.test_var_in_scope_assumption.<locals>.MyCompileri  c                   > [        S5      nUR                  [        S5        UR                  [        S5        UR                  TS5        UR                  [        S5        UR                  TS5        UR                  5         U/$ )Nz
testing pmzanalyzing bytecodezprocessing IRrW  ssarj  )r   add_passr   r   r	   finalize)r+   pmrr  rg  s     r/   define_pipelinesVTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.MyCompiler.define_pipelines  sg     .-/CDL/:,.DENE2Hg.tr8   r2   N)r3   r4   r5   r6   rz  r7   )rr  rg  s   r/   
MyCompilerrt    s     r8   r|  )pipeline_classc                 (    SnSnX:  a  SnX4$ SnX4$ )Nr   r   r   r2   )r   r<   r=   s      r/   dummy@TestIRPedanticChecks.test_var_in_scope_assumption.<locals>.dummy  s/     AAu 4K 4Kr8   errorr   z variable '[a-z]' is not in scope)r   r
   r   r   warningscatch_warningssimplefilterr   NumbaPedanticWarningassertRaisesNumbaIRAssumptionWarningassertRegexr   	exception)r+   r|  r  raisesrr  rg  s       @@r/   test_var_in_scope_assumption1TestIRPedanticChecks.test_var_in_scope_assumption  s    	5	>	| 	 
?	& 
5	>
	4| 
	4 
?
	4		 		 		 
Z	(		 
)		 $$&!!'6+F+FG""6#B#BCva D F$$%3 '& DC	 '&s%   2AD7	C6 -D6
D	 D
Dr2   N)r3   r4   r5   r6   r  r7   r2   r8   r/   rQ  rQ    s    Dr8   rQ  __main__) unittestunittest.caser   r  numpyr  numbar   
numba.corer   r   r   numba.core.compilerr   r	   numba.core.compiler_machineryr
   r   r   numba.core.untyped_passesr   r   r   r   r:   rV   rl   r  r   rQ  r3   mainr2   r8   r/   <module>r     s     "    #  
 =X =>'H%% '$! !DD2- D2P m/m m/`E8 EP zMMO r8   