mirror of
https://github.com/astral-sh/ruff
synced 2026-01-21 05:20:49 -05:00
Expand NamedExpr range to include full range of parenthesized value (#6632)
## Summary
Given:
```python
if (
x
:=
( # 4
y # 5
) # 6
):
pass
```
It turns out the parser ended the range of the `NamedExpr` at the end of
`y`, rather than the end of the parenthesis that encloses `y`. This just
seems like a bug -- the range should be from the start of the name on
the left, to the end of the parenthesized node on the right.
## Test Plan
`cargo test`
This commit is contained in:
@@ -1335,15 +1335,19 @@ NamedExpressionTest: ast::Expr = {
|
||||
Test<"all">,
|
||||
}
|
||||
|
||||
NamedExpressionName: ast::Expr = {
|
||||
<location:@L> <id:Identifier> <end_location:@R> => ast::Expr::Name(
|
||||
ast::ExprName { id: id.into(), ctx: ast::ExprContext::Store, range: (location..end_location).into() },
|
||||
),
|
||||
}
|
||||
|
||||
NamedExpression: ast::Expr = {
|
||||
<location:@L> <id:Identifier> <end_location:@R> ":=" <value:Test<"all">> => {
|
||||
<location:@L> <target:NamedExpressionName> ":=" <value:Test<"all">> <end_location:@R> => {
|
||||
ast::Expr::NamedExpr(
|
||||
ast::ExprNamedExpr {
|
||||
target: Box::new(ast::Expr::Name(
|
||||
ast::ExprName { id: id.into(), ctx: ast::ExprContext::Store, range: (location..end_location).into() },
|
||||
)),
|
||||
range: (location..value.end()).into(),
|
||||
target: Box::new(target),
|
||||
value: Box::new(value),
|
||||
range: (location..end_location).into(),
|
||||
}
|
||||
)
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user