[pypy-svn] r48526 - in pypy/branch/unicode-objspace/pypy/annotation: . test

fijal at codespeak.net fijal at codespeak.net
Sat Nov 10 19:57:15 CET 2007


Author: fijal
Date: Sat Nov 10 19:57:15 2007
New Revision: 48526

Modified:
   pypy/branch/unicode-objspace/pypy/annotation/binaryop.py
   pypy/branch/unicode-objspace/pypy/annotation/test/test_annrpython.py
Log:
The case str[:-1] is also fine.


Modified: pypy/branch/unicode-objspace/pypy/annotation/binaryop.py
==============================================================================
--- pypy/branch/unicode-objspace/pypy/annotation/binaryop.py	(original)
+++ pypy/branch/unicode-objspace/pypy/annotation/binaryop.py	Sat Nov 10 19:57:15 2007
@@ -602,7 +602,8 @@
 def check_negative_slice(s_slice):
     if isinstance(s_slice.start, SomeInteger) and not s_slice.start.nonneg:
         raise TypeError("%s not proven to have negative start" % s_slice)
-    if isinstance(s_slice.stop, SomeInteger) and not s_slice.stop.nonneg:
+    if isinstance(s_slice.stop, SomeInteger) and not s_slice.stop.nonneg and\
+           getattr(s_slice.stop, 'const', 0) != -1:
         raise TypeError("%s not proven to have negative stop" % s_slice)
 
 class __extend__(pairtype(SomeList, SomeSlice)):

Modified: pypy/branch/unicode-objspace/pypy/annotation/test/test_annrpython.py
==============================================================================
--- pypy/branch/unicode-objspace/pypy/annotation/test/test_annrpython.py	(original)
+++ pypy/branch/unicode-objspace/pypy/annotation/test/test_annrpython.py	Sat Nov 10 19:57:15 2007
@@ -2970,6 +2970,10 @@
         py.test.raises(TypeError, "a.build_types(f, [int, int])")
         a.build_types(f, [annmodel.SomeInteger(nonneg=True),
                           annmodel.SomeInteger(nonneg=True)])
+        def f(x):
+            return x[:-1]
+
+        a.build_types(f, [str])
 
 def g(n):
     return [0,1,2,n]



More information about the Pypy-commit mailing list