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)ÚgcZcollectÚsuperr   ÚsetUp)Úself©Ú	__class__© úi/var/www/html/eduruby.in/lip-sync/lip-sync-env/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   Z
zeros_liker   Úshape)Zarr1Ztest1Z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   Zonesr   r   r   r   r   )r
   r.   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%   r+   r/   Ú__classcell__r   r   r   r   r      s    r   Ú__main__)Ú__doc__r   Únumpyr   ZunittestZnumbar   Znumba.core.runtimer   Znumba.tests.supportr   r   r   r0   Úmainr   r   r   r   Ú<module>   s    bÿ