diff options
author | Benjamin Peterson <benjamin@python.org> | 2012-04-17 23:54:35 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2012-04-17 23:54:35 (GMT) |
commit | 2a1fdc4c760bf862accf625558e9bf54b9b9cd7c (patch) | |
tree | 86069f9cb1c3d0b9f74f9d3d3c6771dc64e8f833 | |
parent | 64befe939c1da377053f6a410f082db02184c5e2 (diff) | |
parent | 32c59b6fc1140486a9915876054365b40bd88da9 (diff) | |
download | cpython-2a1fdc4c760bf862accf625558e9bf54b9b9cd7c.zip cpython-2a1fdc4c760bf862accf625558e9bf54b9b9cd7c.tar.gz cpython-2a1fdc4c760bf862accf625558e9bf54b9b9cd7c.tar.bz2 |
merge 3.2 (#14607)
-rw-r--r-- | Lib/test/test_keywordonlyarg.py | 6 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Python/compile.c | 6 |
3 files changed, 13 insertions, 1 deletions
diff --git a/Lib/test/test_keywordonlyarg.py b/Lib/test/test_keywordonlyarg.py index 61d40f9..0503a7f 100644 --- a/Lib/test/test_keywordonlyarg.py +++ b/Lib/test/test_keywordonlyarg.py @@ -170,6 +170,12 @@ class KeywordOnlyArgTestCase(unittest.TestCase): # used to fail with a SystemError. lambda *, k1=unittest: None + def test_mangling(self): + class X: + def f(self, *, __a=42): + return __a + self.assertEqual(X().f(), 42) + def test_main(): run_unittest(KeywordOnlyArgTestCase) @@ -13,6 +13,8 @@ Core and Builtins - Issue #14592: Attempting a relative import w/o __package__ or __name__ set in globals raises a KeyError. +- Issue #14607: Fix defaults keyword-only arguments which started with ``__``. + - Issue #10854: The ImportError raised when an extension module on Windows fails to import now uses the new path and name attributes from Issue #1559549. diff --git a/Python/compile.c b/Python/compile.c index 1722a5f..79d1d21 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1409,7 +1409,11 @@ compiler_visit_kwonlydefaults(struct compiler *c, asdl_seq *kwonlyargs, arg_ty arg = asdl_seq_GET(kwonlyargs, i); expr_ty default_ = asdl_seq_GET(kw_defaults, i); if (default_) { - ADDOP_O(c, LOAD_CONST, arg->arg, consts); + PyObject *mangled = _Py_Mangle(c->u->u_private, arg->arg); + if (!mangled) + return -1; + ADDOP_O(c, LOAD_CONST, mangled, consts); + Py_DECREF(mangled); if (!compiler_visit_expr(c, default_)) { return -1; } |