[pypy-svn] r49752 - pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__

cfbolz at codespeak.net cfbolz at codespeak.net
Fri Dec 14 00:08:16 CET 2007


Author: cfbolz
Date: Fri Dec 14 00:08:16 2007
New Revision: 49752

Modified:
   pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/interp_classobj.py
Log:
more annotation stuff


Modified: pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/interp_classobj.py
==============================================================================
--- pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/interp_classobj.py	(original)
+++ pypy/branch/interplevel-oldstyle-classes/pypy/module/__builtin__/interp_classobj.py	Fri Dec 14 00:08:16 2007
@@ -27,8 +27,8 @@
 
     # XXX missing: lengthy and obscure logic about "__module__"
         
-    bases = []
-    for w_base in space.unpackiterable(w_bases):
+    bases_w = space.unpackiterable(w_bases)
+    for w_base in bases_w:
         if not isinstance(w_base, W_ClassObject):
             w_metaclass = space.type(w_base)
             if space.is_true(space.callable(w_metaclass)):
@@ -36,9 +36,8 @@
                                            w_bases, w_dict)
             raise OperationError(space.w_TypeError,
                                  space.wrap("base must be class"))
-        bases.append(w_base)
 
-    return W_ClassObject(space, w_name, bases, w_dict)
+    return W_ClassObject(space, w_name, bases_w, w_dict)
 
 class W_ClassObject(Wrappable):
     def __init__(self, space, w_name, bases, w_dict):
@@ -95,13 +94,11 @@
                     space.w_TypeError,
                     space.wrap("__bases__ must be a tuple object"))
         bases_w = space.unpackiterable(w_bases)
-        bases = []
         for w_base in bases_w:
             if not isinstance(w_base, W_ClassObject):
                 raise OperationError(space.w_TypeError,
                                      space.wrap("__bases__ items must be classes"))
-            bases.append(w_base)
-        self.bases_w = bases
+        self.bases_w = bases_w
 
     def fdel_bases(space, self):
         raise OperationError(
@@ -114,6 +111,8 @@
         if w_result is not None:
             return w_result
         for base in self.bases_w:
+            # XXX fix annotation of bases_w to be a list of W_ClassObjects
+            assert isinstance(base, W_ClassObject)
             w_result = base.lookup(space, w_attr)
             if w_result is not None:
                 return w_result
@@ -260,6 +259,7 @@
     def __init__(self, space, w_class, w_dict=None):
         if w_dict is None:
             w_dict = space.newdict()
+        assert isinstance(w_class, W_ClassObject)
         self.w_class = w_class
         self.w_dict = w_dict
 



More information about the Pypy-commit mailing list