Unnamed repository; edit this file 'description' to name the repository.
Fix unconfigured diagnostic being attached to the wrong file for modules
Lukas Wirth 2024-08-07
parent ffd28e6 · commit e3e31ce
-rw-r--r--crates/hir-def/src/nameres/collector.rs2
-rw-r--r--crates/ide-diagnostics/src/handlers/inactive_code.rs26
2 files changed, 26 insertions, 2 deletions
diff --git a/crates/hir-def/src/nameres/collector.rs b/crates/hir-def/src/nameres/collector.rs
index 483bffc4b2..d970dbac1c 100644
--- a/crates/hir-def/src/nameres/collector.rs
+++ b/crates/hir-def/src/nameres/collector.rs
@@ -2003,7 +2003,7 @@ impl ModCollector<'_, '_> {
Err(cfg) => {
self.emit_unconfigured_diagnostic(
self.tree_id,
- AttrOwner::TopLevel,
+ AttrOwner::ModItem(module_id.into()),
&cfg,
);
}
diff --git a/crates/ide-diagnostics/src/handlers/inactive_code.rs b/crates/ide-diagnostics/src/handlers/inactive_code.rs
index acff811696..1f8f805a1e 100644
--- a/crates/ide-diagnostics/src/handlers/inactive_code.rs
+++ b/crates/ide-diagnostics/src/handlers/inactive_code.rs
@@ -42,7 +42,10 @@ mod tests {
use crate::{tests::check_diagnostics_with_config, DiagnosticsConfig};
pub(crate) fn check(ra_fixture: &str) {
- let config = DiagnosticsConfig::test_sample();
+ let config = DiagnosticsConfig {
+ disabled: std::iter::once("unlinked-file".to_owned()).collect(),
+ ..DiagnosticsConfig::test_sample()
+ };
check_diagnostics_with_config(config, ra_fixture)
}
@@ -171,4 +174,25 @@ union FooBar {
"#,
);
}
+
+ #[test]
+ fn modules() {
+ check(
+ r#"
+//- /main.rs
+ #[cfg(outline)] mod outline;
+//^^^^^^^^^^^^^^^^^^^^^^^^^^^^ weak: code is inactive due to #[cfg] directives: outline is disabled
+
+ mod outline_inner;
+//^^^^^^^^^^^^^^^^^^ weak: code is inactive due to #[cfg] directives: outline_inner is disabled
+
+ #[cfg(inline)] mod inline {}
+//^^^^^^^^^^^^^^^^^^^^^^^^^^^^ weak: code is inactive due to #[cfg] directives: inline is disabled
+
+//- /outline_inner.rs
+#![cfg(outline_inner)]
+//- /outline.rs
+"#,
+ );
+ }
}