§
    ƒÛgü<  ã                   ó2  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
 d dlmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ d d	lmZmZmZ  e¦   «         Zd
e_          e¦   «         Z!d
e!_"         e¦   «         Z# G d„ de$¦  «        Z% G d„ de%¦  «        Z& G d„ de$¦  «        Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z- G d„ de.¦  «        Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5 G d„ d e¦  «        Z6 G d!„ d"ee¦  «        Z7e8d#k    r ej9        ¦   «          dS dS )$é    N)Ú	takewhile)ÚnjitÚjit)ÚCFGraphÚLoop)Úcompile_extraÚcompile_isolatedÚFlagsÚCompilerBaseÚDefaultPassBuilder)Ú
PreserveIR)ÚIRLegalization)ÚtypesÚir)ÚTestCaseÚoverride_configÚSerialMixinTc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú_Dummyc                 óL   — || _         || _        |                     | ¦  «         d S ©N)ÚrecorderÚnameÚ
_add_dummy)Úselfr   r   s      úS/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_obj_lifetime.pyÚ__init__z_Dummy.__init__   s*   € Ø ˆŒØˆŒ	Ø×Ò˜DÑ!Ô!Ð!Ð!Ð!ó    c                 óx   — t          |t          ¦  «        sJ ‚t          | j        | j        ›d|j        ›�¦  «        S )Nz + )Ú
isinstancer   r   r   )r   Úothers     r   Ú__add__z_Dummy.__add__"   s9   € Ý˜%¥Ñ(Ô(Ð(Ð(Ð(Ý�d”m°$´)°)°)¸U¼Z¸ZÐ%HÑIÔIÐIr   c                 ó<   — t          | j        d| j        z  ¦  «        S )Nziter(%s))Ú_DummyIteratorr   r   ©r   s    r   Ú__iter__z_Dummy.__iter__&   s   € Ý˜dœm¨Z¸$¼)Ñ-CÑDÔDÐDr   N)Ú__name__Ú
__module__Ú__qualname__r   r"   r&   © r   r   r   r      sI   € € € € € ð"ð "ð "ð
Jð Jð JðEð Eð Eð Eð Er   r   c                   ó   — e Zd ZdZd„ ZeZdS )r$   r   c                 óŽ   — | j         dk    rt          ‚| xj         dz  c_         t          | j        | j        ›d| j         ›�¦  «        S )Né   é   ú#)ÚcountÚStopIterationr   r   r   r%   s    r   Ú__next__z_DummyIterator.__next__.   sC   € ØŒ:˜Š?ˆ?ÝÐØˆ
Œ
�a‰ˆ
Œ
Ý�d”m°´	°	°	¸4¼:¸:Ð%FÑGÔGÐGr   N)r'   r(   r)   r0   r2   Únextr*   r   r   r$   r$   *   s,   € € € € € à€EðHð Hð Hð €D€D€Dr   r$   c                   ó`   — e Zd ZdZd„ Zd„ Zd„ ZeZd„ Zd„ Z	e
d„ ¦   «         Ze
d„ ¦   «         Zd	S )
ÚRefRecorderz˜
    An object which records events when instances created through it
    are deleted.  Custom events can also be recorded to aid in
    diagnosis.
    c                 ó^   — t          j        t          ¦  «        | _        g | _        i | _        d S r   )ÚcollectionsÚdefaultdictÚintÚ_countsÚ_eventsÚ_wrsr%   s    r   r   zRefRecorder.__init__>   s&   € Ý"Ô.­sÑ3Ô3ˆŒØˆŒØˆŒ	ˆ	ˆ	r   c                 ó"   — t          | |¦  «        S )zK
        Make an object whose deletion will be recorded as *name*.
        )r   )r   r   s     r   Ú
make_dummyzRefRecorder.make_dummyC   s   € õ �d˜DÑ!Ô!Ð!r   c                 óX   — t          j        || j        ¦  «        }|j        | j        |<   d S r   )ÚweakrefÚrefÚ_on_disposalr   r<   )r   ÚdummyÚwrs      r   r   zRefRecorder._add_dummyI   s'   € ÝŒ[˜ Ô 1Ñ2Ô2ˆØœ
ˆŒ	�"‰ˆˆr   c                 ó–   — | j         |         dz   }|| j         |<   | j                             |                     |¬¦  «        ¦  «         dS )zr
        Manually append *event* to the recorded events.
        *event* can be formatted using format().
        r.   )r0   N)r:   r;   ÚappendÚformat)r   Úeventr0   s      r   ÚmarkzRefRecorder.markO   sK   € ð
 ”˜UÔ# aÑ'ˆØ#ˆŒ�UÑØŒ×Ò˜EŸLšL¨u˜LÑ5Ô5Ñ6Ô6Ð6Ð6Ð6r   c                 ón   — | j                              |¦  «        }| j                             |¦  «         d S r   )r<   Úpopr;   rF   )r   rD   r   s      r   rB   zRefRecorder._on_disposalX   s1   € ØŒy�}Š}˜RÑ Ô ˆØŒ×Ò˜DÑ!Ô!Ð!Ð!Ð!r   c                 ó$   — d„ | j         D ¦   «         S )zC
        A list of objects which haven't been deleted yet.
        c                 ó"   — g | ]} |¦   «         ‘ŒS r*   r*   )Ú.0rD   s     r   ú
<listcomp>z%RefRecorder.alive.<locals>.<listcomp>a   s   € Ð)Ð)Ð)˜��‘”Ð)Ð)Ð)r   )r<   r%   s    r   ÚalivezRefRecorder.alive\   s   € ð
 *Ð)˜tœyÐ)Ñ)Ô)Ð)r   c                 ó   — | j         S )z,
        A list of recorded events.
        )r;   r%   s    r   ÚrecordedzRefRecorder.recordedc   s   € ð
 Œ|Ðr   N)r'   r(   r)   Ú__doc__r   r>   r   Ú__call__rI   rB   ÚpropertyrP   rR   r*   r   r   r5   r5   7   s¦   € € € € € ðð ðð ð ð
"ð "ð "ð#ð #ð #ð €Hð7ð 7ð 7ð"ð "ð "ð ð*ð *ñ „Xð*ð ðð ñ „Xðð ð r   r5   c                 ó°   —  | d¦  «        } | d¦  «        } | d¦  «        }||z   }|                       d¦  «         ||z   }|                       d¦  «         |S )NÚaÚbÚcú--1--ú--2--©rI   )ÚrecrW   rX   rY   Úds        r   Úsimple_usecase1r_   k   sd   € ØˆˆC‰Œ€AØˆˆC‰Œ€AØˆˆC‰Œ€AØ	ˆA‰€AØ‡H‚HˆWÑÔÐØ	ˆA‰€AØ‡H‚HˆWÑÔÐØ€Hr   c                 óh   —  | d¦  «        } | d¦  «        }|                       d¦  «         |}|}d }|S )NrW   rX   rZ   r\   )r]   rW   rX   ÚxÚys        r   Úsimple_usecase2rc   u   sB   € ØˆˆC‰Œ€AØˆˆC‰Œ€AØ‡H‚HˆWÑÔÐØ	€AØ	€AØ€AØ€Hr   c                 ó¾   —  | d¦  «        } | d¦  «        } | d¦  «        }|}|D ]}||z   }|                       d¦  «         Œ|                       d¦  «         ||z   }|S )NrW   rX   rY   ú--loop bottom--ú--loop exit--r\   )r]   rW   rX   rY   ra   rb   s         r   Úlooping_usecase1rg   ~   s|   € ØˆˆC‰Œ€AØˆˆC‰Œ€AØˆˆC‰Œ€AØ	€AØð $ð $ˆØ�‰EˆØ�ŠÐ"Ñ#Ô#Ð#Ð#Ø‡H‚Hˆ_ÑÔÐØ	ˆA‰€AØ€Hr   c                 óÞ  —  | d¦  «        } | d¦  «        } | d¦  «        }|D ]ž}|                       d¦  «         ||z   }||z   }|                       d¦  «         |D ]1}|                       d¦  «         ||z   }|                       d¦  «         Œ2|                       d¦  «         |r||z   }n n+|                       d	¦  «         ŒŸ|                       d
¦  «         |                       d¦  «         |S )NrW   rX   Úcumú--outer loop top--z--inner loop entry #{count}--z--inner loop top #{count}--z--inner loop bottom #{count}--z--inner loop exit #{count}--z--outer loop bottom #{count}--ú--outer loop else--ú--outer loop exit--r\   )r]   rW   rX   ri   ra   Úzrb   s          r   Úlooping_usecase2rn   Š   s  € ØˆˆC‰Œ€AØˆˆC‰Œ€AØ
ˆ#ˆe‰*Œ*€CØð (ð (ˆØ�ŠÐ%Ñ&Ô&Ð&Ø�A‰gˆØ�‰EˆØ�ŠÐ0Ñ1Ô1Ð1Øð 	7ð 	7ˆAØ�HŠHÐ2Ñ3Ô3Ð3Ø˜‘'ˆCØ�HŠHÐ5Ñ6Ô6Ð6Ð6Ø�ŠÐ/Ñ0Ô0Ð0Øð 	Ø�a‘%ˆCˆCð ˆEØ�ŠÐ1Ñ2Ô2Ð2Ð2à�ŠÐ&Ñ'Ô'Ð'Ø‡H‚HÐ"Ñ#Ô#Ð#Ø€Jr   c              #   óF   K  —  | d¦  «        } | d¦  «        }|V — |V — d S ©NrW   rX   r*   ©r]   rW   rX   s      r   Úgenerator_usecase1rr   £   s6   è è € ØˆˆC‰Œ€AØˆˆC‰Œ€AØ
€G€G€GØ
€G€G€G€G€Gr   c              #   óP   K  —  | d¦  «        } | d¦  «        }|D ]}|V — Œ|V — d S rp   r*   )r]   rW   rX   ra   s       r   Úgenerator_usecase2rt   ©   sG   è è € ØˆˆC‰Œ€AØˆˆC‰Œ€AØð ð ˆØˆˆˆˆØ
€G€G€G€G€Gr   c                   ó   — e Zd ZdS )ÚMyErrorN)r'   r(   r)   r*   r   r   rv   rv   ±   s   € € € € € Ø€Dr   rv   c                 ó    — t          | ¦  «        ‚r   ©rv   )ra   s    r   Údo_raisery   ´   s   € Ý
�!‰*Œ*Ðr   c                 ó”   —  | d¦  «        } | d¦  «        } | d¦  «        }|rt          d¦  «          | d¦  «        }||z    ||z    d S )NrW   rX   r^   ÚfoorY   ©ry   )r]   rW   rX   r^   rY   s        r   Úraising_usecase1r}   ·   s_   € ØˆˆC‰Œ€AØˆˆC‰Œ€AØˆˆC‰Œ€AØð Ý�‰ŒˆØˆC�‰HŒHˆØ	ˆA‰ˆØˆ�E€E€E€Er   c                 ót   —  | d¦  «        } | d¦  «        }|r | d¦  «        }t          |¦  «         ||z    d S )NrW   rX   rY   r|   )r]   rW   rX   rY   s       r   Úraising_usecase2r   Á   sI   € ØˆˆC‰Œ€AØˆˆC‰Œ€AØð ØˆC�‰HŒHˆÝ�‰ŒˆØˆ�E€E€E€Er   c                 óT   —  | d¦  «        } | d¦  «        }|rt          |¦  «        ‚d S rp   rx   rq   s      r   Úraising_usecase3r�   É   s:   € ØˆˆC‰Œ€AØˆˆC‰Œ€AØð Ý�a‰jŒjÐðð r   c                 ó�  — d}t          |¦  «        D ]ž}|                      t          |¦  «        ¦  «         d}t          |¦  «        D ]}  dS |dk     rŒB|dk    r,t          |¦  «        D ]}|c c S |                      d¦  «         |                      d¦  «         |                      d¦  «         ŒŸ|                      d¦  «         dS )zN
    This test reveal a bug that there is a del on uninitialized variable
    é   r   é   ÚFAILEDÚOKéÿÿÿÿ)ÚrangerI   Ústr)r]   ÚnÚiÚjs       r   Údel_before_definitionr�   Ð   sÝ   € ð 	
€AÝ�1‰XŒXð ð ˆØ�Š•�Q‘”ÑÔÐØˆÝ�q‘”ð 		ð 		ˆAØ�1�1�1à�1ŠuˆuØØ�a’�Ý˜q™œð ð �AØ�H�H�H�H�HØ—’˜Ñ"Ô"Ð"Ø�HŠH�XÑÔÐØ�Š�ÑÔÐÐØ‡H‚HˆT�N„N€NØˆ2r   c              #   ó‚   K  — 	 |                       d¦  «         dV —  | d¦  «        }|r|                       d¦  «         	 Œ=)z^
    test to reveal bug of invalid liveness when infinite loop has multiple
    backedge.
    TÚyieldNÚpÚbrar\   )r]   r�   s     r   Úinf_loop_multiple_back_edger’   ç   sR   è è € ð
Ø�Š�ÑÔÐØˆˆˆØˆC�‰HŒHˆØð 	Ø�HŠH�U‰OŒOˆOØðr   c                   ón   — e Zd ZdZd„ Zd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 )ÚTestObjLifetimezH
    Test lifetime of Python objects inside jit-compiled functions.
    c                 óR   —  t          t          j        fdd¬¦  «        |¦  «        }|S )NTF)ÚforceobjÚlooplift)r   r   Úpyobject)r   ÚpyfuncÚcfuncs      r   ÚcompilezTestObjLifetime.compileú   s-   € ð F••U”^Ð%°¸uÐEÑEÔEÀfÑMÔMˆØˆr   Nc                 óØ   — t          ¦   «         }|                      |¦  «        }|�9|                      |¦  «        5   ||¦  «         d d d ¦  «         n# 1 swxY w Y   n ||¦  «         |S r   )r5   r›   ÚassertRaises)r   r™   Úraisesr]   rš   s        r   Úcompile_and_recordz"TestObjLifetime.compile_and_record   s­   € Ý‰mŒmˆØ—’˜VÑ$Ô$ˆØÐØ×"Ò" 6Ñ*Ô*ð ð Ø��c‘
”
�
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð ˆE�#‰JŒJˆJØˆ
s   »AÁAÁAc                 óÐ   — g }|j         }t          |¦  «        }|D ]0}||v r*|                     |¦  «         |                     |¦  «         Œ1|                      ||d|›�¦  «         dS )zk
        Check that the *expected* markers occur in that order in *rec*'s
        recorded events.
        z%the full list of recorded events is: N)rR   ÚlistrF   ÚremoveÚassertEqual)r   r]   ÚexpectedÚactualrR   Ú	remainingr^   s          r   ÚassertRecordOrderz!TestObjLifetime.assertRecordOrder
  s�   € ð
 ˆØ”<ˆÝ˜‘N”Nˆ	àð 	$ð 	$ˆAØ�Iˆ~ˆ~Ø—’˜aÑ Ô Ð à× Ò  Ñ#Ô#Ð#øØ×Ò˜  ØFNÀhÐPñ	Rô 	Rð 	Rð 	Rð 	Rr   c                 óþ   — |                       t          ¦  «        }|                      |j        ¦  «         |                      |g d¢¦  «         |                      |g d¢¦  «         |                      |g d¢¦  «         d S )N)rW   rX   rZ   )rW   rY   rZ   )rZ   zb + cr[   )rŸ   r_   ÚassertFalserP   r§   ©r   r]   s     r   Útest_simple1zTestObjLifetime.test_simple1  sˆ   € Ø×%Ò%¥oÑ6Ô6ˆØ×Ò˜œÑ#Ô#Ð#Ø×Ò˜sÐ$7Ð$7Ð$7Ñ8Ô8Ð8Ø×Ò˜sÐ$7Ð$7Ð$7Ñ8Ô8Ð8Ø×Ò˜sÐ$?Ð$?Ð$?Ñ@Ô@Ð@Ð@Ð@r   c                 óž   — |                       t          ¦  «        }|                      |j        ¦  «         |                      |g d¢¦  «         d S )N)rX   rZ   rW   )rŸ   rc   r©   rP   r§   rª   s     r   Útest_simple2zTestObjLifetime.test_simple2"  sN   € Ø×%Ò%¥oÑ6Ô6ˆØ×Ò˜œÑ#Ô#Ð#Ø×Ò˜sÐ$7Ð$7Ð$7Ñ8Ô8Ð8Ð8Ð8r   c                 óÎ   — |                       t          ¦  «        }|                      |j        ¦  «         |                      |g d¢¦  «         |                      |g d¢¦  «         d S )N)rW   rX   rf   rY   )ú	iter(a)#1re   ú	iter(a)#2re   ú	iter(a)#3re   úiter(a)rf   )rŸ   rg   r©   rP   r§   rª   s     r   Útest_looping1zTestObjLifetime.test_looping1'  s|   € Ø×%Ò%Õ&6Ñ7Ô7ˆØ×Ò˜œÑ#Ô#Ð#à×Ò˜sÐ$DÐ$DÐ$DÑEÔEÐEà×Ò˜sð %'ð %'ð %'ñ 	(ô 	(ð 	(ð 	(ð 	(r   c                 ó^  — |                       t          ¦  «        }|                      |j        ¦  «         |                      |ddg¦  «         |                      |g d¢¦  «         |                      |g d¢¦  «         |                      |g d¢¦  «         |                      |ddg¦  «         d S )NrW   rj   )r²   rk   rl   )úiter(b)z--inner loop exit #1--rµ   z--inner loop exit #2--rµ   z--inner loop exit #3--)r¯   z--inner loop entry #1--r°   z--inner loop entry #2--r±   z--inner loop entry #3--ziter(a)#1 + iter(a)#1z--outer loop bottom #1--)rŸ   rn   r©   rP   r§   rª   s     r   Útest_looping2zTestObjLifetime.test_looping23  sö   € Ø×%Ò%Õ&6Ñ7Ô7ˆØ×Ò˜œÑ#Ô#Ð#à×Ò˜s SÐ*>Ð$?Ñ@Ô@Ð@à×Ò˜sð %<ð %<ð %<ñ 	=ô 	=ð 	=à×Ò˜sð %'ð %'ð %'ñ 	(ô 	(ð 	(ð
 	×Ò˜sð %'ð %'ð %'ñ 	(ô 	(ð 	(ð
 	×Ò˜sÐ%<Ø%?ð%'ñ 	(ô 	(ð 	(ð 	(ð 	(r   c                 ó„  — |                       |¦  «        }t          ¦   «         }|                      |¦  «        5   ||¦  «        }t          |¦  «         |                      |j        ¦  «         t          |¦  «         |                      |j        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          ¦   «         }|                      |¦  «        5   ||¦  «        }~t          j	        ¦   «          |                      |j        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          ¦   «         }|                      |¦  «        5   ||¦  «        }t          |¦  «         |                      |j        ¦  «         ~t          j	        ¦   «          |                      |j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r   )
r›   r5   ÚassertRefCountr3   Ú
assertTruerP   r¡   r©   ÚgcÚcollect)r   Úgenfuncrš   r]   Úgens        r   Úexercise_generatorz"TestObjLifetime.exercise_generatorI  sJ  € Ø—’˜WÑ%Ô%ˆå‰mŒmˆØ× Ò  Ñ%Ô%ð 	(ð 	(Ø�%˜‘*”*ˆCÝ�‰IŒIˆIØ�OŠO˜CœIÑ&Ô&Ð&Ý�‰IŒIˆIØ×Ò˜SœYÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ ‰mŒmˆØ× Ò  Ñ%Ô%ð 	(ð 	(Ø�%˜‘*”*ˆCØÝŒJ‰LŒLˆLØ×Ò˜SœYÑ'Ô'Ð'ð		(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ ‰mŒmˆØ× Ò  Ñ%Ô%ð 	(ð 	(Ø�%˜‘*”*ˆCÝ�‰IŒIˆIØ�OŠO˜CœIÑ&Ô&Ð&ØÝŒJ‰LŒLˆLØ×Ò˜SœYÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s7   ¹AB#Â#B'Â*B'Ã:DÄDÄDÅA#F5Æ5F9Æ<F9c                 ó:   — |                       t          ¦  «         d S r   )r¾   rr   r%   s    r   Útest_generator1zTestObjLifetime.test_generator1d  ó   € Ø×ÒÕ 2Ñ3Ô3Ð3Ð3Ð3r   c                 ó:   — |                       t          ¦  «         d S r   )r¾   rt   r%   s    r   Útest_generator2zTestObjLifetime.test_generator2g  rÁ   r   c                 ót   — |                       t          ¦  «        }|                      |j        g d¢¦  «         d S )N)Ú0Ú1Ú2)rŸ   r�   r£   rR   rª   s     r   Útest_del_before_definitionz*TestObjLifetime.test_del_before_definitionj  s8   € Ø×%Ò%Õ&;Ñ<Ô<ˆØ×Ò˜œ   Ñ7Ô7Ð7Ð7Ð7r   c                 óâ   — |                       t          ¦  «        5  |                      t          t          ¬¦  «        }|                      |j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©N)rž   )r¸   ry   rŸ   r}   rv   r©   rP   rª   s     r   Útest_raising1zTestObjLifetime.test_raising1n  ó©   € Ø× Ò ¥Ñ*Ô*ð 	(ð 	(Ø×)Ò)Õ*:Å7Ð)ÑKÔKˆCØ×Ò˜SœYÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ó   ›<A$Á$A(Á+A(c                 óâ   — |                       t          ¦  «        5  |                      t          t          ¬¦  «        }|                      |j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rÊ   )r¸   ry   rŸ   r   rv   r©   rP   rª   s     r   Útest_raising2zTestObjLifetime.test_raising2s  rÌ   rÍ   c                 óâ   — |                       t          ¦  «        5  |                      t          t          ¬¦  «        }|                      |j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rÊ   )r¸   rv   rŸ   r�   r©   rP   rª   s     r   Útest_raising3zTestObjLifetime.test_raising3x  s©   € Ø× Ò ¥Ñ)Ô)ð 	(ð 	(Ø×)Ò)Õ*:Å7Ð)ÑKÔKˆCØ×Ò˜SœYÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(rÍ   c                 ó¼  — |                       t          ¦  «        }t          ¦   «         }t           ||¦  «        ¦  «        }t	          |¦  «         |                      |j        g ¦  «         t	          |¦  «         |                      |j        g ¦  «         t	          |¦  «         |                      |j        g ¦  «         |                      |j        g d¢¦  «         d S )N)r�   r�   r‘   r�   r�   r‘   r�   )r›   r’   r5   Úiterr3   r£   rP   rR   )r   rš   r]   Úiterators       r   Ú test_inf_loop_multiple_back_edgez0TestObjLifetime.test_inf_loop_multiple_back_edge}  sÏ   € Ø—’Õ8Ñ9Ô9ˆÝ‰mŒmˆÝ˜˜˜c™
œ
Ñ#Ô#ˆÝˆX‰ŒˆØ×Ò˜œ BÑ'Ô'Ð'ÝˆX‰ŒˆØ×Ò˜œ BÑ'Ô'Ð'ÝˆX‰ŒˆØ×Ò˜œ BÑ'Ô'Ð'Ø×Ò˜œØLÐLÐLñ	Nô 	Nð 	Nð 	Nð 	Nr   r   )r'   r(   r)   rS   r›   rŸ   r§   r«   r­   r³   r¶   r¾   rÀ   rÃ   rÈ   rË   rÏ   rÑ   rÕ   r*   r   r   r”   r”   õ   s  € € € € € ðð ðð ð ðð ð ð ðRð Rð Rð"Að Að Að9ð 9ð 9ð

(ð 
(ð 
(ð(ð (ð (ð,(ð (ð (ð64ð 4ð 4ð4ð 4ð 4ð8ð 8ð 8ð(ð (ð (ð
(ð (ð (ð
(ð (ð (ð
Nð Nð Nð Nð Nr   r”   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestExtendingVariableLifetimesc                 ó´  ‡ — d„ }ˆ fd„} |d¦  «        }g t           j        fdz  ¢t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘} |||¦  «          |d¦  «        }g t           j        fdz  ¢t           j        ‘t           j        fdz  ¢t           j        ‘} |||¦  «         d S )Nc                 ó  —  G d„ dt           ¦  «        }t          |¬¦  «        d„ ¦   «         }t          d| ¦  «        5   |¦   «          |j        |j        d                  }|j        d         }d d d ¦  «         n# 1 swxY w Y   |S )Nc                   ó   — e Zd Zd„ ZdS )ú`TestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir.<locals>.IRPreservingCompilerc                 ó¢   — t          j        | j        ¦  «        }|                     t          t
          ¦  «         |                     ¦   «          |gS r   ©r   Údefine_nopython_pipelineÚstateÚadd_pass_afterr   r   Úfinalize©r   Úpms     r   Údefine_pipelineszqTestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir.<locals>.IRPreservingCompiler.define_pipelines•  ó>   € Ý+ÔDÀTÄZÑPÔP�BØ×%Ò%¥jµ.ÑAÔAÐAØ—K’K‘M”M�MØ˜4�Kr   N©r'   r(   r)   rä   r*   r   r   ÚIRPreservingCompilerrÛ   “  ó#   € € € € € ð ð  ð  ð  ð  r   rç   )Úpipeline_classc                  ó"   — d} d}| |z   }||z  }|S ©Né
   é   r*   ©rW   rX   rY   r^   s       r   r{   zOTestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir.<locals>.foo›  ó#   € à�Ø�Ø˜‘E�à˜‘E�Ø�r   ÚEXTEND_VARIABLE_LIFETIMESr   Úpreserved_ir)r   r   r   Ú	overloadsÚ
signaturesÚmetadata)Úextend_lifetimesrç   r{   ÚcresÚfunc_irs        r   Úget_irzBTestExtendingVariableLifetimes.test_lifetime_basic.<locals>.get_ir’  sî   € ð ð  ð  ð  ð  ¥|ñ  ô  ð  õ Ð!5Ð6Ñ6Ô6ðð ñ 7Ô6ðõ !Ð!<Ð>NÑOÔOð 8ð 8Ø�‘”�Ø”} S¤^°AÔ%6Ô7�Øœ-¨Ô7�ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð
 ˆNs   ½0A9Á9A=Â A=c                 ó   •— ‰                      t          | j        ¦  «        d¦  «         t          t	          | j                             ¦   «         ¦  «        ¦  «        }t          ||j        ¦  «        D ]\  }}‰                     ||¦  «         Œd S )Nr.   )	r£   ÚlenÚblocksr3   rÓ   ÚvaluesÚzipÚbodyÚassertIsInstance)r÷   ÚexpectÚblkÚexpect_classÚgot_stmtr   s        €r   ÚcheckzATestExtendingVariableLifetimes.test_lifetime_basic.<locals>.check¬  s‹   ø€ à×Ò�S ¤Ñ0Ô0°!Ñ4Ô4Ð4Ý•t˜GœN×1Ò1Ñ3Ô3Ñ4Ô4Ñ5Ô5ˆCõ +.¨f°c´hÑ*?Ô*?ð >ð >Ñ&�˜hØ×%Ò% h°Ñ=Ô=Ð=Ð=ð>ð >r   Fr-   Té   )r   ÚAssignÚDelÚReturn)r   rø   r  Údel_after_use_irr   Údel_at_block_end_irs   `     r   Útest_lifetime_basicz2TestExtendingVariableLifetimes.test_lifetime_basic�  sÿ   ø€ ð	ð 	ð 	ð4	>ð 	>ð 	>ð 	>ð 	>ð "˜6 %™=œ=Ðð0•R”Y�L 1Ñ$ð 0¥r¤vð 0­r¬vð 0µr´yð 0Å"Ä&ð 0Ý”)ð0ÝœVð0Ý%'¤Yð0ˆàˆÐ Ñ'Ô'Ð'à$˜f T™lœlÐð O•R”Y�L 1Ñ$ÐN¥r¤yÐNµR´V°IÀ±MÐNÅBÄIÐNˆØˆÐ! 6Ñ*Ô*Ð*Ð*Ð*r   c                 ó  — d„ } |d¬¦  «        } |dd¬¦  «        } |dd¬¦  «        }d„ }|                        ||¦  «        ¦  «         |                        ||¦  «        ¦  «         |                       ||¦  «        ¦  «         d S )Nc                  ó¸   —  G d„ dt           ¦  «        }t          dd|i| ¤Žd„ ¦   «         } |¦   «          |j        |j        d                  }|j        d         }|S )Nc                   ó   — e Zd Zd„ ZdS )úfTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir.<locals>.IRPreservingCompilerc                 ó¢   — t          j        | j        ¦  «        }|                     t          t
          ¦  «         |                     ¦   «          |gS r   rÝ   râ   s     r   rä   zwTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir.<locals>.IRPreservingCompiler.define_pipelinesÇ  rå   r   Nræ   r*   r   r   rç   r  Å  rè   r   rç   ré   c                  ó"   — d} d}| |z   }||z  }|S rë   r*   rî   s       r   r{   zUTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir.<locals>.fooÍ  rï   r   r   rñ   r*   )r   r   rò   ró   rô   )Úoptionsrç   r{   rö   r÷   s        r   rø   zHTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_irÄ  sŽ   € ð ð  ð  ð  ð  ¥|ñ  ô  ð  õ ÐAÐAÐ!5ÐA¸ÐAÐAðð ñ BÔAðð ˆC‰EŒEˆEØ”= ¤°Ô!2Ô3ˆDØ”m NÔ3ˆGàˆNr   T)Údebug)r  Ú_dbg_extend_lifetimesFc                 ót  — | j                              ¦   «         \  }d„ |j        D ¦   «         }t          t	          t
          j        |¦  «        ¦  «        }t          |¦  «        }t          t	          t
          j        ||d …         ¦  «        ¦  «        }|t          |¦  «        z   }|t          |¦  «        dz
  k    S )Nc                 óB   — g | ]}t          |t          j        ¦  «        ‘ŒS r*   )r    r   r  )rN   Ústmts     r   rO   zoTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.is_del_grouped_at_the_end.<locals>.<listcomp>æ  s$   € ÐIÐIÐI¸�: d­B¬FÑ3Ô3ÐIÐIÐIr   r.   )	rû   rü   rþ   r¡   r   ÚoperatorÚnot_rú   Útruth)Úfirr  Úinst_is_delÚnot_delsÚbeginÚall_delsÚends          r   Úis_del_grouped_at_the_endz[TestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.is_del_grouped_at_the_endã  sœ   € Ø”J×%Ò%Ñ'Ô'‰EˆSàIÐIÀÄÐIÑIÔIˆKå�I¥h¤m°[ÑAÔAÑBÔBˆHå˜‘M”MˆEå�I¥h¤n°kÀ%À&À&Ô6IÑJÔJÑKÔKˆHà�#˜h™-œ-Ñ'ˆCð �#˜kÑ*Ô*¨QÑ.Ò.Ð.r   )r¹   r©   )r   rø   Úir_debugÚir_debug_extÚir_debug_no_extr!  s         r   Útest_dbg_extend_lifetimesz8TestExtendingVariableLifetimes.test_dbg_extend_lifetimesÂ  sÀ   € ð	ð 	ð 	ð2 �6 Ð%Ñ%Ô%ˆà�v DÀÐEÑEÔEˆà ˜& tÀ5ÐIÑIÔIˆð	/ð 	/ð 	/ð  	�ŠÐ1Ð1°(Ñ;Ô;Ñ<Ô<Ð<Ø�ŠÐ1Ð1°,Ñ?Ô?Ñ@Ô@Ð@Ø×ÒÐ2Ð2°?ÑCÔCÑDÔDÐDÐDÐDr   N)r'   r(   r)   r  r%  r*   r   r   r×   r×   ‹  s8   € € € € € ð
0+ð 0+ð 0+ðd3Eð 3Eð 3Eð 3Eð 3Er   r×   Ú__main__):r7   Úsysr@   rº   r  Ú	itertoolsr   ÚunittestÚnumbar   r   Únumba.core.controlflowr   r   Únumba.core.compilerr   r	   r
   r   r   Únumba.core.untyped_passesr   Únumba.core.typed_passesr   Ú
numba.corer   r   Únumba.tests.supportr   r   r   Úenable_pyobj_flagsÚenable_pyobjectÚforceobj_flagsÚforce_pyobjectÚno_pyobj_flagsÚobjectr   r$   r5   r_   rc   rg   rn   rr   rt   ÚRuntimeErrorrv   ry   r}   r   r�   r�   r’   r”   r×   r'   Úmainr*   r   r   ú<module>r9     sd  ðØ Ð Ð Ð Ø 
€
€
€
Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ðCð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cà 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fà�U‘W”WÐ Ø%)Ð Ô "à�‘”€Ø $€Ô à�‘”€ðEð Eð Eð Eð EˆVñ Eô Eð Eð
ð 
ð 
ð 
ð 
�Vñ 
ô 
ð 
ð1ð 1ð 1ð 1ð 1�&ñ 1ô 1ð 1ðhð ð ðð ð ð
ð 
ð 
ðð ð ð2ð ð ðð ð ð	ð 	ð 	ð 	ð 	ˆlñ 	ô 	ð 	ðð ð ð
ð 
ð 
ð
ð 
ð 
ðð ð ðð ð ð.ð ð ðSNð SNð SNð SNð SN�hñ SNô SNð SNðljEð jEð jEð jEð jE [°(ñ jEô jEð jEðZ ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   