Fixme for union fields
This commit is contained in:
parent
5fd68b5929
commit
1455663ea1
@ -263,6 +263,8 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
|
||||
.clone()
|
||||
.subst(&a_ty.parameters)
|
||||
}),
|
||||
// FIXME:
|
||||
TypeCtor::Adt(Adt::Union(_)) => None,
|
||||
_ => None,
|
||||
},
|
||||
_ => None,
|
||||
|
@ -561,6 +561,7 @@ pub(crate) fn field_types_query(
|
||||
) -> Arc<ArenaMap<LocalStructFieldId, Ty>> {
|
||||
let (resolver, var_data) = match variant_id {
|
||||
VariantId::StructId(it) => (it.resolver(db), db.struct_data(it).variant_data.clone()),
|
||||
VariantId::UnionId(it) => (it.resolver(db), db.union_data(it).variant_data.clone()),
|
||||
VariantId::EnumVariantId(it) => (
|
||||
it.parent.resolver(db),
|
||||
db.enum_data(it.parent).variants[it.local_id].variant_data.clone(),
|
||||
|
@ -150,6 +150,11 @@ impl HasChildSource for VariantId {
|
||||
src.map(|map| map[it.local_id].kind())
|
||||
}
|
||||
VariantId::StructId(it) => it.source(db).map(|it| it.kind()),
|
||||
VariantId::UnionId(it) => it.source(db).map(|it| {
|
||||
it.record_field_def_list()
|
||||
.map(ast::StructKind::Record)
|
||||
.unwrap_or(ast::StructKind::Unit)
|
||||
}),
|
||||
};
|
||||
let mut trace = Trace::new_for_map();
|
||||
lower_struct(&mut trace, &src.value);
|
||||
|
@ -431,6 +431,7 @@ impl_froms!(
|
||||
pub enum VariantId {
|
||||
EnumVariantId(EnumVariantId),
|
||||
StructId(StructId),
|
||||
UnionId(UnionId),
|
||||
}
|
||||
impl_froms!(VariantId: EnumVariantId, StructId);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user