]> granicus.if.org Git - python/commitdiff
Merged revisions 79034 via svnmerge from
authorBenjamin Peterson <benjamin@python.org>
Wed, 17 Mar 2010 20:56:58 +0000 (20:56 +0000)
committerBenjamin Peterson <benjamin@python.org>
Wed, 17 Mar 2010 20:56:58 +0000 (20:56 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r79034 | benjamin.peterson | 2010-03-17 15:41:42 -0500 (Wed, 17 Mar 2010) | 1 line

  prevent lambda functions from having docstrings #8164
........

Lib/test/test_compile.py
Python/compile.c

index 1de9027a88f5ed2457fcc0a1feb73ed720793ac3..90d6b87b50f0b646b8c4ceea67cb0d32937376af 100644 (file)
@@ -292,9 +292,9 @@ if 1:
         f1, f2 = f()
         self.assertNotEqual(id(f1.__code__), id(f2.__code__))
 
-##     def test_unicode_encoding(self):
-##         code = "# -*- coding: utf-8 -*-\npass\n"
-##         self.assertRaises(SyntaxError, compile, code, "tmp", "exec")
+    def test_lambda_doc(self):
+        l = lambda: "foo"
+        self.assertIsNone(l.__doc__)
 
     def test_subscripts(self):
         # SF bug 1448804
index 2c58d449b5e24cbeeff8c14aecaa1918f849e65e..62fa46c61583ccf5ddc903f8697594867a19b110 100644 (file)
@@ -1660,6 +1660,11 @@ compiler_lambda(struct compiler *c, expr_ty e)
        if (!compiler_enter_scope(c, name, (void *)e, e->lineno))
                return 0;
 
+       /* Make None the first constant, so the lambda can't have a
+          docstring. */
+       if (compiler_add_o(c, c->u->u_consts, Py_None) < 0)
+               return 0;
+       
        c->u->u_argcount = asdl_seq_LEN(args->args);
        c->u->u_kwonlyargcount = asdl_seq_LEN(args->kwonlyargs);
        VISIT_IN_SCOPE(c, expr, e->v.Lambda.body);