//@ edition:2018
//@ check-pass

#![allow(non_snake_case)]

use std::pin::Pin;

struct Struct { }

type Alias = Struct;

impl Struct {
    // Test using an alias for `Struct`:
    //
    // FIXME. We currently fail to recognize this as the self type, which
    // feels like a bug.

    async fn ref_Alias(self: &Alias, f: &u32) -> &u32 {
        f
    }

    async fn box_ref_Alias(self: Box<&Alias>, f: &u32) -> &u32 {
        f
    }

    async fn pin_ref_Alias(self: Pin<&Alias>, f: &u32) -> &u32 {
        f
    }

    async fn box_box_ref_Alias(self: Box<Box<&Alias>>, f: &u32) -> &u32 {
        f
    }

    async fn box_pin_ref_Alias(self: Box<Pin<&Alias>>, f: &u32) -> &u32 {
        f
    }
}

fn main() { }
