-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[red-knot] Fix diagnostic range for non-iterable unpacking assignments (
#15994) ## Summary I noticed that the diagnostic range in specific unpacking assignments is wrong. For this example ```py a, b = 1 ``` we previously got (see first commit): ``` error: lint:not-iterable --> /src/mdtest_snippet.py:1:1 | 1 | a, b = 1 | ^^^^ Object of type `Literal[1]` is not iterable | ``` and with this change, we get: ``` error: lint:not-iterable --> /src/mdtest_snippet.py:1:8 | 1 | a, b = 1 | ^ Object of type `Literal[1]` is not iterable | ``` ## Test Plan New snapshot tests.
- Loading branch information
Showing
5 changed files
with
115 additions
and
5 deletions.
There are no files selected for viewing
21 changes: 21 additions & 0 deletions
21
crates/red_knot_python_semantic/resources/mdtest/diagnostics/unpacking.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Unpacking | ||
|
||
<!-- snapshot-diagnostics --> | ||
|
||
## Right hand side not iterable | ||
|
||
```py | ||
a, b = 1 # error: [not-iterable] | ||
``` | ||
|
||
## Too many values to unpack | ||
|
||
```py | ||
a, b = (1, 2, 3) # error: [invalid-assignment] | ||
``` | ||
|
||
## Too few values to unpack | ||
|
||
```py | ||
a, b = (1,) # error: [invalid-assignment] | ||
``` |
28 changes: 28 additions & 0 deletions
28
...c/resources/mdtest/snapshots/unpacking.md_-_Unpacking_-_Right_hand_side_not_iterable.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
--- | ||
source: crates/red_knot_test/src/lib.rs | ||
expression: snapshot | ||
--- | ||
--- | ||
mdtest name: unpacking.md - Unpacking - Right hand side not iterable | ||
mdtest path: crates/red_knot_python_semantic/resources/mdtest/diagnostics/unpacking.md | ||
--- | ||
|
||
# Python source files | ||
|
||
## mdtest_snippet.py | ||
|
||
``` | ||
1 | a, b = 1 # error: [not-iterable] | ||
``` | ||
|
||
# Diagnostics | ||
|
||
``` | ||
error: lint:not-iterable | ||
--> /src/mdtest_snippet.py:1:8 | ||
| | ||
1 | a, b = 1 # error: [not-iterable] | ||
| ^ Object of type `Literal[1]` is not iterable | ||
| | ||
``` |
28 changes: 28 additions & 0 deletions
28
...antic/resources/mdtest/snapshots/unpacking.md_-_Unpacking_-_Too_few_values_to_unpack.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
--- | ||
source: crates/red_knot_test/src/lib.rs | ||
expression: snapshot | ||
--- | ||
--- | ||
mdtest name: unpacking.md - Unpacking - Too few values to unpack | ||
mdtest path: crates/red_knot_python_semantic/resources/mdtest/diagnostics/unpacking.md | ||
--- | ||
|
||
# Python source files | ||
|
||
## mdtest_snippet.py | ||
|
||
``` | ||
1 | a, b = (1,) # error: [invalid-assignment] | ||
``` | ||
|
||
# Diagnostics | ||
|
||
``` | ||
error: lint:invalid-assignment | ||
--> /src/mdtest_snippet.py:1:1 | ||
| | ||
1 | a, b = (1,) # error: [invalid-assignment] | ||
| ^^^^ Not enough values to unpack (expected 2, got 1) | ||
| | ||
``` |
28 changes: 28 additions & 0 deletions
28
...ntic/resources/mdtest/snapshots/unpacking.md_-_Unpacking_-_Too_many_values_to_unpack.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
--- | ||
source: crates/red_knot_test/src/lib.rs | ||
expression: snapshot | ||
--- | ||
--- | ||
mdtest name: unpacking.md - Unpacking - Too many values to unpack | ||
mdtest path: crates/red_knot_python_semantic/resources/mdtest/diagnostics/unpacking.md | ||
--- | ||
|
||
# Python source files | ||
|
||
## mdtest_snippet.py | ||
|
||
``` | ||
1 | a, b = (1, 2, 3) # error: [invalid-assignment] | ||
``` | ||
|
||
# Diagnostics | ||
|
||
``` | ||
error: lint:invalid-assignment | ||
--> /src/mdtest_snippet.py:1:1 | ||
| | ||
1 | a, b = (1, 2, 3) # error: [invalid-assignment] | ||
| ^^^^ Too many values to unpack (expected 2, got 3) | ||
| | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters