§
    2@ÄjÂ=  ã                   ó¶  — 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 d dlmZ d dlmZmZ d dlmZmZm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„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z) G d„ de¦  «        Z* G d„ d ee¦  «        Z+e,d!k    r ej-        ¦   «          dS dS )"é    N)Ú	takewhile)ÚnjitÚjit)ÚCompilerBaseÚDefaultPassBuilder)Ú
PreserveIR)ÚIRLegalization)ÚtypesÚir)ÚTestCaseÚoverride_configÚSerialMixinc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú_Dummyc                 óL   — || _         || _        |                     | ¦  «         d S ©N)ÚrecorderÚnameÚ
_add_dummy)Úselfr   r   s      úNC:\Projects\Historical\venv\Lib\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$   r+   r-   Ú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__3   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_dummy8   s   € õ �d˜DÑ!Ô!Ð!r   c                 óX   — t          j        || j        ¦  «        }|j        | j        |<   d S r   )ÚweakrefÚrefÚ_on_disposalr   r7   )r   ÚdummyÚwrs      r   r   zRefRecorder._add_dummy>   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)   )r+   N)r5   r6   ÚappendÚformat)r   Úeventr+   s      r   ÚmarkzRefRecorder.markD   sK   € ð
 ”˜UÔ# aÑ'ˆØ#ˆŒ�UÑØŒ×Ò˜EŸLšL¨u˜LÑ5Ô5Ñ6Ô6Ð6Ð6Ð6r   c                 ón   — | j                              |¦  «        }| j                             |¦  «         d S r   )r7   Úpopr6   rA   )r   r?   r   s      r   r=   zRefRecorder._on_disposalM   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%   )Ú.0r?   s     r   ú
<listcomp>z%RefRecorder.alive.<locals>.<listcomp>V   s   € Ð)Ð)Ð)˜��‘”Ð)Ð)Ð)r   )r7   r    s    r   ÚalivezRefRecorder.aliveQ   s   € ð
 *Ð)˜tœyÐ)Ñ)Ô)Ð)r   c                 ó   — | j         S )z,
        A list of recorded events.
        )r6   r    s    r   ÚrecordedzRefRecorder.recordedX   s   € ð
 Œ|Ðr   N)r"   r#   r$   Ú__doc__r   r9   r   Ú__call__rD   r=   ÚpropertyrK   rM   r%   r   r   r0   r0   ,   s¦   € € € € € ðð ðð ð ð
"ð "ð "ð#ð #ð #ð €Hð7ð 7ð 7ð"ð "ð "ð ð*ð *ñ „Xð*ð ðð ñ „Xðð ð r   r0   c                 ó°   —  | d¦  «        } | d¦  «        } | d¦  «        }||z   }|                       d¦  «         ||z   }|                       d¦  «         |S )NÚaÚbÚcú--1--ú--2--©rD   )ÚrecrR   rS   rT   Úds        r   Úsimple_usecase1rZ   `   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 )NrR   rS   rU   rW   )rX   rR   rS   ÚxÚys        r   Úsimple_usecase2r^   j   sB   € ØˆˆC‰Œ€AØˆˆC‰Œ€AØ‡H‚HˆWÑÔÐØ	€AØ	€AØ€AØ€Hr   c                 ó¾   —  | d¦  «        } | d¦  «        } | d¦  «        }|}|D ]}||z   }|                       d¦  «         Œ|                       d¦  «         ||z   }|S )NrR   rS   rT   ú--loop bottom--ú--loop exit--rW   )rX   rR   rS   rT   r\   r]   s         r   Úlooping_usecase1rb   s   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 )NrR   rS   Ú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--rW   )rX   rR   rS   rd   r\   Úzr]   s          r   Úlooping_usecase2ri      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 ©NrR   rS   r%   ©rX   rR   rS   s      r   Úgenerator_usecase1rm   ˜   s6   è è € ØˆˆC‰Œ€AØˆˆC‰Œ€AØ
€G€G€GØ
€G€G€G€G€Gr   c              #   óP   K  —  | d¦  «        } | d¦  «        }|D ]}|V — Œ|V — d S rk   r%   )rX   rR   rS   r\   s       r   Úgenerator_usecase2ro   ž   sG   è è € ØˆˆC‰Œ€AØˆˆC‰Œ€AØð ð ˆØˆˆˆˆØ
€G€G€G€G€Gr   c                   ó   — e Zd ZdS )ÚMyErrorN)r"   r#   r$   r%   r   r   rq   rq   ¦   s   € € € € € Ø€Dr   rq   c                 ó    — t          | ¦  «        ‚r   ©rq   )r\   s    r   Údo_raisert   ©   s   € Ý
�!‰*Œ*Ðr   c                 ó”   —  | d¦  «        } | d¦  «        } | d¦  «        }|rt          d¦  «          | d¦  «        }||z    ||z    d S )NrR   rS   rY   ÚfoorT   ©rt   )rX   rR   rS   rY   rT   s        r   Úraising_usecase1rx   ¬   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 )NrR   rS   rT   rw   )rX   rR   rS   rT   s       r   Úraising_usecase2rz   ¶   sI   € ØˆˆC‰Œ€AØˆˆC‰Œ€AØð ØˆC�‰HŒHˆÝ�‰ŒˆØˆ�E€E€E€Er   c                 óT   —  | d¦  «        } | d¦  «        }|rt          |¦  «        ‚d S rk   rs   rl   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éÿÿÿÿ)ÚrangerD   Ústr)rX   Ú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ÚbrarW   )rX   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   )r0   r–   ÚassertRaises)r   r”   ÚraisesrX   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)rM   ÚlistrA   ÚremoveÚassertEqual)r   rX   ÚexpectedÚactualrM   Ú	remainingrY   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)rR   rS   rU   )rR   rT   rU   )rU   zb + crV   )rš   rZ   ÚassertFalserK   r¢   ©r   rX   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)rS   rU   rR   )rš   r^   r¤   rK   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)rR   rS   ra   rT   )ú	iter(a)#1r`   ú	iter(a)#2r`   ú	iter(a)#3r`   úiter(a)ra   )rš   rb   r¤   rK   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 )NrR   re   )r­   rf   rg   )ú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š   ri   r¤   rK   r¢   r¥   s     r   Útest_looping2zTestObjLifetime.test_looping2(  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–   r0   ÚassertRefCountr.   Ú
assertTruerK   rœ   r¤   ÚgcÚcollect)r   Úgenfuncr•   rX   Úgens        r   Úexercise_generatorz"TestObjLifetime.exercise_generator>  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¹   rm   r    s    r   Útest_generator1zTestObjLifetime.test_generator1Y  ó   € Ø×ÒÕ 2Ñ3Ô3Ð3Ð3Ð3r   c                 ó:   — |                       t          ¦  «         d S r   )r¹   ro   r    s    r   Útest_generator2zTestObjLifetime.test_generator2\  r¼   r   c                 ót   — |                       t          ¦  «        }|                      |j        g d¢¦  «         d S )N)Ú0Ú1Ú2)rš   rˆ   rž   rM   r¥   s     r   Útest_del_before_definitionz*TestObjLifetime.test_del_before_definition_  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³   rt   rš   rx   rq   r¤   rK   r¥   s     r   Útest_raising1zTestObjLifetime.test_raising1c  ó©   € Ø× Ò ¥Ñ*Ô*ð 	(ð 	(Ø×)Ò)Õ*:Å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³   rt   rš   rz   rq   r¤   rK   r¥   s     r   Útest_raising2zTestObjLifetime.test_raising2h  rÇ   rÈ   c                 óâ   — |                       t          ¦  «        5  |                      t          t          ¬¦  «        }|                      |j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rÅ   )r³   rq   rš   r|   r¤   rK   r¥   s     r   Útest_raising3zTestObjLifetime.test_raising3m  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�   r0   Úiterr.   rž   rK   rM   )r   r•   rX   Úiterators       r   Ú test_inf_loop_multiple_back_edgez0TestObjLifetime.test_inf_loop_multiple_back_edger  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$   rN   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%   ©rR   rS   rT   rY   s       r   rv   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â   rv   Ú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Úblocksr.   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   rv   zUTestExtendingVariableLifetimes.test_dbg_extend_lifetimes.<locals>.get_ir.<locals>.fooÂ  rê   r   r   rì   r%   )r   r   rí   rî   rï   )Úoptionsrâ   rv   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  )rI   Ústmts     r   rJ   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__).r2   r;   rµ   r  Ú	itertoolsr   ÚunittestÚnumbar   r   Únumba.core.compilerr   r   Únumba.core.untyped_passesr   Únumba.core.typed_passesr	   Ú
numba.corer
   r   Únumba.tests.supportr   r   r   Úobjectr   r   r0   rZ   r^   rb   ri   rm   ro   ÚRuntimeErrorrq   rt   rx   rz   r|   rˆ   r�   r�   rÒ   r"   Úmainr%   r   r   ú<module>r-     sÔ  ðØ Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fð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   