diff options
Diffstat (limited to 'Lib/test/test_syntax.py')
-rw-r--r-- | Lib/test/test_syntax.py | 42 |
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()) |