summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_syntax.py
diff options
context:
space:
mode:
authorMatthew Rahtz <matthew.rahtz@gmail.com>2022-03-26 16:55:35 (GMT)
committerGitHub <noreply@github.com>2022-03-26 16:55:35 (GMT)
commite8e737bcf6d22927caebc30c5d57ac4634063219 (patch)
tree6c0d4d51e8216f02fa0e6874aa4d78e20dd9397a /Lib/test/test_syntax.py
parent26cca8067bf5306e372c0e90036d832c5021fd90 (diff)
downloadcpython-e8e737bcf6d22927caebc30c5d57ac4634063219.zip
cpython-e8e737bcf6d22927caebc30c5d57ac4634063219.tar.gz
cpython-e8e737bcf6d22927caebc30c5d57ac4634063219.tar.bz2
bpo-43224: Implement PEP 646 grammar changes (GH-31018)
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Diffstat (limited to 'Lib/test/test_syntax.py')
-rw-r--r--Lib/test/test_syntax.py143
1 files changed, 143 insertions, 0 deletions
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index 5f16a15..3e79ebf 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -1622,6 +1622,149 @@ Corner-cases that used to crash:
... ...
Traceback (most recent call last):
SyntaxError: positional patterns follow keyword patterns
+
+Uses of the star operator which should fail:
+
+A[:*b]
+
+ >>> A[:*b]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> A[:(*b)]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: cannot use starred expression here
+ >>> A[:*b] = 1
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> del A[:*b]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+
+A[*b:]
+
+ >>> A[*b:]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> A[(*b):]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: cannot use starred expression here
+ >>> A[*b:] = 1
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> del A[*b:]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+
+A[*b:*b]
+
+ >>> A[*b:*b]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> A[(*b:*b)]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> A[*b:*b] = 1
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> del A[*b:*b]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+
+A[*(1:2)]
+
+ >>> A[*(1:2)]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> A[*(1:2)] = 1
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> del A[*(1:2)]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+
+A[*:] and A[:*]
+
+ >>> A[*:]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> A[:*]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+
+A[*]
+
+ >>> A[*]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+
+A[**]
+
+ >>> A[**]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+
+A[**b]
+
+ >>> A[**b]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> A[**b] = 1
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> del A[**b]
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+
+def f(x: *b)
+
+ >>> def f6(x: *b): pass
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> def f7(x: *b = 1): pass
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+
+**kwargs: *a
+
+ >>> def f8(**kwargs: *a): pass
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+
+x: *b
+
+ >>> x: *b
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
+ >>> x: *b = 1
+ Traceback (most recent call last):
+ ...
+ SyntaxError: invalid syntax
"""
import re