[pypy-svn] r15738 - in pypy/dist/pypy/rpython: . test

arigo at codespeak.net arigo at codespeak.net
Sat Aug 6 17:39:41 CEST 2005


Author: arigo
Date: Sat Aug  6 17:39:38 2005
New Revision: 15738

Modified:
   pypy/dist/pypy/rpython/rdict.py
   pypy/dist/pypy/rpython/remptydict.py
   pypy/dist/pypy/rpython/test/test_remptydict.py
Log:
Empty dicts: missed support for rtype_newdict (only supported prebuilt empty
dicts).


Modified: pypy/dist/pypy/rpython/rdict.py
==============================================================================
--- pypy/dist/pypy/rpython/rdict.py	(original)
+++ pypy/dist/pypy/rpython/rdict.py	Sat Aug  6 17:39:38 2005
@@ -43,7 +43,7 @@
                         rtyper.getrepr(dictkey.s_value), 
                         rtyper.getrepr(dictvalue.s_value))
         elif isinstance(s_key, annmodel.SomeImpossibleValue):
-            return remptydict.EmptyDictRepr()
+            return remptydict.emptydict_repr
         elif (s_key.__class__ is annmodel.SomeObject and s_key.knowntype == object and
               s_value.__class__ is annmodel.SomeObject and s_value.knowntype == object):
             return robject.pyobj_repr
@@ -293,6 +293,8 @@
     if r_dict == robject.pyobj_repr: # special case: SomeObject: SomeObject dicts!
         cdict = hop.inputconst(robject.pyobj_repr, dict)
         return hop.genop('simple_call', [cdict], resulttype = robject.pyobj_repr)
+    if r_dict == remptydict.emptydict_repr: # other special case: empty dicts
+        return hop.inputconst(lltype.Void, {})
     if not isinstance(r_dict, StrDictRepr):
         raise rmodel.TyperError("cannot create non-StrDicts, got %r" %(r_dict,))
     c1 = hop.inputconst(lltype.Void, r_dict.lowleveltype)

Modified: pypy/dist/pypy/rpython/remptydict.py
==============================================================================
--- pypy/dist/pypy/rpython/remptydict.py	(original)
+++ pypy/dist/pypy/rpython/remptydict.py	Sat Aug  6 17:39:38 2005
@@ -12,3 +12,6 @@
 
     def rtype_len(self, hop):
         return hop.inputconst(lltype.Signed, 0)
+
+
+emptydict_repr = EmptyDictRepr()

Modified: pypy/dist/pypy/rpython/test/test_remptydict.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_remptydict.py	(original)
+++ pypy/dist/pypy/rpython/test/test_remptydict.py	Sat Aug  6 17:39:38 2005
@@ -5,8 +5,9 @@
     class A:
         pass
     a = A()
-    a.d = {}
+    a.d1 = {}
     def func():
-        return bool(a.d)
-    res = interpret(func, [])
+        a.d2 = {}
+        return bool(a.d1) or bool(a.d2)
+    res = interpret(func, [], view=True)
     assert res is False



More information about the Pypy-commit mailing list