Author: Philip Jenvey <pjen...@underboss.org> Branch: Changeset: r72636:8b19970c9881 Date: 2014-08-01 14:54 -0700 http://bitbucket.org/pypy/pypy/changeset/8b19970c9881/
Log: fix bound classmethods lacking an im_class diff --git a/pypy/interpreter/function.py b/pypy/interpreter/function.py --- a/pypy/interpreter/function.py +++ b/pypy/interpreter/function.py @@ -616,7 +616,8 @@ def descr_classmethod_get(self, space, w_obj, w_klass=None): if space.is_none(w_klass): w_klass = space.type(w_obj) - return space.wrap(Method(space, self.w_function, w_klass, space.w_None)) + return space.wrap(Method(space, self.w_function, w_klass, + space.type(w_klass))) def descr_classmethod__new__(space, w_subtype, w_function): instance = space.allocate_instance(ClassMethod, w_subtype) diff --git a/pypy/interpreter/test/test_typedef.py b/pypy/interpreter/test/test_typedef.py --- a/pypy/interpreter/test/test_typedef.py +++ b/pypy/interpreter/test/test_typedef.py @@ -388,6 +388,13 @@ # differs from .im_class in case the method is # defined in some parent class of l's actual class + def test_classmethod_im_class(self): + class Foo(object): + @classmethod + def bar(cls): + pass + assert Foo.bar.im_class is type + def test_func_closure(self): x = 2 def f(): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit