[pypy-commit] pypy remove-remaining-smm: Make W_NoneObject a W_Root.

Manuel Jacob noreply at buildbot.pypy.org
Mon Feb 24 06:00:04 CET 2014


Author: Manuel Jacob
Branch: remove-remaining-smm
Changeset: r69341:9f9e64ea5ddc
Date: 2014-02-24 05:17 +0100
http://bitbucket.org/pypy/pypy/changeset/9f9e64ea5ddc/

Log:	Make W_NoneObject a W_Root.

diff --git a/pypy/objspace/std/model.py b/pypy/objspace/std/model.py
--- a/pypy/objspace/std/model.py
+++ b/pypy/objspace/std/model.py
@@ -34,7 +34,6 @@
             from pypy.objspace.std.objecttype import object_typedef
             from pypy.objspace.std.typeobject   import type_typedef
             from pypy.objspace.std.slicetype  import slice_typedef
-            from pypy.objspace.std.nonetype import none_typedef
         self.pythontypes = [value for key, value in result.__dict__.items()
                             if not key.startswith('_')]   # don't look
 
@@ -67,6 +66,7 @@
 
         # not-multimethod based types
 
+        self.pythontypes.append(noneobject.W_NoneObject.typedef)
         self.pythontypes.append(tupleobject.W_TupleObject.typedef)
         self.pythontypes.append(listobject.W_ListObject.typedef)
         self.pythontypes.append(dictmultiobject.W_DictMultiObject.typedef)
diff --git a/pypy/objspace/std/noneobject.py b/pypy/objspace/std/noneobject.py
--- a/pypy/objspace/std/noneobject.py
+++ b/pypy/objspace/std/noneobject.py
@@ -1,27 +1,23 @@
-"""
-  None Object implementation
+from pypy.interpreter.baseobjspace import W_Root
+from pypy.interpreter.gateway import interp2app
+from pypy.objspace.std.stdtypedef import StdTypeDef
 
-  ok and tested
-"""
 
-from pypy.objspace.std.model import registerimplementation, W_Object
-from pypy.objspace.std.register_all import register_all
-
-class W_NoneObject(W_Object):
-    from pypy.objspace.std.nonetype import none_typedef as typedef
-
+class W_NoneObject(W_Root):
     def unwrap(w_self, space):
         return None
 
-registerimplementation(W_NoneObject)
+    def descr_nonzero(self, space):
+        return space.w_False
+
+    def descr_repr(self, space):
+        return space.wrap('None')
+
 
 W_NoneObject.w_None = W_NoneObject()
 
-def nonzero__None(space, w_none):
-    return space.w_False
-
-def repr__None(space, w_none):
-    return space.wrap('None')
-
-register_all(vars())
-
+W_NoneObject.typedef = StdTypeDef("NoneType",
+    __nonzero__ = interp2app(W_NoneObject.descr_nonzero),
+    __repr__ = interp2app(W_NoneObject.descr_repr),
+)
+W_NoneObject.typedef.acceptable_as_base_class = False
diff --git a/pypy/objspace/std/nonetype.py b/pypy/objspace/std/nonetype.py
deleted file mode 100644
--- a/pypy/objspace/std/nonetype.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from pypy.objspace.std.stdtypedef import StdTypeDef
-
-
-# ____________________________________________________________
-
-none_typedef = StdTypeDef("NoneType",
-    )
-none_typedef.acceptable_as_base_class = False
diff --git a/pypy/objspace/std/test/test_noneobject.py b/pypy/objspace/std/test/test_noneobject.py
--- a/pypy/objspace/std/test/test_noneobject.py
+++ b/pypy/objspace/std/test/test_noneobject.py
@@ -1,11 +1,7 @@
-
-
-
 class TestW_NoneObject:
-
     def test_equality(self):
         assert self.space.eq_w(self.space.w_None, self.space.w_None)
-    
+
     def test_inequality(self):
         neresult = self.space.ne(self.space.w_None, self.space.w_None)
         assert not self.space.is_true(neresult)


More information about the pypy-commit mailing list