Skip to content

Commit cadaba9

Browse files
committed
Auto merge of #781 - lowr:fix/integration-adt-with-proper-subst, r=jackh726
fix: consider ADT's generic parameters Fixes #762 chalk-integration has been overlooking ADTs' generic parameters when it generates auto trait impls for them. This function is only used to print the lowered program in cli so it doesn't affect other crates.
2 parents a0e4882 + 64632c0 commit cadaba9

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

chalk-integration/src/query.rs

+8-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use crate::program::Program;
88
use crate::program_environment::ProgramEnvironment;
99
use crate::tls;
1010
use crate::SolverChoice;
11-
use chalk_ir::{Substitution, TraitId};
11+
use chalk_ir::TraitId;
1212
use chalk_solve::clauses::builder::ClauseBuilder;
1313
use chalk_solve::clauses::program_clauses::ToProgramClauses;
1414
use chalk_solve::coherence::orphan;
@@ -224,11 +224,13 @@ fn environment(db: &dyn LoweringDatabase) -> Result<Arc<ProgramEnvironment>, Cha
224224
.iter()
225225
.filter(|(_, auto_trait)| auto_trait.is_auto_trait())
226226
{
227-
for &adt_id in program.adt_data.keys() {
228-
let ty = chalk_ir::TyKind::Adt(adt_id, Substitution::empty(builder.interner()));
229-
chalk_solve::clauses::push_auto_trait_impls(builder, auto_trait_id, &ty)
230-
.map_err(|_| ())
231-
.unwrap();
227+
for adt_datum in program.adt_data.values() {
228+
builder.push_binders(adt_datum.binders.clone(), |builder, _| {
229+
let ty = chalk_ir::TyKind::Adt(adt_datum.id, builder.substitution_in_scope());
230+
chalk_solve::clauses::push_auto_trait_impls(builder, auto_trait_id, &ty)
231+
.map_err(|_| ())
232+
.unwrap();
233+
});
232234
}
233235
}
234236

0 commit comments

Comments
 (0)