summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2016-10-02 07:33:46 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2016-10-02 07:33:46 (GMT)
commit7344285c1919e5ade8016a83a3ee02fd637a030d (patch)
treef5ac9aea45f055c175d1c462f63eb4fb341830b0 /Lib
parent8f0f2056499847999fffa7af7a8872500a191203 (diff)
downloadcpython-7344285c1919e5ade8016a83a3ee02fd637a030d.zip
cpython-7344285c1919e5ade8016a83a3ee02fd637a030d.tar.gz
cpython-7344285c1919e5ade8016a83a3ee02fd637a030d.tar.bz2
Issue #28257: Improved error message when pass a non-iterable as
a var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/importlib/_bootstrap_external.py3
-rw-r--r--Lib/opcode.py5
-rw-r--r--Lib/test/test_extcall.py10
3 files changed, 15 insertions, 3 deletions
diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py
index bfb89da..5cb58ab 100644
--- a/Lib/importlib/_bootstrap_external.py
+++ b/Lib/importlib/_bootstrap_external.py
@@ -238,6 +238,7 @@ _code_type = type(_write_atomic.__code__)
# #27985)
# Python 3.6b1 3376 (simplify CALL_FUNCTIONs & BUILD_MAP_UNPACK_WITH_CALL)
# Python 3.6b1 3377 (set __class__ cell from type.__new__ #23722)
+# Python 3.6b2 3378 (add BUILD_TUPLE_UNPACK_WITH_CALL #28257)
#
# MAGIC must change whenever the bytecode emitted by the compiler may no
# longer be understood by older implementations of the eval loop (usually
@@ -246,7 +247,7 @@ _code_type = type(_write_atomic.__code__)
# Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array
# in PC/launcher.c must also be updated.
-MAGIC_NUMBER = (3377).to_bytes(2, 'little') + b'\r\n'
+MAGIC_NUMBER = (3378).to_bytes(2, 'little') + b'\r\n'
_RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c
_PYCACHE = '__pycache__'
diff --git a/Lib/opcode.py b/Lib/opcode.py
index be26475..b5916b6 100644
--- a/Lib/opcode.py
+++ b/Lib/opcode.py
@@ -196,8 +196,6 @@ def_op('MAP_ADD', 147)
def_op('LOAD_CLASSDEREF', 148)
hasfree.append(148)
-jrel_op('SETUP_ASYNC_WITH', 154)
-
def_op('EXTENDED_ARG', 144)
EXTENDED_ARG = 144
@@ -207,8 +205,11 @@ def_op('BUILD_MAP_UNPACK_WITH_CALL', 151)
def_op('BUILD_TUPLE_UNPACK', 152)
def_op('BUILD_SET_UNPACK', 153)
+jrel_op('SETUP_ASYNC_WITH', 154)
+
def_op('FORMAT_VALUE', 155)
def_op('BUILD_CONST_KEY_MAP', 156)
def_op('BUILD_STRING', 157)
+def_op('BUILD_TUPLE_UNPACK_WITH_CALL', 158)
del def_op, name_op, jrel_op, jabs_op
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py
index 5eea379..96f3ede 100644
--- a/Lib/test/test_extcall.py
+++ b/Lib/test/test_extcall.py
@@ -233,6 +233,16 @@ What about willful misconduct?
...
TypeError: h() argument after * must be an iterable, not function
+ >>> h(1, *h)
+ Traceback (most recent call last):
+ ...
+ TypeError: h() argument after * must be an iterable, not function
+
+ >>> h(*[1], *h)
+ Traceback (most recent call last):
+ ...
+ TypeError: h() argument after * must be an iterable, not function
+
>>> dir(*h)
Traceback (most recent call last):
...