mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-03 18:28:56 +00:00
Expect indented case block instead of match stmt (#11033)
## Summary This PR adds a new `Clause::Case` and uses it to parse the body of a `case` block. Earlier, it was using `Match` which would give an incorrect error message like: ``` | 1 | match subject: 2 | case 1: 3 | case 2: ... | ^^^^ Syntax Error: Expected an indented block after `match` statement | ``` ## Test Plan Add test case and update the snapshot.
This commit is contained in:
parent
06c248a126
commit
9bb23b0a38
3 changed files with 95 additions and 3 deletions
|
@ -0,0 +1,84 @@
|
|||
---
|
||||
source: crates/ruff_python_parser/tests/fixtures.rs
|
||||
input_file: crates/ruff_python_parser/resources/inline/err/case_expect_indented_block.py
|
||||
---
|
||||
## AST
|
||||
|
||||
```
|
||||
Module(
|
||||
ModModule {
|
||||
range: 0..43,
|
||||
body: [
|
||||
Match(
|
||||
StmtMatch {
|
||||
range: 0..42,
|
||||
subject: Name(
|
||||
ExprName {
|
||||
range: 6..13,
|
||||
id: "subject",
|
||||
ctx: Load,
|
||||
},
|
||||
),
|
||||
cases: [
|
||||
MatchCase {
|
||||
range: 19..26,
|
||||
pattern: MatchValue(
|
||||
PatternMatchValue {
|
||||
range: 24..25,
|
||||
value: NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 24..25,
|
||||
value: Int(
|
||||
1,
|
||||
),
|
||||
},
|
||||
),
|
||||
},
|
||||
),
|
||||
guard: None,
|
||||
body: [],
|
||||
},
|
||||
MatchCase {
|
||||
range: 31..42,
|
||||
pattern: MatchValue(
|
||||
PatternMatchValue {
|
||||
range: 36..37,
|
||||
value: NumberLiteral(
|
||||
ExprNumberLiteral {
|
||||
range: 36..37,
|
||||
value: Int(
|
||||
2,
|
||||
),
|
||||
},
|
||||
),
|
||||
},
|
||||
),
|
||||
guard: None,
|
||||
body: [
|
||||
Expr(
|
||||
StmtExpr {
|
||||
range: 39..42,
|
||||
value: EllipsisLiteral(
|
||||
ExprEllipsisLiteral {
|
||||
range: 39..42,
|
||||
},
|
||||
),
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
)
|
||||
```
|
||||
## Errors
|
||||
|
||||
|
|
||||
1 | match subject:
|
||||
2 | case 1:
|
||||
3 | case 2: ...
|
||||
| ^^^^ Syntax Error: Expected an indented block after `case` block
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue