additional tests
authorStefan Behnel <scoder@users.berlios.de>
Tue, 30 Nov 2010 13:08:50 +0000 (14:08 +0100)
committerStefan Behnel <scoder@users.berlios.de>
Tue, 30 Nov 2010 13:08:50 +0000 (14:08 +0100)
tests/run/list_comp_in_closure_T598.pyx

index a1a42af75ca9406270c654ea9c19ddac8cacfdfa..3e833601c743b7793748e130e7dd286b403b6c87 100644 (file)
@@ -13,6 +13,35 @@ def list_comp_in_closure():
     assert f() == 'abc' # don't leak in Py3 code
     return result
 
+def pytyped_list_comp_in_closure():
+    """
+    >>> pytyped_list_comp_in_closure()
+    [0, 4, 8]
+    """
+    cdef object x
+    x = 'abc'
+    def f():
+        return x
+    result = [x*2 for x in range(5) if x % 2 == 0]
+    assert x == 'abc' # don't leak in Py3 code
+    assert f() == 'abc' # don't leak in Py3 code
+    return result
+
+def pytyped_list_comp_in_closure_repeated():
+    """
+    >>> pytyped_list_comp_in_closure_repeated()
+    [0, 4, 8]
+    """
+    cdef object x
+    x = 'abc'
+    def f():
+        return x
+    for i in range(3):
+        result = [x*2 for x in range(5) if x % 2 == 0]
+    assert x == 'abc' # don't leak in Py3 code
+    assert f() == 'abc' # don't leak in Py3 code
+    return result
+
 def genexpr_in_closure():
     """
     >>> genexpr_in_closure()
@@ -26,6 +55,35 @@ def genexpr_in_closure():
     assert f() == 'abc' # don't leak in Py3 code
     return result
 
+def pytyped_genexpr_in_closure():
+    """
+    >>> pytyped_genexpr_in_closure()
+    [0, 4, 8]
+    """
+    cdef object x
+    x = 'abc'
+    def f():
+        return x
+    result = list( x*2 for x in range(5) if x % 2 == 0 )
+    assert x == 'abc' # don't leak in Py3 code
+    assert f() == 'abc' # don't leak in Py3 code
+    return result
+
+def pytyped_genexpr_in_closure_repeated():
+    """
+    >>> pytyped_genexpr_in_closure_repeated()
+    [0, 4, 8]
+    """
+    cdef object x
+    x = 'abc'
+    def f():
+        return x
+    for i in range(3):
+        result = list( x*2 for x in range(5) if x % 2 == 0 )
+    assert x == 'abc' # don't leak in Py3 code
+    assert f() == 'abc' # don't leak in Py3 code
+    return result
+
 def genexpr_scope_in_closure():
     """
     >>> genexpr_scope_in_closure()