This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +40
-0
lines changed Expand file tree Collapse file tree 2 files changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ // #98842 stack overflow in trait inference
2+ //@ check-fail
3+ //@ edition:2021
4+ //~^^^ ERROR cycle detected when computing layout of `Foo`
5+
6+ // If the inner `Foo` is named through an associated type,
7+ // the "infinite size" error does not occur.
8+ struct Foo ( <& ' static Foo as :: core:: ops:: Deref >:: Target ) ;
9+ // But Rust will be unable to know whether `Foo` is sized or not,
10+ // and it will infinitely recurse somewhere trying to figure out the
11+ // size of this pointer (is my guess):
12+ const _: * const Foo = 0 as _ ;
13+ //~^ ERROR it is undefined behavior to use this value
14+
15+ pub fn main ( ) { }
Original file line number Diff line number Diff line change 1+ error[E0391]: cycle detected when computing layout of `Foo`
2+ |
3+ = note: ...which requires computing layout of `<&'static Foo as core::ops::deref::Deref>::Target`...
4+ = note: ...which again requires computing layout of `Foo`, completing the cycle
5+ note: cycle used when const-evaluating + checking `_`
6+ --> $DIR/stack-overflow-trait-infer-98842.rs:12:1
7+ |
8+ LL | const _: *const Foo = 0 as _;
9+ | ^^^^^^^^^^^^^^^^^^^
10+ = 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
11+
12+ error[E0080]: it is undefined behavior to use this value
13+ --> $DIR/stack-overflow-trait-infer-98842.rs:12:1
14+ |
15+ LL | const _: *const Foo = 0 as _;
16+ | ^^^^^^^^^^^^^^^^^^^ a cycle occurred during layout computation
17+ |
18+ = note: the raw bytes of the constant (size: 8, align: 8) {
19+ 00 00 00 00 00 00 00 00 │ ........
20+ }
21+
22+ error: aborting due to 2 previous errors
23+
24+ Some errors have detailed explanations: E0080, E0391.
25+ For more information about an error, try `rustc --explain E0080`.
You can’t perform that action at this time.
0 commit comments