Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/data/adt.rs')
-rw-r--r--crates/hir-def/src/data/adt.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/crates/hir-def/src/data/adt.rs b/crates/hir-def/src/data/adt.rs
index 93a64dc6ec..942fafe329 100644
--- a/crates/hir-def/src/data/adt.rs
+++ b/crates/hir-def/src/data/adt.rs
@@ -298,7 +298,7 @@ impl EnumData {
Arc::new(EnumData {
name: enum_.name.clone(),
- variants: loc.container.def_map(db)[loc.container.local_id].scope.enums[&e]
+ variants: loc.container.def_map(db).enum_definitions[&e]
.iter()
.map(|&id| (id, item_tree[id.lookup(db).id.value].name.clone()))
.collect(),
@@ -332,7 +332,7 @@ impl EnumVariantData {
pub(crate) fn enum_variant_data_with_diagnostics_query(
db: &dyn DefDatabase,
e: EnumVariantId,
- ) -> (Arc<EnumVariantData>, Arc<[DefDiagnostic]>) {
+ ) -> (Arc<EnumVariantData>, Option<Arc<Box<[DefDiagnostic]>>>) {
let loc = e.lookup(db);
let krate = loc.container.krate;
let item_tree = loc.id.item_tree(db);
@@ -355,7 +355,11 @@ impl EnumVariantData {
name: variant.name.clone(),
variant_data: Arc::new(var_data),
}),
- field_diagnostics.into(),
+ if field_diagnostics.is_empty() {
+ None
+ } else {
+ Some(Arc::new(field_diagnostics.into_boxed_slice()))
+ },
)
}
}