diff --git a/compiler/rustc_ast_lowering/src/item.rs b/compiler/rustc_ast_lowering/src/item.rs index 99f81afc1e2..4cf0a8e0d2e 100644 --- a/compiler/rustc_ast_lowering/src/item.rs +++ b/compiler/rustc_ast_lowering/src/item.rs @@ -1350,12 +1350,12 @@ impl<'hir> LoweringContext<'_, 'hir> { let mut predicates: SmallVec<[hir::WherePredicate<'hir>; 4]> = SmallVec::new(); predicates.extend(generics.params.iter().filter_map(|param| { - let bounds = self.lower_param_bounds(¶m.bounds, itctx); self.lower_generic_bound_predicate( param.ident, param.id, ¶m.kind, - bounds, + ¶m.bounds, + itctx, PredicateOrigin::GenericParam, ) })); @@ -1403,13 +1403,17 @@ impl<'hir> LoweringContext<'_, 'hir> { ident: Ident, id: NodeId, kind: &GenericParamKind, - bounds: &'hir [hir::GenericBound<'hir>], + bounds: &[GenericBound], + itctx: ImplTraitContext, origin: PredicateOrigin, ) -> Option> { // Do not create a clause if we do not have anything inside it. if bounds.is_empty() { return None; } + + let bounds = self.lower_param_bounds(bounds, itctx); + let ident = self.lower_ident(ident); let param_span = ident.span; let span = bounds diff --git a/compiler/rustc_ast_lowering/src/lib.rs b/compiler/rustc_ast_lowering/src/lib.rs index ff479fa2139..8fb29dcb675 100644 --- a/compiler/rustc_ast_lowering/src/lib.rs +++ b/compiler/rustc_ast_lowering/src/lib.rs @@ -2013,7 +2013,6 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { // Add a definition for the in-band `Param`. let def_id = self.local_def_id(node_id); - let hir_bounds = self.lower_param_bounds(bounds, ImplTraitContext::Universal); // Set the name to `impl Bound1 + Bound2`. let param = hir::GenericParam { hir_id: self.lower_node_id(node_id), @@ -2028,7 +2027,8 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { ident, node_id, &GenericParamKind::Type { default: None }, - hir_bounds, + bounds, + ImplTraitContext::Universal, hir::PredicateOrigin::ImplTrait, );