Skip to content

Commit 64632c0

Browse files
committed
fix: consider ADT's generic parameters
1 parent a0e4882 commit 64632c0

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

chalk-integration/src/query.rs

Lines changed: 8 additions & 6 deletions
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)