[pypy-svn] r7664 - in pypy/trunk/src/pypy: annotation translator translator/test
arigo at codespeak.net
arigo at codespeak.net
Wed Nov 24 20:48:56 CET 2004
Author: arigo
Date: Wed Nov 24 20:48:54 2004
New Revision: 7664
Modified:
pypy/trunk/src/pypy/annotation/factory.py
pypy/trunk/src/pypy/annotation/model.py
pypy/trunk/src/pypy/translator/annrpython.py
pypy/trunk/src/pypy/translator/genc.py
pypy/trunk/src/pypy/translator/genpyrex.py
pypy/trunk/src/pypy/translator/test/test_annrpython.py
Log:
Removed SomeNone and turned it into a prebuilt constant (PBC).
A fix in genpyrex which gets confused by all the stuff that is now annotated
as prebuilt constant.
Modified: pypy/trunk/src/pypy/annotation/factory.py
==============================================================================
--- pypy/trunk/src/pypy/annotation/factory.py (original)
+++ pypy/trunk/src/pypy/annotation/factory.py Wed Nov 24 20:48:54 2004
@@ -134,7 +134,7 @@
x.freeze()
return self.getpbc(x)
elif x is None:
- result = SomeNone()
+ return self.getpbc(None)
else:
result = SomeObject()
result.const = x
@@ -148,7 +148,7 @@
except KeyError:
result = SomePBC({x: True}) # pre-built inst
clsdef = self.getclassdef(new_or_old_class(x))
- for attr in x.__dict__:
+ for attr in getattr(x, '__dict__', {}):
clsdef.add_source_for_attribute(attr, x)
self.pbccache[x] = result
return result
@@ -469,7 +469,11 @@
def about_attribute(self, name):
for cdef in self.getmro():
if name in cdef.attrs:
- return cdef.attrs[name].s_value
+ s_result = cdef.attrs[name].s_value
+ if s_result != SomeImpossibleValue():
+ return s_result
+ else:
+ return None
return None
Modified: pypy/trunk/src/pypy/annotation/model.py
==============================================================================
--- pypy/trunk/src/pypy/annotation/model.py (original)
+++ pypy/trunk/src/pypy/annotation/model.py Wed Nov 24 20:48:54 2004
@@ -77,12 +77,6 @@
del set_caused_by_merge
-class SomeNone(SomeObject):
- "Stands for None."
- knowntype = type(None)
- const = None
-
-
class SomeInteger(SomeObject):
"Stands for an object which is known to be an integer."
knowntype = int
Modified: pypy/trunk/src/pypy/translator/annrpython.py
==============================================================================
--- pypy/trunk/src/pypy/translator/annrpython.py (original)
+++ pypy/trunk/src/pypy/translator/annrpython.py Wed Nov 24 20:48:54 2004
@@ -226,7 +226,7 @@
if graph.hasonlyexceptionreturns():
# XXX for functions with exceptions what to
# do anyway?
- return annmodel.SomeNone()
+ return self.bookkeeper.immutablevalue(None)
return annmodel.SomeImpossibleValue()
def reflowfromposition(self, position_key):
Modified: pypy/trunk/src/pypy/translator/genc.py
==============================================================================
--- pypy/trunk/src/pypy/translator/genc.py (original)
+++ pypy/trunk/src/pypy/translator/genc.py Wed Nov 24 20:48:54 2004
@@ -241,8 +241,7 @@
else:
return "probably" # True
classdef = ann.getuserclasses().get(pbc.__class__)
- if (classdef and classdef.about_attribute(attr) not in [
- None, annmodel.SomeImpossibleValue()]):
+ if classdef and classdef.about_attribute(attr) is not None:
return True
return False
Modified: pypy/trunk/src/pypy/translator/genpyrex.py
==============================================================================
--- pypy/trunk/src/pypy/translator/genpyrex.py (original)
+++ pypy/trunk/src/pypy/translator/genpyrex.py Wed Nov 24 20:48:54 2004
@@ -256,7 +256,8 @@
def _gettypename(self, vartype):
if vartype in (int, bool):
ctype = "int"
- elif self.annotator and vartype in self.annotator.getuserclasses():
+ elif (self.annotator and vartype in self.annotator.getuserclasses()
+ and vartype.__module__ != '__builtin__'):
ctype = self.getclassname(vartype)
else:
ctype = "object"
Modified: pypy/trunk/src/pypy/translator/test/test_annrpython.py
==============================================================================
--- pypy/trunk/src/pypy/translator/test/test_annrpython.py (original)
+++ pypy/trunk/src/pypy/translator/test/test_annrpython.py Wed Nov 24 20:48:54 2004
@@ -344,7 +344,7 @@
s = a.build_types(snippet.is_and_knowntype, [bool])
#a.simplify()
#a.translator.view()
- self.assert_(isinstance(s, annmodel.SomeNone))
+ self.assertEquals(s, a.bookkeeper.immutablevalue(None))
def test_isinstance_and_knowntype_data(self):
a = RPythonAnnotator()
More information about the Pypy-commit
mailing list