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