Skip to content

Commit c5c05c2

Browse files
authored
Rollup merge of #135150 - lcnr:unconstrained-lts-comment, r=oli-obk
move footnote to ordinary comment cc #135057
2 parents ee6914a + ae6a331 commit c5c05c2

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

Diff for: compiler/rustc_hir_analysis/src/impl_wf_check.rs

+15-15
Original file line numberDiff line numberDiff line change
@@ -128,21 +128,7 @@ pub(crate) fn enforce_impl_lifetime_params_are_constrained(
128128
for param in &impl_generics.own_params {
129129
match param.kind {
130130
ty::GenericParamDefKind::Lifetime => {
131-
let param_lt = cgp::Parameter::from(param.to_early_bound_region_data());
132-
if lifetimes_in_associated_types.contains(&param_lt) // (*)
133-
&& !input_parameters.contains(&param_lt)
134-
{
135-
let mut diag = tcx.dcx().create_err(UnconstrainedGenericParameter {
136-
span: tcx.def_span(param.def_id),
137-
param_name: param.name,
138-
param_def_kind: tcx.def_descr(param.def_id),
139-
const_param_note: false,
140-
const_param_note2: false,
141-
});
142-
diag.code(E0207);
143-
res = Err(diag.emit());
144-
}
145-
// (*) This is a horrible concession to reality. I think it'd be
131+
// This is a horrible concession to reality. I think it'd be
146132
// better to just ban unconstrained lifetimes outright, but in
147133
// practice people do non-hygienic macros like:
148134
//
@@ -160,6 +146,20 @@ pub(crate) fn enforce_impl_lifetime_params_are_constrained(
160146
// permit those, so long as the lifetimes aren't used in
161147
// associated types. I believe this is sound, because lifetimes
162148
// used elsewhere are not projected back out.
149+
let param_lt = cgp::Parameter::from(param.to_early_bound_region_data());
150+
if lifetimes_in_associated_types.contains(&param_lt)
151+
&& !input_parameters.contains(&param_lt)
152+
{
153+
let mut diag = tcx.dcx().create_err(UnconstrainedGenericParameter {
154+
span: tcx.def_span(param.def_id),
155+
param_name: param.name,
156+
param_def_kind: tcx.def_descr(param.def_id),
157+
const_param_note: false,
158+
const_param_note2: false,
159+
});
160+
diag.code(E0207);
161+
res = Err(diag.emit());
162+
}
163163
}
164164
ty::GenericParamDefKind::Type { .. } | ty::GenericParamDefKind::Const { .. } => {
165165
// Enforced in `enforce_impl_non_lifetime_params_are_constrained`.

0 commit comments

Comments
 (0)