[pypy-commit] pypy stdlib-3.2.5: mangle keyword-only argname when loading defaults (CPython issue #14607)
amauryfa
noreply at buildbot.pypy.org
Wed Apr 2 02:58:11 CEST 2014
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: stdlib-3.2.5
Changeset: r70391:a15b2d272f8e
Date: 2014-04-02 01:15 +0200
http://bitbucket.org/pypy/pypy/changeset/a15b2d272f8e/
Log: mangle keyword-only argname when loading defaults (CPython issue
#14607)
diff --git a/pypy/interpreter/astcompiler/codegen.py b/pypy/interpreter/astcompiler/codegen.py
--- a/pypy/interpreter/astcompiler/codegen.py
+++ b/pypy/interpreter/astcompiler/codegen.py
@@ -306,7 +306,8 @@
for i, default in enumerate(args.kw_defaults):
if default:
kwonly = args.kwonlyargs[i]
- self.load_const(self.space.wrap(kwonly.arg.decode('utf-8')))
+ mangled = self.scope.mangle(kwonly.arg.decode('utf-8'))
+ self.load_const(self.space.wrap(mangled))
default.walkabout(self)
defaults += 1
return defaults
diff --git a/pypy/interpreter/test/test_interpreter.py b/pypy/interpreter/test/test_interpreter.py
--- a/pypy/interpreter/test/test_interpreter.py
+++ b/pypy/interpreter/test/test_interpreter.py
@@ -347,6 +347,14 @@
assert l(1, 2, k=10) == 1 + 2 + 10
"""
+ def test_kwonlyarg_mangling(self):
+ """
+ class X:
+ def f(self, *, __a=42):
+ return __a
+ assert X().f() == 42
+ """
+
def test_extended_unpacking_short(self):
"""
class Seq:
More information about the pypy-commit
mailing list