-
Notifications
You must be signed in to change notification settings - Fork 2.7k
fix(cargo-fix): dont apply same suggestion twice #13728
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
4542746 to
8d69122
Compare
tests/testsuite/fix.rs
Outdated
| assert_eq!( | ||
| p.read_file("src/lib.rs").matches("unsafe").count(), | ||
| 4, | ||
| "2 in lint name, 1 from original unsafe fn, 1 from newly-applied unsafe blocks" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can the message include the adjusted src/lib.rs? That would removes one step in the debugging process
8d69122 to
a025eaa
Compare
|
I am thinking of moving this logic into |
This assumes that if any of the machine applicable fixes in a diagnostic suggestion is a duplicate, we should see the entire suggestion as a duplicate.
a025eaa to
95edc06
Compare
| let mut already_applied = HashSet::new(); | ||
| let mut fix = CodeFix::new(code); | ||
| for suggestion in suggestions.iter().rev() { | ||
| // This assumes that if any of the machine applicable fixes in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Decided to duplicate the work in also rustfix. I didn't do it in CodeFix as it might require a longer lifetime bound than it was.
|
@bors r+ |
|
☀️ Test successful - checks-actions |
Update cargo 11 commits in 28e7b2bc0a812f90126be30f48a00a4ada990eaa..74fd5bc730b828dbc956335b229ac34ba47f7ef7 2024-04-05 19:31:01 +0000 to 2024-04-10 18:40:49 +0000 - chore: downgrade to openssl v1.1.1 (again) (rust-lang/cargo#13731) - fix(cargo-fix): dont apply same suggestion twice (rust-lang/cargo#13728) - refactor: make `resolve_with_previous` clearer (rust-lang/cargo#13727) - fix(package): Normalize paths in `Cargo.toml` (rust-lang/cargo#13729) - refactor: Track when MSRV is explicitly set, either way (rust-lang/cargo#13732) - [fix]:Build script not rerun when target rustflags change (rust-lang/cargo#13560) - feat(add): Stabilize MSRV-aware version req selection (rust-lang/cargo#13608) - Fix github fast path redirect. (rust-lang/cargo#13718) - Add release notes for 1.77.1 (rust-lang/cargo#13717) - doc(semver): remove mention of deprecated tool rust-semverver (rust-lang/cargo#13715) - chore: fix some typos (rust-lang/cargo#13714) r? ghost
This case also emits a insert-only suggestions (span start == end), adn doesn't rely on any lint behavior. See also * rust-lang#13728 * rust-lang#13027
This case also emits an insert-only suggestions (span start == end), adn doesn't rely on any lint behavior. See also * rust-lang#13728 * rust-lang#13027
This case also emits an insert-only suggestions (span start == end), and doesn't rely on any lint behavior. See also * rust-lang#13728 * rust-lang#13027
This case also emits an insert-only suggestions (span start == end), and doesn't rely on any lint behavior. See also * rust-lang#13728 * rust-lang#13027
What does this PR try to resolve?
This assumes that if any of the machine applicable fixes (
solution)in a diagnostic is a duplicate, then
cargo fixshould only applythe entire suggestion once.
How should we test and review this PR?
The first commit demonstrates the case in rust-lang/rust#123304.
One caveat is that
cargo fixwould showFixed .. (2 fixes)for duplicate suggestions,but actually it only applies the fix once and for all.
Additional information
r? ehuss