Commit 2a1fdc4c authored by Benjamin Peterson's avatar Benjamin Peterson

merge 3.2 (#14607)

parents 64befe93 32c59b6f
...@@ -170,6 +170,12 @@ class KeywordOnlyArgTestCase(unittest.TestCase): ...@@ -170,6 +170,12 @@ class KeywordOnlyArgTestCase(unittest.TestCase):
# used to fail with a SystemError. # used to fail with a SystemError.
lambda *, k1=unittest: None 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(): def test_main():
run_unittest(KeywordOnlyArgTestCase) run_unittest(KeywordOnlyArgTestCase)
......
...@@ -13,6 +13,8 @@ Core and Builtins ...@@ -13,6 +13,8 @@ Core and Builtins
- Issue #14592: Attempting a relative import w/o __package__ or __name__ set in - Issue #14592: Attempting a relative import w/o __package__ or __name__ set in
globals raises a KeyError. 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 - Issue #10854: The ImportError raised when an extension module on Windows
fails to import now uses the new path and name attributes from fails to import now uses the new path and name attributes from
Issue #1559549. Issue #1559549.
......
...@@ -1409,7 +1409,11 @@ compiler_visit_kwonlydefaults(struct compiler *c, asdl_seq *kwonlyargs, ...@@ -1409,7 +1409,11 @@ compiler_visit_kwonlydefaults(struct compiler *c, asdl_seq *kwonlyargs,
arg_ty arg = asdl_seq_GET(kwonlyargs, i); arg_ty arg = asdl_seq_GET(kwonlyargs, i);
expr_ty default_ = asdl_seq_GET(kw_defaults, i); expr_ty default_ = asdl_seq_GET(kw_defaults, i);
if (default_) { 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_)) { if (!compiler_visit_expr(c, default_)) {
return -1; return -1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment