| //@ revisions: good bad good_new bad_new |
| //@[good_new] compile-flags: -Znext-solver |
| //@[bad_new] compile-flags: -Znext-solver |
| //@ ignore-compare-mode-next-solver (explicit revisions) |
| //@[good] check-pass |
| //@[good_new] check-pass |
| |
| #![feature(trivial_bounds)] |
| #![allow(trivial_bounds)] |
| |
| trait Bad { |
| type Assert |
| where |
| Self: Sized; |
| } |
| |
| impl Bad for [()] {} |
| |
| #[cfg(any(bad, bad_new))] |
| const FOO: <[()] as Bad>::Assert = todo!(); |
| //[bad]~^ ERROR the size for values of type `[()]` cannot be known at compilation time |
| //[bad]~| ERROR the size for values of type `[()]` cannot be known at compilation time |
| //[bad_new]~^^^ ERROR the size for values of type `[()]` cannot be known at compilation time |
| //[bad_new]~| ERROR the size for values of type `[()]` cannot be known at compilation time |
| |
| #[cfg(any(good, good_new))] |
| // Well-formed in trivially false param-env |
| fn foo() where [()]: Sized { |
| let _: <[()] as Bad>::Assert; |
| } |
| |
| fn main() {} |