rust-lang / rust-lang/rust-analyzer
Quick fix on an unsaved file can change the wrong lines
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 16.9k
- Forks
- 2.2k
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 72
Description
(Thank you for the excellent extension!)
rust-analyzer version: rust-analyzer version: 0.3.1285-standalone (45ec315e0 2022-11-11)
rustc version: rustc 1.64.0 (a55dd71d5 2022-09-19)
I have the following code:
let fix_left = match op.associativity() {
Associativity::Right => true,
_ => false,
};
let fix_right = match op.associativity() {
Associativity::Left => true,
_ => false,
};
There is an option to apply a quick fix to each block. I select it:
...and I successfully get the following code:
let fix_left = matches!(op.associativity(), Associativity::Right);
let fix_right = match op.associativity() {
Associativity::Left => true,
_ => false,
};
But — then I go to apply the quick fix for the second block — and it mangles the lines, removing the let fix_right text:
let fix_left = matches!(op.associativity(), Associativity::Right) _ => false,
};
Saving the file between the two actions resolves the issue.
Thanks!
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the report in an unsaved Rust file by applying the two quick fixes consecutively, then repeat after saving between actions. Trace the quick-fix application path and compare the resulting text; the fix is complete when the second quick fix preserves the existing lines without mangling or removing surrounding text.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100