Closed
Description
Feature or enhancement
There's already a similar rule:
Line 1378 in 084e0f3
But, it has two problems:
- It does not work for cases like
as a.b
, becausea
matchesNAME
- It does not show rich error message, only a static one:
invalid pattern target
My proposed change:
| or_pattern 'as' a=expression {
RAISE_SYNTAX_ERROR_KNOWN_LOCATION(
a, "cannot use pattern target as %s", _PyPegen_get_expr_name(a)) }
Why is it safe?
Here's how the parent rule is defined:
as_pattern[pattern_ty]:
| pattern=or_pattern 'as' target=pattern_capture_target {
_PyAST_MatchAs(pattern, target->v.Name.id, EXTRA) }
| invalid_as_pattern
So, if pattern=or_pattern 'as' target=pattern_capture_target
with a valid 'as' NAME
is matched, we won't fall to the next invalid_
rule.
Proposed result:
>>> match 1:
... case x as a.b: ...
...
File "<python-input-0>", line 2
case x as a.b: ...
^^^
SyntaxError: cannot use pattern target as attribute
Refs #123440