mirror of
https://github.com/astral-sh/ruff.git
synced 2025-11-25 06:13:01 +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
|
|
@ -0,0 +1,12 @@
|
|||
match x:
|
||||
case var: ... # capture pattern
|
||||
case 2: ...
|
||||
match x:
|
||||
case _: ...
|
||||
case 2: ... # wildcard pattern
|
||||
match x:
|
||||
case var1 as var2: ... # as pattern with irrefutable left-hand side
|
||||
case 2: ...
|
||||
match x:
|
||||
case enum.variant | var: ... # or pattern with irrefutable part
|
||||
case 2: ...
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
match x:
|
||||
case 2: ...
|
||||
case var: ...
|
||||
match x:
|
||||
case 2: ...
|
||||
case _: ...
|
||||
match x:
|
||||
case var if True: ... # don't try to refute a guarded pattern
|
||||
case 2: ...
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
match foo:
|
||||
case foo_bar: ...
|
||||
match foo:
|
||||
case _: ...
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
match foo:
|
||||
case case: ...
|
||||
match foo:
|
||||
case match: ...
|
||||
match foo:
|
||||
case type: ...
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
match subject:
|
||||
case a: ...
|
||||
case a if x: ...
|
||||
case a, b: ...
|
||||
case a, b if x: ...
|
||||
case a: ...
|
||||
|
|
|
|||
|
|
@ -243,18 +243,21 @@ match x:
|
|||
match x:
|
||||
case a:
|
||||
...
|
||||
match x:
|
||||
case a as b:
|
||||
...
|
||||
match x:
|
||||
case 1 | 2 as two:
|
||||
...
|
||||
case 1 + 3j as sum:
|
||||
...
|
||||
case a.b as ab:
|
||||
...
|
||||
case _:
|
||||
...
|
||||
case _ as x:
|
||||
...
|
||||
match x:
|
||||
case _:
|
||||
...
|
||||
|
||||
# PatternMatchSequence
|
||||
match x:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue