mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
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: <https://github.com/rust-lang/rust/issues/128845>
This commit is contained in:
parent
fac7753802
commit
92520a9d4d
16
tests/ui/parser/suggest-remove-compount-assign-let-ice.rs
Normal file
16
tests/ui/parser/suggest-remove-compount-assign-let-ice.rs
Normal file
@ -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
|
||||
}
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user