diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2022-09-24 03:07:05 +0200 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2022-09-24 03:07:05 +0200 |
| commit | 0231d19f3fba410896d52fa345fe1967c2ea8f55 (patch) | |
| tree | 01e75e48461d5ff8204f7d75403faad73f56bcb4 | |
| parent | 7ec9ffa3251504da334a29f0e4331378bc26c54a (diff) | |
| download | rust-0231d19f3fba410896d52fa345fe1967c2ea8f55.tar.gz rust-0231d19f3fba410896d52fa345fe1967c2ea8f55.zip | |
Fix diagnostics not working in enum variant bodies
| -rw-r--r-- | crates/hir/src/lib.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index 9fcaac85bce..e1f69001e80 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -50,7 +50,7 @@ use hir_def::{ resolver::{HasResolver, Resolver}, src::HasSource as _, 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, TraitId, TypeAliasId, TypeOrConstParamId, TypeParamId, UnionId, }; @@ -348,7 +348,10 @@ impl ModuleDef { ModuleDef::Module(it) => it.id.into(), ModuleDef::Const(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) { @@ -537,6 +540,12 @@ impl Module { } 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)), } } |
