diff --git a/crates/flux-fhir-analysis/src/conv/mod.rs b/crates/flux-fhir-analysis/src/conv/mod.rs index dac443afc0..e75d55f825 100644 --- a/crates/flux-fhir-analysis/src/conv/mod.rs +++ b/crates/flux-fhir-analysis/src/conv/mod.rs @@ -964,14 +964,10 @@ impl<'genv, 'tcx: 'genv, P: ConvPhase<'genv, 'tcx>> ConvCtxt
{ .into()]; self.conv_generic_args_into(env, trait_id, trait_segment, &mut args)?; - env.pop_layer(); - let vars = generic_params - .iter() - .map(|param| self.param_as_bound_var(param)) - .try_collect_vec()?; + let vars = env.top_layer().to_bound_vars(self.genv())?; let poly_trait_ref = rty::Binder::bind_with_vars( rty::TraitRef { def_id: trait_id, args: args.into() }, - List::from_vec(vars), + vars, ); clauses.push( @@ -987,6 +983,8 @@ impl<'genv, 'tcx: 'genv, P: ConvPhase<'genv, 'tcx>> ConvCtxt
{
self.conv_assoc_item_constraint(env, &poly_trait_ref, cstr, clauses)?;
}
+ env.pop_layer();
+
Ok(())
}
diff --git a/tests/tests/pos/surface/issue-977.rs b/tests/tests/pos/surface/issue-977.rs
new file mode 100644
index 0000000000..96f385abb0
--- /dev/null
+++ b/tests/tests/pos/surface/issue-977.rs
@@ -0,0 +1,2 @@
+// Testing conversion of higher-ranked associated type constraint
+pub fn map