diff options
author | sobolevn <mail@sobolevn.me> | 2024-09-02 11:11:44 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-02 11:11:44 (GMT) |
commit | 23f159ae711d84177e8ce34cd9a6c8a762de64ac (patch) | |
tree | ce5c8a0a5fb9bf9073f10a10825ea8f48139fe58 /Parser | |
parent | c3ed775899eedd47d37f8f1840345b108920e400 (diff) | |
download | cpython-23f159ae711d84177e8ce34cd9a6c8a762de64ac.zip cpython-23f159ae711d84177e8ce34cd9a6c8a762de64ac.tar.gz cpython-23f159ae711d84177e8ce34cd9a6c8a762de64ac.tar.bz2 |
gh-123562: Improve `SyntaxError` message for `case ... as a.b` (#123563)
Diffstat (limited to 'Parser')
-rw-r--r-- | Parser/parser.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/Parser/parser.c b/Parser/parser.c index 3c40395..e5567d0 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -24005,7 +24005,7 @@ invalid_case_block_rule(Parser *p) return _res; } -// invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' !NAME expression +// invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' expression static void * invalid_as_pattern_rule(Parser *p) { @@ -24048,12 +24048,12 @@ invalid_as_pattern_rule(Parser *p) D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\"")); } - { // or_pattern 'as' !NAME expression + { // or_pattern 'as' expression if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression")); + D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression")); Token * _keyword; expr_ty a; pattern_ty or_pattern_var; @@ -24062,13 +24062,11 @@ invalid_as_pattern_rule(Parser *p) && (_keyword = _PyPegen_expect_token(p, 666)) // token='as' && - _PyPegen_lookahead_with_name(0, _PyPegen_name_token, p) - && (a = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression")); - _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "invalid pattern target" ); + D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as pattern target" , _PyPegen_get_expr_name ( a ) ); if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; p->level--; @@ -24078,7 +24076,7 @@ invalid_as_pattern_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' !NAME expression")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' expression")); } _res = NULL; done: |