From 19401086df0d27bc3462addc3783595b86638514 Mon Sep 17 00:00:00 2001 From: Pramod Bisht Date: Sun, 5 Aug 2018 18:44:03 +0000 Subject: [PATCH] Closes #52413: Provide structured suggestion instead of label --- .../nice_region_error/named_anon_conflict.rs | 10 ++++++---- .../infer/error_reporting/nice_region_error/util.rs | 7 +++++++ src/test/ui/in-band-lifetimes/mismatched.nll.stderr | 6 +++--- src/test/ui/in-band-lifetimes/mismatched.stderr | 6 +++--- .../ui/in-band-lifetimes/mismatched_trait.nll.stderr | 2 +- src/test/ui/in-band-lifetimes/mismatched_trait.stderr | 2 +- src/test/ui/issue-13058.stderr | 2 +- src/test/ui/issue-14285.nll.stderr | 2 +- src/test/ui/issue-14285.stderr | 2 +- src/test/ui/issue-15034.nll.stderr | 2 +- src/test/ui/issue-15034.stderr | 2 +- src/test/ui/issue-16922.nll.stderr | 2 +- src/test/ui/issue-16922.stderr | 2 +- src/test/ui/issue-3154.nll.stderr | 2 +- src/test/ui/issue-3154.stderr | 2 +- src/test/ui/issue-40288-2.nll.stderr | 4 ++-- src/test/ui/issue-40288-2.stderr | 4 ++-- src/test/ui/issue-46983.stderr | 2 +- .../42701_one_named_and_one_anonymous.nll.stderr | 2 +- .../42701_one_named_and_one_anonymous.stderr | 2 +- ...-one-existing-name-early-bound-in-struct.nll.stderr | 2 +- ...turn-one-existing-name-early-bound-in-struct.stderr | 2 +- .../ex1-return-one-existing-name-if-else-2.nll.stderr | 2 +- .../ex1-return-one-existing-name-if-else-2.stderr | 2 +- .../ex1-return-one-existing-name-if-else-3.nll.stderr | 7 +++---- .../ex1-return-one-existing-name-if-else-3.stderr | 2 +- ...n-one-existing-name-if-else-using-impl-2.nll.stderr | 2 +- ...eturn-one-existing-name-if-else-using-impl-2.stderr | 2 +- ...n-one-existing-name-if-else-using-impl-3.nll.stderr | 2 +- ...eturn-one-existing-name-if-else-using-impl-3.stderr | 2 +- .../ex1-return-one-existing-name-if-else.nll.stderr | 2 +- .../ex1-return-one-existing-name-if-else.stderr | 2 +- .../ex2a-push-one-existing-name-2.nll.stderr | 2 +- .../ex2a-push-one-existing-name-2.stderr | 2 +- .../ex2a-push-one-existing-name-early-bound.stderr | 2 +- .../ex2a-push-one-existing-name.nll.stderr | 2 +- .../lifetime-errors/ex2a-push-one-existing-name.stderr | 2 +- .../region-lbr-anon-does-not-outlive-static.stderr | 2 +- src/test/ui/nll/guarantor-issue-46974.stderr | 2 +- src/test/ui/nll/ty-outlives/impl-trait-captures.stderr | 2 +- 40 files changed, 59 insertions(+), 51 deletions(-) diff --git a/src/librustc/infer/error_reporting/nice_region_error/named_anon_conflict.rs b/src/librustc/infer/error_reporting/nice_region_error/named_anon_conflict.rs index 51abfa2505a..00b07712822 100644 --- a/src/librustc/infer/error_reporting/nice_region_error/named_anon_conflict.rs +++ b/src/librustc/infer/error_reporting/nice_region_error/named_anon_conflict.rs @@ -65,9 +65,10 @@ pub(super) fn try_report_named_anon_conflict(&self) -> Option { region_info ); - let (arg, new_ty, br, is_first, scope_def_id, is_impl_item) = ( + let (arg, new_ty, new_ty_span, br, is_first, scope_def_id, is_impl_item) = ( anon_arg_info.arg, anon_arg_info.arg_ty, + anon_arg_info.arg_ty_span, anon_arg_info.bound_region, anon_arg_info.is_first, region_info.def_id, @@ -110,9 +111,10 @@ pub(super) fn try_report_named_anon_conflict(&self) -> Option { E0621, "explicit lifetime required in {}", error_var - ).span_label( - arg.pat.span, - format!("consider changing {} to `{}`", span_label_var, new_ty), + ).span_suggestion( + new_ty_span, + &format!("consider changing {} to ", span_label_var), + new_ty.to_string() ) .span_label(span, format!("lifetime `{}` required", named)) .emit(); diff --git a/src/librustc/infer/error_reporting/nice_region_error/util.rs b/src/librustc/infer/error_reporting/nice_region_error/util.rs index 1cc2b9d50b9..28320ce3ad1 100644 --- a/src/librustc/infer/error_reporting/nice_region_error/util.rs +++ b/src/librustc/infer/error_reporting/nice_region_error/util.rs @@ -27,6 +27,8 @@ pub(super) struct AnonymousArgInfo<'tcx> { pub arg_ty: Ty<'tcx>, // the ty::BoundRegion corresponding to the anonymous region pub bound_region: ty::BoundRegion, + // arg_ty_span contains span of argument type + pub arg_ty_span : Span, // corresponds to id the argument is the first parameter // in the declaration pub is_first: bool, @@ -74,12 +76,16 @@ pub(super) fn find_arg_with_region( if let Some(node_id) = hir.as_local_node_id(id) { if let Some(body_id) = hir.maybe_body_owned_by(node_id) { let body = hir.body(body_id); + let owner_id = hir.body_owner(body_id); + let fn_decl = hir.fn_decl(owner_id).unwrap(); if let Some(tables) = self.tables { body.arguments .iter() .enumerate() .filter_map(|(index, arg)| { // May return None; sometimes the tables are not yet populated. + let ty_hir_id = fn_decl.inputs[index].hir_id; + let arg_ty_span = hir.span(hir.hir_to_node_id(ty_hir_id)); let ty = tables.node_id_to_type_opt(arg.hir_id)?; let mut found_anon_region = false; let new_arg_ty = self.tcx.fold_regions(&ty, &mut false, |r, _| { @@ -95,6 +101,7 @@ pub(super) fn find_arg_with_region( Some(AnonymousArgInfo { arg: arg, arg_ty: new_arg_ty, + arg_ty_span : arg_ty_span, bound_region: bound_region, is_first: is_first, }) diff --git a/src/test/ui/in-band-lifetimes/mismatched.nll.stderr b/src/test/ui/in-band-lifetimes/mismatched.nll.stderr index cd2ebc341ea..8da86d08799 100644 --- a/src/test/ui/in-band-lifetimes/mismatched.nll.stderr +++ b/src/test/ui/in-band-lifetimes/mismatched.nll.stderr @@ -14,9 +14,9 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/mismatched.rs:14:42 | LL | fn foo(x: &'a u32, y: &u32) -> &'a u32 { y } //~ ERROR explicit lifetime required - | - ^ lifetime `'a` required - | | - | consider changing the type of `y` to `&'a u32` + | ---- ^ lifetime `'a` required + | | + | help: consider changing the type of `y` to : `&'a u32` error[E0623]: lifetime mismatch --> $DIR/mismatched.rs:16:46 diff --git a/src/test/ui/in-band-lifetimes/mismatched.stderr b/src/test/ui/in-band-lifetimes/mismatched.stderr index d2748b2da4b..d062b6941f8 100644 --- a/src/test/ui/in-band-lifetimes/mismatched.stderr +++ b/src/test/ui/in-band-lifetimes/mismatched.stderr @@ -2,9 +2,9 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/mismatched.rs:14:42 | LL | fn foo(x: &'a u32, y: &u32) -> &'a u32 { y } //~ ERROR explicit lifetime required - | - ^ lifetime `'a` required - | | - | consider changing the type of `y` to `&'a u32` + | ---- ^ lifetime `'a` required + | | + | help: consider changing the type of `y` to : `&'a u32` error[E0623]: lifetime mismatch --> $DIR/mismatched.rs:16:46 diff --git a/src/test/ui/in-band-lifetimes/mismatched_trait.nll.stderr b/src/test/ui/in-band-lifetimes/mismatched_trait.nll.stderr index 886e3834d1d..e663bf5a152 100644 --- a/src/test/ui/in-band-lifetimes/mismatched_trait.nll.stderr +++ b/src/test/ui/in-band-lifetimes/mismatched_trait.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/mismatched_trait.rs:16:9 | LL | fn baz(&self, x: &'a u32, y: &u32) -> &'a u32 { - | - consider changing the type of `y` to `&'a u32` + | ---- help: consider changing the type of `y` to : `&'a u32` LL | y //~ ERROR explicit lifetime required | ^ lifetime `'a` required diff --git a/src/test/ui/in-band-lifetimes/mismatched_trait.stderr b/src/test/ui/in-band-lifetimes/mismatched_trait.stderr index 71b46f6d4d6..01cf9bff2a8 100644 --- a/src/test/ui/in-band-lifetimes/mismatched_trait.stderr +++ b/src/test/ui/in-band-lifetimes/mismatched_trait.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/mismatched_trait.rs:16:9 | LL | fn baz(&self, x: &'a u32, y: &u32) -> &'a u32 { - | - consider changing the type of `y` to `&'a u32` + | ---- help: consider changing the type of `y` to : `&'a u32` LL | y //~ ERROR explicit lifetime required | ^ lifetime `'a` required diff --git a/src/test/ui/issue-13058.stderr b/src/test/ui/issue-13058.stderr index cef5f5ae475..2f954f2bbcf 100644 --- a/src/test/ui/issue-13058.stderr +++ b/src/test/ui/issue-13058.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `cont` --> $DIR/issue-13058.rs:24:26 | LL | fn check<'r, I: Iterator, T: Itble<'r, usize, I>>(cont: &T) -> bool - | ---- consider changing the type of `cont` to `&'r T` + | -- help: consider changing the type of `cont` to : `&'r T` LL | { LL | let cont_iter = cont.iter(); | ^^^^ lifetime `'r` required diff --git a/src/test/ui/issue-14285.nll.stderr b/src/test/ui/issue-14285.nll.stderr index 440365cae3e..8affc3b04b5 100644 --- a/src/test/ui/issue-14285.nll.stderr +++ b/src/test/ui/issue-14285.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `a` --> $DIR/issue-14285.rs:22:7 | LL | fn foo<'a>(a: &Foo) -> B<'a> { - | - consider changing the type of `a` to `&'a (dyn Foo + 'a)` + | ---- help: consider changing the type of `a` to : `&'a (dyn Foo + 'a)` LL | B(a) //~ ERROR 22:5: 22:9: explicit lifetime required in the type of `a` [E0621] | ^ lifetime `'a` required diff --git a/src/test/ui/issue-14285.stderr b/src/test/ui/issue-14285.stderr index b5ab7bdb9d1..169c93cc389 100644 --- a/src/test/ui/issue-14285.stderr +++ b/src/test/ui/issue-14285.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `a` --> $DIR/issue-14285.rs:22:5 | LL | fn foo<'a>(a: &Foo) -> B<'a> { - | - consider changing the type of `a` to `&'a (dyn Foo + 'a)` + | ---- help: consider changing the type of `a` to : `&'a (dyn Foo + 'a)` LL | B(a) //~ ERROR 22:5: 22:9: explicit lifetime required in the type of `a` [E0621] | ^^^^ lifetime `'a` required diff --git a/src/test/ui/issue-15034.nll.stderr b/src/test/ui/issue-15034.nll.stderr index 19fe83f8f6c..1f0fe68e2a3 100644 --- a/src/test/ui/issue-15034.nll.stderr +++ b/src/test/ui/issue-15034.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `lexer` --> $DIR/issue-15034.rs:27:25 | LL | pub fn new(lexer: &'a mut Lexer) -> Parser<'a> { - | ----- consider changing the type of `lexer` to `&'a mut Lexer<'a>` + | ------------- help: consider changing the type of `lexer` to : `&'a mut Lexer<'a>` LL | Parser { lexer: lexer } | ^^^^^ lifetime `'a` required diff --git a/src/test/ui/issue-15034.stderr b/src/test/ui/issue-15034.stderr index 3bbf4235a29..bb0053d7aa8 100644 --- a/src/test/ui/issue-15034.stderr +++ b/src/test/ui/issue-15034.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `lexer` --> $DIR/issue-15034.rs:27:25 | LL | pub fn new(lexer: &'a mut Lexer) -> Parser<'a> { - | ----- consider changing the type of `lexer` to `&'a mut Lexer<'a>` + | ------------- help: consider changing the type of `lexer` to : `&'a mut Lexer<'a>` LL | Parser { lexer: lexer } | ^^^^^ lifetime `'a` required diff --git a/src/test/ui/issue-16922.nll.stderr b/src/test/ui/issue-16922.nll.stderr index 902baaf579f..d8926fd2cf5 100644 --- a/src/test/ui/issue-16922.nll.stderr +++ b/src/test/ui/issue-16922.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `value` --> $DIR/issue-16922.rs:14:5 | LL | fn foo(value: &T) -> Box { - | ----- consider changing the type of `value` to `&'static T` + | -- help: consider changing the type of `value` to : `&'static T` LL | Box::new(value) as Box | ^^^^^^^^^^^^^^^ lifetime `'static` required diff --git a/src/test/ui/issue-16922.stderr b/src/test/ui/issue-16922.stderr index cf81d4b4d08..2f84fb7842f 100644 --- a/src/test/ui/issue-16922.stderr +++ b/src/test/ui/issue-16922.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `value` --> $DIR/issue-16922.rs:14:5 | LL | fn foo(value: &T) -> Box { - | ----- consider changing the type of `value` to `&'static T` + | -- help: consider changing the type of `value` to : `&'static T` LL | Box::new(value) as Box | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetime `'static` required diff --git a/src/test/ui/issue-3154.nll.stderr b/src/test/ui/issue-3154.nll.stderr index 4420f9dcae4..9cad0aabc93 100644 --- a/src/test/ui/issue-3154.nll.stderr +++ b/src/test/ui/issue-3154.nll.stderr @@ -14,7 +14,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/issue-3154.rs:16:15 | LL | fn thing<'a,Q>(x: &Q) -> thing<'a,Q> { - | - consider changing the type of `x` to `&'a Q` + | -- help: consider changing the type of `x` to : `&'a Q` LL | thing{ x: x } //~ ERROR 16:5: 16:18: explicit lifetime required in the type of `x` [E0621] | ^ lifetime `'a` required diff --git a/src/test/ui/issue-3154.stderr b/src/test/ui/issue-3154.stderr index cc0cfd768c4..5b5bc669c45 100644 --- a/src/test/ui/issue-3154.stderr +++ b/src/test/ui/issue-3154.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/issue-3154.rs:16:5 | LL | fn thing<'a,Q>(x: &Q) -> thing<'a,Q> { - | - consider changing the type of `x` to `&'a Q` + | -- help: consider changing the type of `x` to : `&'a Q` LL | thing{ x: x } //~ ERROR 16:5: 16:18: explicit lifetime required in the type of `x` [E0621] | ^^^^^^^^^^^^^ lifetime `'a` required diff --git a/src/test/ui/issue-40288-2.nll.stderr b/src/test/ui/issue-40288-2.nll.stderr index 1d2b2660342..4a78d2a0057 100644 --- a/src/test/ui/issue-40288-2.nll.stderr +++ b/src/test/ui/issue-40288-2.nll.stderr @@ -38,7 +38,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/issue-40288-2.rs:17:9 | LL | fn lifetime_transmute_slice<'a, T: ?Sized>(x: &'a T, y: &T) -> &'a T { - | - consider changing the type of `y` to `&'a T` + | -- help: consider changing the type of `y` to : `&'a T` ... LL | slice[0] = y; | ^^^^^^^^^^^^ lifetime `'a` required @@ -47,7 +47,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/issue-40288-2.rs:32:9 | LL | fn lifetime_transmute_struct<'a, T: ?Sized>(x: &'a T, y: &T) -> &'a T { - | - consider changing the type of `y` to `&'a T` + | -- help: consider changing the type of `y` to : `&'a T` ... LL | dst.head = y; | ^^^^^^^^^^^^ lifetime `'a` required diff --git a/src/test/ui/issue-40288-2.stderr b/src/test/ui/issue-40288-2.stderr index d2313ef89a7..6cf7ddc5798 100644 --- a/src/test/ui/issue-40288-2.stderr +++ b/src/test/ui/issue-40288-2.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/issue-40288-2.rs:19:5 | LL | fn lifetime_transmute_slice<'a, T: ?Sized>(x: &'a T, y: &T) -> &'a T { - | - consider changing the type of `y` to `&'a T` + | -- help: consider changing the type of `y` to : `&'a T` ... LL | out[0] | ^^^^^^ lifetime `'a` required @@ -11,7 +11,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/issue-40288-2.rs:34:5 | LL | fn lifetime_transmute_struct<'a, T: ?Sized>(x: &'a T, y: &T) -> &'a T { - | - consider changing the type of `y` to `&'a T` + | -- help: consider changing the type of `y` to : `&'a T` ... LL | out.head | ^^^^^^^^ lifetime `'a` required diff --git a/src/test/ui/issue-46983.stderr b/src/test/ui/issue-46983.stderr index 31aeebd5a72..53fcdd71eb1 100644 --- a/src/test/ui/issue-46983.stderr +++ b/src/test/ui/issue-46983.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/issue-46983.rs:14:5 | LL | fn foo(x: &u32) -> &'static u32 { - | - consider changing the type of `x` to `&'static u32` + | ---- help: consider changing the type of `x` to : `&'static u32` LL | &*x | ^^^ lifetime `'static` required diff --git a/src/test/ui/lifetime-errors/42701_one_named_and_one_anonymous.nll.stderr b/src/test/ui/lifetime-errors/42701_one_named_and_one_anonymous.nll.stderr index d422a63bcad..bec5fb2f72a 100644 --- a/src/test/ui/lifetime-errors/42701_one_named_and_one_anonymous.nll.stderr +++ b/src/test/ui/lifetime-errors/42701_one_named_and_one_anonymous.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/42701_one_named_and_one_anonymous.rs:16:5 | LL | fn foo2<'a>(a: &'a Foo, x: &i32) -> &'a i32 { - | - consider changing the type of `x` to `&'a i32` + | ---- help: consider changing the type of `x` to : `&'a i32` LL | / if true { LL | | let p: &i32 = &a.field; LL | | &*p diff --git a/src/test/ui/lifetime-errors/42701_one_named_and_one_anonymous.stderr b/src/test/ui/lifetime-errors/42701_one_named_and_one_anonymous.stderr index 87cb1748913..b23025ee127 100644 --- a/src/test/ui/lifetime-errors/42701_one_named_and_one_anonymous.stderr +++ b/src/test/ui/lifetime-errors/42701_one_named_and_one_anonymous.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/42701_one_named_and_one_anonymous.rs:20:9 | LL | fn foo2<'a>(a: &'a Foo, x: &i32) -> &'a i32 { - | - consider changing the type of `x` to `&'a i32` + | ---- help: consider changing the type of `x` to : `&'a i32` ... LL | &*x //~ ERROR explicit lifetime | ^^^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.nll.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.nll.stderr index e5b001def56..9666e0112ac 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.nll.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `other` --> $DIR/ex1-return-one-existing-name-early-bound-in-struct.rs:18:15 | LL | fn bar(&self, other: Foo) -> Foo<'a> { - | ----- consider changing the type of `other` to `Foo<'a>` + | --- help: consider changing the type of `other` to : `Foo<'a>` LL | match *self { | ^^^^^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.stderr index 29163361e23..0cce3d204ae 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `other` --> $DIR/ex1-return-one-existing-name-early-bound-in-struct.rs:21:21 | LL | fn bar(&self, other: Foo) -> Foo<'a> { - | ----- consider changing the type of `other` to `Foo<'a>` + | --- help: consider changing the type of `other` to : `Foo<'a>` ... LL | other //~ ERROR explicit lifetime | ^^^^^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-2.nll.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-2.nll.stderr index e1dfeb0ac6a..667d8548c72 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-2.nll.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-2.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/ex1-return-one-existing-name-if-else-2.rs:12:8 | LL | fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 { - | - consider changing the type of `x` to `&'a i32` + | ---- help: consider changing the type of `x` to : `&'a i32` LL | if x > y { x } else { y } //~ ERROR explicit lifetime | ^^^^^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-2.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-2.stderr index e18156179a2..cfbfd5ac448 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-2.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-2.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/ex1-return-one-existing-name-if-else-2.rs:12:16 | LL | fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 { - | - consider changing the type of `x` to `&'a i32` + | ---- help: consider changing the type of `x` to : `&'a i32` LL | if x > y { x } else { y } //~ ERROR explicit lifetime | ^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-3.nll.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-3.nll.stderr index 4d9517eca60..3e79d3e44df 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-3.nll.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-3.nll.stderr @@ -8,10 +8,9 @@ error[E0621]: explicit lifetime required in parameter type --> $DIR/ex1-return-one-existing-name-if-else-3.rs:11:16 | LL | fn foo<'a>((x, y): (&'a i32, &i32)) -> &'a i32 { - | ----^- - | | | - | | lifetime `'a` required - | consider changing type to `(&'a i32, &'a i32)` + | ^ --------------- help: consider changing type to : `(&'a i32, &'a i32)` + | | + | lifetime `'a` required error: aborting due to previous error diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-3.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-3.stderr index f208fb57f5b..70c25be2c30 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-3.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-3.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in parameter type --> $DIR/ex1-return-one-existing-name-if-else-3.rs:12:27 | LL | fn foo<'a>((x, y): (&'a i32, &i32)) -> &'a i32 { - | ------ consider changing type to `(&'a i32, &'a i32)` + | --------------- help: consider changing type to : `(&'a i32, &'a i32)` LL | if x > y { x } else { y } //~ ERROR explicit lifetime | ^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.nll.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.nll.stderr index e264b3428c9..419644cb60e 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.nll.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/ex1-return-one-existing-name-if-else-using-impl-2.rs:14:7 | LL | fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 { - | - consider changing the type of `x` to `&'a i32` + | ---- help: consider changing the type of `x` to : `&'a i32` LL | if x > y { x } else { y } //~ ERROR explicit lifetime | ^^^^^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.stderr index 7604b9a9017..5c256aab62c 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/ex1-return-one-existing-name-if-else-using-impl-2.rs:14:15 | LL | fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 { - | - consider changing the type of `x` to `&'a i32` + | ---- help: consider changing the type of `x` to : `&'a i32` LL | if x > y { x } else { y } //~ ERROR explicit lifetime | ^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.nll.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.nll.stderr index 6119f3c5605..97ff1879f1b 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.nll.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/ex1-return-one-existing-name-if-else-using-impl-3.rs:18:5 | LL | fn foo<'a>(&'a self, x: &i32) -> &i32 { - | - consider changing the type of `x` to `&'a i32` + | ---- help: consider changing the type of `x` to : `&'a i32` LL | LL | if true { &self.field } else { x } //~ ERROR explicit lifetime | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.stderr index 83c6ff19867..f8654baa86b 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/ex1-return-one-existing-name-if-else-using-impl-3.rs:18:36 | LL | fn foo<'a>(&'a self, x: &i32) -> &i32 { - | - consider changing the type of `x` to `&'a i32` + | ---- help: consider changing the type of `x` to : `&'a i32` LL | LL | if true { &self.field } else { x } //~ ERROR explicit lifetime | ^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else.nll.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else.nll.stderr index 5e49e4ec4a9..8c429bcbc95 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else.nll.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/ex1-return-one-existing-name-if-else.rs:12:8 | LL | fn foo<'a>(x: &'a i32, y: &i32) -> &'a i32 { - | - consider changing the type of `y` to `&'a i32` + | ---- help: consider changing the type of `y` to : `&'a i32` LL | if x > y { x } else { y } //~ ERROR explicit lifetime | ^^^^^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else.stderr b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else.stderr index 9893eee77e8..cd7719f7047 100644 --- a/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else.stderr +++ b/src/test/ui/lifetime-errors/ex1-return-one-existing-name-if-else.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/ex1-return-one-existing-name-if-else.rs:12:27 | LL | fn foo<'a>(x: &'a i32, y: &i32) -> &'a i32 { - | - consider changing the type of `y` to `&'a i32` + | ---- help: consider changing the type of `y` to : `&'a i32` LL | if x > y { x } else { y } //~ ERROR explicit lifetime | ^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-2.nll.stderr b/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-2.nll.stderr index 087c9eb389b..d9c96a0e47c 100644 --- a/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-2.nll.stderr +++ b/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-2.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/ex2a-push-one-existing-name-2.rs:16:5 | LL | fn foo<'a>(x: Ref, y: &mut Vec>) { - | - consider changing the type of `x` to `Ref<'a, i32>` + | -------- help: consider changing the type of `x` to : `Ref<'a, i32>` LL | y.push(x); //~ ERROR explicit lifetime | ^^^^^^^^^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-2.stderr b/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-2.stderr index 5c9b7666de6..d6944cc251f 100644 --- a/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-2.stderr +++ b/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-2.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/ex2a-push-one-existing-name-2.rs:16:12 | LL | fn foo<'a>(x: Ref, y: &mut Vec>) { - | - consider changing the type of `x` to `Ref<'a, i32>` + | -------- help: consider changing the type of `x` to : `Ref<'a, i32>` LL | y.push(x); //~ ERROR explicit lifetime | ^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-early-bound.stderr b/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-early-bound.stderr index 4cfb76f85f2..d6724607669 100644 --- a/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-early-bound.stderr +++ b/src/test/ui/lifetime-errors/ex2a-push-one-existing-name-early-bound.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/ex2a-push-one-existing-name-early-bound.rs:17:12 | LL | fn baz<'a, 'b, T>(x: &mut Vec<&'a T>, y: &T) - | - consider changing the type of `y` to `&'a T` + | -- help: consider changing the type of `y` to : `&'a T` ... LL | x.push(y); //~ ERROR explicit lifetime required | ^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex2a-push-one-existing-name.nll.stderr b/src/test/ui/lifetime-errors/ex2a-push-one-existing-name.nll.stderr index 80192af2217..d08a9d6084a 100644 --- a/src/test/ui/lifetime-errors/ex2a-push-one-existing-name.nll.stderr +++ b/src/test/ui/lifetime-errors/ex2a-push-one-existing-name.nll.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/ex2a-push-one-existing-name.rs:16:5 | LL | fn foo<'a>(x: &mut Vec>, y: Ref) { - | - consider changing the type of `y` to `Ref<'a, i32>` + | -------- help: consider changing the type of `y` to : `Ref<'a, i32>` LL | x.push(y); //~ ERROR explicit lifetime | ^^^^^^^^^ lifetime `'a` required diff --git a/src/test/ui/lifetime-errors/ex2a-push-one-existing-name.stderr b/src/test/ui/lifetime-errors/ex2a-push-one-existing-name.stderr index ede76bca2ba..088605a2b85 100644 --- a/src/test/ui/lifetime-errors/ex2a-push-one-existing-name.stderr +++ b/src/test/ui/lifetime-errors/ex2a-push-one-existing-name.stderr @@ -2,7 +2,7 @@ error[E0621]: explicit lifetime required in the type of `y` --> $DIR/ex2a-push-one-existing-name.rs:16:12 | LL | fn foo<'a>(x: &mut Vec>, y: Ref) { - | - consider changing the type of `y` to `Ref<'a, i32>` + | -------- help: consider changing the type of `y` to : `Ref<'a, i32>` LL | x.push(y); //~ ERROR explicit lifetime | ^ lifetime `'a` required diff --git a/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr b/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr index a823e62d3b8..25450252cde 100644 --- a/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr +++ b/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/region-lbr-anon-does-not-outlive-static.rs:19:5 | LL | fn foo(x: &u32) -> &'static u32 { - | - consider changing the type of `x` to `&ReStatic u32` + | ---- help: consider changing the type of `x` to : `&ReStatic u32` LL | &*x | ^^^ lifetime `ReStatic` required diff --git a/src/test/ui/nll/guarantor-issue-46974.stderr b/src/test/ui/nll/guarantor-issue-46974.stderr index 3cb20cc975f..644d18419f1 100644 --- a/src/test/ui/nll/guarantor-issue-46974.stderr +++ b/src/test/ui/nll/guarantor-issue-46974.stderr @@ -13,7 +13,7 @@ error[E0621]: explicit lifetime required in the type of `s` --> $DIR/guarantor-issue-46974.rs:25:5 | LL | fn bar(s: &Box<(i32,)>) -> &'static i32 { - | - consider changing the type of `s` to `&'static std::boxed::Box<(i32,)>` + | ------------ help: consider changing the type of `s` to : `&'static std::boxed::Box<(i32,)>` LL | // FIXME(#46983): error message should be better LL | &s.0 //~ ERROR explicit lifetime required in the type of `s` [E0621] | ^^^^ lifetime `'static` required diff --git a/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr b/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr index f836960a28c..944fc1c2666 100644 --- a/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr +++ b/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr @@ -8,7 +8,7 @@ error[E0621]: explicit lifetime required in the type of `x` --> $DIR/impl-trait-captures.rs:21:5 | LL | fn foo<'a, T>(x: &T) -> impl Foo<'a> { - | - consider changing the type of `x` to `&ReEarlyBound(0, 'a) T` + | -- help: consider changing the type of `x` to : `&ReEarlyBound(0, 'a) T` LL | x | ^ lifetime `ReEarlyBound(0, 'a)` required -- 2.44.0