[pypy-svn] r80018 - in pypy/branch/fast-forward/pypy: interpreter objspace/test

agaynor at codespeak.net agaynor at codespeak.net
Mon Dec 13 06:58:44 CET 2010


Author: agaynor
Date: Mon Dec 13 06:58:42 2010
New Revision: 80018

Modified:
   pypy/branch/fast-forward/pypy/interpreter/function.py
   pypy/branch/fast-forward/pypy/objspace/test/test_descroperation.py
Log:
Delay verifying that classmethod is provided with a non-callable.


Modified: pypy/branch/fast-forward/pypy/interpreter/function.py
==============================================================================
--- pypy/branch/fast-forward/pypy/interpreter/function.py	(original)
+++ pypy/branch/fast-forward/pypy/interpreter/function.py	Mon Dec 13 06:58:42 2010
@@ -590,10 +590,6 @@
         return space.wrap(Method(space, self.w_function, w_klass, space.w_None))
 
     def descr_classmethod__new__(space, w_subtype, w_function):
-        if not space.is_true(space.callable(w_function)):
-            typename = space.type(w_function).getname(space, '?')
-            raise operationerrfmt(space.w_TypeError,
-                                  "'%s' object is not callable", typename)
         instance = space.allocate_instance(ClassMethod, w_subtype)
         instance.__init__(w_function)
         return space.wrap(instance)

Modified: pypy/branch/fast-forward/pypy/objspace/test/test_descroperation.py
==============================================================================
--- pypy/branch/fast-forward/pypy/objspace/test/test_descroperation.py	(original)
+++ pypy/branch/fast-forward/pypy/objspace/test/test_descroperation.py	Mon Dec 13 06:58:42 2010
@@ -493,6 +493,10 @@
 
         raises(AttributeError, lambda: A().a)
 
+    def test_non_callable(self):
+        meth = classmethod(1).__get__(1)
+        raises(TypeError, meth)
+
     def test_isinstance_and_issubclass(self):
         class Meta(type):
             def __instancecheck__(cls, instance):



More information about the Pypy-commit mailing list