ó
'![c           @  s¡   d  Z  d d l m Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   s   Tests for loopvar-in-closure.iÿÿÿÿ(   t   print_functionc          C  s.   g  }  x! t  d ƒ D] } |  j | ƒ q Wd S(   s   No problems here.i
   N(   t   ranget   append(   t   lstt   i(    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt	   good_case   s    c          C  s   g  t  d ƒ D] }  |  ^ q S(   s   No problems here.i
   (   R   (   R   (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt
   good_case2   s    c          C  s4   g  }  x' t  d ƒ D] } |  j | d „ ƒ q Wd S(   s   No problems here.i
   c         S  s   |  S(   N(    (   R   (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt   <lambda>   s    N(   R   R   (   R   R   (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt
   good_case3   s    c          C  s;   g  }  x. t  d ƒ D]  } t | ƒ |  j d „  ƒ q Wd S(   s   No problems here.i
   c         S  s   |  S(   N(    (   R   (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyR      s    N(   R   t   printR   (   R   R   (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt
   good_case4   s    
c           C  s   d „  t  d ƒ Dƒ S(   s   No problems here.c         s  s   |  ] } | Vq d  S(   N(    (   t   .0R   (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pys	   <genexpr>"   s    i
   (   R   (    (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt
   good_case5    s    c             s.   x t  d ƒ D] ‰  t ˆ  ƒ q W‡  f d †  S(   sž   Accept use of the variable after the loop.

    There's already a warning about possibly undefined loop variables, and
    the value will not change any more.i
   c             s   ˆ  S(   N(    (    (   R   (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyR   ,   s    (   R   R	   (    (    (   R   sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt
   good_case6%   s    c             s7   x- t  d ƒ D] ‰  ˆ  d k r ‡  f d †  Sq Wd „  S(   s)   Accept use of the variable inside return.i
   i   c             s   ˆ  S(   N(    (    (   R   (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyR   3   s    c           S  s   d S(   Niÿÿÿÿ(    (    (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyR   4   s    (   R   (    (    (   R   sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt
   good_case7/   s    c             s4   x- t  d ƒ D] ‰  t ‡  f d †  d ƒ ƒ q Wd S(   s"   Lambda defined and called in loop.i
   c           s   ˆ  |  S(   N(    (   t   x(   R   (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyR   :   s    i   N(   R   R	   (    (    (   R   sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt
   good_case87   s    c          C  s:   g  }  x- t  d ƒ D] } | d „ } |  j | ƒ q W|  S(   s+   Another eager binding of the cell variable.i
   c         S  s   |  S(   s   Ignore.(    (   t   bound_i(    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt   funcA   s    (   R   R   (   t   funsR   R   (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt
   good_case9=   s
    c            sA   g  }  x4 t  d ƒ D]& ‰  t ˆ  ƒ |  j ‡  f d †  ƒ q Wd S(   s   Closing over a loop variable.i
   c             s   ˆ  S(   N(    (    (   R   (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyR   M   s    N(   R   R	   R   (   R   (    (   R   sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt   bad_caseH   s    
c             s&   g  t  d ƒ D] ‰  ‡  f d †  ^ q S(   s   Closing over a loop variable.i
   c             s   ˆ  S(   N(    (    (   R   (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyR   R   s    (   R   (    (    (   R   sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt	   bad_case2P   s    c            sA   g  }  x4 t  d ƒ D]& } | | ‰  |  j ‡  f d †  ƒ q W|  S(   s&   Closing over variable defined in loop.i
   c             s   ˆ  S(   N(    (    (   t   j(    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyR   Z   s    (   R   R   (   R   R   (    (   R   sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt	   bad_case3U   s
    
c            s=   g  }  x0 t  d ƒ D]" ‰  ‡  f d †  } |  j | ƒ q W|  S(   s&   Closing over variable defined in loop.i
   c             s   ˆ  d S(   s   Nested function.i   (    (    (   R   (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt   nestedb   s    (   R   R   (   R   R   (    (   R   sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt	   bad_case4^   s
    c           C  s   d „  t  d ƒ Dƒ S(   s  Problematic case.

    If this function is used as

    >>> [x() for x in bad_case5()]

    it behaves 'as expected', i.e. the result is range(10).

    If it's used with

    >>> lst = list(bad_case5())
    >>> [x() for x in lst]

    the result is [9] * 10 again.
    c         3  s   |  ] ‰  ‡  f d  †  Vq d S(   c             s   ˆ  S(   N(    (    (   R   (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyR   y   s    N(    (   R   (    (   R   sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pys	   <genexpr>y   s    i
   (   R   (    (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt	   bad_case5i   s    c            sY   g  }  xL t  t d ƒ t d d ƒ ƒ D], \ ‰  } t | ƒ |  j ‡  f d †  ƒ q% W|  S(   s&   Closing over variable defined in loop.i
   i   c             s   ˆ  S(   N(    (    (   R   (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyR      s    (   t   zipR   R	   R   (   R   R   (    (   R   sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt	   bad_case6|   s
    +
N(   t   __doc__t
   __future__R    R   R   R   R
   R   R   R   R   R   R   R   R   R   R   R   (    (    (    sK   lib/python2.7/site-packages/pylint/test/functional/cellvar_escaping_loop.pyt   <module>   s    						
									