// check-pass
#![allow(unused_variables)]
// Test that `<Type as Trait>::Output` and `Self::Output` are accepted as type annotations in let
// bindings

// pretty-expanded FIXME #23616

trait Int {
    fn one() -> Self;
    fn leading_zeros(self) -> usize;
}

trait Foo {
    type T : Int;

    fn test(&self) {
        let r: <Self as Foo>::T = Int::one();
        let r: Self::T = Int::one();
    }
}

fn main() {}
