[pypy-commit] pypy default: fix error message to not contain the internal name 'bigint'
cfbolz
pypy.commits at gmail.com
Fri Aug 4 06:22:40 EDT 2017
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch:
Changeset: r92070:76adf2cfc536
Date: 2017-08-04 12:22 +0200
http://bitbucket.org/pypy/pypy/changeset/76adf2cfc536/
Log: fix error message to not contain the internal name 'bigint'
diff --git a/pypy/module/array/interp_array.py b/pypy/module/array/interp_array.py
--- a/pypy/module/array/interp_array.py
+++ b/pypy/module/array/interp_array.py
@@ -769,7 +769,9 @@
class TypeCode(object):
def __init__(self, itemtype, unwrap, canoverflow=False, signed=False,
- method='__int__'):
+ method='__int__', errorname=None):
+ if errorname is None:
+ errorname = unwrap[:-2]
self.itemtype = itemtype
self.bytes = rffi.sizeof(itemtype)
self.arraytype = lltype.Array(itemtype, hints={'nolength': True})
@@ -779,6 +781,7 @@
self.canoverflow = canoverflow
self.w_class = None
self.method = method
+ self.errorname = errorname
def _freeze_(self):
# hint for the annotator: track individual constant instances
@@ -802,8 +805,8 @@
'i': TypeCode(rffi.INT, 'int_w', True, True),
'I': _UINTTypeCode,
'l': TypeCode(rffi.LONG, 'int_w', True, True),
- 'L': TypeCode(rffi.ULONG, 'bigint_w'), # Overflow handled by
- # rbigint.touint() which
+ 'L': TypeCode(rffi.ULONG, 'bigint_w', # Overflow handled by
+ errorname="integer"), # rbigint.touint() which
# corresponds to the
# C-type unsigned long
'f': TypeCode(lltype.SingleFloat, 'float_w', method='__float__'),
@@ -881,7 +884,7 @@
item = unwrap(space.call_method(w_item, mytype.method))
except OperationError:
raise oefmt(space.w_TypeError,
- "array item must be " + mytype.unwrap[:-2])
+ "array item must be " + mytype.errorname)
else:
raise
if mytype.unwrap == 'bigint_w':
diff --git a/pypy/module/array/test/test_array.py b/pypy/module/array/test/test_array.py
--- a/pypy/module/array/test/test_array.py
+++ b/pypy/module/array/test/test_array.py
@@ -162,6 +162,11 @@
raises(OverflowError, a.append, -1)
raises(OverflowError, a.append, 2 ** (8 * b))
+ def test_errormessage(self):
+ a = self.array("L", [1, 2, 3])
+ excinfo = raises(TypeError, "a[0] = 'abc'")
+ assert str(excinfo.value) == "array item must be integer"
+
def test_fromstring(self):
import sys
More information about the pypy-commit
mailing list