-
Notifications
You must be signed in to change notification settings - Fork 12.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: add regression test for #128845
For codepoint boundary assertion triggered by a let stmt compound assignment removal suggestion when encountering recovered multi-byte compound ops. Issue: <#128845>
- Loading branch information
Showing
2 changed files
with
42 additions
and
0 deletions.
There are no files selected for viewing
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,16 @@ | ||
//! Previously we would try to issue a suggestion for `let x <op>= 1`, i.e. a compound assignment | ||
//! within a `let` binding, to remove the `<op>`. The suggestion code unfortunately incorrectly | ||
//! assumed that the `<op>` is an exactly-1-byte ASCII character, but this assumption is incorrect | ||
//! because we also recover Unicode-confusables like `➖=` as `-=`. In this example, the suggestion | ||
//! code used a `+ BytePos(1)` to calculate the span of the `<op>` codepoint that looks like `-` but | ||
//! the mult-byte Unicode look-alike would cause the suggested removal span to be inside a | ||
//! multi-byte codepoint boundary, triggering a codepoint boundary assertion. | ||
//! | ||
//! issue: rust-lang/rust#128845 | ||
|
||
fn main() { | ||
// Adapted from #128845 but with irrelevant components removed and simplified. | ||
let x ➖= 1; | ||
//~^ ERROR unknown start of token: \u{2796} | ||
//~| ERROR: can't reassign to an uninitialized variable | ||
} |
26 changes: 26 additions & 0 deletions
26
tests/ui/parser/suggest-remove-compount-assign-let-ice.stderr
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,26 @@ | ||
error: unknown start of token: \u{2796} | ||
--> $DIR/suggest-remove-compount-assign-let-ice.rs:13:11 | ||
| | ||
LL | let x ➖= 1; | ||
| ^^ | ||
| | ||
help: Unicode character '➖' (Heavy Minus Sign) looks like '-' (Minus/Hyphen), but it is not | ||
| | ||
LL | let x -= 1; | ||
| ~ | ||
|
||
error: can't reassign to an uninitialized variable | ||
--> $DIR/suggest-remove-compount-assign-let-ice.rs:13:11 | ||
| | ||
LL | let x ➖= 1; | ||
| ^^^ | ||
| | ||
= help: if you meant to overwrite, remove the `let` binding | ||
help: initialize the variable | ||
| | ||
LL - let x ➖= 1; | ||
LL + let x = 1; | ||
| | ||
|
||
error: aborting due to 2 previous errors | ||
|