diff --git a/crates/hir_ty/src/traits/chalk/interner.rs b/crates/hir_ty/src/traits/chalk/interner.rs index fc0f9c20198..eb35db3ffc1 100644 --- a/crates/hir_ty/src/traits/chalk/interner.rs +++ b/crates/hir_ty/src/traits/chalk/interner.rs @@ -26,7 +26,7 @@ pub type OpaqueTyId = chalk_ir::OpaqueTyId; pub type OpaqueTyDatum = chalk_solve::rust_ir::OpaqueTyDatum; impl chalk_ir::interner::Interner for Interner { - type InternedType = Box>; // FIXME use Arc? + type InternedType = Arc>; type InternedLifetime = chalk_ir::LifetimeData; type InternedConst = Arc>; type InternedConcreteConst = (); @@ -34,7 +34,7 @@ impl chalk_ir::interner::Interner for Interner { type InternedGoal = Arc>; type InternedGoals = Vec>; type InternedSubstitution = Vec>; - type InternedProgramClause = chalk_ir::ProgramClauseData; + type InternedProgramClause = Arc>; type InternedProgramClauses = Arc<[chalk_ir::ProgramClause]>; type InternedQuantifiedWhereClauses = Vec>; type InternedVariableKinds = Vec>; @@ -197,11 +197,11 @@ impl chalk_ir::interner::Interner for Interner { tls::with_current_program(|prog| Some(prog?.debug_quantified_where_clauses(clauses, fmt))) } - fn intern_ty(&self, ty: chalk_ir::TyData) -> Box> { - Box::new(ty) + fn intern_ty(&self, ty: chalk_ir::TyData) -> Arc> { + Arc::new(ty) } - fn ty_data<'a>(&self, ty: &'a Box>) -> &'a chalk_ir::TyData { + fn ty_data<'a>(&self, ty: &'a Arc>) -> &'a chalk_ir::TyData { ty } @@ -230,7 +230,7 @@ impl chalk_ir::interner::Interner for Interner { constant } - fn const_eq(&self, _ty: &Box>, _c1: &(), _c2: &()) -> bool { + fn const_eq(&self, _ty: &Arc>, _c1: &(), _c2: &()) -> bool { true } @@ -284,13 +284,13 @@ impl chalk_ir::interner::Interner for Interner { fn intern_program_clause( &self, data: chalk_ir::ProgramClauseData, - ) -> chalk_ir::ProgramClauseData { - data + ) -> Arc> { + Arc::new(data) } fn program_clause_data<'a>( &self, - clause: &'a chalk_ir::ProgramClauseData, + clause: &'a Arc>, ) -> &'a chalk_ir::ProgramClauseData { clause }