[pypy-svn] r55043 - pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk

tverwaes at codespeak.net tverwaes at codespeak.net
Tue May 20 21:01:26 CEST 2008


Author: tverwaes
Date: Tue May 20 21:01:24 2008
New Revision: 55043

Modified:
   pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/model.py
   pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/shadow.py
Log:
small bugfix


Modified: pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/model.py
==============================================================================
--- pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/model.py	(original)
+++ pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/model.py	Tue May 20 21:01:24 2008
@@ -306,7 +306,7 @@
         if shadow is None:
             shadow = self.attach_shadow_of_class(TheClass)
         elif not isinstance(shadow, TheClass):
-            shadow.sync_w_self()
+            # TODO Add test for this
             shadow.invalidate_shadow()
             shadow = self.attach_shadow_of_class(TheClass)
         shadow.sync_shadow()
@@ -335,7 +335,7 @@
             if ContextPartShadow.is_block_context(self):
                 return self.as_blockcontext_get_shadow()
             return self.as_methodcontext_get_shadow()
-        self.as_special_get_shadow(ContextPartShadow)
+        return self.as_special_get_shadow(ContextPartShadow)
 
     def as_methoddict_get_shadow(self):
         from pypy.lang.smalltalk.shadow import MethodDictionaryShadow

Modified: pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/shadow.py
==============================================================================
--- pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/shadow.py	(original)
+++ pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/shadow.py	Tue May 20 21:01:24 2008
@@ -23,6 +23,10 @@
     def sync_shadow(self): pass
    
 class AbstractCachingShadow(AbstractShadow):
+    def __init__(self, w_self):
+        AbstractShadow.__init__(self, w_self)
+        self.invalid = True
+        self.invalidate_shadow()
     def invalidate_shadow(self):
         """This should get called whenever the base Smalltalk
         object changes."""
@@ -71,7 +75,7 @@
         AbstractCachingShadow.invalidate_shadow(self)
         self.w_methoddict = None
         self.w_superclass = None
-        self.name = None
+        self.name = ""
 
     def getname(self):
         return "%s class" % (self.name or '?',)



More information about the Pypy-commit mailing list