92520a9d4d
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>
17 lines
925 B
Rust
17 lines
925 B
Rust
//! 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
|
||
}
|