@@ -1708,6 +1708,7 @@ impl<'db> InferenceContext<'db> {
17081708 LifetimeElisionKind :: Infer ,
17091709 ) ;
17101710 let mut path_ctx = ctx. at_path ( path, node) ;
1711+ let interner = DbInterner :: conjure ( ) ;
17111712 let ( resolution, unresolved) = if value_ns {
17121713 let Some ( res) = path_ctx. resolve_path_in_value_ns ( HygieneId :: ROOT ) else {
17131714 return ( self . err_ty ( ) , None ) ;
@@ -1717,15 +1718,27 @@ impl<'db> InferenceContext<'db> {
17171718 ValueNs :: EnumVariantId ( var) => {
17181719 let substs = path_ctx. substs_from_path ( var. into ( ) , true , false ) ;
17191720 drop ( ctx) ;
1720- let ty = self . db . ty ( var. lookup ( self . db ) . parent . into ( ) ) ;
1721- let ty = self . insert_type_vars ( ty. substitute ( Interner , & substs) ) ;
1721+ let args: crate :: next_solver:: GenericArgs < ' _ > =
1722+ substs. to_nextsolver ( interner) ;
1723+ let ty = self
1724+ . db
1725+ . ty ( var. lookup ( self . db ) . parent . into ( ) )
1726+ . instantiate ( interner, args)
1727+ . to_chalk ( interner) ;
1728+ let ty = self . insert_type_vars ( ty) ;
17221729 return ( ty, Some ( var. into ( ) ) ) ;
17231730 }
17241731 ValueNs :: StructId ( strukt) => {
17251732 let substs = path_ctx. substs_from_path ( strukt. into ( ) , true , false ) ;
17261733 drop ( ctx) ;
1727- let ty = self . db . ty ( strukt. into ( ) ) ;
1728- let ty = self . insert_type_vars ( ty. substitute ( Interner , & substs) ) ;
1734+ let args: crate :: next_solver:: GenericArgs < ' _ > =
1735+ substs. to_nextsolver ( interner) ;
1736+ let ty = self
1737+ . db
1738+ . ty ( strukt. into ( ) )
1739+ . instantiate ( interner, args)
1740+ . to_chalk ( interner) ;
1741+ let ty = self . insert_type_vars ( ty) ;
17291742 return ( ty, Some ( strukt. into ( ) ) ) ;
17301743 }
17311744 ValueNs :: ImplSelf ( impl_id) => ( TypeNs :: SelfType ( impl_id) , None ) ,
@@ -1746,22 +1759,29 @@ impl<'db> InferenceContext<'db> {
17461759 TypeNs :: AdtId ( AdtId :: StructId ( strukt) ) => {
17471760 let substs = path_ctx. substs_from_path ( strukt. into ( ) , true , false ) ;
17481761 drop ( ctx) ;
1749- let ty = self . db . ty ( strukt. into ( ) ) ;
1750- let ty = self . insert_type_vars ( ty. substitute ( Interner , & substs) ) ;
1762+ let args: crate :: next_solver:: GenericArgs < ' _ > = substs. to_nextsolver ( interner) ;
1763+ let ty = self . db . ty ( strukt. into ( ) ) . instantiate ( interner, args) . to_chalk ( interner) ;
1764+ let ty = self . insert_type_vars ( ty) ;
17511765 forbid_unresolved_segments ( ( ty, Some ( strukt. into ( ) ) ) , unresolved)
17521766 }
17531767 TypeNs :: AdtId ( AdtId :: UnionId ( u) ) => {
17541768 let substs = path_ctx. substs_from_path ( u. into ( ) , true , false ) ;
17551769 drop ( ctx) ;
1756- let ty = self . db . ty ( u. into ( ) ) ;
1757- let ty = self . insert_type_vars ( ty. substitute ( Interner , & substs) ) ;
1770+ let args: crate :: next_solver:: GenericArgs < ' _ > = substs. to_nextsolver ( interner) ;
1771+ let ty = self . db . ty ( u. into ( ) ) . instantiate ( interner, args) . to_chalk ( interner) ;
1772+ let ty = self . insert_type_vars ( ty) ;
17581773 forbid_unresolved_segments ( ( ty, Some ( u. into ( ) ) ) , unresolved)
17591774 }
17601775 TypeNs :: EnumVariantId ( var) => {
17611776 let substs = path_ctx. substs_from_path ( var. into ( ) , true , false ) ;
17621777 drop ( ctx) ;
1763- let ty = self . db . ty ( var. lookup ( self . db ) . parent . into ( ) ) ;
1764- let ty = self . insert_type_vars ( ty. substitute ( Interner , & substs) ) ;
1778+ let args: crate :: next_solver:: GenericArgs < ' _ > = substs. to_nextsolver ( interner) ;
1779+ let ty = self
1780+ . db
1781+ . ty ( var. lookup ( self . db ) . parent . into ( ) )
1782+ . instantiate ( interner, args)
1783+ . to_chalk ( interner) ;
1784+ let ty = self . insert_type_vars ( ty) ;
17651785 forbid_unresolved_segments ( ( ty, Some ( var. into ( ) ) ) , unresolved)
17661786 }
17671787 TypeNs :: SelfType ( impl_id) => {
@@ -1844,8 +1864,10 @@ impl<'db> InferenceContext<'db> {
18441864 } ;
18451865 let substs = path_ctx. substs_from_path_segment ( it. into ( ) , true , None , false ) ;
18461866 drop ( ctx) ;
1847- let ty = self . db . ty ( it. into ( ) ) ;
1848- let ty = self . insert_type_vars ( ty. substitute ( Interner , & substs) ) ;
1867+ let interner = DbInterner :: conjure ( ) ;
1868+ let args: crate :: next_solver:: GenericArgs < ' _ > = substs. to_nextsolver ( interner) ;
1869+ let ty = self . db . ty ( it. into ( ) ) . instantiate ( interner, args) . to_chalk ( interner) ;
1870+ let ty = self . insert_type_vars ( ty) ;
18491871
18501872 self . resolve_variant_on_alias ( ty, unresolved, mod_path)
18511873 }
0 commit comments