@@ -83,7 +83,7 @@ macro_rules! _interned_vec_nolifetime_salsa {
8383 ( $name: ident, $ty: ty) => {
8484 interned_vec_nolifetime_salsa!( $name, $ty, nofold) ;
8585
86- impl <' db> rustc_type_ir:: TypeFoldable <DbInterner <' db>> for $name {
86+ impl <' db> rustc_type_ir:: TypeFoldable <DbInterner <' db>> for $name< ' db> {
8787 fn try_fold_with<F : rustc_type_ir:: FallibleTypeFolder <DbInterner <' db>>>(
8888 self ,
8989 folder: & mut F ,
@@ -104,7 +104,7 @@ macro_rules! _interned_vec_nolifetime_salsa {
104104 }
105105 }
106106
107- impl <' db> rustc_type_ir:: TypeVisitable <DbInterner <' db>> for $name {
107+ impl <' db> rustc_type_ir:: TypeVisitable <DbInterner <' db>> for $name< ' db> {
108108 fn visit_with<V : rustc_type_ir:: TypeVisitor <DbInterner <' db>>>(
109109 & self ,
110110 visitor: & mut V ,
@@ -117,14 +117,14 @@ macro_rules! _interned_vec_nolifetime_salsa {
117117 }
118118 } ;
119119 ( $name: ident, $ty: ty, nofold) => {
120- #[ salsa:: interned( no_lifetime , constructor = new_, debug) ]
120+ #[ salsa:: interned( constructor = new_, debug) ]
121121 pub struct $name {
122122 #[ returns( ref) ]
123123 inner_: smallvec:: SmallVec <[ $ty; 2 ] >,
124124 }
125125
126- impl $name {
127- pub fn new_from_iter< ' db> (
126+ impl < ' db> $name< ' db> {
127+ pub fn new_from_iter(
128128 interner: DbInterner <' db>,
129129 data: impl IntoIterator <Item = $ty>,
130130 ) -> Self {
@@ -140,7 +140,7 @@ macro_rules! _interned_vec_nolifetime_salsa {
140140 }
141141 }
142142
143- impl rustc_type_ir:: inherent:: SliceLike for $name {
143+ impl < ' db> rustc_type_ir:: inherent:: SliceLike for $name< ' db> {
144144 type Item = $ty;
145145
146146 type IntoIter = <smallvec:: SmallVec <[ $ty; 2 ] > as IntoIterator >:: IntoIter ;
@@ -154,7 +154,7 @@ macro_rules! _interned_vec_nolifetime_salsa {
154154 }
155155 }
156156
157- impl IntoIterator for $name {
157+ impl < ' db> IntoIterator for $name< ' db> {
158158 type Item = $ty;
159159 type IntoIter = <Self as rustc_type_ir:: inherent:: SliceLike >:: IntoIter ;
160160
@@ -163,7 +163,7 @@ macro_rules! _interned_vec_nolifetime_salsa {
163163 }
164164 }
165165
166- impl Default for $name {
166+ impl < ' db> Default for $name< ' db> {
167167 fn default ( ) -> Self {
168168 $name:: new_from_iter( DbInterner :: conjure( ) , [ ] )
169169 }
@@ -887,7 +887,7 @@ macro_rules! as_lang_item {
887887impl < ' db > rustc_type_ir:: Interner for DbInterner < ' db > {
888888 type DefId = SolverDefId ;
889889 type LocalDefId = SolverDefId ;
890- type LocalDefIds = SolverDefIds ;
890+ type LocalDefIds = SolverDefIds < ' db > ;
891891 type TraitId = TraitIdWrapper ;
892892 type ForeignId = TypeAliasIdWrapper ;
893893 type FunctionId = CallableIdWrapper ;
@@ -904,7 +904,7 @@ impl<'db> rustc_type_ir::Interner for DbInterner<'db> {
904904
905905 type Term = Term < ' db > ;
906906
907- type BoundVarKinds = BoundVarKinds ;
907+ type BoundVarKinds = BoundVarKinds < ' db > ;
908908 type BoundVarKind = BoundVarKind ;
909909
910910 type PredefinedOpaques = PredefinedOpaques < ' db > ;
@@ -977,7 +977,7 @@ impl<'db> rustc_type_ir::Interner for DbInterner<'db> {
977977
978978 type GenericsOf = Generics ;
979979
980- type VariancesOf = VariancesOf ;
980+ type VariancesOf = VariancesOf < ' db > ;
981981
982982 type AdtDef = AdtDef ;
983983
@@ -1045,10 +1045,9 @@ impl<'db> rustc_type_ir::Interner for DbInterner<'db> {
10451045
10461046 fn variances_of ( self , def_id : Self :: DefId ) -> Self :: VariancesOf {
10471047 let generic_def = match def_id {
1048- SolverDefId :: FunctionId ( def_id) => def_id. into ( ) ,
1049- SolverDefId :: AdtId ( def_id) => def_id. into ( ) ,
1050- SolverDefId :: Ctor ( Ctor :: Struct ( def_id) ) => def_id. into ( ) ,
1051- SolverDefId :: Ctor ( Ctor :: Enum ( def_id) ) => def_id. loc ( self . db ) . parent . into ( ) ,
1048+ SolverDefId :: Ctor ( Ctor :: Enum ( def_id) ) | SolverDefId :: EnumVariantId ( def_id) => {
1049+ def_id. loc ( self . db ) . parent . into ( )
1050+ }
10521051 SolverDefId :: InternedOpaqueTyId ( _def_id) => {
10531052 // FIXME(next-solver): track variances
10541053 //
@@ -1059,17 +1058,20 @@ impl<'db> rustc_type_ir::Interner for DbInterner<'db> {
10591058 ( 0 ..self . generics_of ( def_id) . count ( ) ) . map ( |_| Variance :: Invariant ) ,
10601059 ) ;
10611060 }
1062- _ => return VariancesOf :: new_from_iter ( self , [ ] ) ,
1061+ SolverDefId :: Ctor ( Ctor :: Struct ( def_id) ) => def_id. into ( ) ,
1062+ SolverDefId :: AdtId ( def_id) => def_id. into ( ) ,
1063+ SolverDefId :: FunctionId ( def_id) => def_id. into ( ) ,
1064+ SolverDefId :: ConstId ( _)
1065+ | SolverDefId :: StaticId ( _)
1066+ | SolverDefId :: TraitId ( _)
1067+ | SolverDefId :: TypeAliasId ( _)
1068+ | SolverDefId :: ImplId ( _)
1069+ | SolverDefId :: InternedClosureId ( _)
1070+ | SolverDefId :: InternedCoroutineId ( _) => {
1071+ return VariancesOf :: new_from_iter ( self , [ ] ) ;
1072+ }
10631073 } ;
1064- VariancesOf :: new_from_iter (
1065- self ,
1066- self . db ( )
1067- . variances_of ( generic_def)
1068- . as_deref ( )
1069- . unwrap_or_default ( )
1070- . iter ( )
1071- . map ( |v| v. to_nextsolver ( self ) ) ,
1072- )
1074+ self . db . variances_of ( generic_def)
10731075 }
10741076
10751077 fn type_of ( self , def_id : Self :: DefId ) -> EarlyBinder < Self , Self :: Ty > {
0 commit comments