
\K]c           @   s  d  d l  m Z m Z d  d l m Z d  d l  m Z d  d l m Z d  d l  m Z d  d l	 m
 Z
 d  d l m Z m Z m Z d  d l  m Z d  d	 l  m Z d
   Z d   Z d   Z d   Z d   Z d e j f d     YZ e d k re j   n  d S(   i(   t   compilert   typing(   t   cpu(   t   types(   t
   cpu_target(   t   config(   t   type_annotations(   t   copy_propagatet   apply_copy_propagatet   get_name_var_table(   t   ir(   t   unittest_supportc         C   s9   d } |  d k r | | } n d } d | } | |  k  S(   Ni   i    i   (    (   t   bt   zt   wt   xt   yt   a(    (    s>   lib/python2.7/site-packages/numba/tests/test_copy_propagate.pyt   test_will_propagate   s    
c         C   s?   d } |  d k r% | | } d } n d } d | } | |  k  S(   Ni   i    i   i   (    (   R   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_copy_propagate.pyt   test_wont_propagate   s    
	
c         C   s   t  d  S(   N(   t   False(   R   R   t   ct   d(    (    s>   lib/python2.7/site-packages/numba/tests/test_copy_propagate.pyt	   null_func#   s    c         C   s(   x! |  D] } | j  | k r t Sq Wt S(   N(   t   namet   TrueR   (   t   list_vart   vart   i(    (    s>   lib/python2.7/site-packages/numba/tests/test_copy_propagate.pyt	   inListVar&   s    c         C   s   x |  j  j   D]r \ } } xc t | j  D]R \ } } t | t j  r, | j j | k r, | j	   } t
 | |  r~ t Sq, q, Wq Wt S(   N(   t   blockst   itemst	   enumeratet   bodyt
   isinstanceR
   t   Assignt   targetR   t	   list_varsR   R   R   (   t   func_irR   t   labelt   blockR   t   instt   all_var(    (    s>   lib/python2.7/site-packages/numba/tests/test_copy_propagate.pyt
   findAssign,   s    $t   TestCopyPropagatec           B   s   e  Z d    Z d   Z RS(   c         C   s#  t  j   } t j |  } t j t  } t j | |   | j	   | j	   t
 j t
 j t
 j f } t j | | | d   \ } } } t j d | d | d | d d
 d d  d | d | d t j  } t | j |  \ }	 }
 t | j |	 t | j  | |  |  j t | d	   Wd  QXd  S(   NR&   t   typemapt	   calltypest   liftedt   lifted_fromt   argst   return_typet   html_outputR   (    (   R   t   ContextR   t
   CPUContextR    t   run_frontendR   R   t   nested_contextt   refreshR   t   int64t   type_inference_staget   NoneR   t   TypeAnnotationR   t   HTMLR   R   R   R	   t   assertFalseR+   (   t   selft	   typingctxt	   targetctxt   test_irR1   R-   R2   R.   t   type_annotationt   in_cpst   out_cps(    (    s>   lib/python2.7/site-packages/numba/tests/test_copy_propagate.pyt   test17   s(    

!	"c         C   s#  t  j   } t j |  } t j t  } t j | |   | j	   | j	   t
 j t
 j t
 j f } t j | | | d   \ } } } t j d | d | d | d d
 d d  d | d | d t j  } t | j |  \ }	 }
 t | j |	 t | j  | |  |  j t | d	   Wd  QXd  S(   NR&   R-   R.   R/   R0   R1   R2   R3   R   (    (   R   R4   R   R5   R    R6   R   R   R7   R8   R   R9   R:   R;   R   R<   R   R=   R   R   R   R	   t
   assertTrueR+   (   R?   R@   RA   RB   R1   R-   R2   R.   RC   RD   RE   (    (    s>   lib/python2.7/site-packages/numba/tests/test_copy_propagate.pyt   test2R   s(    

!	"(   t   __name__t
   __module__RF   RH   (    (    (    s>   lib/python2.7/site-packages/numba/tests/test_copy_propagate.pyR,   6   s   	t   __main__N(   t   numbaR    R   t   numba.targetsR   R   t   numba.targets.registryR   R   t   numba.annotationsR   t   numba.ir_utilsR   R   R	   R
   R   t   unittestR   R   R   R   R+   t   TestCaseR,   RI   t   main(    (    (    s>   lib/python2.7/site-packages/numba/tests/test_copy_propagate.pyt   <module>   s    			
			
5