mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
migrate lifetime too
This commit is contained in:
parent
26cd5486f8
commit
724f3ff50d
@ -102,6 +102,9 @@ hir_analysis_invalid_union_field_sugg =
|
||||
hir_analysis_late_bound_const_in_apit = `impl Trait` can only mention const parameters from an fn or impl
|
||||
.label = const parameter declared here
|
||||
|
||||
hir_analysis_late_bound_lifetime_in_apit = `impl Trait` can only mention lifetimes from an fn or impl
|
||||
.label = lifetime declared here
|
||||
|
||||
hir_analysis_late_bound_type_in_apit = `impl Trait` can only mention type parameters from an fn or impl
|
||||
.label = type parameter declared here
|
||||
|
||||
|
@ -1344,12 +1344,10 @@ impl<'a, 'tcx> BoundVarContext<'a, 'tcx> {
|
||||
Scope::Binder {
|
||||
where_bound_origin: Some(hir::PredicateOrigin::ImplTrait), ..
|
||||
} => {
|
||||
let mut err = self.tcx.sess.struct_span_err(
|
||||
lifetime_ref.ident.span,
|
||||
"`impl Trait` can only mention lifetimes bound at the fn or impl level",
|
||||
);
|
||||
err.span_note(self.tcx.def_span(region_def_id), "lifetime declared here");
|
||||
err.emit();
|
||||
self.tcx.sess.emit_err(errors::LateBoundInApit::Lifetime {
|
||||
span: lifetime_ref.ident.span,
|
||||
param_span: self.tcx.def_span(region_def_id),
|
||||
});
|
||||
return;
|
||||
}
|
||||
Scope::Root { .. } => break,
|
||||
|
@ -892,4 +892,11 @@ pub(crate) enum LateBoundInApit {
|
||||
#[label]
|
||||
param_span: Span,
|
||||
},
|
||||
#[diag(hir_analysis_late_bound_lifetime_in_apit)]
|
||||
Lifetime {
|
||||
#[primary_span]
|
||||
span: Span,
|
||||
#[label]
|
||||
param_span: Span,
|
||||
},
|
||||
}
|
||||
|
@ -3,6 +3,6 @@ trait Trait<'a> {
|
||||
}
|
||||
|
||||
fn test_argument_position(x: impl for<'a> Trait<'a, Assoc = impl Copy + 'a>) {}
|
||||
//~^ ERROR `impl Trait` can only mention lifetimes bound at the fn or impl level
|
||||
//~^ ERROR `impl Trait` can only mention lifetimes from an fn or impl
|
||||
|
||||
fn main() {}
|
||||
|
@ -1,14 +1,8 @@
|
||||
error: `impl Trait` can only mention lifetimes bound at the fn or impl level
|
||||
error: `impl Trait` can only mention lifetimes from an fn or impl
|
||||
--> $DIR/universal_wrong_hrtb.rs:5:73
|
||||
|
|
||||
LL | fn test_argument_position(x: impl for<'a> Trait<'a, Assoc = impl Copy + 'a>) {}
|
||||
| ^^
|
||||
|
|
||||
note: lifetime declared here
|
||||
--> $DIR/universal_wrong_hrtb.rs:5:39
|
||||
|
|
||||
LL | fn test_argument_position(x: impl for<'a> Trait<'a, Assoc = impl Copy + 'a>) {}
|
||||
| ^^
|
||||
| -- lifetime declared here ^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user