diff options
Diffstat (limited to 'crates/hir_ty/src/lower.rs')
-rw-r--r-- | crates/hir_ty/src/lower.rs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs index a5ab1ff70..b8b1400eb 100644 --- a/crates/hir_ty/src/lower.rs +++ b/crates/hir_ty/src/lower.rs | |||
@@ -1064,7 +1064,10 @@ fn fn_sig_for_fn(db: &dyn HirDatabase, def: FunctionId) -> PolyFnSig { | |||
1064 | fn type_for_fn(db: &dyn HirDatabase, def: FunctionId) -> Binders<Ty> { | 1064 | fn type_for_fn(db: &dyn HirDatabase, def: FunctionId) -> Binders<Ty> { |
1065 | let generics = generics(db.upcast(), def.into()); | 1065 | let generics = generics(db.upcast(), def.into()); |
1066 | let substs = Substs::bound_vars(&generics, DebruijnIndex::INNERMOST); | 1066 | let substs = Substs::bound_vars(&generics, DebruijnIndex::INNERMOST); |
1067 | Binders::new(substs.len(), TyKind::FnDef(def.into(), substs).intern(&Interner)) | 1067 | Binders::new( |
1068 | substs.len(), | ||
1069 | TyKind::FnDef(CallableDefId::FunctionId(def).to_chalk(db), substs).intern(&Interner), | ||
1070 | ) | ||
1068 | } | 1071 | } |
1069 | 1072 | ||
1070 | /// Build the declared type of a const. | 1073 | /// Build the declared type of a const. |
@@ -1107,7 +1110,10 @@ fn type_for_struct_constructor(db: &dyn HirDatabase, def: StructId) -> Binders<T | |||
1107 | } | 1110 | } |
1108 | let generics = generics(db.upcast(), def.into()); | 1111 | let generics = generics(db.upcast(), def.into()); |
1109 | let substs = Substs::bound_vars(&generics, DebruijnIndex::INNERMOST); | 1112 | let substs = Substs::bound_vars(&generics, DebruijnIndex::INNERMOST); |
1110 | Binders::new(substs.len(), TyKind::FnDef(def.into(), substs).intern(&Interner)) | 1113 | Binders::new( |
1114 | substs.len(), | ||
1115 | TyKind::FnDef(CallableDefId::StructId(def).to_chalk(db), substs).intern(&Interner), | ||
1116 | ) | ||
1111 | } | 1117 | } |
1112 | 1118 | ||
1113 | fn fn_sig_for_enum_variant_constructor(db: &dyn HirDatabase, def: EnumVariantId) -> PolyFnSig { | 1119 | fn fn_sig_for_enum_variant_constructor(db: &dyn HirDatabase, def: EnumVariantId) -> PolyFnSig { |
@@ -1132,7 +1138,10 @@ fn type_for_enum_variant_constructor(db: &dyn HirDatabase, def: EnumVariantId) - | |||
1132 | } | 1138 | } |
1133 | let generics = generics(db.upcast(), def.parent.into()); | 1139 | let generics = generics(db.upcast(), def.parent.into()); |
1134 | let substs = Substs::bound_vars(&generics, DebruijnIndex::INNERMOST); | 1140 | let substs = Substs::bound_vars(&generics, DebruijnIndex::INNERMOST); |
1135 | Binders::new(substs.len(), TyKind::FnDef(def.into(), substs).intern(&Interner)) | 1141 | Binders::new( |
1142 | substs.len(), | ||
1143 | TyKind::FnDef(CallableDefId::EnumVariantId(def).to_chalk(db), substs).intern(&Interner), | ||
1144 | ) | ||
1136 | } | 1145 | } |
1137 | 1146 | ||
1138 | fn type_for_adt(db: &dyn HirDatabase, adt: AdtId) -> Binders<Ty> { | 1147 | fn type_for_adt(db: &dyn HirDatabase, adt: AdtId) -> Binders<Ty> { |