Auto merge of #13288 - Veykril:variant-body, r=Veykril
Fix diagnostics not working in enum variant bodies cc https://github.com/rust-lang/rust-analyzer/pull/12966
This commit is contained in:
commit
fa38c10e7f
1 changed files with 11 additions and 2 deletions
|
@ -50,7 +50,7 @@ use hir_def::{
|
||||||
resolver::{HasResolver, Resolver},
|
resolver::{HasResolver, Resolver},
|
||||||
src::HasSource as _,
|
src::HasSource as _,
|
||||||
AdtId, AssocItemId, AssocItemLoc, AttrDefId, ConstId, ConstParamId, DefWithBodyId, EnumId,
|
AdtId, AssocItemId, AssocItemLoc, AttrDefId, ConstId, ConstParamId, DefWithBodyId, EnumId,
|
||||||
FunctionId, GenericDefId, HasModule, ImplId, ItemContainerId, LifetimeParamId,
|
EnumVariantId, FunctionId, GenericDefId, HasModule, ImplId, ItemContainerId, LifetimeParamId,
|
||||||
LocalEnumVariantId, LocalFieldId, Lookup, MacroExpander, MacroId, ModuleId, StaticId, StructId,
|
LocalEnumVariantId, LocalFieldId, Lookup, MacroExpander, MacroId, ModuleId, StaticId, StructId,
|
||||||
TraitId, TypeAliasId, TypeOrConstParamId, TypeParamId, UnionId,
|
TraitId, TypeAliasId, TypeOrConstParamId, TypeParamId, UnionId,
|
||||||
};
|
};
|
||||||
|
@ -348,7 +348,10 @@ impl ModuleDef {
|
||||||
ModuleDef::Module(it) => it.id.into(),
|
ModuleDef::Module(it) => it.id.into(),
|
||||||
ModuleDef::Const(it) => it.id.into(),
|
ModuleDef::Const(it) => it.id.into(),
|
||||||
ModuleDef::Static(it) => it.id.into(),
|
ModuleDef::Static(it) => it.id.into(),
|
||||||
_ => return Vec::new(),
|
ModuleDef::Variant(it) => {
|
||||||
|
EnumVariantId { parent: it.parent.into(), local_id: it.id }.into()
|
||||||
|
}
|
||||||
|
ModuleDef::BuiltinType(_) | ModuleDef::Macro(_) => return Vec::new(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let module = match self.module(db) {
|
let module = match self.module(db) {
|
||||||
|
@ -537,6 +540,12 @@ impl Module {
|
||||||
}
|
}
|
||||||
acc.extend(decl.diagnostics(db))
|
acc.extend(decl.diagnostics(db))
|
||||||
}
|
}
|
||||||
|
ModuleDef::Adt(Adt::Enum(e)) => {
|
||||||
|
for v in e.variants(db) {
|
||||||
|
acc.extend(ModuleDef::Variant(v).diagnostics(db));
|
||||||
|
}
|
||||||
|
acc.extend(decl.diagnostics(db))
|
||||||
|
}
|
||||||
_ => acc.extend(decl.diagnostics(db)),
|
_ => acc.extend(decl.diagnostics(db)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue