]> granicus.if.org Git - python/commitdiff
Fix failure of test_compiler.py when compiling test_contextlib.py.
authorGuido van Rossum <guido@python.org>
Thu, 2 Mar 2006 04:24:01 +0000 (04:24 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 2 Mar 2006 04:24:01 +0000 (04:24 +0000)
The culprit was an expression-less yield -- the first apparently in
the standard library.  I added a unit test for this.
Also removed the hack to force compilation of test_with.py.

Lib/compiler/transformer.py
Lib/test/test_compiler.py

index eed9ce93f7a5e7917fcf83a24e33ddf7ef56277e..800461ce48d67d82eb87412847663c4512c30c57 100644 (file)
@@ -408,11 +408,11 @@ class Transformer:
         return Discard(expr, lineno=expr.lineno)
 
     def yield_expr(self, nodelist):
-        if len(nodelist)>1:
-            value = nodelist[1]
+        if len(nodelist) > 1:
+            value = self.com_node(nodelist[1])
         else:
             value = Const(None)
-        return Yield(self.com_node(value), lineno=nodelist[0][2])
+        return Yield(value, lineno=nodelist[0][2])
 
     def raise_stmt(self, nodelist):
         # raise: [test [',' test [',' test]]]
index 6ec71ed38fcd6a696454c47e37178877fafa018d..5e7b15c38cdce75f0ca946a2720e82486d4f58af 100644 (file)
@@ -20,7 +20,7 @@ class CompilerTest(unittest.TestCase):
             for basename in os.listdir(dir):
                 if not basename.endswith(".py"):
                     continue
-                if not TEST_ALL and random() < 0.98 and basename != "test_with.py":
+                if not TEST_ALL and random() < 0.98:
                     continue
                 path = os.path.join(dir, basename)
                 if test.test_support.verbose:
@@ -43,6 +43,9 @@ class CompilerTest(unittest.TestCase):
     def testNewClassSyntax(self):
         compiler.compile("class foo():pass\n\n","<string>","exec")
 
+    def testYieldExpr(self):
+        compiler.compile("def g(): yield\n\n", "<string>", "exec")
+
     def testLineNo(self):
         # Test that all nodes except Module have a correct lineno attribute.
         filename = __file__