Author: Armin Rigo <[email protected]>
Branch:
Changeset: r67204:ae1fe34facf8
Date: 2013-10-08 15:23 +0200
http://bitbucket.org/pypy/pypy/changeset/ae1fe34facf8/
Log: Test and fix for the error message
diff --git a/rpython/rtyper/rstr.py b/rpython/rtyper/rstr.py
--- a/rpython/rtyper/rstr.py
+++ b/rpython/rtyper/rstr.py
@@ -187,13 +187,15 @@
if hop.nb_args > 2:
v_start = hop.inputarg(Signed, arg=2)
if not hop.args_s[2].nonneg:
- raise TyperError("str.find() start must be proven
non-negative")
+ raise TyperError("str.%s() start must be proven non-negative"
+ % (reverse and 'rfind' or 'find',))
else:
v_start = hop.inputconst(Signed, 0)
if hop.nb_args > 3:
v_end = hop.inputarg(Signed, arg=3)
if not hop.args_s[3].nonneg:
- raise TyperError("str.find() end must be proven non-negative")
+ raise TyperError("str.%s() end must be proven non-negative"
+ % (reverse and 'rfind' or 'find',))
else:
v_end = hop.gendirectcall(self.ll.ll_strlen, v_str)
hop.exception_cannot_occur()
diff --git a/rpython/rtyper/test/test_rstr.py b/rpython/rtyper/test/test_rstr.py
--- a/rpython/rtyper/test/test_rstr.py
+++ b/rpython/rtyper/test/test_rstr.py
@@ -416,6 +416,14 @@
res = self.interpret(f, [i])
assert res == expected
+ def test_rfind_error_message(self):
+ const = self.const
+ def f(i):
+ return const("abc").rfind(const(''), i)
+ e = py.test.raises(TyperError, self.interpret, f, [-5])
+ assert str(e.value).startswith(
+ 'str.rfind() start must be proven non-negative')
+
def test_find_char(self):
const = self.const
def fn(ch):
@@ -1134,4 +1142,4 @@
array = lltype.malloc(TP, 12, flavor='raw')
self.interpret(f, [array, 4])
assert list(array) == list('abc'*4)
- lltype.free(array, flavor='raw')
\ No newline at end of file
+ lltype.free(array, flavor='raw')
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit