diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ra_hir_def/src/adt.rs | 6 | ||||
-rw-r--r-- | crates/ra_hir_ty/src/lower.rs | 11 |
2 files changed, 7 insertions, 10 deletions
diff --git a/crates/ra_hir_def/src/adt.rs b/crates/ra_hir_def/src/adt.rs index 4582c7314..985f409e8 100644 --- a/crates/ra_hir_def/src/adt.rs +++ b/crates/ra_hir_def/src/adt.rs | |||
@@ -147,12 +147,6 @@ impl VariantData { | |||
147 | VariantData::Unit => StructKind::Unit, | 147 | VariantData::Unit => StructKind::Unit, |
148 | } | 148 | } |
149 | } | 149 | } |
150 | pub fn is_unit(&self) -> bool { | ||
151 | match self { | ||
152 | VariantData::Unit => true, | ||
153 | _ => false, | ||
154 | } | ||
155 | } | ||
156 | } | 150 | } |
157 | 151 | ||
158 | impl HasChildSource for VariantId { | 152 | impl HasChildSource for VariantId { |
diff --git a/crates/ra_hir_ty/src/lower.rs b/crates/ra_hir_ty/src/lower.rs index 6a2aded02..a5b2734a0 100644 --- a/crates/ra_hir_ty/src/lower.rs +++ b/crates/ra_hir_ty/src/lower.rs | |||
@@ -9,6 +9,7 @@ use std::iter; | |||
9 | use std::sync::Arc; | 9 | use std::sync::Arc; |
10 | 10 | ||
11 | use hir_def::{ | 11 | use hir_def::{ |
12 | adt::StructKind, | ||
12 | builtin_type::BuiltinType, | 13 | builtin_type::BuiltinType, |
13 | generics::{TypeParamProvenance, WherePredicate, WherePredicateTarget}, | 14 | generics::{TypeParamProvenance, WherePredicate, WherePredicateTarget}, |
14 | path::{GenericArg, Path, PathSegment, PathSegments}, | 15 | path::{GenericArg, Path, PathSegment, PathSegments}, |
@@ -805,8 +806,9 @@ fn fn_sig_for_struct_constructor(db: &impl HirDatabase, def: StructId) -> PolyFn | |||
805 | /// Build the type of a tuple struct constructor. | 806 | /// Build the type of a tuple struct constructor. |
806 | fn type_for_struct_constructor(db: &impl HirDatabase, def: StructId) -> Binders<Ty> { | 807 | fn type_for_struct_constructor(db: &impl HirDatabase, def: StructId) -> Binders<Ty> { |
807 | let struct_data = db.struct_data(def.into()); | 808 | let struct_data = db.struct_data(def.into()); |
808 | if struct_data.variant_data.is_unit() { | 809 | match struct_data.variant_data.kind() { |
809 | return type_for_adt(db, def.into()); // Unit struct | 810 | StructKind::Unit => return type_for_adt(db, def.into()), |
811 | StructKind::Tuple | StructKind::Record => (), | ||
810 | } | 812 | } |
811 | let generics = generics(db, def.into()); | 813 | let generics = generics(db, def.into()); |
812 | let substs = Substs::bound_vars(&generics); | 814 | let substs = Substs::bound_vars(&generics); |
@@ -830,8 +832,9 @@ fn fn_sig_for_enum_variant_constructor(db: &impl HirDatabase, def: EnumVariantId | |||
830 | fn type_for_enum_variant_constructor(db: &impl HirDatabase, def: EnumVariantId) -> Binders<Ty> { | 832 | fn type_for_enum_variant_constructor(db: &impl HirDatabase, def: EnumVariantId) -> Binders<Ty> { |
831 | let enum_data = db.enum_data(def.parent); | 833 | let enum_data = db.enum_data(def.parent); |
832 | let var_data = &enum_data.variants[def.local_id].variant_data; | 834 | let var_data = &enum_data.variants[def.local_id].variant_data; |
833 | if var_data.is_unit() { | 835 | match var_data.kind() { |
834 | return type_for_adt(db, def.parent.into()); // Unit variant | 836 | StructKind::Unit => return type_for_adt(db, def.parent.into()), |
837 | StructKind::Record | StructKind::Tuple => (), | ||
835 | } | 838 | } |
836 | let generics = generics(db, def.parent.into()); | 839 | let generics = generics(db, def.parent.into()); |
837 | let substs = Substs::bound_vars(&generics); | 840 | let substs = Substs::bound_vars(&generics); |