error[E0391]: cycle detected when building THIR for `defines` --> $DIR/non-structural-match-types-cycle-err.rs:19:9 | LL | AnyOption::<_>::NONE => {} | ^^^^^^^^^^^^^^^^^^^^ | note: ...which requires evaluating type-level constant... --> $DIR/non-structural-match-types-cycle-err.rs:5:5 | LL | const NONE: Option = None; | ^^^^^^^^^^^^^^^^^^^^^ note: ...which requires const-evaluating + checking `::NONE`... --> $DIR/non-structural-match-types-cycle-err.rs:5:5 | LL | const NONE: Option = None; | ^^^^^^^^^^^^^^^^^^^^^ = note: ...which requires computing layout of `core::option::Option<{async block@$DIR/non-structural-match-types-cycle-err.rs:18:16: 18:21}>`... = note: ...which requires computing layout of `{async block@$DIR/non-structural-match-types-cycle-err.rs:18:16: 18:21}`... note: ...which requires optimizing MIR for `defines::{closure#0}`... --> $DIR/non-structural-match-types-cycle-err.rs:18:16 | LL | match Some(async {}) { | ^^^^^ note: ...which requires elaborating drops for `defines::{closure#0}`... --> $DIR/non-structural-match-types-cycle-err.rs:18:16 | LL | match Some(async {}) { | ^^^^^ note: ...which requires borrow-checking `defines`... --> $DIR/non-structural-match-types-cycle-err.rs:17:1 | LL | fn defines() { | ^^^^^^^^^^^^ note: ...which requires promoting constants in MIR for `defines`... --> $DIR/non-structural-match-types-cycle-err.rs:17:1 | LL | fn defines() { | ^^^^^^^^^^^^ note: ...which requires checking if `defines` contains FFI-unwind calls... --> $DIR/non-structural-match-types-cycle-err.rs:17:1 | LL | fn defines() { | ^^^^^^^^^^^^ note: ...which requires building MIR for `defines`... --> $DIR/non-structural-match-types-cycle-err.rs:17:1 | LL | fn defines() { | ^^^^^^^^^^^^ note: ...which requires match-checking `defines`... --> $DIR/non-structural-match-types-cycle-err.rs:17:1 | LL | fn defines() { | ^^^^^^^^^^^^ = note: ...which again requires building THIR for `defines`, completing the cycle note: cycle used when unsafety-checking `defines` --> $DIR/non-structural-match-types-cycle-err.rs:17:1 | LL | fn defines() { | ^^^^^^^^^^^^ = note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0391`.