[pypy-commit] pypy list-strategies: Check correct type with strategy instance instead of class

l.diekmann noreply at buildbot.pypy.org
Fri Sep 23 13:12:20 CEST 2011


Author: Lukas Diekmann <lukas.diekmann at uni-duesseldorf.de>
Branch: list-strategies
Changeset: r47462:b9213520c508
Date: 2011-03-11 11:32 +0100
http://bitbucket.org/pypy/pypy/changeset/b9213520c508/

Log:	Check correct type with strategy instance instead of class

diff --git a/pypy/objspace/std/listobject.py b/pypy/objspace/std/listobject.py
--- a/pypy/objspace/std/listobject.py
+++ b/pypy/objspace/std/listobject.py
@@ -17,7 +17,7 @@
         strategy = space.fromcache(EmptyListStrategy)
         storage = strategy.cast_to_void_star(None)
     else:
-        strategy = space.fromcache(RangeListStrategy)(space)
+        strategy = space.fromcache(RangeListStrategy)
         storage = strategy.cast_to_void_star((start, step, length))
     return W_ListObject.from_storage_and_strategy(space, storage, strategy)
 
@@ -474,7 +474,7 @@
         assert slicelength >= 0
         items = self.cast_from_void_star(w_list.storage)
 
-        if (type(self) is not ObjectListStrategy and
+        if (self is not self.space.fromcache(ObjectListStrategy) and
                 not self.list_is_correct_type(W_ListObject(self.space, sequence_w)) and
                 len(sequence_w) != 0):
             w_list.switch_to_object_strategy()
@@ -584,7 +584,7 @@
     def wrap(self, item):
         return item
 
-    cast_to_void_star, cast_from_void_star = rerased.new_erasing_pair("range")
+    cast_to_void_star, cast_from_void_star = rerased.new_erasing_pair("object")
     cast_to_void_star = staticmethod(cast_to_void_star)
     cast_from_void_star = staticmethod(cast_from_void_star)
 
@@ -592,7 +592,7 @@
         return True
 
     def list_is_correct_type(self, w_list):
-        return ObjectListStrategy is type(w_list.strategy)
+        return w_list.strategy is self.space.fromcache(ObjectListStrategy)
 
     def init_from_list_w(self, w_list, list_w):
         w_list.storage = self.cast_to_void_star(list_w)
@@ -605,7 +605,7 @@
     def unwrap(self, w_int):
         return self.space.int_w(w_int)
 
-    cast_to_void_star, cast_from_void_star = rerased.new_erasing_pair("range")
+    cast_to_void_star, cast_from_void_star = rerased.new_erasing_pair("integer")
     cast_to_void_star = staticmethod(cast_to_void_star)
     cast_from_void_star = staticmethod(cast_from_void_star)
 
@@ -613,7 +613,7 @@
         return is_W_IntObject(w_obj)
 
     def list_is_correct_type(self, w_list):
-        return IntegerListStrategy is type(w_list.strategy)
+        return w_list.strategy is self.space.fromcache(IntegerListStrategy)
 
 class StringListStrategy(AbstractUnwrappedStrategy):
 
@@ -623,7 +623,7 @@
     def unwrap(self, w_string):
         return self.space.str_w(w_string)
 
-    cast_to_void_star, cast_from_void_star = rerased.new_erasing_pair("range")
+    cast_to_void_star, cast_from_void_star = rerased.new_erasing_pair("string")
     cast_to_void_star = staticmethod(cast_to_void_star)
     cast_from_void_star = staticmethod(cast_from_void_star)
 
@@ -631,7 +631,7 @@
         return is_W_StringObject(w_obj)
 
     def list_is_correct_type(self, w_list):
-        return StringListStrategy is type(w_list.strategy)
+        return w_list.strategy is self.space.fromcache(StringListStrategy)
 
 # _______________________________________________________
 


More information about the pypy-commit mailing list