summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_syntax.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_syntax.py')
-rw-r--r--Lib/test/test_syntax.py42
1 files changed, 41 insertions, 1 deletions
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index 406ea21..132e2b8 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -1932,7 +1932,31 @@ Corner-cases that used to crash:
... case 42 as 1+2+4:
... ...
Traceback (most recent call last):
- SyntaxError: invalid pattern target
+ SyntaxError: cannot use expression as pattern target
+
+ >>> match ...:
+ ... case 42 as a.b:
+ ... ...
+ Traceback (most recent call last):
+ SyntaxError: cannot use attribute as pattern target
+
+ >>> match ...:
+ ... case 42 as (a, b):
+ ... ...
+ Traceback (most recent call last):
+ SyntaxError: cannot use tuple as pattern target
+
+ >>> match ...:
+ ... case 42 as (a + 1):
+ ... ...
+ Traceback (most recent call last):
+ SyntaxError: cannot use expression as pattern target
+
+ >>> match ...:
+ ... case (32 as x) | (42 as a()):
+ ... ...
+ Traceback (most recent call last):
+ SyntaxError: cannot use function call as pattern target
>>> match ...:
... case Foo(z=1, y=2, x):
@@ -2817,6 +2841,22 @@ while 1:
end_offset=22 + len("obj.attr"),
)
+ def test_match_stmt_invalid_as_expr(self):
+ self._check_error(
+ textwrap.dedent(
+ """
+ match 1:
+ case x as obj.attr:
+ ...
+ """
+ ),
+ errtext="cannot use attribute as pattern target",
+ lineno=3,
+ end_lineno=3,
+ offset=15,
+ end_offset=15 + len("obj.attr"),
+ )
+
def load_tests(loader, tests, pattern):
tests.addTest(doctest.DocTestSuite())