File: //opt/alt/python35/lib64/python3.5/lib2to3/fixes/__pycache__/fix_throw.cpython-35.opt-1.pyc
��Yf.  �               @   s{   d  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	 m
 Z
 m Z Gd d �  d e j � Z
 d S)	z�Fixer for generator.throw(E, V, T).
g.throw(E)       -> g.throw(E)
g.throw(E, V)    -> g.throw(E(V))
g.throw(E, V, T) -> g.throw(E(V).with_traceback(T))
g.throw("foo"[, V[, T]]) will warn about string exceptions.�   )�pytree)�token)�
fixer_base)�Name�Call�ArgList�Attr�is_tuplec               @   s(   e  Z d  Z d Z d Z d d �  Z d S)�FixThrowTz�
    power< any trailer< '.' 'throw' >
           trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' >
    >
    |
    power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > >
    c             C   sG  |  j  } | d j �  } | j t j k r? |  j | d � d  S| j d � } | d  k r^ d  S| j �  } t | � r� d d �  | j d d � D� } n d | _	 | g } | d } d	 | k r-| d	 j �  } d | _	 t
 | | � }	 t |	 t d
 � � t
 | g � g }
 | j t j | j |
 � � n | j t
 | | � � d  S)N�excz+Python 3 does not support string exceptions�valc             S   s   g  |  ] } | j  �  � q S� )�clone)�.0�cr
   r
   �</opt/alt/python35/lib64/python3.5/lib2to3/fixes/fix_throw.py�
<listcomp>)   s   	 z&FixThrow.transform.<locals>.<listcomp>�   � �args�tb�with_traceback���)�symsr   �typer   �STRINGZcannot_convert�getr	   Zchildren�prefixr   r   r   r   �replacer   ZNodeZpower)�selfZnodeZresultsr   r   r   r   Z
throw_argsr   �eZwith_tbr
   r
   r   �	transform   s*    	#		
	%zFixThrow.transformN)�__name__�
__module__�__qualname__Z
BM_compatibleZPATTERNr!   r
   r
   r
   r   r
      s   r
   N)�__doc__r   r   Zpgen2r   r   Z
fixer_utilr   r   r   r   r	   ZBaseFixr
   r
   r
   r
   r   �<module>   s
   (