
    xKg\N                     n   d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZmZmZ d dlmZmZ d d	lmZ  G d
 de j                        Z G d de j                        Z G d de      Z G d de      ZdZ G d de      Z G d de      Zedk(  r e j>                          yy)    N)TestCase)objmode)ircompiler)errors)CompilerBaseReconstructSSA)FunctionPassPassManagerregister_pass)TranslateByteCodeIRProcessing)njitc                       e Zd Zd Zy)TestIRc                    d}t        j                  d t        j                  |d            }t        j                  |t        j                  |d            }|j                  dt        j                  |d            }| j	                  |j                  d      |       | j                  t        |j                        d       |j                  d	t        j                  |d
            }| j                  t        |j                        d       | j                  t        |j                        d       | j	                  |j                  d	      |       | j	                  |j                  d	      |       |j                  d	t        j                  |d            }| j	                  |j                  d	      |       | j                  |j                  d	      |        | j	                  |j                  d	      |       	 |j                  d	t        j                  |d             | j                  dt         j                  z         y # t         j                  $ r Y y w xY w)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          W/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_ir.pytest_IRScopez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   
(I I+*I+N)__name__
__module____qualname__r/        r.   r   r      s    =r4   r   c                      e Zd Z ej                  ddej
                        Z ej                  ddej
                        Z ej                  ddej
                        Z ej                  ddej
                        Z	 ej                  ddej
                        Z
 ej                  ddd	      Z ej                  dd
d	      Z ej                  ddd	      Zg g fdZy)CheckEqualityNabcdemockr   r   r   r   c                 p    |D ]  }| j                  ||k(          |D ]  }| j                  ||k7          y N)
assertTrue)r*   basesame	differentsr:   s         r.   checkzCheckEquality.checkC   s6    AOODAI& AOODAI& r4   )r0   r1   r2   r   Varunknown_locvar_avar_bvar_cvar_dvar_er    loc1loc2loc3rD   r3   r4   r.   r6   r6   8   s    BFF4bnn-EBFF4bnn-EBFF4bnn-EBFF4bnn-EBFF4bnn-E266&!QD266&!QD266&!QD!R 'r4   r6   c                       e Zd ZdZd Zd Zy)
TestIRMetaz0
    Tests IR node meta, like Loc and Scope
    c                    t        j                  ddd      }t        j                  ddd      }t        j                  ddd      }t        j                  ddd      }t        j                  ddd      }| j                  ||g|||g       t        j                  dddd      }t        j                  dddd	      }| j                  |||g
       y )Nfiler   r   piler   rA   rB   F)maybe_decoratorTrA   )r   r    rD   r*   r7   r8   r9   r:   r;   fgs           r.   test_loczTestIRMeta.test_locN   s    FF61a FF61a FF61a FF61a FF61a 

1A4Aq!9
5FF61a7FF61a6

1Aq6
"r4   c                    t        j                  d | j                        }t        j                  d | j                        }t        j                  d | j                        }| j	                  |||g       t        j                  || j                        }t        j                  || j                        }t        j                  || j                        }t        j                  || j                        }| j	                  ||||g       t        j                  || j                        }| j	                  ||g       y NrV   )r   r   rL   rM   rD   )	r*   parent1parent2parent3r7   r8   r9   r:   r;   s	            r.   
test_scopezTestIRMeta.test_scopeZ   s    ((4+((4+((4+

7'7!4
5HHWdii(HHWdii(HHWdii(HHWdii(

1Aq!9
% HHWdii(

1A4
 r4   N)r0   r1   r2   __doc__rZ   r`   r3   r4   r.   rP   rP   J   s    
#!r4   rP   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestIRNodesz
    Tests IR nodes
    c                 |    t        j                         }t        j                         }| j                  ||g       y r\   )r   
TerminatorrD   )r*   t1t2s      r.   test_terminatorzTestIRNodes.test_terminatorp   s*    ]]_]]_

2RD
!r4   c                 2   t        j                  d| j                        }t        j                  d| j                        }t        j                  d| j                        }t        j                  d| j                        }| j	                  |||g|g       y Nr   r   rT   )r   JumprL   rM   rD   r*   r7   r8   r9   r:   s        r.   	test_jumpzTestIRNodes.test_jumpv   sj    GGAtyy!GGAtyy!GGAtyy!GGAtyy!

1Aq6aS
1r4   c                    t        j                  | j                  | j                        }t        j                  | j                  | j                        }t        j                  | j                  | j                        }t        j                  | j
                  | j                        }| j                  |||g|g       y NrT   )r   ReturnrG   rL   rM   rH   rD   rl   s        r.   test_returnzTestIRNodes.test_return}   sz    IIdjj$)),IIdjj$)),IIdjj$)),IIdjj$)),

1Aq6aS
1r4   c                    t        j                  | j                  | j                        }t        j                  | j                  | j                        }t        j                  | j                  | j                        }t        j                  | j
                  | j                        }| j                  |||g|g       y ro   )r   RaiserG   rL   rM   rH   rD   rl   s        r.   
test_raisezTestIRNodes.test_raise   sz    HHTZZ+HHTZZ+HHTZZ+HHTZZ+

1Aq6aS
1r4   c                    t        j                  t        d | j                        }t        j                  t        d | j                        }t        j                  t        d | j                        }t        j                  t        d| j                        }t        j                  t
        d | j                        }| j                  |||g||g       y )N)strrT   )r   StaticRaiseAssertionErrorrL   rM   RuntimeErrorrD   )r*   r7   r8   r9   r;   r:   s         r.   test_staticraisezTestIRNodes.test_staticraise   s    NN>4;NN>4;NN>4;NN>8TYY?NN<tyy9

1Aq6aV
4r4   c                 F   t        j                  | j                  dd| j                        }t        j                  | j                  dd| j                        }t        j                  | j                  dd| j                        }t        j                  | j
                  dd| j                        }t        j                  | j                  dd| j                        }t        j                  | j                  dd| j                        }| j                  |||g|||g       y )Nr   r   r   rT   )r   BranchrG   rL   rM   rH   rD   r*   r7   r8   r9   r:   r;   rX   s          r.   test_branchzTestIRNodes.test_branch   s    IIdjj!Q		2IIdjj!Q		2IIdjj!Q		2IIdjj!Q		2IIdjj!Q		2IIdjj!Q		2

1Aq6aAY
7r4   c                 2   t        j                  d| j                        }t        j                  d| j                        }t        j                  d| j                        }t        j                  d| j                        }| j	                  |||g|g       y )Nsome_opsome_other_oprT   )r   ExprrL   rM   rD   rl   s        r.   	test_exprzTestIRNodes.test_expr   sj    GGItyy)GGItyy)GGItyy)GGOTYY/

1Aq6aS
1r4   c                 6   t        j                  | j                  | j                  | j                  | j
                        }t        j                  | j                  | j                  | j                  | j
                        }t        j                  | j                  | j                  | j                  | j                        }t        j                  | j                  | j                  | j                  | j
                        }t        j                  | j                  | j                  | j                  | j
                        }t        j                  | j                  | j                  | j                  | j
                        }| j                  |||g|||g       y ro   )	r   SetItemrG   rH   rI   rL   rM   rJ   rD   r}   s          r.   test_setitemzTestIRNodes.test_setitem   s    JJtzz4::tzz499EJJtzz4::tzz499EJJtzz4::tzz499EJJtzz4::tzz499EJJtzz4::tzz499EJJtzz4::tzz499E

1Aq6aAY
7r4   c                    t        j                  | j                  d| j                  | j                  | j
                        }t        j                  | j                  d| j                  | j                  | j
                        }t        j                  | j                  d| j                  | j                  | j                        }t        j                  | j                  d| j                  | j                  | j
                        }t        j                  | j                  d| j                  | j                  | j
                        }t        j                  | j                  d| j                  | j                  | j
                        }t        j                  | j                  d| j                  | j                  | j
                        }| j                  |||g||||g       y rj   )	r   StaticSetItemrG   rH   rI   rL   rM   rJ   rD   rW   s           r.   test_staticsetitemzTestIRNodes.test_staticsetitem   s8   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

1Aq6aAq\
:r4   c                 F   t        j                  | j                  | j                  | j                        }t        j                  | j                  | j                  | j                        }t        j                  | j                  | j                  | j
                        }t        j                  | j                  | j                  | j                        }t        j                  | j                  | j                  | j                        }| j                  |||g||g       y ro   )r   DelItemrG   rH   rL   rM   rI   rD   r*   r7   r8   r9   r:   r;   s         r.   test_delitemzTestIRNodes.test_delitem   s    JJtzz4::tyy9JJtzz4::tyy9JJtzz4::tyy9JJtzz4::tyy9JJtzz4::tyy9

1Aq6aV
4r4   c                    t        j                  | j                  j                  | j                        }t        j                  | j                  j                  | j                        }t        j                  | j                  j                  | j
                        }t        j                  | j                  j                  | j                        }| j                  |||g|g       y ro   )r   DelrG   namerL   rM   rH   rD   rl   s        r.   test_delzTestIRNodes.test_del   s    FF4::??DII.FF4::??DII.FF4::??DII.FF4::??DII.

1Aq6aS
1r4   c                    t        j                  | j                  d| j                  | j                        }t        j                  | j                  d| j                  | j                        }t        j                  | j                  d| j                  | j
                        }t        j                  | j                  d| j                  | j                        }t        j                  | j                  d| j                  | j                        }t        j                  | j                  d| j                  | j                        }| j                  |||g|||g       y NfoobarrT   )r   SetAttrrG   rH   rL   rM   rI   rD   r}   s          r.   test_setattrzTestIRNodes.test_setattr   s    JJtzz5$**dii@JJtzz5$**dii@JJtzz5$**dii@JJtzz5$**dii@JJtzz5$**dii@JJtzz5$**dii@

1Aq6aAY
7r4   c                    t        j                  | j                  d| j                        }t        j                  | j                  d| j                        }t        j                  | j                  d| j                        }t        j                  | j
                  d| j                        }t        j                  | j                  d| j                        }| j                  |||g||g       y r   )r   DelAttrrG   rL   rM   rI   rD   r   s         r.   test_delattrzTestIRNodes.test_delattr   s    JJtzz5$))4JJtzz5$))4JJtzz5$))4JJtzz5$))4JJtzz5$))4

1Aq6aV
4r4   c                 F   t        j                  | j                  | j                  | j                        }t        j                  | j                  | j                  | j                        }t        j                  | j                  | j                  | j
                        }t        j                  | j                  | j                  | j                        }t        j                  | j                  | j                  | j                        }| j                  |||g||g       y ro   )r   AssignrG   rH   rL   rM   rI   rD   r   s         r.   test_assignzTestIRNodes.test_assign   s    IIdjj$**dii8IIdjj$**dii8IIdjj$**dii8IIdjj$**dii8IIdjj$**dii8

1Aq6aV
4r4   c                 P   t        j                  | j                  f| j                  | j                        }t        j                  | j                  f| j                  | j                        }t        j                  | j                  f| j                  | j
                        }t        j                  | j                  f| j                  | j                        }t        j                  | j                  f| j                  | j                        }| j                  |||g||g       y ro   )r   PrintrG   rH   rL   rM   rI   rD   r   s         r.   
test_printzTestIRNodes.test_print   s    HHdjj]DJJ		:HHdjj]DJJ		:HHdjj]DJJ		:HHdjj]DJJ		:HHdjj]DJJ		:

1Aq6aV
4r4   c                 6   t        j                  | j                  | j                  | j                  | j
                        }t        j                  | j                  | j                  | j                  | j
                        }t        j                  | j                  | j                  | j                  | j                        }t        j                  | j                  | j                  | j                  | j
                        }t        j                  | j                  | j                  | j                  | j
                        }t        j                  | j                  | j                  | j                  | j
                        }| j                  |||g|||g       y ro   )	r   StoreMaprG   rH   rI   rL   rM   rJ   rD   r}   s          r.   test_storemapz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

1Aq6aAY
7r4   c                    t        j                  | j                  | j                  d      }t        j                  | j                  | j                  d      }t        j                  | j                  | j                  d      }t        j                  | j
                  | j                  d      }t        j                  | j                  | j                  d      }| j                  |||g||g       y )Nr   r   rT   )r   YieldrG   rL   rM   rH   rD   r   s         r.   
test_yieldzTestIRNodes.test_yield   s    HHTZZA.HHTZZA.HHTZZA.HHTZZA.HHTZZA.

1Aq6aV
4r4   c                 F   t        j                  | j                  dd| j                        }t        j                  | j                  dd| j                        }t        j                  | j                  dd| j                        }t        j                  | j
                  dd| j                        }t        j                  | j                  dd| j                        }t        j                  | j                  dd| j                        }| j                  |||g|||g       y )Nr   r   r   rT   )r   	EnterWithrG   rL   rM   rH   rD   r}   s          r.   test_enterwithz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

1Aq6aAY
7r4   c                 ~   t        j                  dd| j                        }t        j                  dd| j                        }t        j                  dd| j                        }t        j                  dd| j                        }t        j                  dd| j                        }| j	                  |||g||g       y Nr   r   r   r   rT   )r   ArgrL   rM   rD   r   s         r.   test_argzTestIRNodes.test_arg   s    FF5!TYY'FF5!TYY'FF5!TYY'FF5!TYY'FF5!TYY'

1Aq6aV
4r4   c                 2   t        j                  d| j                        }t        j                  d| j                        }t        j                  d| j                        }t        j                  d| j                        }| j	                  |||g|g       y rj   )r   ConstrL   rM   rD   rl   s        r.   
test_constzTestIRNodes.test_const  sj    HHQ		"HHQ		"HHQ		"HHQ		"

1Aq6aS
1r4   c                 ~   t        j                  dd| j                        }t        j                  dd| j                        }t        j                  dd| j                        }t        j                  dd| j                        }t        j                  dd| j                        }| j	                  |||g||g       y r   )r   GlobalrL   rM   rD   r   s         r.   test_globalzTestIRNodes.test_global  s    IIeQ		*IIeQ		*IIeQ		*IIeQ		*IIeQ		*

1Aq6aV
4r4   c                    t        j                  d d| j                        }t        j                  d d| j                        }t        j                  d d| j                        }t        j                  t        j                  d t         j
                        d| j                        }t        j                  d d| j                        }| j                  ||||g|g       y r   )r   rE   rL   rM   r   rF   rD   r   s         r.   test_varzTestIRNodes.test_var  s    FF4		*FF4		*FF4		*FF288D"..15$))DFF4		*

1Aq!9
4r4   c                 |    t        j                         }t        j                         }| j                  ||g       y r\   )r   UndefinedTyperD   )r*   r7   r8   s      r.   test_undefinedtypezTestIRNodes.test_undefinedtype  s0    

1A3
r4   c                     t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }| j                  ||g||g       y Nr   r   r   r   rT   )r   LooprD   rl   s        r.   	test_loopzTestIRNodes.test_loop$  V    GGAqMGGAqMGGAqMGGAqM

1A31a&
1r4   c                     t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }| j                  ||g||g       y r   )r   WithrD   rl   s        r.   	test_withzTestIRNodes.test_with+  r   r4   N)r0   r1   r2   ra   rh   rm   rq   rt   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   r4   r.   rc   rc   l   s    "2225828;5285558585255 
22r4   rc   i  c                   "    e Zd ZdZd Zd Zd Zy)TestIRCompoundsz+
    Tests IR concepts that have state
    c                    t        j                         }|j                  | j                  d       |j                  | j                  d       t        j                         }|j                  | j                  d       |j                  | j                  d       t        j                         }|j                  | j                  d       |j                  | j
                  d       | j                  ||g|g       y r   )r   VarMapr!   rG   rH   rI   rD   )r*   r7   r8   r9   s       r.   test_varmapzTestIRCompounds.test_varmap;  s    IIK	U#	U#IIK	U#	U#IIK	U#	U#

1A31#
.r4   c                       fd} |       } |       } |       j                  t        j                   j                   j                   j
                              } j                  ||g|g       y )Nc                  ,   t        j                  d j                        } t        j                  | j                        }t        j
                  j                  j                  j                        }t        j
                  j                  j                  j                        }t        j
                  j                  j                  j                        }|j                  |       |j                  |       |j                  |       |S r>   )r   r   rL   BlockrM   r   rG   rH   rN   rI   append)r   tmpassign1assign2assign3r*   s        r.   	gen_blockz-TestIRCompounds.test_block.<locals>.gen_blockK  s    XXdDII.F((6499-Cii

DJJ		BGii

DJJ		BGii

DJJ		BGJJwJJwJJwJr4   rT   )r   r   r   rG   rH   rN   rD   )r*   r   r7   r8   r9   s   `    r.   
test_blockzTestIRCompounds.test_blockJ  sY    		 KKKryyTZZKL

1A31#
.r4   c                 N   d }d } |       } |       } ||      } ||      }| j                  |j                  |             g fd}| j                  d|j                  |             t	        t        |j                  j                                     D ]l  }|j                  |   }	t        |	j                  d   t        j                        s:|	j                  d   }
|
j                  |
j                  c|
_        |
_         n  ||j                  |      dg        |       }| j                  |j                  |              ||      }t               }t	        t        |j                  j                                     D ]  }|j                  |   }	|	j                  d d }
d }t!        t#        |
      dz
        D ]D  }t        |
|   t        j$                        s!t        |
|dz      t        j$                        sB|} n ||	j                  }|j'                  t)        ||dz                   |j'                  t)        ||                ||dz      ||   c||<   ||dz   <    n | j                  |       | j                  |j                  |             | j+                  t#        |      d       |D ]"  }| j                  |j-                  d	             $  ||j                  |      |       d
 }d }d } ||      } ||      }| j                  |j                  |             | j                  d|j                  |              ||      }| j                  |j                  |             |j                  |      }| j                  d|        ||ddg       y )Nc                 0    t        j                  | d      S )NT)	emit_dels)r   run_frontend)xs    r.   r   z5TestIRCompounds.test_functionir.<locals>.run_frontend^  s    ((d;;r4   c                      ddfd	} | S )Ni  c                 *   | |z   }| z  } t        j                  |t         j                        }||z   }d|z  }t        j                  |      dkD  r||z  }	t        j                  d|dz         }
t               5  t        ||	       d d d        t        j                  |
|z
        }t        j                  |d         dk  r9d}t        |       D ]!  }|dz  }t        j                  |      dk  s! n ||d   z  }||
z  }g }t        t        |            D ]N  }|j                  ||          |dkD  r$t        dd	
      5  d}d}d d d        dkD  r|z  }|d   t        z   z  }P |z   z   z   |z   | z   z   S # 1 sw Y   xY w# 1 sw Y   DxY w)N)dtype              ?r   r   r   r   r   intp
complex128)rC   t{   z   )npzeros	complex64absaranger   printsqrtranger%   r   _GLOBAL)r7   r8   r9   r:   r;   rX   rY   hiklmnopqrrC   r   _FREEVARs                      r.   r   z9TestIRCompounds.test_functionir.<locals>.gen.<locals>.fooi  s   EXHHQbll3EF66!9q=AA		!QU+A a #AAvvad|a'!&qAFA!vvay1} % "* QqT	AAA"3q6]1u9!(6\!B$'$% "C  !3w !QQqTG^+ + 1uqy1}q(1,q00- # "C!Bs   <E=F	=F	F	)   r   Nr3   )r   r   s    @r.   genz,TestIRCompounds.test_functionir.<locals>.genf  s    H1B Jr4   c                     | j                         }|D ].  }|D ]  }|j                  d      s||v s ! t        d|z         y )Nz->zCould not find %s )
splitlines
startswithrx   )stringpointing_atlinesitemr   s        r.   check_diffstrz6TestIRCompounds.test_functionir.<locals>.check_diffstr  sM    %%'E#A||D)19! 
 ))=)DEE $r4   zIR is considered equivalentbranchr   r   zdel c                 D    | dz  }||z   }t        j                  |      }|S Nr   r   r   r7   r8   r9   r:   r;   s        r.   r   z,TestIRCompounds.test_functionir.<locals>.foo  &    AAAA
AHr4   c                 D    | dz  }||z   }t        j                  |      }|S r   r   r  s        r.   r   z,TestIRCompounds.test_functionir.<locals>.bar  r  r4   c                 J    | dz  }||z   }t        j                  |dz         }|S )Nr   r   r   r  s        r.   bazz,TestIRCompounds.test_functionir.<locals>.baz  s*    AAAAAAHr4   z$Other block contains more statementszc + bzb + c)r?   equal_irassertIndiff_strreversedlistblockskeys
isinstancebodyr   r|   falsebrtruebrassertFalsesetr   r%   r   addrv   r$   r   )r*   r   r   r   yx_iry_irr   labelblkrefzz_ir
change_setidxr   r8   r   r   r   r  foo_irbar_irbaz_irr   s                            r.   test_functionirz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hhrl*-++szz'
CK 8 	dmmD)H:6Et,-AU
d4;;#3#3#567E++e$C((3B-CC3s8a<(s1vrvv."3q1u:rvv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-.r4   N)r0   r1   r2   ra   r   r   r!  r3   r4   r.   r   r   7  s    //$H/r4   r   c                       e Zd Zd Zy)TestIRPedanticChecksc                 (   t        dd       G d dt                     t        dd       G d dt                      G fddt              }t        |	      d
        }t	        j
                         5  t	        j                  dt        j                         | j                  t        j                        5 } |d       d d d        | j                  t        j                        d       d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY w)NF)mutates_CFGanalysis_onlyc                       e Zd ZdZd Zd Zy)KTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.RemoveVarInScope_remove_var_in_scopec                 .    t        j                  |        y r>   r
   __init__)r*   s    r.   r,  zTTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.RemoveVarInScope.__init__      %%d+r4   c                     |j                   }|j                  j                         D ]>  }|j                  }t	        j
                  |j                  |j                        |_        @ y)Nr   T)func_irr  valuesscoper   r   r   r   )r*   stater/  r  oldscopes        r.   run_passzTTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.RemoveVarInScope.run_pass  sM    --">>002C"yyH "-5\\!;CI 3
 r4   Nr0   r1   r2   _namer,  r4  r3   r4   r.   RemoveVarInScoper(    s    *E,
r4   r7  c                       e Zd ZdZd Zd Zy)CTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.FailPass_failc                 .    t        j                  |        y r>   r+  )r*   argskwargss      r.   r,  zLTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.FailPass.__init__  r-  r4   c                     t        d      )Nunreachable)rx   )r*   r2  s     r.   r4  zLTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.FailPass.run_pass  s     %]33r4   Nr5  r3   r4   r.   FailPassr9    s    E,4r4   r@  c                       e Zd Z fdZy)ETestIRPedanticChecks.test_var_in_scope_assumption.<locals>.MyCompilerc                    t        d      }|j                  t        d       |j                  t        d       |j                  d       |j                  t        d       |j                  d       |j                          |gS )Nz
testing pmzanalyzing bytecodezprocessing IRr)  ssar:  )r   add_passr   r   r	   finalize)r*   pmr@  r7  s     r.   define_pipelineszVTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.MyCompiler.define_pipelines  sg     .-/CDL/:,.DENE2Hg.tr4   N)r0   r1   r2   rH  )r@  r7  s   r.   
MyCompilerrB    s    r4   rI  )pipeline_classc                 ,    d}d}||k  rd}||fS d}||fS )Nr   r   r   r3   )r   r7   r8   s      r.   dummyz@TestIRPedanticChecks.test_var_in_scope_assumption.<locals>.dummy  s5     AA1u a4K a4Kr4   errorr   z variable '[a-z]' is not in scope)r   r
   r   r   warningscatch_warningssimplefilterr   NumbaPedanticWarningassertRaisesNumbaIRAssumptionWarningassertRegexrv   	exception)r*   rI  rL  raisesr@  r7  s       @@r.   test_var_in_scope_assumptionz1TestIRPedanticChecks.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%   9AD=	C<-D<D	DDN)r0   r1   r2   rW  r3   r4   r.   r#  r#    s    Dr4   r#  __main__) unittestunittest.caser   rN  numpyr   numbar   
numba.corer   r   r   numba.core.compilerr   r	   numba.core.compiler_machineryr
   r   r   numba.core.untyped_passesr   r   r   r   r6   rP   rc   r   r   r#  r0   mainr3   r4   r.   <module>rb     s     "    #  
 =X =>'H%% '$! !DD2- D2P m/m m/`E8 EP zHMMO r4   