aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def/src/diagnostics.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_def/src/diagnostics.rs')
-rw-r--r--crates/hir_def/src/diagnostics.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/crates/hir_def/src/diagnostics.rs b/crates/hir_def/src/diagnostics.rs
index 001b3c5db..c9c08b01f 100644
--- a/crates/hir_def/src/diagnostics.rs
+++ b/crates/hir_def/src/diagnostics.rs
@@ -7,6 +7,9 @@ use syntax::{ast, AstPtr, SyntaxNodePtr};
7 7
8use hir_expand::{HirFileId, InFile}; 8use hir_expand::{HirFileId, InFile};
9 9
10// Diagnostic: unresolved-module
11//
12// This diagnostic is triggered if rust-analyzer is unable to discover referred module.
10#[derive(Debug)] 13#[derive(Debug)]
11pub struct UnresolvedModule { 14pub struct UnresolvedModule {
12 pub file: HirFileId, 15 pub file: HirFileId,
@@ -29,6 +32,9 @@ impl Diagnostic for UnresolvedModule {
29 } 32 }
30} 33}
31 34
35// Diagnostic: unresolved-extern-crate
36//
37// This diagnostic is triggered if rust-analyzer is unable to discover referred extern crate.
32#[derive(Debug)] 38#[derive(Debug)]
33pub struct UnresolvedExternCrate { 39pub struct UnresolvedExternCrate {
34 pub file: HirFileId, 40 pub file: HirFileId,
@@ -50,6 +56,9 @@ impl Diagnostic for UnresolvedExternCrate {
50 } 56 }
51} 57}
52 58
59// Diagnostic: unresolved-import
60//
61// This diagnostic is triggered if rust-analyzer is unable to discover imported module.
53#[derive(Debug)] 62#[derive(Debug)]
54pub struct UnresolvedImport { 63pub struct UnresolvedImport {
55 pub file: HirFileId, 64 pub file: HirFileId,
@@ -77,3 +86,28 @@ impl Diagnostic for UnresolvedImport {
77 true 86 true
78 } 87 }
79} 88}
89
90// Diagnostic: unconfigured-code
91//
92// This diagnostic is shown for code with inactive `#[cfg]` attributes.
93#[derive(Debug)]
94pub struct InactiveCode {
95 pub file: HirFileId,
96 pub node: SyntaxNodePtr,
97}
98
99impl Diagnostic for InactiveCode {
100 fn code(&self) -> DiagnosticCode {
101 DiagnosticCode("inactive-code")
102 }
103 fn message(&self) -> String {
104 // FIXME: say *why* it is configured out
105 "code is inactive due to #[cfg] directives".to_string()
106 }
107 fn display_source(&self) -> InFile<SyntaxNodePtr> {
108 InFile::new(self.file, self.node.clone())
109 }
110 fn as_any(&self) -> &(dyn Any + Send + 'static) {
111 self
112 }
113}