@@ -1727,19 +1727,19 @@ fn fn_sig_for_struct_constructor(db: &dyn HirDatabase, def: StructId) -> PolyFnS
17271727}
17281728
17291729/// Build the type of a tuple struct constructor.
1730- fn type_for_struct_constructor ( db : & dyn HirDatabase , def : StructId ) -> Binders < Ty > {
1730+ fn type_for_struct_constructor ( db : & dyn HirDatabase , def : StructId ) -> Option < Binders < Ty > > {
17311731 let struct_data = db. struct_data ( def) ;
17321732 match struct_data. variant_data . kind ( ) {
1733- StructKind :: Record => unreachable ! ( "callers check for valueness of variant" ) ,
1734- StructKind :: Unit => return type_for_adt ( db, def. into ( ) ) ,
1733+ StructKind :: Record => None ,
1734+ StructKind :: Unit => Some ( type_for_adt ( db, def. into ( ) ) ) ,
17351735 StructKind :: Tuple => {
17361736 let generics = generics ( db. upcast ( ) , AdtId :: from ( def) . into ( ) ) ;
17371737 let substs = generics. bound_vars_subst ( db, DebruijnIndex :: INNERMOST ) ;
1738- make_binders (
1738+ Some ( make_binders (
17391739 db,
17401740 & generics,
17411741 TyKind :: FnDef ( CallableDefId :: StructId ( def) . to_chalk ( db) , substs) . intern ( Interner ) ,
1742- )
1742+ ) )
17431743 }
17441744 }
17451745}
@@ -1757,20 +1757,23 @@ fn fn_sig_for_enum_variant_constructor(db: &dyn HirDatabase, def: EnumVariantId)
17571757}
17581758
17591759/// Build the type of a tuple enum variant constructor.
1760- fn type_for_enum_variant_constructor ( db : & dyn HirDatabase , def : EnumVariantId ) -> Binders < Ty > {
1760+ fn type_for_enum_variant_constructor (
1761+ db : & dyn HirDatabase ,
1762+ def : EnumVariantId ,
1763+ ) -> Option < Binders < Ty > > {
17611764 let e = def. lookup ( db. upcast ( ) ) . parent ;
17621765 match db. enum_variant_data ( def) . variant_data . kind ( ) {
1763- StructKind :: Record => unreachable ! ( "callers check for valueness of variant" ) ,
1764- StructKind :: Unit => return type_for_adt ( db, e. into ( ) ) ,
1766+ StructKind :: Record => None ,
1767+ StructKind :: Unit => Some ( type_for_adt ( db, e. into ( ) ) ) ,
17651768 StructKind :: Tuple => {
17661769 let generics = generics ( db. upcast ( ) , e. into ( ) ) ;
17671770 let substs = generics. bound_vars_subst ( db, DebruijnIndex :: INNERMOST ) ;
1768- make_binders (
1771+ Some ( make_binders (
17691772 db,
17701773 & generics,
17711774 TyKind :: FnDef ( CallableDefId :: EnumVariantId ( def) . to_chalk ( db) , substs)
17721775 . intern ( Interner ) ,
1773- )
1776+ ) )
17741777 }
17751778 }
17761779}
@@ -1889,14 +1892,14 @@ pub(crate) fn ty_recover(db: &dyn HirDatabase, _cycle: &Cycle, def: &TyDefId) ->
18891892 make_binders ( db, & generics, TyKind :: Error . intern ( Interner ) )
18901893}
18911894
1892- pub ( crate ) fn value_ty_query ( db : & dyn HirDatabase , def : ValueTyDefId ) -> Binders < Ty > {
1895+ pub ( crate ) fn value_ty_query ( db : & dyn HirDatabase , def : ValueTyDefId ) -> Option < Binders < Ty > > {
18931896 match def {
1894- ValueTyDefId :: FunctionId ( it) => type_for_fn ( db, it) ,
1897+ ValueTyDefId :: FunctionId ( it) => Some ( type_for_fn ( db, it) ) ,
18951898 ValueTyDefId :: StructId ( it) => type_for_struct_constructor ( db, it) ,
1896- ValueTyDefId :: UnionId ( it) => type_for_adt ( db, it. into ( ) ) ,
1899+ ValueTyDefId :: UnionId ( it) => Some ( type_for_adt ( db, it. into ( ) ) ) ,
18971900 ValueTyDefId :: EnumVariantId ( it) => type_for_enum_variant_constructor ( db, it) ,
1898- ValueTyDefId :: ConstId ( it) => type_for_const ( db, it) ,
1899- ValueTyDefId :: StaticId ( it) => type_for_static ( db, it) ,
1901+ ValueTyDefId :: ConstId ( it) => Some ( type_for_const ( db, it) ) ,
1902+ ValueTyDefId :: StaticId ( it) => Some ( type_for_static ( db, it) ) ,
19001903 }
19011904}
19021905
0 commit comments