incorrect case diagnostics for type aliases

This commit is contained in:
davidsemakula 2024-02-02 13:16:49 +03:00
parent 0ffc088439
commit 080d223dd4
3 changed files with 76 additions and 15 deletions

View file

@ -565,13 +565,7 @@ impl Module {
}
for item in t.items(db) {
let def: DefWithBody = match item {
AssocItem::Function(it) => it.into(),
AssocItem::Const(it) => it.into(),
AssocItem::TypeAlias(_) => continue,
};
def.diagnostics(db, acc);
item.diagnostics(db, acc);
}
acc.extend(def.diagnostics(db))
@ -741,13 +735,7 @@ impl Module {
}
for &item in &db.impl_data(impl_def.id).items {
let def: DefWithBody = match AssocItem::from(item) {
AssocItem::Function(it) => it.into(),
AssocItem::Const(it) => it.into(),
AssocItem::TypeAlias(_) => continue,
};
def.diagnostics(db, acc);
AssocItem::from(item).diagnostics(db, acc);
}
}
}
@ -2662,6 +2650,22 @@ impl AssocItem {
_ => None,
}
}
pub fn diagnostics(self, db: &dyn HirDatabase, acc: &mut Vec<AnyDiagnostic>) {
match self {
AssocItem::Function(func) => {
DefWithBody::from(func).diagnostics(db, acc);
}
AssocItem::Const(const_) => {
DefWithBody::from(const_).diagnostics(db, acc);
}
AssocItem::TypeAlias(type_alias) => {
for diag in hir_ty::diagnostics::incorrect_case(db, type_alias.id.into()) {
acc.push(diag.into());
}
}
}
}
}
impl HasVisibility for AssocItem {