diff options
Diffstat (limited to 'crates/ide/src/diagnostics.rs')
-rw-r--r-- | crates/ide/src/diagnostics.rs | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/crates/ide/src/diagnostics.rs b/crates/ide/src/diagnostics.rs index 634e6a043..f7965326d 100644 --- a/crates/ide/src/diagnostics.rs +++ b/crates/ide/src/diagnostics.rs | |||
@@ -8,6 +8,7 @@ mod unresolved_module; | |||
8 | mod unresolved_extern_crate; | 8 | mod unresolved_extern_crate; |
9 | mod unresolved_import; | 9 | mod unresolved_import; |
10 | mod unresolved_macro_call; | 10 | mod unresolved_macro_call; |
11 | mod unresolved_proc_macro; | ||
11 | mod inactive_code; | 12 | mod inactive_code; |
12 | mod missing_fields; | 13 | mod missing_fields; |
13 | 14 | ||
@@ -68,6 +69,11 @@ impl Diagnostic { | |||
68 | self | 69 | self |
69 | } | 70 | } |
70 | 71 | ||
72 | fn severity(mut self, severity: Severity) -> Diagnostic { | ||
73 | self.severity = severity; | ||
74 | self | ||
75 | } | ||
76 | |||
71 | fn error(range: TextRange, message: String) -> Self { | 77 | fn error(range: TextRange, message: String) -> Self { |
72 | Self { | 78 | Self { |
73 | message, | 79 | message, |
@@ -178,16 +184,6 @@ pub(crate) fn diagnostics( | |||
178 | .with_code(Some(d.code())), | 184 | .with_code(Some(d.code())), |
179 | ); | 185 | ); |
180 | }) | 186 | }) |
181 | .on::<hir::diagnostics::UnresolvedProcMacro, _>(|d| { | ||
182 | // Use more accurate position if available. | ||
183 | let display_range = d | ||
184 | .precise_location | ||
185 | .unwrap_or_else(|| sema.diagnostics_display_range(d.display_source()).range); | ||
186 | |||
187 | // FIXME: it would be nice to tell the user whether proc macros are currently disabled | ||
188 | res.borrow_mut() | ||
189 | .push(Diagnostic::hint(display_range, d.message()).with_code(Some(d.code()))); | ||
190 | }) | ||
191 | .on::<hir::diagnostics::UnimplementedBuiltinMacro, _>(|d| { | 187 | .on::<hir::diagnostics::UnimplementedBuiltinMacro, _>(|d| { |
192 | let display_range = sema.diagnostics_display_range(d.display_source()).range; | 188 | let display_range = sema.diagnostics_display_range(d.display_source()).range; |
193 | res.borrow_mut() | 189 | res.borrow_mut() |
@@ -231,6 +227,7 @@ pub(crate) fn diagnostics( | |||
231 | AnyDiagnostic::UnresolvedExternCrate(d) => unresolved_extern_crate::unresolved_extern_crate(&ctx, &d), | 227 | AnyDiagnostic::UnresolvedExternCrate(d) => unresolved_extern_crate::unresolved_extern_crate(&ctx, &d), |
232 | AnyDiagnostic::UnresolvedImport(d) => unresolved_import::unresolved_import(&ctx, &d), | 228 | AnyDiagnostic::UnresolvedImport(d) => unresolved_import::unresolved_import(&ctx, &d), |
233 | AnyDiagnostic::UnresolvedMacroCall(d) => unresolved_macro_call::unresolved_macro_call(&ctx, &d), | 229 | AnyDiagnostic::UnresolvedMacroCall(d) => unresolved_macro_call::unresolved_macro_call(&ctx, &d), |
230 | AnyDiagnostic::UnresolvedProcMacro(d) => unresolved_proc_macro::unresolved_proc_macro(&ctx, &d), | ||
234 | AnyDiagnostic::MissingFields(d) => missing_fields::missing_fields(&ctx, &d), | 231 | AnyDiagnostic::MissingFields(d) => missing_fields::missing_fields(&ctx, &d), |
235 | 232 | ||
236 | AnyDiagnostic::InactiveCode(d) => match inactive_code::inactive_code(&ctx, &d) { | 233 | AnyDiagnostic::InactiveCode(d) => match inactive_code::inactive_code(&ctx, &d) { |