Skip to content

Commit 6956408

Browse files
committed
bless polonius output of test ui/nll/outlives-suggestion-simple.rs
The polonius output has one more error which should be displayed in the regular case, but error reporting in the regular case stopped at the first error. Admittedly it would be nice to combine suggestions for the same source lifetime so that `'a: 'b` and `'a: 'c` are not bothsuggested, but instead a single `'a: 'b + 'c` is.
1 parent 67b04d5 commit 6956408

File tree

1 file changed

+121
-0
lines changed

1 file changed

+121
-0
lines changed
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
error: lifetime may not live long enough
2+
--> $DIR/outlives-suggestion-simple.rs:6:5
3+
|
4+
LL | fn foo1<'a, 'b>(x: &'a usize) -> &'b usize {
5+
| -- -- lifetime `'b` defined here
6+
| |
7+
| lifetime `'a` defined here
8+
LL | x
9+
| ^ returning this value requires that `'a` must outlive `'b`
10+
|
11+
= help: consider adding the following bound: `'a: 'b`
12+
13+
error: lifetime may not live long enough
14+
--> $DIR/outlives-suggestion-simple.rs:10:5
15+
|
16+
LL | fn foo2<'a>(x: &'a usize) -> &'static usize {
17+
| -- lifetime `'a` defined here
18+
LL | x
19+
| ^ returning this value requires that `'a` must outlive `'static`
20+
|
21+
= help: consider replacing `'a` with `'static`
22+
23+
error: lifetime may not live long enough
24+
--> $DIR/outlives-suggestion-simple.rs:14:5
25+
|
26+
LL | fn foo3<'a, 'b>(x: &'a usize, y: &'b usize) -> (&'b usize, &'a usize) {
27+
| -- -- lifetime `'b` defined here
28+
| |
29+
| lifetime `'a` defined here
30+
LL | (x, y)
31+
| ^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
32+
|
33+
= help: consider adding the following bound: `'a: 'b`
34+
35+
error: lifetime may not live long enough
36+
--> $DIR/outlives-suggestion-simple.rs:14:5
37+
|
38+
LL | fn foo3<'a, 'b>(x: &'a usize, y: &'b usize) -> (&'b usize, &'a usize) {
39+
| -- -- lifetime `'b` defined here
40+
| |
41+
| lifetime `'a` defined here
42+
LL | (x, y)
43+
| ^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
44+
|
45+
= help: consider adding the following bound: `'b: 'a`
46+
47+
help: `'a` and `'b` must be the same: replace one with the other
48+
49+
error: lifetime may not live long enough
50+
--> $DIR/outlives-suggestion-simple.rs:22:5
51+
|
52+
LL | fn foo4<'a, 'b, 'c>(x: &'a usize) -> (&'b usize, &'c usize) {
53+
| -- -- lifetime `'b` defined here
54+
| |
55+
| lifetime `'a` defined here
56+
...
57+
LL | (x, x)
58+
| ^^^^^^ returning this value requires that `'a` must outlive `'b`
59+
|
60+
= help: consider adding the following bound: `'a: 'b`
61+
62+
error: lifetime may not live long enough
63+
--> $DIR/outlives-suggestion-simple.rs:22:5
64+
|
65+
LL | fn foo4<'a, 'b, 'c>(x: &'a usize) -> (&'b usize, &'c usize) {
66+
| -- -- lifetime `'c` defined here
67+
| |
68+
| lifetime `'a` defined here
69+
...
70+
LL | (x, x)
71+
| ^^^^^^ returning this value requires that `'a` must outlive `'c`
72+
|
73+
= help: consider adding the following bound: `'a: 'c`
74+
75+
error: lifetime may not live long enough
76+
--> $DIR/outlives-suggestion-simple.rs:31:9
77+
|
78+
LL | pub fn foo<'a>(x: &'a usize) -> Self {
79+
| -- lifetime `'a` defined here
80+
LL | Foo { x }
81+
| ^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
82+
|
83+
= help: consider replacing `'a` with `'static`
84+
85+
error: lifetime may not live long enough
86+
--> $DIR/outlives-suggestion-simple.rs:41:9
87+
|
88+
LL | impl<'a> Bar<'a> {
89+
| -- lifetime `'a` defined here
90+
LL | pub fn get<'b>(&self) -> &'b usize {
91+
| -- lifetime `'b` defined here
92+
LL | self.x
93+
| ^^^^^^ returning this value requires that `'a` must outlive `'b`
94+
|
95+
= help: consider adding the following bound: `'a: 'b`
96+
97+
error: lifetime may not live long enough
98+
--> $DIR/outlives-suggestion-simple.rs:52:9
99+
|
100+
LL | impl<'a> Baz<'a> {
101+
| -- lifetime `'a` defined here
102+
LL | fn get<'b>(&'b self) -> &'a i32 {
103+
| -- lifetime `'b` defined here
104+
LL | self.x
105+
| ^^^^^^ returning this value requires that `'b` must outlive `'a`
106+
|
107+
= help: consider adding the following bound: `'b: 'a`
108+
109+
error[E0521]: borrowed data escapes outside of function
110+
--> $DIR/outlives-suggestion-simple.rs:73:9
111+
|
112+
LL | fn get_bar(&self) -> Bar2 {
113+
| -----
114+
| |
115+
| `self` is declared here, outside of the function body
116+
| `self` is a reference that is only valid in the function body
117+
LL | Bar2::new(&self)
118+
| ^^^^^^^^^^^^^^^^ `self` escapes the function body here
119+
120+
error: aborting due to 10 previous errors
121+

0 commit comments

Comments
 (0)