From 5bde08dba3a34de7f625420035f1d0876bc71f39 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 2 Mar 2006 04:24:01 +0000 Subject: [PATCH] Fix failure of test_compiler.py when compiling test_contextlib.py. 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 | 6 +++--- Lib/test/test_compiler.py | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py index eed9ce93f7a..800461ce48d 100644 --- a/Lib/compiler/transformer.py +++ b/Lib/compiler/transformer.py @@ -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]]] diff --git a/Lib/test/test_compiler.py b/Lib/test/test_compiler.py index 6ec71ed38fc..5e7b15c38cd 100644 --- a/Lib/test/test_compiler.py +++ b/Lib/test/test_compiler.py @@ -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","","exec") + def testYieldExpr(self): + compiler.compile("def g(): yield\n\n", "", "exec") + def testLineNo(self): # Test that all nodes except Module have a correct lineno attribute. filename = __file__