B
     \                 @   sj   d dl m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jZedkrfe  dS )    )print_functionN)jit)NumbaWarning
deprecatedc               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestBuiltinsc          	   C   s   dd }t jdd}t dt t|}|dd | t|d | |d jt | d	t	|d j
 | |d jt | d
t	|d j
 W d Q R X d S )Nc             S   s   i }| | S )N )xyar   r   8lib/python3.7/site-packages/numba/tests/test_warnings.pyadd   s    z1TestBuiltins.test_type_infer_warning.<locals>.addT)recordalways      r   ztype inferencezobject mode)warningscatch_warningssimplefilterr   r   assertEquallencategoryassertInstrmessage)selfr   wcfuncr   r   r   test_type_infer_warning
   s    
z$TestBuiltins.test_type_infer_warningc          	      s   t jdt jd  fdd}tjdd}tdt tdd	|}|  | t	|d
 | |d j
t | dt|d j | |d j
t | dt|d j W d Q R X d S )N   )dtypec                  s    S )Nr   r   )r	   r   r   return_external_array    s    zDTestBuiltins.test_return_type_warning.<locals>.return_external_arrayT)r   r   F)Z_nrtr   r   zreturn typer   zobject mode)nponesfloat32r   r   r   r   r   r   r   r   r   r   r   )r   r    r   r   r   )r	   r   test_return_type_warning   s    z%TestBuiltins.test_return_type_warningc          	      sb   t jdt jd  fdd}tjdd0}tdt t|}|  | t	|d W d	Q R X d	S )
z9
        Rerun test_return_type_warning with nrt
        r   )r   c                  s    S )Nr   r   )r	   r   r   r    8   s    zMTestBuiltins.test_return_type_warning_with_nrt.<locals>.return_external_arrayT)r   r   r   N)
r!   r"   r#   r   r   r   r   r   r   r   )r   r    r   r   r   )r	   r   !test_return_type_warning_with_nrt2   s    z.TestBuiltins.test_return_type_warning_with_nrtc          	   C   sV   dd }t jdd8}t dt t|dd}|dd | t|d	 W d Q R X d S )
Nc             S   s   g }| | S )Nr   )r   r	   r
   r   r   r   r   E   s    z7TestBuiltins.test_no_warning_with_forceobj.<locals>.addT)r   r   )Zforceobjr   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   test_no_warning_with_forceobjD   s    
z*TestBuiltins.test_no_warning_with_forceobjc          	   C   s   dd }t jdd}t dt tjdtjd}t|}|| | t	|d | |d	 j
t | d
t|d	 j | |d j
t | d
t|d j | |d j
t | dt|d j | dt|d j W d Q R X d S )Nc             S   s0   i }x&t | jd D ]}| |  d9  < qW d S )Nr   r   )rangeshape)r   r
   ir   r   r   do_loopR   s    z1TestBuiltins.test_loop_lift_warn.<locals>.do_loopT)r   r   r   )r      r   ztype inferencer   r   zobject modezlifted loops)r   r   r   r   r!   r"   r#   r   r   r   r   r   r   r   )r   r*   r   r   r   r   r   r   test_loop_lift_warnQ   s    z TestBuiltins.test_loop_lift_warnc          	   C   s   t ddd }tjddd}td |  | t|d | |d jt | d	t	|d j
 | dt	|d j
 W d Q R X d S )
NZfooc               S   s   d S )Nr   r   r   r   r   barn   s    z)TestBuiltins.test_deprecated.<locals>.barT)r   r   r   r   r-   )r   r   r   r   r   r   r   DeprecationWarningr   r   r   )r   r-   r   r   r   r   test_deprecatedm   s    
zTestBuiltins.test_deprecatedN)	__name__
__module____qualname__r   r$   r%   r&   r,   r/   r   r   r   r   r   	   s   r   __main__)Z
__future__r   r   Znumpyr!   Znumba.unittest_supportZunittest_supportZunittestZnumbar   Znumba.errorsr   r   ZTestCaser   r0   mainr   r   r   r   <module>   s   q