aboutsummaryrefslogtreecommitdiff
path: root/crates/hir/src/lib.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2021-06-13 19:09:03 +0100
committerAleksey Kladov <[email protected]>2021-06-13 19:09:03 +0100
commitfc30c5ccbeba2a102922da497809dd3f812544c4 (patch)
treeed3067580e998f04e94bfb93508fe3f12c851c3b /crates/hir/src/lib.rs
parent2ad78924621420cb323efdeb3d875ca3f47d940f (diff)
internal: refactor incorrect case diagnostics
Diffstat (limited to 'crates/hir/src/lib.rs')
-rw-r--r--crates/hir/src/lib.rs18
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::{
86pub use crate::{ 86pub 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 }