[pypy-commit] pypy default: (fijal, cfbolz) improve error reporting
fijal
noreply at buildbot.pypy.org
Tue Jan 17 13:48:46 CET 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch:
Changeset: r51397:865005356c2f
Date: 2012-01-17 14:48 +0200
http://bitbucket.org/pypy/pypy/changeset/865005356c2f/
Log: (fijal, cfbolz) improve error reporting
diff --git a/pypy/objspace/std/test/test_unicodeobject.py b/pypy/objspace/std/test/test_unicodeobject.py
--- a/pypy/objspace/std/test/test_unicodeobject.py
+++ b/pypy/objspace/std/test/test_unicodeobject.py
@@ -64,6 +64,12 @@
check(', '.join([u'a']), u'a')
check(', '.join(['a', u'b']), u'a, b')
check(u', '.join(['a', 'b']), u'a, b')
+ try:
+ u''.join([u'a', 2, 3])
+ except TypeError, e:
+ assert 'sequence item 1' in str(e)
+ else:
+ raise Exception("DID NOT RAISE")
if sys.version_info >= (2,3):
def test_contains_ex(self):
diff --git a/pypy/objspace/std/unicodeobject.py b/pypy/objspace/std/unicodeobject.py
--- a/pypy/objspace/std/unicodeobject.py
+++ b/pypy/objspace/std/unicodeobject.py
@@ -218,19 +218,19 @@
self = w_self._value
prealloc_size = len(self) * (size - 1)
for i in range(size):
- prealloc_size += len(space.unicode_w(list_w[i]))
+ try:
+ prealloc_size += len(space.unicode_w(list_w[i]))
+ except OperationError, e:
+ if not e.match(space, space.w_TypeError):
+ raise
+ raise operationerrfmt(space.w_TypeError,
+ "sequence item %d: expected string or Unicode", i)
sb = UnicodeBuilder(prealloc_size)
for i in range(size):
if self and i != 0:
sb.append(self)
w_s = list_w[i]
- try:
- sb.append(space.unicode_w(w_s))
- except OperationError, e:
- if not e.match(space, space.w_TypeError):
- raise
- raise operationerrfmt(space.w_TypeError,
- "sequence item %d: expected string or Unicode", i)
+ sb.append(space.unicode_w(w_s))
return space.wrap(sb.build())
def hash__Unicode(space, w_uni):
More information about the pypy-commit
mailing list