Skip to content

Commit

Permalink
Auto merge of #781 - lowr:fix/integration-adt-with-proper-subst, r=ja…
Browse files Browse the repository at this point in the history
…ckh726

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.
  • Loading branch information
bors committed Oct 21, 2022
2 parents a0e4882 + 64632c0 commit cadaba9
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions chalk-integration/src/query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use crate::program::Program;
use crate::program_environment::ProgramEnvironment;
use crate::tls;
use crate::SolverChoice;
use chalk_ir::{Substitution, TraitId};
use chalk_ir::TraitId;
use chalk_solve::clauses::builder::ClauseBuilder;
use chalk_solve::clauses::program_clauses::ToProgramClauses;
use chalk_solve::coherence::orphan;
Expand Down Expand Up @@ -224,11 +224,13 @@ fn environment(db: &dyn LoweringDatabase) -> Result<Arc<ProgramEnvironment>, Cha
.iter()
.filter(|(_, auto_trait)| auto_trait.is_auto_trait())
{
for &adt_id in program.adt_data.keys() {
let ty = chalk_ir::TyKind::Adt(adt_id, Substitution::empty(builder.interner()));
chalk_solve::clauses::push_auto_trait_impls(builder, auto_trait_id, &ty)
.map_err(|_| ())
.unwrap();
for adt_datum in program.adt_data.values() {
builder.push_binders(adt_datum.binders.clone(), |builder, _| {
let ty = chalk_ir::TyKind::Adt(adt_datum.id, builder.substitution_in_scope());
chalk_solve::clauses::push_auto_trait_impls(builder, auto_trait_id, &ty)
.map_err(|_| ())
.unwrap();
});
}
}

Expand Down

0 comments on commit cadaba9

Please sign in to comment.