rust/src/test/ui/async-await/issues/issue-59972.rs

35 lines
707 B
Rust
Raw Normal View History

// Incorrect handling of uninhabited types could cause us to mark generator
// types as entirely uninhabited, when they were in fact constructible. This
// caused us to hit "unreachable" code (illegal instruction on x86).
// run-pass
2019-05-05 19:23:47 -05:00
// compile-flags: --edition=2018
pub enum Uninhabited { }
fn uninhabited_async() -> Uninhabited {
unreachable!()
}
async fn noop() { }
async fn contains_never() {
let error = uninhabited_async();
noop().await;
2019-05-05 19:23:47 -05:00
let error2 = error;
}
async fn overlap_never() {
let error1 = uninhabited_async();
noop().await;
let error2 = uninhabited_async();
drop(error1);
noop().await;
drop(error2);
}
2019-05-05 19:23:47 -05:00
#[allow(unused_must_use)]
fn main() {
}