20 lines
583 B
Rust
20 lines
583 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 type `W<A<usize>>` is not well-formed
|
|
|
|
fn main() {}
|