@@ -26,15 +26,15 @@ pub type OpaqueTyId = chalk_ir::OpaqueTyId<Interner>;
2626pub type OpaqueTyDatum = chalk_solve:: rust_ir:: OpaqueTyDatum < Interner > ;
2727
2828impl chalk_ir:: interner:: Interner for Interner {
29- type InternedType = Box < chalk_ir:: TyData < Self > > ; // FIXME use Arc?
29+ type InternedType = Arc < chalk_ir:: TyData < Self > > ;
3030 type InternedLifetime = chalk_ir:: LifetimeData < Self > ;
3131 type InternedConst = Arc < chalk_ir:: ConstData < Self > > ;
3232 type InternedConcreteConst = ( ) ;
3333 type InternedGenericArg = chalk_ir:: GenericArgData < Self > ;
3434 type InternedGoal = Arc < GoalData < Self > > ;
3535 type InternedGoals = Vec < Goal < Self > > ;
3636 type InternedSubstitution = Vec < GenericArg < Self > > ;
37- type InternedProgramClause = chalk_ir:: ProgramClauseData < Self > ;
37+ type InternedProgramClause = Arc < chalk_ir:: ProgramClauseData < Self > > ;
3838 type InternedProgramClauses = Arc < [ chalk_ir:: ProgramClause < Self > ] > ;
3939 type InternedQuantifiedWhereClauses = Vec < chalk_ir:: QuantifiedWhereClause < Self > > ;
4040 type InternedVariableKinds = Vec < chalk_ir:: VariableKind < Self > > ;
@@ -197,11 +197,11 @@ impl chalk_ir::interner::Interner for Interner {
197197 tls:: with_current_program ( |prog| Some ( prog?. debug_quantified_where_clauses ( clauses, fmt) ) )
198198 }
199199
200- fn intern_ty ( & self , ty : chalk_ir:: TyData < Self > ) -> Box < chalk_ir:: TyData < Self > > {
201- Box :: new ( ty)
200+ fn intern_ty ( & self , ty : chalk_ir:: TyData < Self > ) -> Arc < chalk_ir:: TyData < Self > > {
201+ Arc :: new ( ty)
202202 }
203203
204- fn ty_data < ' a > ( & self , ty : & ' a Box < chalk_ir:: TyData < Self > > ) -> & ' a chalk_ir:: TyData < Self > {
204+ fn ty_data < ' a > ( & self , ty : & ' a Arc < chalk_ir:: TyData < Self > > ) -> & ' a chalk_ir:: TyData < Self > {
205205 ty
206206 }
207207
@@ -230,7 +230,7 @@ impl chalk_ir::interner::Interner for Interner {
230230 constant
231231 }
232232
233- fn const_eq ( & self , _ty : & Box < chalk_ir:: TyData < Self > > , _c1 : & ( ) , _c2 : & ( ) ) -> bool {
233+ fn const_eq ( & self , _ty : & Arc < chalk_ir:: TyData < Self > > , _c1 : & ( ) , _c2 : & ( ) ) -> bool {
234234 true
235235 }
236236
@@ -284,13 +284,13 @@ impl chalk_ir::interner::Interner for Interner {
284284 fn intern_program_clause (
285285 & self ,
286286 data : chalk_ir:: ProgramClauseData < Self > ,
287- ) -> chalk_ir:: ProgramClauseData < Self > {
288- data
287+ ) -> Arc < chalk_ir:: ProgramClauseData < Self > > {
288+ Arc :: new ( data)
289289 }
290290
291291 fn program_clause_data < ' a > (
292292 & self ,
293- clause : & ' a chalk_ir:: ProgramClauseData < Self > ,
293+ clause : & ' a Arc < chalk_ir:: ProgramClauseData < Self > > ,
294294 ) -> & ' a chalk_ir:: ProgramClauseData < Self > {
295295 clause
296296 }
0 commit comments