[pypy-svn] r43298 - in pypy/branch/pypy-string-formatting/annotation: . test
arigo at codespeak.net
arigo at codespeak.net
Sat May 12 16:20:58 CEST 2007
Author: arigo
Date: Sat May 12 16:20:56 2007
New Revision: 43298
Modified:
pypy/branch/pypy-string-formatting/annotation/builtin.py
pypy/branch/pypy-string-formatting/annotation/test/test_annrpython.py
Log:
Annotation: int(mybool) and int(mynonnegint) should return
a *nonneg* integer.
Modified: pypy/branch/pypy-string-formatting/annotation/builtin.py
==============================================================================
--- pypy/branch/pypy-string-formatting/annotation/builtin.py (original)
+++ pypy/branch/pypy-string-formatting/annotation/builtin.py Sat May 12 16:20:56 2007
@@ -91,7 +91,8 @@
args_s = [s_obj, s_base]
else:
args_s = [s_obj]
- return constpropagate(int, args_s, SomeInteger())
+ nonneg = isinstance(s_obj, SomeInteger) and s_obj.nonneg
+ return constpropagate(int, args_s, SomeInteger(nonneg=nonneg))
def builtin_float(s_obj):
return constpropagate(float, [s_obj], SomeFloat())
Modified: pypy/branch/pypy-string-formatting/annotation/test/test_annrpython.py
==============================================================================
--- pypy/branch/pypy-string-formatting/annotation/test/test_annrpython.py (original)
+++ pypy/branch/pypy-string-formatting/annotation/test/test_annrpython.py Sat May 12 16:20:56 2007
@@ -1589,6 +1589,15 @@
s = a.build_types(f, [int, str])
assert s.knowntype == int
+ def test_int_nonneg(self):
+ def f(x, y):
+ assert x >= 0
+ return int(x) + int(y == 3)
+ a = self.RPythonAnnotator()
+ s = a.build_types(f, [int, int])
+ assert isinstance(s, annmodel.SomeInteger)
+ assert s.nonneg
+
def test_listitem_merge_asymmetry_bug(self):
class K:
pass
More information about the pypy-svn
mailing list