diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py
index eed9ce9..800461c 100644
--- a/Lib/compiler/transformer.py
+++ b/Lib/compiler/transformer.py
@@ -408,11 +408,11 @@
         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 6ec71ed..5e7b15c 100644
--- a/Lib/test/test_compiler.py
+++ b/Lib/test/test_compiler.py
@@ -20,7 +20,7 @@
             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 @@
     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__
