Add regression test
This commit is contained in:
parent
0d33ab7af4
commit
a7e8208074
3 changed files with 60 additions and 0 deletions
13
src/test/ui/issues/issue-75777.nll.stderr
Normal file
13
src/test/ui/issues/issue-75777.nll.stderr
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
error: lifetime may not live long enough
|
||||||
|
--> $DIR/issue-75777.rs:13:5
|
||||||
|
|
|
||||||
|
LL | fn inject<'a, Env: 'a, A: 'a + Send>(v: A) -> Box<dyn FnOnce(&'a Env) -> BoxFuture<'a, A>> {
|
||||||
|
| -- lifetime `'a` defined here
|
||||||
|
LL | let fut: BoxFuture<'a, A> = Box::pin(future::ready(v));
|
||||||
|
LL | Box::new(move |_| fut)
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
|
||||||
|
|
|
||||||
|
= help: consider replacing `'a` with `'static`
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
17
src/test/ui/issues/issue-75777.rs
Normal file
17
src/test/ui/issues/issue-75777.rs
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
// Regression test for #75777.
|
||||||
|
// Checks that a boxed future can be properly constructed.
|
||||||
|
|
||||||
|
#![feature(future_readiness_fns)]
|
||||||
|
|
||||||
|
use std::future::{self, Future};
|
||||||
|
use std::pin::Pin;
|
||||||
|
|
||||||
|
type BoxFuture<'a, T> = Pin<Box<dyn Future<Output = T> + 'a + Send>>;
|
||||||
|
|
||||||
|
fn inject<'a, Env: 'a, A: 'a + Send>(v: A) -> Box<dyn FnOnce(&'a Env) -> BoxFuture<'a, A>> {
|
||||||
|
let fut: BoxFuture<'a, A> = Box::pin(future::ready(v));
|
||||||
|
Box::new(move |_| fut)
|
||||||
|
//~^ ERROR: cannot infer an appropriate lifetime
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
30
src/test/ui/issues/issue-75777.stderr
Normal file
30
src/test/ui/issues/issue-75777.stderr
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
|
||||||
|
--> $DIR/issue-75777.rs:13:14
|
||||||
|
|
|
||||||
|
LL | Box::new(move |_| fut)
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: first, the lifetime cannot outlive the lifetime `'a` as defined on the function body at 11:11...
|
||||||
|
--> $DIR/issue-75777.rs:11:11
|
||||||
|
|
|
||||||
|
LL | fn inject<'a, Env: 'a, A: 'a + Send>(v: A) -> Box<dyn FnOnce(&'a Env) -> BoxFuture<'a, A>> {
|
||||||
|
| ^^
|
||||||
|
note: ...so that the types are compatible
|
||||||
|
--> $DIR/issue-75777.rs:13:14
|
||||||
|
|
|
||||||
|
LL | Box::new(move |_| fut)
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
= note: expected `(Pin<Box<dyn Future<Output = A> + Send>>,)`
|
||||||
|
found `(Pin<Box<(dyn Future<Output = A> + Send + 'a)>>,)`
|
||||||
|
= note: but, the lifetime must be valid for the static lifetime...
|
||||||
|
note: ...so that the expression is assignable
|
||||||
|
--> $DIR/issue-75777.rs:13:5
|
||||||
|
|
|
||||||
|
LL | Box::new(move |_| fut)
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= note: expected `Box<(dyn FnOnce(&'a Env) -> Pin<Box<(dyn Future<Output = A> + Send + 'a)>> + 'static)>`
|
||||||
|
found `Box<dyn FnOnce(&'a Env) -> Pin<Box<(dyn Future<Output = A> + Send + 'a)>>>`
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0495`.
|
Loading…
Add table
Add a link
Reference in a new issue