[pypy-svn] r49859 - in pypy/dist/pypy/module/__builtin__: . test

cfbolz at codespeak.net cfbolz at codespeak.net
Mon Dec 17 00:17:08 CET 2007


Author: cfbolz
Date: Mon Dec 17 00:17:08 2007
New Revision: 49859

Modified:
   pypy/dist/pypy/module/__builtin__/interp_classobj.py
   pypy/dist/pypy/module/__builtin__/test/test_classobj.py
Log:
fix bug in __new__


Modified: pypy/dist/pypy/module/__builtin__/interp_classobj.py
==============================================================================
--- pypy/dist/pypy/module/__builtin__/interp_classobj.py	(original)
+++ pypy/dist/pypy/module/__builtin__/interp_classobj.py	Mon Dec 17 00:17:08 2007
@@ -264,7 +264,7 @@
         raise OperationError(
             space.w_TypeError,
             space.wrap("instance() first arg must be class"))
-    if w_dict is None:
+    if space.is_w(w_dict, space.w_None):
         w_dict = space.newdict()
     elif not space.is_true(space.isinstance(w_dict, space.w_dict)):
         raise OperationError(

Modified: pypy/dist/pypy/module/__builtin__/test/test_classobj.py
==============================================================================
--- pypy/dist/pypy/module/__builtin__/test/test_classobj.py	(original)
+++ pypy/dist/pypy/module/__builtin__/test/test_classobj.py	Mon Dec 17 00:17:08 2007
@@ -574,6 +574,10 @@
         class A:
             b = 1
         a = A()
+        a = type(a).__new__(type(a), A)
+        assert a.b == 1
+        a = type(a).__new__(type(a), A, None)
+        assert a.b == 1
         a = type(a).__new__(type(a), A, {'c': 2})
         assert a.b == 1
         assert a.c == 2



More information about the Pypy-commit mailing list