Add fix for incorrect case diagnostic

This commit is contained in:
Igor Aleksanov 2020-10-03 17:34:52 +03:00
parent 17f1026c46
commit e24e22f288
8 changed files with 112 additions and 30 deletions

View file

@ -257,34 +257,22 @@ impl ModuleDef {
}
pub fn diagnostics(self, db: &dyn HirDatabase, sink: &mut DiagnosticSink) {
match self {
let id = match self {
ModuleDef::Adt(it) => match it {
Adt::Struct(it) => {
hir_ty::diagnostics::validate_module_item(db, it.id.into(), sink)
}
Adt::Enum(it) => hir_ty::diagnostics::validate_module_item(db, it.id.into(), sink),
Adt::Union(it) => hir_ty::diagnostics::validate_module_item(db, it.id.into(), sink),
Adt::Struct(it) => it.id.into(),
Adt::Enum(it) => it.id.into(),
Adt::Union(it) => it.id.into(),
},
ModuleDef::Trait(it) => {
hir_ty::diagnostics::validate_module_item(db, it.id.into(), sink)
}
ModuleDef::Function(it) => {
hir_ty::diagnostics::validate_module_item(db, it.id.into(), sink)
}
ModuleDef::TypeAlias(it) => {
hir_ty::diagnostics::validate_module_item(db, it.id.into(), sink)
}
ModuleDef::Module(it) => {
hir_ty::diagnostics::validate_module_item(db, it.id.into(), sink)
}
ModuleDef::Const(it) => {
hir_ty::diagnostics::validate_module_item(db, it.id.into(), sink)
}
ModuleDef::Static(it) => {
hir_ty::diagnostics::validate_module_item(db, it.id.into(), sink)
}
ModuleDef::Trait(it) => it.id.into(),
ModuleDef::Function(it) => it.id.into(),
ModuleDef::TypeAlias(it) => it.id.into(),
ModuleDef::Module(it) => it.id.into(),
ModuleDef::Const(it) => it.id.into(),
ModuleDef::Static(it) => it.id.into(),
_ => return,
}
};
hir_ty::diagnostics::validate_module_item(db, id, sink)
}
}
@ -389,6 +377,8 @@ impl Module {
let crate_def_map = db.crate_def_map(self.id.krate);
crate_def_map.add_diagnostics(db.upcast(), self.id.local_id, sink);
for decl in self.declarations(db) {
decl.diagnostics(db, sink);
match decl {
crate::ModuleDef::Function(f) => f.diagnostics(db, sink),
crate::ModuleDef::Module(m) => {

View file

@ -2,5 +2,6 @@
pub use hir_def::diagnostics::UnresolvedModule;
pub use hir_expand::diagnostics::{Diagnostic, DiagnosticSink, DiagnosticSinkBuilder};
pub use hir_ty::diagnostics::{
MismatchedArgCount, MissingFields, MissingMatchArms, MissingOkInTailExpr, NoSuchField,
IncorrectCase, MismatchedArgCount, MissingFields, MissingMatchArms, MissingOkInTailExpr,
NoSuchField,
};