rust/tests/ui/impl-trait/in-trait/alias-bounds-when-not-wf.rs

20 lines
616 B
Rust

//@ compile-flags: -Znext-solver
#![feature(lazy_type_alias)]
//~^ WARN the feature `lazy_type_alias` is incomplete
trait Foo {}
type A<T: Foo> = T;
struct W<T>(T);
// For `W<A<usize>>` to be WF, `A<usize>: Sized` must hold. However, when assembling
// alias bounds for `A<usize>`, we try to normalize it, but it doesn't hold because
// `usize: Foo` doesn't hold. Therefore we ICE, because we don't expect to still
// encounter weak types in `assemble_alias_bound_candidates_recur`.
fn hello(_: W<A<usize>>) {}
//~^ ERROR the size for values of type `A<usize>` cannot be known at compilation time
fn main() {}