Author: Ronan Lamy <ronan.l...@gmail.com> Branch: py3.6 Changeset: r97910:66ff7d1e3593 Date: 2019-10-31 17:34 +0000 http://bitbucket.org/pypy/pypy/changeset/66ff7d1e3593/
Log: Fix PyFrame._guess_function_name_parens() diff --git a/pypy/interpreter/pyframe.py b/pypy/interpreter/pyframe.py --- a/pypy/interpreter/pyframe.py +++ b/pypy/interpreter/pyframe.py @@ -536,7 +536,7 @@ return w_function.name + '()' if isinstance(w_function, Method): return self._guess_function_name_parens(None, w_function.w_function) - return w_function.getname(self.space) + ' object' + return self.space.type(w_function).getname(self.space) + ' object' def make_arguments(self, nargs, methodcall=False, w_function=None, fnname=None): fnname_parens = self._guess_function_name_parens(fnname, w_function) diff --git a/pypy/interpreter/test/apptest_function.py b/pypy/interpreter/test/apptest_function.py --- a/pypy/interpreter/test/apptest_function.py +++ b/pypy/interpreter/test/apptest_function.py @@ -542,6 +542,25 @@ im = MethodType(A(), 3) assert list(map(im, [4])) == [7] + +class CallableBadGetattr: + def __getattr__(self, name): + # Ensure that __getattr__ doesn't get called + raise RuntimeError + + def __call__(self, a, b, c): + return a, b, c + +def test_custom_callable_errors(): + fn = CallableBadGetattr() + with raises(TypeError) as excinfo: + fn(*1) + assert excinfo.value.args[0].startswith('CallableBadGetattr object') + with raises(TypeError) as excinfo: + fn() + assert excinfo.value.args[0].startswith('__call__()') + assert fn(1, 2, 3) == (1, 2, 3) + def test_invalid_creation(): def f(): pass with raises(TypeError): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit