@@ -108,7 +108,28 @@ LL +     fn g(mut x: impl Foo) -> Option<()> { x.next() }
108108   |
109109
110110error[E0106]: missing lifetime specifier
111-   --> $DIR/impl-trait-missing-lifetime-gated.rs:58:41
111+   --> $DIR/impl-trait-missing-lifetime-gated.rs:58:39
112+    |
113+ LL |     fn g(mut x: impl Foo<>) -> Option<&()> { x.next() }
114+    |                                       ^ expected named lifetime parameter
115+    |
116+    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
117+ help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
118+    |
119+ LL |     fn g(mut x: impl Foo<>) -> Option<&'static ()> { x.next() }
120+    |                                        +++++++
121+ help: consider introducing a named lifetime parameter
122+    |
123+ LL |     fn g<'a>(mut x: impl Foo<>) -> Option<&'a ()> { x.next() }
124+    |         ++++                               ++
125+ help: alternatively, you might want to return an owned value
126+    |
127+ LL -     fn g(mut x: impl Foo<>) -> Option<&()> { x.next() }
128+ LL +     fn g(mut x: impl Foo<>) -> Option<()> { x.next() }
129+    |
130+ 
131+ error[E0106]: missing lifetime specifier
132+   --> $DIR/impl-trait-missing-lifetime-gated.rs:69:41
112133   |
113134LL |     fn g(mut x: impl Foo<()>) -> Option<&()> { x.next() }
114135   |                                         ^ expected named lifetime parameter
@@ -129,7 +150,7 @@ LL +     fn g(mut x: impl Foo<()>) -> Option<()> { x.next() }
129150   |
130151
131152warning: elided lifetime has a name
132-   --> $DIR/impl-trait-missing-lifetime-gated.rs:64 :57
153+   --> $DIR/impl-trait-missing-lifetime-gated.rs:75 :57
133154   |
134155LL | fn resolved_anonymous<'a, T: 'a>(f: impl Fn(&'a str) -> &T) {
135156   |                       -- lifetime `'a` declared here    ^ this elided lifetime gets resolved as `'a`
@@ -217,7 +238,33 @@ LL |     fn g<'a>(mut x: impl Foo<'a>) -> Option<&()> { x.next() }
217238   |         ++++                ++++
218239
219240error[E0658]: anonymous lifetimes in `impl Trait` are unstable
220-   --> $DIR/impl-trait-missing-lifetime-gated.rs:55:22
241+   --> $DIR/impl-trait-missing-lifetime-gated.rs:55:21
242+    |
243+ LL |     fn f(_: impl Foo<>) {}
244+    |                     ^ expected named lifetime parameter
245+    |
246+    = help: add `#![feature(anonymous_lifetime_in_impl_trait)]` to the crate attributes to enable
247+    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
248+ help: consider introducing a named lifetime parameter
249+    |
250+ LL |     fn f<'a>(_: impl Foo<<'a>>) {}
251+    |         ++++             ++++
252+ 
253+ error[E0658]: anonymous lifetimes in `impl Trait` are unstable
254+   --> $DIR/impl-trait-missing-lifetime-gated.rs:58:25
255+    |
256+ LL |     fn g(mut x: impl Foo<>) -> Option<&()> { x.next() }
257+    |                         ^ expected named lifetime parameter
258+    |
259+    = help: add `#![feature(anonymous_lifetime_in_impl_trait)]` to the crate attributes to enable
260+    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
261+ help: consider introducing a named lifetime parameter
262+    |
263+ LL |     fn g<'a>(mut x: impl Foo<<'a>>) -> Option<&()> { x.next() }
264+    |         ++++                 ++++
265+ 
266+ error[E0658]: anonymous lifetimes in `impl Trait` are unstable
267+   --> $DIR/impl-trait-missing-lifetime-gated.rs:66:22
221268   |
222269LL |     fn f(_: impl Foo<()>) {}
223270   |                      ^ expected named lifetime parameter
@@ -230,7 +277,7 @@ LL |     fn f<'a>(_: impl Foo<'a, ()>) {}
230277   |         ++++             +++
231278
232279error[E0658]: anonymous lifetimes in `impl Trait` are unstable
233-   --> $DIR/impl-trait-missing-lifetime-gated.rs:58 :26
280+   --> $DIR/impl-trait-missing-lifetime-gated.rs:69 :26
234281   |
235282LL |     fn g(mut x: impl Foo<()>) -> Option<&()> { x.next() }
236283   |                          ^ expected named lifetime parameter
@@ -242,7 +289,7 @@ help: consider introducing a named lifetime parameter
242289LL |     fn g<'a>(mut x: impl Foo<'a, ()>) -> Option<&()> { x.next() }
243290   |         ++++                 +++
244291
245- error: aborting due to 14  previous errors; 1 warning emitted
292+ error: aborting due to 17  previous errors; 1 warning emitted
246293
247294Some errors have detailed explanations: E0106, E0658.
248295For more information about an error, try `rustc --explain E0106`.
0 commit comments