//@ edition:2021 struct AnyOption(T); impl AnyOption { const NONE: Option = None; } // This is an unfortunate side-effect of borrowchecking nested items // together with their parent. Evaluating the `AnyOption::<_>::NONE` // pattern for exhaustiveness checking relies on the layout of the // async block. This layout relies on `optimized_mir` of the nested // item which is now borrowck'd together with its parent. As // borrowck of the parent requires us to have already lowered the match, // this is a query cycle. fn uwu() {} fn defines() { match Some(async {}) { AnyOption::<_>::NONE => {} //~^ ERROR cycle detected when building THIR for `defines` _ => {} } } fn main() {}