§
    ƒÛg_  ã                   ó–   — d Z ddlZddlZddlZddlmZ ddlmZ ddl	m
Z
mZ  G d„ dee
¦  «        Zedk    r ej        ¦   «          dS dS )	z<
Tests issues or edge cases for producing invalid NRT refct
é    N)Únjit)Úrtsys)ÚTestCaseÚEnableNRTStatsMixinc                   ó6   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚTestNrtRefCtc                 ó|   •— t          j        ¦   «          t          t          | ¦  «                             ¦   «          d S )N)ÚgcÚcollectÚsuperr   ÚsetUp)ÚselfÚ	__class__s    €úP/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_nrt_refct.pyr   zTestNrtRefCt.setUp   s0   ø€ å
Œ
‰ŒˆÝ�l˜DÑ!Ô!×'Ò'Ñ)Ô)Ð)Ð)Ð)ó    c                 ó  — t           d„ ¦   «         }d}t          j        ¦   «         } ||¦  «         t          j        ¦   «         }|                      |j        |j        z
  |¦  «         |                      |j        |j        z
  |¦  «         dS )z"
        Test issue #1291
        c                 óR   — t          | ¦  «        D ]}t          j        d¦  «        }ŒdS ©Né   r   )ÚrangeÚnpÚzeros)ÚnÚiÚtemps      r   Úfooz(TestNrtRefCt.test_no_return.<locals>.foo   s+   € å˜1‘X”Xð #ð #�Ý”x ‘{”{��Ø�1r   é
   N©r   r   Úget_allocation_statsÚassertEqualÚallocÚfree)r   r   r   Ú
init_statsÚ	cur_statss        r   Útest_no_returnzTestNrtRefCt.test_no_return   s’   € õ
 
ð	ð 	ñ 
Œð	ð
 ˆÝÔ/Ñ1Ô1ˆ
ØˆˆA‰ŒˆÝÔ.Ñ0Ô0ˆ	Ø×Ò˜œ¨:Ô+;Ñ;¸QÑ?Ô?Ð?Ø×Ò˜œ¨*¬/Ñ9¸1Ñ=Ô=Ð=Ð=Ð=r   c                 ó  — t           d„ ¦   «         }t          j        ¦   «         } |d¦  «         t          j        ¦   «         }|                      |j        |j        z
  d¦  «         |                      |j        |j        z
  d¦  «         dS )z"
        Test issue #1297
        c                 óš   — t          j        | df¦  «        }t          | ¦  «        D ]
}||         }Œt          | ¦  «        D ]
}||         }ŒdS r   )r   r   r   )r   Úxr   Úys       r   Úgz6TestNrtRefCt.test_escaping_var_init_in_loop.<locals>.g.   s\   € õ ”˜!˜Q˜Ñ Ô ˆAå˜1‘X”Xð ð �Ø�a”D��å˜1‘X”Xð ð �Ø�a”D��à�1r   r   é   Nr   )r   r*   r#   r$   s       r   Útest_escaping_var_init_in_loopz+TestNrtRefCt.test_escaping_var_init_in_loop)   s�   € õ
 
ð
	ð 
	ñ 
Œð
	õ Ô/Ñ1Ô1ˆ
Ø	ˆˆ"‰ŒˆÝÔ.Ñ0Ô0ˆ	Ø×Ò˜œ¨:Ô+;Ñ;¸QÑ?Ô?Ð?Ø×Ò˜œ¨*¬/Ñ9¸1Ñ=Ô=Ð=Ð=Ð=r   c                 ó(  — t           d„ ¦   «         }t          j                             d¦  «        }t          j        ¦   «         } ||d¦  «         t          j        ¦   «         }|                      |j        |j        z
  |j        |j        z
  ¦  «         dS )z"
        Test issue #1573
        c                 ó”   — t          j        | ¦  «        }t          |j        d         ¦  «        D ]}Œ|rt          j        | ¦  «         |S )Nr   )r   Ú
zeros_liker   Úshape)Úarr1Útest1Útmp_arrr   s       r   Ú%if_with_allocation_and_initializationz`TestNrtRefCt.test_invalid_computation_of_lifetime.<locals>.if_with_allocation_and_initializationE   sO   € å”m DÑ)Ô)ˆGå˜7œ=¨Ô+Ñ,Ô,ð ð �Øàð $Ý”˜dÑ#Ô#Ð#àˆNr   )é   r5   FN)r   r   Úrandomr   r   r    r!   r"   )r   r4   Úarrr#   r$   s        r   Ú$test_invalid_computation_of_lifetimez1TestNrtRefCt.test_invalid_computation_of_lifetimeA   s�   € õ 
ð		ð 		ñ 
Œð		õ Œi×Ò˜vÑ&Ô&ˆåÔ/Ñ1Ô1ˆ
Ø-Ð-¨c°5Ñ9Ô9Ð9ÝÔ.Ñ0Ô0ˆ	Ø×Ò˜œ¨:Ô+;Ñ;Ø"œ¨*¬/Ñ9ñ	;ô 	;ð 	;ð 	;ð 	;r   c                 ó  — t           d„ ¦   «         }t          j        d¦  «        }t          j        ¦   «         } ||¦  «         t          j        ¦   «         }|                      |j        |j        z
  |j        |j        z
  ¦  «         dS )z"
        Test issue #1734
        c                 óR   — d}dD ]!}| |         }||         dk    r|||         z  }Œ"|S )Nr   )r   r+   r+   © )r7   Úresr   Úts       r   Úfz5TestNrtRefCt.test_del_at_beginning_of_loop.<locals>.f]   sA   € àˆCàð  ð  �ð ˜”F�Ø�Q”4˜!’8�8Ø˜1˜Qœ4‘K�CøàˆJr   )r   r   N)r   r   Úonesr   r   r    r!   r"   )r   r>   r7   r#   r$   s        r   Útest_del_at_beginning_of_loopz*TestNrtRefCt.test_del_at_beginning_of_loopY   s�   € õ 
ð
	ð 
	ñ 
Œð
	õ Œg�f‰oŒoˆÝÔ/Ñ1Ô1ˆ
Ø	ˆˆ#‰ŒˆÝÔ.Ñ0Ô0ˆ	Ø×Ò˜œ¨:Ô+;Ñ;Ø"œ¨*¬/Ñ9ñ	;ô 	;ð 	;ð 	;ð 	;r   )	Ú__name__Ú
__module__Ú__qualname__r   r%   r,   r8   r@   Ú__classcell__)r   s   @r   r   r      st   ø€ € € € € ð*ð *ð *ð *ð *ð
>ð >ð >ð$>ð >ð >ð0;ð ;ð ;ð0;ð ;ð ;ð ;ð ;ð ;ð ;r   r   Ú__main__)Ú__doc__r
   Únumpyr   ÚunittestÚnumbar   Únumba.core.runtimer   Únumba.tests.supportr   r   r   rA   Úmainr;   r   r   ú<module>rM      sÇ   ððð ð
 
€	€	€	à Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =ð_;ð _;ð _;ð _;ð _;Ð&¨ñ _;ô _;ð _;ðD ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   