
    xKg_                         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                          yy)	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                 R    t        j                          t        t        |           y )N)gccollectsuperr   setUp)self	__class__s    ^/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_nrt_refct.pyr   zTestNrtRefCt.setUp   s    


lD')    c                 $   t         d        }d}t        j                         } ||       t        j                         }| j                  |j                  |j                  z
  |       | j                  |j
                  |j
                  z
  |       y)z"
        Test issue #1291
        c                 N    t        |       D ]  }t        j                  d      } yN   r   )rangenpzeros)nitemps      r   fooz(TestNrtRefCt.test_no_return.<locals>.foo   s     1Xxx{ r   
   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
A..0	:+;+;;Q?*//91=r   c                     t         d        }t        j                         } |d       t        j                         }| j                  |j                  |j                  z
  d       | j                  |j
                  |j
                  z
  d       y)z"
        Test issue #1297
        c                     t        j                  | df      }t        |       D ]  }||   }	 t        |       D ]  }||   }	 yr   )r   r   r   )r   xr   ys       r   gz6TestNrtRefCt.test_escaping_var_init_in_loop.<locals>.g.   sK     !Q A1XaD  1XaD  r   r      Nr   )r   r*   r#   r$   s       r   test_escaping_var_init_in_loopz+TestNrtRefCt.test_escaping_var_init_in_loop)   sw    
 

	 

	 //1
	"..0	:+;+;;Q?*//91=r   c                 <   t         d        }t        j                  j                  d      }t        j                         } ||d       t        j                         }| j                  |j                  |j                  z
  |j                  |j                  z
         y)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   sA    mmD)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     
		 
		 iiv&//1
-c59..0	:+;+;;"*//9	;r   c                 &   t         d        }t        j                  d      }t        j                         } ||       t        j                         }| j                  |j                  |j                  z
  |j                  |j                  z
         y)z"
        Test issue #1734
        c                 D    d}dD ]  }| |   }||   dkD  s|||   z  } |S )Nr   )r   r+   r+    )r7   resr   ts       r   fz5TestNrtRefCt.test_del_at_beginning_of_loop.<locals>.f]   s;    C FQ4!81Q4KC  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   sw     

	 

	 ggfo//1
	#..0	:+;+;;"*//9	;r   )	__name__
__module____qualname__r   r%   r,   r8   r@   __classcell__)r   s   @r   r   r      s    *
>$>0;0;r   r   __main__)__doc__r
   numpyr   unittestnumbar   numba.core.runtimer   numba.tests.supportr   r   r   rA   mainr;   r   r   <module>rM      sJ   
 
    $ =_;& _;D zHMMO r   