mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-22 19:39:58 +00:00
[syntax-errors] Irrefutable case pattern before final case (#16905)
Summary -- Detects irrefutable `match` cases before the final case using a modified version of the existing `Pattern::is_irrefutable` method from the AST crate. The modified method helps to retrieve a more precise diagnostic range to match what Python 3.13 shows in the REPL. Test Plan -- New inline tests, as well as some updates to existing tests that had irrefutable patterns before the last block.
This commit is contained in:
parent
58350ec93b
commit
5697d21fca
17 changed files with 1420 additions and 594 deletions
|
@ -1060,10 +1060,10 @@ impl RecoveryContextKind {
|
|||
None => {
|
||||
// test_ok match_sequence_pattern_terminator
|
||||
// match subject:
|
||||
// case a: ...
|
||||
// case a if x: ...
|
||||
// case a, b: ...
|
||||
// case a, b if x: ...
|
||||
// case a: ...
|
||||
matches!(p.current_token_kind(), TokenKind::Colon | TokenKind::If)
|
||||
.then_some(ListTerminatorKind::Regular)
|
||||
}
|
||||
|
|
|
@ -488,13 +488,16 @@ impl Parser<'_> {
|
|||
// test_ok match_as_pattern_soft_keyword
|
||||
// match foo:
|
||||
// case case: ...
|
||||
// match foo:
|
||||
// case match: ...
|
||||
// match foo:
|
||||
// case type: ...
|
||||
let ident = self.parse_identifier();
|
||||
|
||||
// test_ok match_as_pattern
|
||||
// match foo:
|
||||
// case foo_bar: ...
|
||||
// match foo:
|
||||
// case _: ...
|
||||
Pattern::MatchAs(ast::PatternMatchAs {
|
||||
range: ident.range,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue