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 &i32>(f: F) {}