mirror of https://github.com/rust-lang/rust
29 lines
629 B
Rust
29 lines
629 B
Rust
//@ build-pass (FIXME(62277): could be check-pass?)
|
|
|
|
// Regression test related to #56288. Check that a supertrait projection (of
|
|
// `Output`) that references `Self` can be ok if it is referencing a projection (of
|
|
// `Self::Target`, in this case). Note that we still require the user to manually
|
|
// specify both `Target` and `Output` for now.
|
|
|
|
trait Base {
|
|
type Output;
|
|
}
|
|
|
|
trait Helper: Base<Output=<Self as Helper>::Target> {
|
|
type Target;
|
|
}
|
|
|
|
impl Base for u32
|
|
{
|
|
type Output = i32;
|
|
}
|
|
|
|
impl Helper for u32
|
|
{
|
|
type Target = i32;
|
|
}
|
|
|
|
fn main() {
|
|
let _x: Box<dyn Helper<Target=i32, Output=i32>> = Box::new(2u32);
|
|
}
|