[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