diff options
Diffstat (limited to 'crates/hir/src/lib.rs')
-rw-r--r-- | crates/hir/src/lib.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index b2731b62f..fc147ade3 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs | |||
@@ -86,8 +86,8 @@ use crate::{ | |||
86 | pub use crate::{ | 86 | pub use crate::{ |
87 | attrs::{HasAttrs, Namespace}, | 87 | attrs::{HasAttrs, Namespace}, |
88 | diagnostics::{ | 88 | diagnostics::{ |
89 | AnyDiagnostic, BreakOutsideOfLoop, InactiveCode, InternalBailedOut, MacroError, | 89 | AnyDiagnostic, BreakOutsideOfLoop, InactiveCode, IncorrectCase, InternalBailedOut, |
90 | MismatchedArgCount, MissingFields, MissingMatchArms, MissingOkOrSomeInTailExpr, | 90 | MacroError, MismatchedArgCount, MissingFields, MissingMatchArms, MissingOkOrSomeInTailExpr, |
91 | MissingUnsafe, NoSuchField, RemoveThisSemicolon, ReplaceFilterMapNextWithFindMap, | 91 | MissingUnsafe, NoSuchField, RemoveThisSemicolon, ReplaceFilterMapNextWithFindMap, |
92 | UnimplementedBuiltinMacro, UnresolvedExternCrate, UnresolvedImport, UnresolvedMacroCall, | 92 | UnimplementedBuiltinMacro, UnresolvedExternCrate, UnresolvedImport, UnresolvedMacroCall, |
93 | UnresolvedModule, UnresolvedProcMacro, | 93 | UnresolvedModule, UnresolvedProcMacro, |
@@ -340,7 +340,7 @@ impl ModuleDef { | |||
340 | } | 340 | } |
341 | } | 341 | } |
342 | 342 | ||
343 | pub fn diagnostics(self, db: &dyn HirDatabase, sink: &mut DiagnosticSink) { | 343 | pub fn diagnostics(self, db: &dyn HirDatabase) -> Vec<AnyDiagnostic> { |
344 | let id = match self { | 344 | let id = match self { |
345 | ModuleDef::Adt(it) => match it { | 345 | ModuleDef::Adt(it) => match it { |
346 | Adt::Struct(it) => it.id.into(), | 346 | Adt::Struct(it) => it.id.into(), |
@@ -353,17 +353,19 @@ impl ModuleDef { | |||
353 | ModuleDef::Module(it) => it.id.into(), | 353 | ModuleDef::Module(it) => it.id.into(), |
354 | ModuleDef::Const(it) => it.id.into(), | 354 | ModuleDef::Const(it) => it.id.into(), |
355 | ModuleDef::Static(it) => it.id.into(), | 355 | ModuleDef::Static(it) => it.id.into(), |
356 | _ => return, | 356 | _ => return Vec::new(), |
357 | }; | 357 | }; |
358 | 358 | ||
359 | let module = match self.module(db) { | 359 | let module = match self.module(db) { |
360 | Some(it) => it, | 360 | Some(it) => it, |
361 | None => return, | 361 | None => return Vec::new(), |
362 | }; | 362 | }; |
363 | 363 | ||
364 | let mut acc = Vec::new(); | ||
364 | for diag in hir_ty::diagnostics::validate_module_item(db, module.id.krate(), id) { | 365 | for diag in hir_ty::diagnostics::validate_module_item(db, module.id.krate(), id) { |
365 | sink.push(diag) | 366 | acc.push(diag.into()) |
366 | } | 367 | } |
368 | acc | ||
367 | } | 369 | } |
368 | } | 370 | } |
369 | 371 | ||
@@ -624,7 +626,7 @@ impl Module { | |||
624 | acc.extend(m.diagnostics(db, sink, internal_diagnostics)) | 626 | acc.extend(m.diagnostics(db, sink, internal_diagnostics)) |
625 | } | 627 | } |
626 | } | 628 | } |
627 | _ => decl.diagnostics(db, sink), | 629 | _ => acc.extend(decl.diagnostics(db)), |
628 | } | 630 | } |
629 | } | 631 | } |
630 | 632 | ||
@@ -1234,7 +1236,7 @@ impl Function { | |||
1234 | } | 1236 | } |
1235 | 1237 | ||
1236 | for diag in hir_ty::diagnostics::validate_module_item(db, krate, self.id.into()) { | 1238 | for diag in hir_ty::diagnostics::validate_module_item(db, krate, self.id.into()) { |
1237 | sink.push(diag) | 1239 | acc.push(diag.into()) |
1238 | } | 1240 | } |
1239 | acc | 1241 | acc |
1240 | } | 1242 | } |