o
    ¦¸¢i_  ã                   @   sn   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„ dee
ƒZedkr5e ¡  dS dS )	z<
Tests issues or edge cases for producing invalid NRT refct
é    N)Únjit)Úrtsys)ÚTestCaseÚEnableNRTStatsMixinc                       s<   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Z‡  ZS )ÚTestNrtRefCtc                    s   t  ¡  tt| ƒ ¡  d S )N)ÚgcÚcollectÚsuperr   ÚsetUp)Úself©Ú	__class__© úX/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/numba/tests/test_nrt_refct.pyr
      s   zTestNrtRefCt.setUpc                 C   sT   t dd„ ƒ}d}t ¡ }||ƒ t ¡ }|  |j|j |¡ |  |j|j |¡ dS )z"
        Test issue #1291
        c                 S   s   t | ƒD ]}t d¡}qdS ©Né   r   )ÚrangeÚnpÚzeros)ÚnÚiÚtempr   r   r   Úfoo   s   z(TestNrtRefCt.test_no_return.<locals>.fooé
   N©r   r   Úget_allocation_statsÚassertEqualÚallocÚfree)r   r   r   Ú
init_statsÚ	cur_statsr   r   r   Útest_no_return   s   
zTestNrtRefCt.test_no_returnc                 C   sP   t dd„ ƒ}t ¡ }|dƒ t ¡ }|  |j|j d¡ |  |j|j d¡ dS )z"
        Test issue #1297
        c                 S   s>   t  | df¡}t| ƒD ]}|| }qt| ƒD ]}|| }qdS r   )r   r   r   )r   Úxr   Úyr   r   r   Úg.   s   

z6TestNrtRefCt.test_escaping_var_init_in_loop.<locals>.gr   é   Nr   )r   r$   r   r    r   r   r   Útest_escaping_var_init_in_loop)   s   
z+TestNrtRefCt.test_escaping_var_init_in_loopc                 C   sR   t dd„ ƒ}tj d¡}t ¡ }||dƒ t ¡ }|  |j|j |j|j ¡ dS )z"
        Test issue #1573
        c                 S   s0   t  | ¡}t|jd ƒD ]}q|rt  | ¡ |S )Nr   )r   Ú
zeros_liker   Úshape)Úarr1Útest1Útmp_arrr   r   r   r   Ú%if_with_allocation_and_initializationE   s   

z`TestNrtRefCt.test_invalid_computation_of_lifetime.<locals>.if_with_allocation_and_initialization)é   r-   FN)r   r   Úrandomr   r   r   r   r   )r   r,   Úarrr   r    r   r   r   Ú$test_invalid_computation_of_lifetimeA   s   


ÿz1TestNrtRefCt.test_invalid_computation_of_lifetimec                 C   sN   t dd„ ƒ}t d¡}t ¡ }||ƒ t ¡ }|  |j|j |j|j ¡ dS )z"
        Test issue #1734
        c                 S   s2   d}dD ]}| | }|| dkr||| 7 }q|S )Nr   )r   r%   r%   r   )r/   Úresr   Útr   r   r   Úf]   s   €z5TestNrtRefCt.test_del_at_beginning_of_loop.<locals>.f)r   r   N)r   r   Úonesr   r   r   r   r   )r   r3   r/   r   r    r   r   r   Útest_del_at_beginning_of_loopY   s   


ÿz*TestNrtRefCt.test_del_at_beginning_of_loop)	Ú__name__Ú
__module__Ú__qualname__r
   r!   r&   r0   r5   Ú__classcell__r   r   r   r   r      s    r   Ú__main__)Ú__doc__r   Únumpyr   ÚunittestÚnumbar   Únumba.core.runtimer   Únumba.tests.supportr   r   r   r6   Úmainr   r   r   r   Ú<module>   s    bÿ