³ò
C3IHc           @   s   d  d k  l Z d  d k  l Z d  d k l Z l Z d  d k l Z d  d k l	 Z	 l
 Z
 d e f d     YZ d   Z d	 e f d
     YZ d S(   iÿÿÿÿ(   t   Check(   t   Warning(   t   BaseVisitort   type_filter(   t   symbols(   t   astt   walkt   Returnsc           B   s/   e  Z d    Z d   Z d   Z e Z e Z RS(   c         C   s   g  |  _  d  S(   N(   t   result(   t   self(    (    s-   C:\py\_spe\plugins\pychecker2\ReturnChecks.pyt   __init__
   s    c         C   s   |  i  i |  d  S(   N(   R   t   append(   R	   t   node(    (    s-   C:\py\_spe\plugins\pychecker2\ReturnChecks.pyt   visitReturn   s    c         C   s   d  S(   N(    (   R	   R   (    (    s-   C:\py\_spe\plugins\pychecker2\ReturnChecks.pyt   visitFunction   s    (   t   __name__t
   __module__R
   R   R   t
   visitClasst   visitLambda(    (    (    s-   C:\py\_spe\plugins\pychecker2\ReturnChecks.pyR      s
   			c         C   s/   t  |  t i  o |  i d  j o d Sn d  S(   Ni   (   t
   isinstanceR   t   Constt   valuet   None(   R   (    (    s-   C:\py\_spe\plugins\pychecker2\ReturnChecks.pyt   _is_implicit   s    #t   MixedReturnCheckc           B   s    e  Z e d  d  Z d   Z RS(   s2   Report functions using "return" and "return value"s1   Function %s uses both "return" and "return value"c         C   sØ   xÑ t  | i i   t i  D]Ž } t | i i t    i	 } g  g  } } x< | D]4 } t
 | i  o | i |  qQ | i |  qQ Wt |  d j o4 t |  d j o! | i | d |  i | i  q q Wd  S(   Ni    (   R   t   scopest   valuesR   t   FunctionScopeR   R   t   codeR   R   R   R   R   t   lent   warningt   mixedReturnst   name(   R	   t   filet   unused_checkert   scopet   returnst   emptyR   R   (    (    s-   C:\py\_spe\plugins\pychecker2\ReturnChecks.pyt   check    s      &(   R   R   R   R   R&   (    (    (    s-   C:\py\_spe\plugins\pychecker2\ReturnChecks.pyR      s   	N(   t   pychecker2.CheckR    R   t   pychecker2.utilR   R   t
   pychecker2R   t   compilerR   R   R   R   R   (    (    (    s-   C:\py\_spe\plugins\pychecker2\ReturnChecks.pys   <module>   s   	