Ë
    èÿæiO  ã                   ó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          úh/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_ir.pyÚtest_IRScopezTestIR.test_IRScope   sÈ  € ØˆÜ�h‰h˜d¬¯©¸ÀqÔ(IÔJˆÜ—‘ ¬¯©¸ÈÔ)JÔKˆà—‘˜W¬"¯&©&¸(ÈÔ*K�ÓLˆØ�‰�e—i‘i Ó(¨%Ô0Ø×Ñœ˜UŸ_™_Ó-¨qÔ1à—‘˜H¬"¯&©&¸(ÈÔ*K�ÓLˆØ×Ñœ˜UŸ_™_Ó-¨qÔ1Ø×Ñœ˜SŸ]™]Ó+¨QÔ/Ø�‰�c—g‘g˜hÓ'¨Ô0Ø�‰�e—i‘i Ó)¨6Ô2à—l‘l 8´·±ÀØ=>ô2@�ló Aˆà�‰�c—g‘g˜hÓ'¨Ô0Ø×Ñ˜Ÿ™ 8Ó,°&¨jÔ9Ø�‰�e—i‘i Ó)¨;Ô7ð	=Ø�L‰L˜¤r§v¡v°xÀaÔ'HˆLÔIð �I‰IÐ'¬"×*;Ñ*;Ñ;Õ<øô × Ñ ò 	Ùð	ú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dd„Zy)ÚCheckEqualityNÚaÚbÚcÚdÚeÚmockr   r   r   r   c                 ó€   — |€g }|€g }|D ]  }| j                  ||k(  «       Œ |D ]  }| j                  ||k7  «       Œ y ©N)Ú
assertTrue)r*   ÚbaseÚsameÚ	differentÚsr:   s         r.   ÚcheckzCheckEquality.checkC   sK   € Øˆ<ØˆDØÐØˆIÛˆAØ�O‰O˜D A™IÕ&ð ãˆAØ�O‰O˜D A™IÕ&ñ r4   )NN)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»   „ àˆB�F‰F�4˜˜bŸn™nÓ-€EØˆB�F‰F�4˜˜bŸn™nÓ-€EØˆB�F‰F�4˜˜bŸn™nÓ-€EØˆB�F‰F�4˜˜bŸn™nÓ-€EØˆB�F‰F�4˜˜bŸn™nÓ-€EØˆ2�6‰6�&˜!˜QÓ€DØˆ2�6‰6�&˜!˜QÓ€DØˆ2�6‰6�&˜!˜QÓ€Dô'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_locR   s²   € Ü�F‰F�6˜1˜aÓ ˆÜ�F‰F�6˜1˜aÓ ˆÜ�F‰F�6˜1˜aÓ ˆÜ�F‰F�6˜1˜aÓ ˆÜ�F‰F�6˜1˜aÓ ˆØ�
‰
�1˜A˜4¨A¨q°!¨9ˆ
Ô5ä�F‰F�6˜1˜a°Ô7ˆÜ�F‰F�6˜1˜a°Ô6ˆØ�
‰
�1˜A˜q˜6ˆ
Õ"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_scope^   sá   € Ü—(‘(˜4 §¡Ó+ˆÜ—(‘(˜4 §¡Ó+ˆÜ—(‘(˜4 §¡Ó+ˆØ�
‰
�7 '¨7Ð!4ˆ
Ô5ä�H‰H�W˜dŸi™iÓ(ˆÜ�H‰H�W˜dŸi™iÓ(ˆÜ�H‰H�W˜dŸi™iÓ(ˆÜ�H‰H�W˜dŸi™iÓ(ˆØ�
‰
�1˜A˜q !˜9ˆ
Ô%ô �H‰H�W˜dŸi™iÓ(ˆØ�
‰
�1˜A˜4ˆ
Õ r4   N)r0   r1   r2   Ú__doc__rZ   r`   r3   r4   r.   rP   rP   N   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_terminatort   s*   € ä�]‰]‹_ˆÜ�]‰]‹_ˆØ�
‰
�2˜R˜Dˆ
Õ!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_jumpz   sj   € Ü�G‰G�A�t—y‘yÓ!ˆÜ�G‰G�A�t—y‘yÓ!ˆÜ�G‰G�A�t—y‘yÓ!ˆÜ�G‰G�A�t—y‘yÓ!ˆØ�
‰
�1˜A˜q˜6¨a¨Sˆ
Õ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   € Ü�I‰I�d—j‘j $§)¡)Ó,ˆÜ�I‰I�d—j‘j $§)¡)Ó,ˆÜ�I‰I�d—j‘j $§)¡)Ó,ˆÜ�I‰I�d—j‘j $§)¡)Ó,ˆØ�
‰
�1˜A˜q˜6¨a¨Sˆ
Õ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   € Ü�H‰H�T—Z‘Z §¡Ó+ˆÜ�H‰H�T—Z‘Z §¡Ó+ˆÜ�H‰H�T—Z‘Z §¡Ó+ˆÜ�H‰H�T—Z‘Z §¡Ó+ˆØ�
‰
�1˜A˜q˜6¨a¨Sˆ
Õ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Š   € Ü�N‰Nœ>¨4°·±Ó;ˆÜ�N‰Nœ>¨4°·±Ó;ˆÜ�N‰Nœ>¨4°·±Ó;ˆÜ�N‰Nœ>¨8°T·Y±YÓ?ˆÜ�N‰Nœ<¨¨t¯y©yÓ9ˆØ�
‰
�1˜A˜q˜6¨a°¨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Æ   € Ü�I‰I�d—j‘j ! Q¨¯	©	Ó2ˆÜ�I‰I�d—j‘j ! Q¨¯	©	Ó2ˆÜ�I‰I�d—j‘j ! Q¨¯	©	Ó2ˆÜ�I‰I�d—j‘j ! Q¨¯	©	Ó2ˆÜ�I‰I�d—j‘j ! Q¨¯	©	Ó2ˆÜ�I‰I�d—j‘j ! Q¨¯	©	Ó2ˆØ�
‰
�1˜A˜q˜6¨a°°A¨Yˆ
Õ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   € Ü�G‰G�I˜tŸy™yÓ)ˆÜ�G‰G�I˜tŸy™yÓ)ˆÜ�G‰G�I˜tŸy™yÓ)ˆÜ�G‰G�O T§Y¡YÓ/ˆØ�
‰
�1˜A˜q˜6¨a¨Sˆ
Õ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ö   € Ü�J‰J�t—z‘z 4§:¡:¨t¯z©z¸4¿9¹9ÓEˆÜ�J‰J�t—z‘z 4§:¡:¨t¯z©z¸4¿9¹9ÓEˆÜ�J‰J�t—z‘z 4§:¡:¨t¯z©z¸4¿9¹9ÓEˆÜ�J‰J�t—z‘z 4§:¡:¨t¯z©z¸4¿9¹9ÓEˆÜ�J‰J�t—z‘z 4§:¡:¨t¯z©z¸4¿9¹9ÓEˆÜ�J‰J�t—z‘z 4§:¡:¨t¯z©z¸4¿9¹9ÓEˆØ�
‰
�1˜A˜q˜6¨a°°A¨Yˆ
Õ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  € Ü×Ñ˜TŸZ™Z¨¨D¯J©J¸¿
¹
ÀDÇIÁIÓNˆÜ×Ñ˜TŸZ™Z¨¨D¯J©J¸¿
¹
ÀDÇIÁIÓNˆÜ×Ñ˜TŸZ™Z¨¨D¯J©J¸¿
¹
ÀDÇIÁIÓNˆÜ×Ñ˜TŸZ™Z¨¨D¯J©J¸¿
¹
ÀDÇIÁIÓNˆÜ×Ñ˜TŸZ™Z¨¨D¯J©J¸¿
¹
ÀDÇIÁIÓNˆÜ×Ñ˜TŸZ™Z¨¨D¯J©J¸¿
¹
ÀDÇIÁIÓNˆÜ×Ñ˜TŸZ™Z¨¨D¯J©J¸¿
¹
ÀDÇIÁIÓNˆØ�
‰
�1˜A˜q˜6¨a°°A°q¨\ˆ
Õ: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²   € Ü�J‰J�t—z‘z 4§:¡:¨t¯y©yÓ9ˆÜ�J‰J�t—z‘z 4§:¡:¨t¯y©yÓ9ˆÜ�J‰J�t—z‘z 4§:¡:¨t¯y©yÓ9ˆÜ�J‰J�t—z‘z 4§:¡:¨t¯y©yÓ9ˆÜ�J‰J�t—z‘z 4§:¡:¨t¯y©yÓ9ˆØ�
‰
�1˜A˜q˜6¨a°¨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Š   € Ü�F‰F�4—:‘:—?‘? D§I¡IÓ.ˆÜ�F‰F�4—:‘:—?‘? D§I¡IÓ.ˆÜ�F‰F�4—:‘:—?‘? D§I¡IÓ.ˆÜ�F‰F�4—:‘:—?‘? D§I¡IÓ.ˆØ�
‰
�1˜A˜q˜6¨a¨Sˆ
Õ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Þ   € Ü�J‰J�t—z‘z 5¨$¯*©*°d·i±iÓ@ˆÜ�J‰J�t—z‘z 5¨$¯*©*°d·i±iÓ@ˆÜ�J‰J�t—z‘z 5¨$¯*©*°d·i±iÓ@ˆÜ�J‰J�t—z‘z 5¨$¯*©*°d·i±iÓ@ˆÜ�J‰J�t—z‘z 5¨$¯*©*°d·i±iÓ@ˆÜ�J‰J�t—z‘z 5¨$¯*©*°d·i±iÓ@ˆØ�
‰
�1˜A˜q˜6¨a°°A¨Yˆ
Õ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ž   € Ü�J‰J�t—z‘z 5¨$¯)©)Ó4ˆÜ�J‰J�t—z‘z 5¨$¯)©)Ó4ˆÜ�J‰J�t—z‘z 5¨$¯)©)Ó4ˆÜ�J‰J�t—z‘z 5¨$¯)©)Ó4ˆÜ�J‰J�t—z‘z 5¨$¯)©)Ó4ˆØ�
‰
�1˜A˜q˜6¨a°¨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²   € Ü�I‰I�d—j‘j $§*¡*¨d¯i©iÓ8ˆÜ�I‰I�d—j‘j $§*¡*¨d¯i©iÓ8ˆÜ�I‰I�d—j‘j $§*¡*¨d¯i©iÓ8ˆÜ�I‰I�d—j‘j $§*¡*¨d¯i©iÓ8ˆÜ�I‰I�d—j‘j $§*¡*¨d¯i©iÓ8ˆØ�
‰
�1˜A˜q˜6¨a°¨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¼   € Ü�H‰H�d—j‘j�] D§J¡J°·	±	Ó:ˆÜ�H‰H�d—j‘j�] D§J¡J°·	±	Ó:ˆÜ�H‰H�d—j‘j�] D§J¡J°·	±	Ó:ˆÜ�H‰H�d—j‘j�] D§J¡J°·	±	Ó:ˆÜ�H‰H�d—j‘j�] D§J¡J°·	±	Ó:ˆØ�
‰
�1˜A˜q˜6¨a°¨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ö   € Ü�K‰K˜Ÿ
™
 D§J¡J°·
±
¸D¿I¹IÓFˆÜ�K‰K˜Ÿ
™
 D§J¡J°·
±
¸D¿I¹IÓFˆÜ�K‰K˜Ÿ
™
 D§J¡J°·
±
¸D¿I¹IÓFˆÜ�K‰K˜Ÿ
™
 D§J¡J°·
±
¸D¿I¹IÓFˆÜ�K‰K˜Ÿ
™
 D§J¡J°·
±
¸D¿I¹IÓFˆÜ�K‰K˜Ÿ
™
 D§J¡J°·
±
¸D¿I¹IÓFˆØ�
‰
�1˜A˜q˜6¨a°°A¨Yˆ
Õ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ž   € Ü�H‰H�T—Z‘Z §¡¨AÓ.ˆÜ�H‰H�T—Z‘Z §¡¨AÓ.ˆÜ�H‰H�T—Z‘Z §¡¨AÓ.ˆÜ�H‰H�T—Z‘Z §¡¨AÓ.ˆÜ�H‰H�T—Z‘Z §¡¨AÓ.ˆØ�
‰
�1˜A˜q˜6¨a°¨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Æ   € Ü�L‰L˜Ÿ™ Q¨¨4¯9©9Ó5ˆÜ�L‰L˜Ÿ™ Q¨¨4¯9©9Ó5ˆÜ�L‰L˜Ÿ™ Q¨¨4¯9©9Ó5ˆÜ�L‰L˜Ÿ™ Q¨¨4¯9©9Ó5ˆÜ�L‰L˜Ÿ™ Q¨¨4¯9©9Ó5ˆÜ�L‰L˜Ÿ™ Q¨¨4¯9©9Ó5ˆØ�
‰
�1˜A˜q˜6¨a°°A¨Yˆ
Õ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Š   € Ü�F‰F�5˜!˜TŸY™YÓ'ˆÜ�F‰F�5˜!˜TŸY™YÓ'ˆÜ�F‰F�5˜!˜TŸY™YÓ'ˆÜ�F‰F�5˜!˜TŸY™YÓ'ˆÜ�F‰F�5˜!˜TŸY™YÓ'ˆØ�
‰
�1˜A˜q˜6¨a°¨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   € Ü�H‰H�Q˜Ÿ	™	Ó"ˆÜ�H‰H�Q˜Ÿ	™	Ó"ˆÜ�H‰H�Q˜Ÿ	™	Ó"ˆÜ�H‰H�Q˜Ÿ	™	Ó"ˆØ�
‰
�1˜A˜q˜6¨a¨Sˆ
Õ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Š   € Ü�I‰I�e˜Q §	¡	Ó*ˆÜ�I‰I�e˜Q §	¡	Ó*ˆÜ�I‰I�e˜Q §	¡	Ó*ˆÜ�I‰I�e˜Q §	¡	Ó*ˆÜ�I‰I�e˜Q §	¡	Ó*ˆØ�
‰
�1˜A˜q˜6¨a°¨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™   € Ü�F‰F�4˜ §	¡	Ó*ˆÜ�F‰F�4˜ §	¡	Ó*ˆÜ�F‰F�4˜ §	¡	Ó*ˆÜ�F‰F”2—8‘8˜D¤"§.¡.Ó1°5¸$¿)¹)ÓDˆÜ�F‰F�4˜ §	¡	Ó*ˆØ�
‰
�1˜A˜q !˜9°°ˆ
Õ4r4   c                 ó|   — t        j                  «       }t        j                  «       }| j                  ||g¬«       y r\   )r   ÚUndefinedTyperD   )r*   r7   r8   s      r.   Útest_undefinedtypezTestIRNodes.test_undefinedtype#  s0   € Ü×ÑÓˆÜ×ÑÓˆØ�
‰
�1˜A˜3ˆ
Õ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   € Ü�G‰G�A�q‹MˆÜ�G‰G�A�q‹MˆÜ�G‰G�A�q‹MˆÜ�G‰G�A�q‹MˆØ�
‰
�1˜A˜3¨1¨a¨&ˆ
Õ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   p   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¥   € Ü�I‰I‹KˆØ	�‰�—‘˜UÔ#Ø	�‰�—‘˜UÔ#ä�I‰I‹KˆØ	�‰�—‘˜UÔ#Ø	�‰�—‘˜UÔ#ä�I‰I‹KˆØ	�‰�—‘˜UÔ#Ø	�‰�—‘˜UÔ#à�
‰
�1˜A˜3¨1¨#ˆ
Õ.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_blockO  s®   ø€ Ü—X‘X˜d D§I¡IÓ.ˆFÜ—(‘(˜6 4§9¡9Ó-ˆCÜ—i‘i §
¡
¨D¯J©J¸¿	¹	ÓBˆGÜ—i‘i §
¡
¨D¯J©J¸¿	¹	ÓBˆGÜ—i‘i §
¡
¨D¯J©J¸¿	¹	ÓBˆGØ�J‰J�wÔØ�J‰J�wÔØ�J‰J�wÔØˆJr4   rT   )rÉ   r   rœ   rG   rH   rN   rD   )r*   rÎ   r7   r8   r9   s   `    r.   Ú
test_blockzTestIRCompounds.test_blockN  sY   ø€ ô		ñ ‹KˆÙ‹KˆÙ‹K×ÑœrŸy™y¨¯©°T·Z±ZÀÇÁÓKÓLˆà�
‰
�1˜A˜3¨1¨#ˆ
Õ.r4   c                 óL  — d„ }d„ } |«       } |«       } ||«      } ||«      }| j                  |j                  |«      «       d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_frontendb  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>.foom  s…  ø€ Ø˜‘E�Ø�X‘�Ü—H‘H˜Q¤b§l¡lÔ3�Ø˜‘E�Ø˜‘F�Ü—6‘6˜!“9˜q“=Ø˜A™�AÜŸ	™	 ! Q¨¡UÓ+�AÜ �Ü˜a œ÷ #äŸ™  A¡›�AÜ—v‘v˜a ™d“| aÒ'Ø˜Ü!& q¦˜AØ ™F˜AÜ!Ÿv™v a›y¨1›}Ù %ð "*ð ˜Q˜q™T™	˜Ø˜A™�AØ�AÜ"¤3 q£6ž]˜ØŸ™  1¡œØ˜uš9Ü!(¨6°\Ö!BØ$' Ø$% ÷ "Cð  ! 3šwØ ! Q¡ Ø˜Q˜q™T¤G™^Ñ+™ð +ð ˜1‘u˜q‘y 1‘} qÑ(¨1Ñ,¨qÑ0Ð0÷- #˜ú÷ "CÐ!Bús   Á<E=ÅF	Å=FÆ	F	)é   rØ   Nr3   )r”   rñ   s    @r.   Úgenz,TestIRCompounds.test_functionir.<locals>.genj  s   ø€ ØˆHõ1ðB ˆJr4   c                 ó’   — |€g }| 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—  sX   € ØÐ"Ø �Ø×%Ñ%Ó'ˆEÛ#�Û�AØ—|‘| DÕ)Ø 1š9Ù!ð ô
 )Ð)=ÀÑ)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 + cr>   )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Ó+Ô,ó
	Fð 	�‰Ð3°T·]±]À4Ó5HÔIô œd 4§;¡;×#3Ñ#3Ó#5Ó6Ö7ˆEØ—+‘+˜eÑ$ˆCÜ˜#Ÿ(™( 2™,¬¯	©	Õ2Ø—h‘h˜r‘l�Ø*-¯+©+°s·z±zÐ'�”
˜CœKÙð 8ñ 	�d—m‘m DÓ)¨H¨:Ô6á‹EˆØ×Ñ˜Ÿ™ tÓ,Ô-á˜A‹ˆä“Uˆ
Üœd 4§;¡;×#3Ñ#3Ó#5Ó6Ö7ˆEØ—+‘+˜eÑ$ˆCØ—(‘(˜3˜B�-ˆCØˆCÜœ3˜s›8 a™<Ö(�ä˜s 1™v¤r§v¡vÕ.Ü" 3 q¨1¡u¡:¬r¯v©vÕ6Ø�CÙð )ð ‰Ø—H‘H�Ø—‘œs 1 S¨1¡W¡:›Ô/Ø—‘œs 1 S¡6›{Ô+Ø%& s¨Q¡w¡Z°°3±Ð"��#‘˜˜# ™'™
Ùð 8ð$ 	�‰˜
Ô#à×Ñ˜Ÿ™ tÓ,Ô-Ø×Ñœ˜Z›¨!Ô,ÛˆDØ�O‰O˜DŸO™O¨FÓ3Õ4ð á�d—m‘m DÓ)¨:Ô6ò	ò	ò	ñ ˜cÓ"ˆÙ˜cÓ"ˆØ�‰˜Ÿ™¨Ó/Ô0Ø�‰Ð3°V·_±_ÀVÓ5LÔMá˜cÓ"ˆØ×Ñ˜Ÿ™¨Ó0Ô1Ø�o‰o˜fÓ%ˆØ�‰Ð<¸cÔBÙ�c˜G WÐ-Õ.r4   N)r0   r1   r2   ra   rÅ   rÏ   r!  r3   r4   r.   rÂ   rÂ   ;  s   „ ñò/ò/ó$J/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Ö2�CØ"Ÿy™y�Hä "§¡°·±Ø-5¯\©\ô!;�C•Ið 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Ø—‘œN¨EÔ2Ø—‘˜H gÔ.Ø—‘”Ø�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Ø�1ŠuØ�ð �a�4ˆKð �Ø�a�4ˆKr4   Ú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ÔCÀvÙ�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2ðP €ôo/�mô o/ôdE˜8ô EðP ˆzÒØ€H‡M�M…Oð r4   