| //@ revisions: default unleash |
| //@[unleash]compile-flags: -Zunleash-the-miri-inside-of-you |
| |
| // This test ensures that we do not allow ZST statics to initialize themselves without ever |
| // actually creating a value of that type. This is important, as the ZST may have private fields |
| // that users can reasonably expect to only get initialized by their own code. Thus unsafe code |
| // can depend on this fact and will thus do unsound things when it is violated. |
| // See https://github.com/rust-lang/rust/issues/71078 for more details. |
| |
| static FOO: () = FOO; |
| //~^ ERROR could not evaluate static initializer |
| |
| static A: () = B; //~ cycle detected when evaluating initializer of static `A` |
| static B: () = A; |
| |
| fn main() { |
| FOO |
| } |