You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
949 B
37 lines
949 B
#![deny(unreachable_code)]
|
|
|
|
use futures::{try_join, executor::block_on};
|
|
|
|
// TODO: This abuses https://github.com/rust-lang/rust/issues/58733 in order to
|
|
// test behaviour of the `try_join!` macro with the never type before it is
|
|
// stabilized. Once `!` is again stabilized this can be removed and replaced
|
|
// with direct use of `!` below where `Never` is used.
|
|
trait MyTrait {
|
|
type Output;
|
|
}
|
|
impl<T> MyTrait for fn() -> T {
|
|
type Output = T;
|
|
}
|
|
type Never = <fn() -> ! as MyTrait>::Output;
|
|
|
|
|
|
#[test]
|
|
fn try_join_never_error() {
|
|
block_on(async {
|
|
let future1 = async { Ok::<(), Never>(()) };
|
|
let future2 = async { Ok::<(), Never>(()) };
|
|
try_join!(future1, future2)
|
|
})
|
|
.unwrap();
|
|
}
|
|
|
|
#[test]
|
|
fn try_join_never_ok() {
|
|
block_on(async {
|
|
let future1 = async { Err::<Never, ()>(()) };
|
|
let future2 = async { Err::<Never, ()>(()) };
|
|
try_join!(future1, future2)
|
|
})
|
|
.unwrap_err();
|
|
}
|