//@ run-pass
#![allow(non_shorthand_field_patterns)]

use std::mem;

struct S {
    x: isize,
    y: isize,
}

type S2 = S;

struct S3<U,V> {
    x: U,
    y: V
}

type S4<U> = S3<U, char>;

fn main() {
    let s = S2 {
        x: 1,
        y: 2,
    };
    match s {
        S2 {
            x: x,
            y: y
        } => {
            assert_eq!(x, 1);
            assert_eq!(y, 2);
        }
    }
    // check that generics can be specified from the pattern
    let s = S4 {
        x: 4,
        y: 'a'
    };
    match s {
        S4::<u8> {
            x: x,
            y: y
        } => {
            assert_eq!(x, 4);
            assert_eq!(y, 'a');
            assert_eq!(mem::size_of_val(&x), 1);
        }
    };
    // check that generics can be specified from the constructor
    let s = S4::<u16> {
        x: 5,
        y: 'b'
    };
    match s {
        S4 {
            x: x,
            y: y
        } => {
            assert_eq!(x, 5);
            assert_eq!(y, 'b');
            assert_eq!(mem::size_of_val(&x), 2);
        }
    };
}
