parent
7956b1cef7
commit
b9585fda7b
6 changed files with 172 additions and 20 deletions
|
|
@ -5,6 +5,11 @@ LL | fn elision<T: Fn() -> &i32>() {
|
|||
| ^ expected named lifetime parameter
|
||||
|
|
||||
= help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
|
||||
= note: for more information on higher-ranked polymorphism, visit https://doc.rust-lang.org/nomicon/hrtb.html
|
||||
help: consider making the bound lifetime-generic with a new `'a` lifetime
|
||||
|
|
||||
LL | fn elision<T: for<'a> Fn() -> &'a i32>() {
|
||||
| ^^^^^^^ ^^^
|
||||
help: consider using the `'static` lifetime
|
||||
|
|
||||
LL | fn elision<T: Fn() -> &'static i32>() {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,11 @@ LL | fn elision(_: fn() -> &i32) {
|
|||
| ^ expected named lifetime parameter
|
||||
|
|
||||
= help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
|
||||
= note: for more information on higher-ranked polymorphism, visit https://doc.rust-lang.org/nomicon/hrtb.html
|
||||
help: consider making the type lifetime-generic with a new `'a` lifetime
|
||||
|
|
||||
LL | fn elision(_: for<'a> fn() -> &'a i32) {
|
||||
| ^^^^^^^ ^^^
|
||||
help: consider using the `'static` lifetime
|
||||
|
|
||||
LL | fn elision(_: fn() -> &'static i32) {
|
||||
|
|
|
|||
15
src/test/ui/suggestions/missing-lt-for-hrtb.rs
Normal file
15
src/test/ui/suggestions/missing-lt-for-hrtb.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
struct X<'a>(&'a ());
|
||||
struct S<'a>(&'a dyn Fn(&X) -> &X);
|
||||
//~^ ERROR missing lifetime specifier
|
||||
//~| ERROR missing lifetime specifier
|
||||
struct V<'a>(&'a dyn for<'b> Fn(&X) -> &X);
|
||||
//~^ ERROR missing lifetime specifier
|
||||
//~| ERROR missing lifetime specifier
|
||||
|
||||
fn main() {
|
||||
let x = S(&|x| {
|
||||
println!("hi");
|
||||
x
|
||||
});
|
||||
x.0(&X(&()));
|
||||
}
|
||||
63
src/test/ui/suggestions/missing-lt-for-hrtb.stderr
Normal file
63
src/test/ui/suggestions/missing-lt-for-hrtb.stderr
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
error[E0106]: missing lifetime specifier
|
||||
--> $DIR/missing-lt-for-hrtb.rs:2:32
|
||||
|
|
||||
LL | struct S<'a>(&'a dyn Fn(&X) -> &X);
|
||||
| -- ^ expected named lifetime parameter
|
||||
|
|
||||
= help: this function's return type contains a borrowed value, but the signature does not say which one of argument 1's 2 lifetimes it is borrowed from
|
||||
= note: for more information on higher-ranked polymorphism, visit https://doc.rust-lang.org/nomicon/hrtb.html
|
||||
help: consider making the bound lifetime-generic with a new `'b` lifetime
|
||||
|
|
||||
LL | struct S<'a>(&'a dyn for<'b> Fn(&'b X) -> &'b X);
|
||||
| ^^^^^^^ ^^^^^ ^^^
|
||||
help: consider using the `'a` lifetime
|
||||
|
|
||||
LL | struct S<'a>(&'a dyn Fn(&X) -> &'a X);
|
||||
| ^^^
|
||||
|
||||
error[E0106]: missing lifetime specifier
|
||||
--> $DIR/missing-lt-for-hrtb.rs:2:33
|
||||
|
|
||||
LL | struct S<'a>(&'a dyn Fn(&X) -> &X);
|
||||
| -- ^ expected named lifetime parameter
|
||||
|
|
||||
= help: this function's return type contains a borrowed value, but the signature does not say which one of argument 1's 2 lifetimes it is borrowed from
|
||||
= note: for more information on higher-ranked polymorphism, visit https://doc.rust-lang.org/nomicon/hrtb.html
|
||||
help: consider making the bound lifetime-generic with a new `'b` lifetime
|
||||
|
|
||||
LL | struct S<'a>(&'a dyn for<'b> Fn(&'b X) -> &X<'b>);
|
||||
| ^^^^^^^ ^^^^^ ^^^^^
|
||||
help: consider using the `'a` lifetime
|
||||
|
|
||||
LL | struct S<'a>(&'a dyn Fn(&X) -> &X<'a>);
|
||||
| ^^^^^
|
||||
|
||||
error[E0106]: missing lifetime specifier
|
||||
--> $DIR/missing-lt-for-hrtb.rs:5:40
|
||||
|
|
||||
LL | struct V<'a>(&'a dyn for<'b> Fn(&X) -> &X);
|
||||
| -- ^ expected named lifetime parameter
|
||||
|
|
||||
= help: this function's return type contains a borrowed value, but the signature does not say which one of argument 1's 2 lifetimes it is borrowed from
|
||||
note: these named lifetimes are available to use
|
||||
--> $DIR/missing-lt-for-hrtb.rs:5:10
|
||||
|
|
||||
LL | struct V<'a>(&'a dyn for<'b> Fn(&X) -> &X);
|
||||
| ^^ ^^
|
||||
|
||||
error[E0106]: missing lifetime specifier
|
||||
--> $DIR/missing-lt-for-hrtb.rs:5:41
|
||||
|
|
||||
LL | struct V<'a>(&'a dyn for<'b> Fn(&X) -> &X);
|
||||
| -- ^ expected named lifetime parameter
|
||||
|
|
||||
= help: this function's return type contains a borrowed value, but the signature does not say which one of argument 1's 2 lifetimes it is borrowed from
|
||||
note: these named lifetimes are available to use
|
||||
--> $DIR/missing-lt-for-hrtb.rs:5:10
|
||||
|
|
||||
LL | struct V<'a>(&'a dyn for<'b> Fn(&X) -> &X);
|
||||
| ^^ ^^
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0106`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue