[pypy-commit] pypy py3.5: Give correct error message for unicode array initializers and remove confusing special case

rlamy pypy.commits at gmail.com
Fri Nov 11 14:13:04 EST 2016


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: py3.5
Changeset: r88325:8dd2ae08247a
Date: 2016-11-11 19:12 +0000
http://bitbucket.org/pypy/pypy/changeset/8dd2ae08247a/

Log:	Give correct error message for unicode array initializers and remove
	confusing special case

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
@@ -41,6 +41,18 @@
 
     if len(__args__.arguments_w) > 0:
         w_initializer = __args__.arguments_w[0]
+        if tc != 'u':
+            if space.isinstance_w(w_initializer, space.w_unicode):
+                raise oefmt(
+                    space.w_TypeError,
+                    "cannot use a str to initialize an array with "
+                    "typecode '%s'", tc)
+            elif (isinstance(w_initializer, W_ArrayBase)
+                    and w_initializer.typecode == 'u'):
+                raise oefmt(
+                    space.w_TypeError,
+                    "cannot use a unicode array to initialize an array with "
+                    "typecode '%s'", tc)
         if isinstance(w_initializer, W_ArrayBase):
             a.extend(w_initializer, True)
         elif space.type(w_initializer) is space.w_list:
@@ -719,11 +731,7 @@
                     except OperationError as e:
                         if e.async(space):
                             raise
-                        if space.isinstance_w(w_item, space.w_unicode):
-                            msg = ("cannot use a str to initialize an array"
-                                   " with typecode '" + mytype.typecode + "'")
-                        else:
-                            msg = "array item must be " + mytype.unwrap[:-2]
+                        msg = "array item must be " + mytype.unwrap[:-2]
                         raise OperationError(space.w_TypeError, space.wrap(msg))
                 else:
                     raise


More information about the pypy-commit mailing list