mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-03 18:28:56 +00:00
Modify parsing of raise with cause when exception is absent (#15049)
When confronted with `raise from exc` the parser will now create a `StmtRaise` that has `None` for the exception and `exc` for the cause. Before, the parser created a `StmtRaise` with `from` for the exception, no cause, and a spurious expression `exc` afterwards.
This commit is contained in:
parent
3bb0dac235
commit
c1eaf6ff72
3 changed files with 93 additions and 21 deletions
|
@ -0,0 +1,57 @@
|
|||
---
|
||||
source: crates/ruff_python_parser/tests/fixtures.rs
|
||||
input_file: crates/ruff_python_parser/resources/inline/err/raise_stmt_from_without_exc.py
|
||||
---
|
||||
## AST
|
||||
|
||||
```
|
||||
Module(
|
||||
ModModule {
|
||||
range: 0..31,
|
||||
body: [
|
||||
Raise(
|
||||
StmtRaise {
|
||||
range: 0..14,
|
||||
exc: None,
|
||||
cause: Some(
|
||||
Name(
|
||||
ExprName {
|
||||
range: 11..14,
|
||||
id: Name("exc"),
|
||||
ctx: Load,
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
),
|
||||
Raise(
|
||||
StmtRaise {
|
||||
range: 15..30,
|
||||
exc: None,
|
||||
cause: Some(
|
||||
NoneLiteral(
|
||||
ExprNoneLiteral {
|
||||
range: 26..30,
|
||||
},
|
||||
),
|
||||
),
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
)
|
||||
```
|
||||
## Errors
|
||||
|
||||
|
|
||||
1 | raise from exc
|
||||
| ^^^^ Syntax Error: Exception missing in `raise` statement with cause
|
||||
2 | raise from None
|
||||
|
|
||||
|
||||
|
||||
|
|
||||
1 | raise from exc
|
||||
2 | raise from None
|
||||
| ^^^^ Syntax Error: Exception missing in `raise` statement with cause
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue