mirror of https://github.com/rust-lang/rust
26 lines
643 B
Rust
26 lines
643 B
Rust
// Check that we eventually catch types of assoc const bounds
|
|
// (containing late-bound vars) that are ill-formed.
|
|
#![feature(associated_const_equality)]
|
|
|
|
trait Trait<T> {
|
|
const K: T;
|
|
}
|
|
|
|
fn take(
|
|
_: impl Trait<
|
|
<<for<'a> fn(&'a str) -> &'a str as Project>::Out as Discard>::Out,
|
|
K = { () }
|
|
>,
|
|
) {}
|
|
//~^^^^^^ ERROR implementation of `Project` is not general enough
|
|
//~^^^^ ERROR higher-ranked subtype error
|
|
//~| ERROR higher-ranked subtype error
|
|
|
|
trait Project { type Out; }
|
|
impl<T> Project for fn(T) -> T { type Out = T; }
|
|
|
|
trait Discard { type Out; }
|
|
impl<T: ?Sized> Discard for T { type Out = (); }
|
|
|
|
fn main() {}
|