mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-30 13:51:16 +00:00
[ty] Use full range for assignment definitions (#19211)
## Summary Fix the `full_range` function for (annotated) assignment definition kinds. ## Test Plan Update snapshot tests
This commit is contained in:
parent
fda188953f
commit
a8f2c26143
4 changed files with 17 additions and 5 deletions
|
@ -30,7 +30,7 @@ error[invalid-assignment]: Reassignment of `Final` symbol `MY_CONSTANT` is not a
|
||||||
1 | from typing import Final
|
1 | from typing import Final
|
||||||
2 |
|
2 |
|
||||||
3 | MY_CONSTANT: Final[int] = 1
|
3 | MY_CONSTANT: Final[int] = 1
|
||||||
| ----------- Original definition
|
| --------------------------- Original definition
|
||||||
4 |
|
4 |
|
||||||
5 | # more code
|
5 | # more code
|
||||||
6 |
|
6 |
|
||||||
|
|
|
@ -82,7 +82,7 @@ info: Type variable defined here
|
||||||
2 | from typing_extensions import reveal_type
|
2 | from typing_extensions import reveal_type
|
||||||
3 |
|
3 |
|
||||||
4 | T = TypeVar("T", bound=int)
|
4 | T = TypeVar("T", bound=int)
|
||||||
| ^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
5 |
|
5 |
|
||||||
6 | def f(x: T) -> T:
|
6 | def f(x: T) -> T:
|
||||||
|
|
|
|
||||||
|
|
|
@ -97,7 +97,7 @@ info: Type variable defined here
|
||||||
2 | from typing_extensions import reveal_type
|
2 | from typing_extensions import reveal_type
|
||||||
3 |
|
3 |
|
||||||
4 | T = TypeVar("T", int, None)
|
4 | T = TypeVar("T", int, None)
|
||||||
| ^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
5 |
|
5 |
|
||||||
6 | def f(x: T) -> T:
|
6 | def f(x: T) -> T:
|
||||||
|
|
|
|
||||||
|
|
|
@ -677,8 +677,20 @@ impl DefinitionKind<'_> {
|
||||||
DefinitionKind::Class(class) => class.node(module).range(),
|
DefinitionKind::Class(class) => class.node(module).range(),
|
||||||
DefinitionKind::TypeAlias(type_alias) => type_alias.node(module).range(),
|
DefinitionKind::TypeAlias(type_alias) => type_alias.node(module).range(),
|
||||||
DefinitionKind::NamedExpression(named) => named.node(module).range(),
|
DefinitionKind::NamedExpression(named) => named.node(module).range(),
|
||||||
DefinitionKind::Assignment(assignment) => assignment.target.node(module).range(),
|
DefinitionKind::Assignment(assign) => {
|
||||||
DefinitionKind::AnnotatedAssignment(assign) => assign.target.node(module).range(),
|
let target_range = assign.target.node(module).range();
|
||||||
|
let value_range = assign.value.node(module).range();
|
||||||
|
target_range.cover(value_range)
|
||||||
|
}
|
||||||
|
DefinitionKind::AnnotatedAssignment(assign) => {
|
||||||
|
let target_range = assign.target.node(module).range();
|
||||||
|
if let Some(ref value) = assign.value {
|
||||||
|
let value_range = value.node(module).range();
|
||||||
|
target_range.cover(value_range)
|
||||||
|
} else {
|
||||||
|
target_range
|
||||||
|
}
|
||||||
|
}
|
||||||
DefinitionKind::AugmentedAssignment(aug_assign) => aug_assign.node(module).range(),
|
DefinitionKind::AugmentedAssignment(aug_assign) => aug_assign.node(module).range(),
|
||||||
DefinitionKind::For(for_stmt) => for_stmt.target.node(module).range(),
|
DefinitionKind::For(for_stmt) => for_stmt.target.node(module).range(),
|
||||||
DefinitionKind::Comprehension(comp) => comp.target(module).range(),
|
DefinitionKind::Comprehension(comp) => comp.target(module).range(),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue