Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #142390 - cjgillot:mir-liveness, r=davidtwco
Perform unused assignment and unused variables lints on MIR. Rebase of https://github.com/rust-lang/rust/pull/101500 Fixes https://github.com/rust-lang/rust/issues/51003. The first commit moves detection of uninhabited types from the current liveness pass to MIR building. In order to keep the same level of diagnostics, I had to instrument MIR a little more: - keep for which original local a guard local is created; - store in the `VarBindingForm` the list of introducer places and whether this was a shorthand pattern. I am not very proud of the handling of self-assignments. The proposed scheme is in two parts: first detect probable self-assignments, by pattern matching on MIR, and second treat them specially during dataflow analysis. I welcome ideas. Please review carefully the changes in tests. There are many small changes to behaviour, and I'm not sure all of them are desirable.
bors 10 months ago
parent d35e059 · parent 1b8d475 · commit 0bbcc15
-rw-r--r--crates/ide-db/src/imports/merge_imports.rs2
-rw-r--r--crates/test-fixture/src/lib.rs2
2 files changed, 4 insertions, 0 deletions
diff --git a/crates/ide-db/src/imports/merge_imports.rs b/crates/ide-db/src/imports/merge_imports.rs
index 4e779a7d85..635ed7368c 100644
--- a/crates/ide-db/src/imports/merge_imports.rs
+++ b/crates/ide-db/src/imports/merge_imports.rs
@@ -405,6 +405,8 @@ fn recursive_normalize(use_tree: &ast::UseTree, style: NormalizationStyle) -> Op
} else {
ted::replace_with_many(subtree.syntax(), elements);
}
+ // Silence unused assignment warning on `modified`.
+ let _ = modified;
modified = true;
} else {
modified |= recursive_normalize(&subtree, NormalizationStyle::Default).is_some();
diff --git a/crates/test-fixture/src/lib.rs b/crates/test-fixture/src/lib.rs
index 7574d12c0c..a4549794db 100644
--- a/crates/test-fixture/src/lib.rs
+++ b/crates/test-fixture/src/lib.rs
@@ -383,6 +383,8 @@ impl ChangeFixture {
}
}
+ let _ = file_id;
+
let root = match current_source_root_kind {
SourceRootKind::Local => SourceRoot::new_local(mem::take(&mut file_set)),
SourceRootKind::Library => SourceRoot::new_library(mem::take(&mut file_set)),