From 1e70fda69fcb4991eb60ed43e610f664ea1319e6 Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 14 Jun 2017 18:18:01 +1000 Subject: py/compile: Raise SyntaxError if positional args are given after */**. In CPython 3.4 this raises a SyntaxError. In CPython 3.5+ having a positional after * is allowed but uPy has the wrong semantics and passes the arguments in the incorrect order. To prevent incorrect use of a function going unnoticed it is important to raise the SyntaxError in uPy, until the behaviour is fixed to follow CPython 3.5+. --- tests/basics/python34.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tests/basics/python34.py') diff --git a/tests/basics/python34.py b/tests/basics/python34.py index a23f347d6..d5cc59ad6 100644 --- a/tests/basics/python34.py +++ b/tests/basics/python34.py @@ -20,6 +20,8 @@ def test_syntax(code): print("SyntaxError") test_syntax("f(*a, *b)") # can't have multiple * (in 3.5 we can) test_syntax("f(**a, **b)") # can't have multiple ** (in 3.5 we can) +test_syntax("f(*a, b)") # can't have positional after * +test_syntax("f(**a, b)") # can't have positional after ** test_syntax("() = []") # can't assign to empty tuple (in 3.6 we can) test_syntax("del ()") # can't delete empty tuple (in 3.6 we can) -- cgit v1.2.3