
    J/Ph\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                     dS dS )    N)TestCase)objmode)ircompiler)errors)CompilerBaseReconstructSSA)FunctionPassPassManagerregister_pass)TranslateByteCodeIRProcessing)njitc                       e Zd Zd ZdS )TestIRc                 Z   d}t          j        d t          j        |d                    }t          j        |t          j        |d                    }|                    dt          j        |d                    }|                     |                    d          |           |                     t          |j                  d           |                    d	t          j        |d
                    }|                     t          |j                  d           |                     t          |j                  d           |                     |                    d	          |           |                     |                    d	          |           |                    d	t          j        |d                    }|                     |                    d	          |           | 	                    |                    d	          |            |                     |                    d	          |           	 |                    d	t          j        |d                     | 
                    dt           j        z             d S # t           j        $ r Y d S 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          S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_ir.pytest_IRScopezTestIR.test_IRScope   sa   hdq(I(I(IJJJ)J)J)JKKKW"&(*K*K*KLLeii((%000U_--q111H"&(*K*K*KLLU_--q111S]++Q///cggh''000eii))6222ll8=>2@ 2@ 2@l A Acggh''0008,,&j999eii));777	=LLrvxa'H'H'HLIII II'"*;;<<<<<   	 	 	DD	s   +J J*)J*N)__name__
__module____qualname__r/        r.   r   r      s#        = = = = =r4   r   c                   l   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dS )CheckEqualityNabcdemockr   r   r   r   c                 ~    |D ]}|                      ||k               |D ]}|                      ||k               d S N)
assertTrue)r*   basesame	differentsr:   s         r.   checkzCheckEquality.checkC   s\     	' 	'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        BF4bn--EBF4bn--EBF4bn--EBF4bn--EBF4bn--E26&!QD26&!QD26&!QD!R ' ' ' ' ' 'r4   r6   c                       e Zd ZdZd Zd ZdS )
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          }|                     ||g|||g           t          j        dddd          }t          j        dddd	          }|                     |||g
           d S )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    F61a  F61a  F61a  F61a  F61a  

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

1Aq6
"""""r4   c                 <   t          j        d | j                  }t          j        d | j                  }t          j        d | j                  }|                     |||g           t          j        || j                  }t          j        || j                  }t          j        || j                  }t          j        || j                  }|                     ||||g           t          j        || j                  }|                     ||g           d S 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55HWdi((HWdi((HWdi((HWdi((

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

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dS )TestIRNodesz
    Tests IR nodes
    c                     t          j                    }t          j                    }|                     ||g           d S r\   )r   
TerminatorrD   )r*   t1t2s      r.   test_terminatorzTestIRNodes.test_terminatorp   s6    ]__]__

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

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

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

1Aq6aS
1111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                  }|                     |||g||g           d S )N)strrT   )r   StaticRaiseAssertionErrorrL   rM   RuntimeErrorrD   )r*   r7   r8   r9   r;   r:   s         r.   test_staticraisezTestIRNodes.test_staticraise   s    N>4;;N>4;;N>4;;N>8TY??N<ty99

1Aq6aV
44444r4   c                    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                  }|                     |||g|||g           d S )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    Idj!Q	22Idj!Q	22Idj!Q	22Idj!Q	22Idj!Q	22Idj!Q	22

1Aq6aAY
77777r4   c                    t          j        d| j                  }t          j        d| j                  }t          j        d| j                  }t          j        d| j                  }|                     |||g|g           d S )Nsome_opsome_other_oprT   )r   ExprrL   rM   rD   rl   s        r.   	test_exprzTestIRNodes.test_expr   sr    GIty))GIty))GIty))GOTY//

1Aq6aS
11111r4   c                 D   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                  }|                     |||g|||g           d S ro   )	r   SetItemrG   rH   rI   rL   rM   rJ   rD   r}   s          r.   test_setitemzTestIRNodes.test_setitem   s    Jtz4:tz49EEJtz4:tz49EEJtz4:tz49EEJtz4:tz49EEJtz4:tz49EEJtz4:tz49EE

1Aq6aAY
7777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                  }|                     |||g||||g           d S rj   )	r   StaticSetItemrG   rH   rI   rL   rM   rJ   rD   rW   s           r.   test_staticsetitemzTestIRNodes.test_staticsetitem   s   TZDJ
DINNTZDJ
DINNTZDJ
DINNTZDJ
DINNTZDJ
DINNTZDJ
DINNTZDJ
DINN

1Aq6aAq\
:::::r4   c                    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                  }|                     |||g||g           d S ro   )r   DelItemrG   rH   rL   rM   rI   rD   r*   r7   r8   r9   r:   r;   s         r.   test_delitemzTestIRNodes.test_delitem   s    Jtz4:ty99Jtz4:ty99Jtz4:ty99Jtz4:ty99Jtz4:ty99

1Aq6aV
44444r4   c                 \   t          j        | j        j        | j                  }t          j        | j        j        | j                  }t          j        | j        j        | j                  }t          j        | j        j        | j                  }|                     |||g|g           d S ro   )r   DelrG   namerL   rM   rH   rD   rl   s        r.   test_delzTestIRNodes.test_del   s    F4:?DI..F4:?DI..F4:?DI..F4:?DI..

1Aq6aS
1111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                  }|                     |||g|||g           d S NfoobarrT   )r   SetAttrrG   rH   rL   rM   rI   rD   r}   s          r.   test_setattrzTestIRNodes.test_setattr   s    Jtz5$*di@@Jtz5$*di@@Jtz5$*di@@Jtz5$*di@@Jtz5$*di@@Jtz5$*di@@

1Aq6aAY
7777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                  }|                     |||g||g           d S r   )r   DelAttrrG   rL   rM   rI   rD   r   s         r.   test_delattrzTestIRNodes.test_delattr   s    Jtz5$)44Jtz5$)44Jtz5$)44Jtz5$)44Jtz5$)44

1Aq6aV
44444r4   c                    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                  }|                     |||g||g           d S ro   )r   AssignrG   rH   rL   rM   rI   rD   r   s         r.   test_assignzTestIRNodes.test_assign   s    Idj$*di88Idj$*di88Idj$*di88Idj$*di88Idj$*di88

1Aq6aV
44444r4   c                    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                  }|                     |||g||g           d S ro   )r   PrintrG   rH   rL   rM   rI   rD   r   s         r.   
test_printzTestIRNodes.test_print   s    Hdj]DJ	::Hdj]DJ	::Hdj]DJ	::Hdj]DJ	::Hdj]DJ	::

1Aq6aV
44444r4   c                 D   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                  }|                     |||g|||g           d S ro   )	r   StoreMaprG   rH   rI   rL   rM   rJ   rD   r}   s          r.   test_storemapzTestIRNodes.test_storemap   s    K
DJ
DIFFK
DJ
DIFFK
DJ
DIFFK
DJ
DIFFK
DJ
DIFFK
DJ
DIFF

1Aq6aAY
7777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          }|                     |||g||g           d S )Nr   r   rT   )r   YieldrG   rL   rM   rH   rD   r   s         r.   
test_yieldzTestIRNodes.test_yield   s    HTZA..HTZA..HTZA..HTZA..HTZA..

1Aq6aV
44444r4   c                    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                  }|                     |||g|||g           d S )Nr   r   r   rT   )r   	EnterWithrG   rL   rM   rH   rD   r}   s          r.   test_enterwithzTestIRNodes.test_enterwith   s    LQ4955LQ4955LQ4955LQ4955LQ4955LQ4955

1Aq6aAY
77777r4   c                 L   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                  }|                     |||g||g           d S Nr   r   r   r   rT   )r   ArgrL   rM   rD   r   s         r.   test_argzTestIRNodes.test_arg   s    F5!TY''F5!TY''F5!TY''F5!TY''F5!TY''

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

1Aq6aS
11111r4   c                 L   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                  }|                     |||g||g           d S r   )r   GlobalrL   rM   rD   r   s         r.   test_globalzTestIRNodes.test_global  s    IeQ	**IeQ	**IeQ	**IeQ	**IeQ	**

1Aq6aV
4444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                  }|                     ||||g|g           d S r   )r   rE   rL   rM   r   rF   rD   r   s         r.   test_varzTestIRNodes.test_var  s    F4	**F4	**F4	**F28D".115$)DDF4	**

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

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

1A31a&
11111r4   c                     t          j        dd          }t          j        dd          }t          j        dd          }t          j        dd          }|                     ||g||g           d S 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2 2 22 2 25 5 58 8 82 2 28 8 8; ; ;5 5 52 2 28 8 85 5 55 5 55 5 58 8 85 5 58 8 85 5 52 2 25 5 55 5 5     
2 2 22 2 2 2 2r4   rc   i  c                   $    e Zd ZdZd Zd Zd ZdS )TestIRCompoundsz+
    Tests IR concepts that have state
    c                    t          j                    }|                    | j        d           |                    | j        d           t          j                    }|                    | j        d           |                    | j        d           t          j                    }|                    | j        d           |                    | j        d           |                     ||g|g           d S r   )r   VarMapr!   rG   rH   rI   rD   )r*   r7   r8   r9   s       r.   test_varmapzTestIRCompounds.test_varmap;  s    IKK	U###	U###IKK	U###	U###IKK	U###	U###

1A31#
.....r4   c                       fd} |            } |            } |                                 t          j         j         j         j                            }                     ||g|g           d S )Nc                     t          j        d j                  } t          j        | j                  }t          j        j        j        j                  }t          j        j        j	        j                  }t          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    XdDI..F(649--Ci
DJ	BBGi
DJ	BBGi
DJ	B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  s    		 		 		 		 		 IKKIKKIKKryTZKKLL

1A31#
.....r4   c                    d }d } |            } |            } ||          } ||          }|                      |                    |                     g fd}|                     d|                    |                     t	          t          |j                                                            D ]\}|j        |         }	t          |	j	        d         t          j                  r(|	j	        d         }
|
j        |
j        c|
_        |
_         n] ||                    |          dg            |            }|                     |                    |                      ||          }t                      }t	          t          |j                                                            D ]}|j        |         }	|	j	        d d         }
d }t!          t#          |
          dz
            D ]I}t          |
|         t          j                  r't          |
|dz            t          j                  r|} nJ|y|	j	        }|                    t)          ||dz                                 |                    t)          ||                              ||dz            ||         c||<   ||dz   <    n|                      |           |                     |                    |                     |                     t#          |          d           |D ]*}|                      |                    d	                     + ||                    |          |           d
 }d }d } ||          } ||          }|                      |                    |                     |                     d|                    |                      ||          }|                     |                    |                     |                    |          }|                     d|            ||ddg           d S )Nc                 .    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                 v   | |z   }| z  } t          j        |t           j                  }||z   }d|z  }t          j        |          dk    rX||z  }	t          j        d|dz             }
t                      5  t          ||	           d d d            n# 1 swxY w Y   t          j        |
|z
            }t          j        |d                   dk     r>d}t          |           D ]!}|dz  }t          j        |          dk     r n"||d         z  }||
z  }g }t          t          |                    D ]n}|
                    ||                    |dk    r8t          dd	
          5  d}d}d d d            n# 1 swxY w Y   |dk    r||z  }||d         t          z   z  }o||z   |z   |z   |z   | z   |z   S )N)dtyper   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  sK   EXHQbl333EF6!99q==AA	!QU++A  $ $a$ $ $ $ $ $ $ $ $ $ $ $ $ $ $AAvad||a''!&q & &AFA!vayy1}} %  -QqT	AAA"3q66]] , ,1u99!(6\!B!B!B & &$'$%& & & & & & & & & & & & & & &  !3ww !QQqTG^+1uqy1}q(1,q00s$   :BBB,E==F	F	)r   r   Nr3   )r   r   s    @r.   genz,TestIRCompounds.test_functionir.<locals>.genf  s.    H1 1 1 1 1 1B Jr4   c                     |                                  }|D ]4}|D ]}|                    d          r||v r nt          d|z            5d S )Nz->zCould not find %s )
splitlines
startswithrx   )stringpointing_atlinesitemr   s        r.   check_diffstrz6TestIRCompounds.test_functionir.<locals>.check_diffstr  s}    %%''E# F F F FA||D)) "199!E()=)DEEE "	F Fr4   zIR is considered equivalentbranchr   r   zdel c                 B    | 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                 B    | dz  }||z   }t          j        |          }|S r   r   r  s        r.   r   z,TestIRCompounds.test_functionir.<locals>.bar  r  r4   c                 H    | 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\  sO   	< 	< 	<$	 $	 $	L CEECEE|A|Ad++,,,.0 	F 	F 	F 	F 	3T]]45H5HIII d4;#3#3#5#56677 	 	E+e$C#(2,	22 hrl*-+sz'
CK
 	dmmD))H:666CEEt,,---|AUU
d4;#3#3#5#56677 	 	E+e$C(3B3-CC3s88a<((  s1vrv.. "3q1u:rv66CEHs1S1W:///s1S6{{+++%&sQwZ3"##'
  	
###t,,---Z!,,, 	5 	5DOODOOF334444dmmD)):666	 	 		 	 		 	 	 c""c""//0003V__V5L5LMMMc""00111oof%%<cBBBcGW-.....r4   N)r0   r1   r2   ra   r   r   r!  r3   r4   r.   r   r   7  sP         / / // / /$H/ H/ H/ H/ H/r4   r   c                       e Zd Zd ZdS )TestIRPedanticChecksc                 z   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                   | 	                    t          j
                  5 } |d           d d d            n# 1 swxY w Y   |                     t          |j                  d           d d d            d S # 1 swxY w Y   d S )NF)mutates_CFGanalysis_onlyc                       e Zd ZdZd Zd ZdS )KTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.RemoveVarInScope_remove_var_in_scopec                 .    t          j        |            d S r>   r
   __init__)r*   s    r.   r,  zTTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.RemoveVarInScope.__init__      %d+++++r4   c                     |j         }|j                                        D ].}|j        }t	          j        |j        |j                  |_        /dS )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  sU    -">0022 ; ;C"yH "-5\!; !; !;CIItr4   Nr0   r1   r2   _namer,  r4  r3   r4   r.   RemoveVarInScoper(    s7        *E, , ,
    r4   r7  c                       e Zd ZdZd Zd ZdS )CTestIRPedanticChecks.test_var_in_scope_assumption.<locals>.FailPass_failc                 .    t          j        |            d S 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33r4   Nr5  r3   r4   r.   FailPassr9    s7        E, , ,4 4 4 4 4r4   r@  c                       e Zd Z fdZdS )ETestIRPedanticChecks.test_var_in_scope_assumption.<locals>.MyCompilerc                 J   t          d          }|                    t          d           |                    t          d           |                    d           |                    t          d           |                    d           |                                 |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  s     ..-/CDDDL/:::,.DEEENE222Hg...tr4   N)r0   r1   r2   rH  )r@  r7  s   r.   
MyCompilerrB    s3               r4   rI  )pipeline_classc                 (    d}d}||k     rd}nd}||fS )Nr   r   r   r3   )r   r7   r8   s      r.   dummyz@TestIRPedanticChecks.test_var_in_scope_assumption.<locals>.dummy  s,     AA1uu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 
	4 
	4| 
	4 
	4 
?	>
	4		 		 		 		 		 		 		 		 		 		 		 
Z	(	(	(		 		 
)	(		 $&& 
	 
	!'6+FGGG""6#BCC va               F$%%3  
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s6   ?D0C0$D00C4	4D07C4	8+D00D47D4N)r0   r1   r2   rW  r3   r4   r.   r#  r#    s(        D D D D 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     sR    " " " " " "            # # # # # # # #                      
             = = = = =X = = =>' ' ' ' 'H% ' ' '$! ! ! ! ! ! ! !DD2 D2 D2 D2 D2- D2 D2 D2P m/ m/ m/ m/ m/m m/ m/ m/`E E E E E8 E E EP zHMOOOOO r4   