//@ run-pass
//@ pretty-expanded FIXME #23616

pub fn main() {
    fn id_i8(n: i8) -> i8 { n }
    fn id_i16(n: i16) -> i16 { n }
    fn id_i32(n: i32) -> i32 { n }
    fn id_i64(n: i64) -> i64 { n }

    fn id_uint(n: usize) -> usize { n }
    fn id_u8(n: u8) -> u8 { n }
    fn id_u16(n: u16) -> u16 { n }
    fn id_u32(n: u32) -> u32 { n }
    fn id_u64(n: u64) -> u64 { n }

    let _i: i8 = -128;
    let j = -128;
    id_i8(j);
    id_i8(-128);

    let _i: i16 = -32_768;
    let j = -32_768;
    id_i16(j);
    id_i16(-32_768);

    let _i: i32 = -2_147_483_648;
    let j = -2_147_483_648;
    id_i32(j);
    id_i32(-2_147_483_648);

    let _i: i64 = -9_223_372_036_854_775_808;
    let j = -9_223_372_036_854_775_808;
    id_i64(j);
    id_i64(-9_223_372_036_854_775_808);

    let _i: usize = 1;
    let j = 1;
    id_uint(j);
    id_uint(1);

    let _i: u8 = 255;
    let j = 255;
    id_u8(j);
    id_u8(255);

    let _i: u16 = 65_535;
    let j = 65_535;
    id_u16(j);
    id_u16(65_535);

    let _i: u32 = 4_294_967_295;
    let j = 4_294_967_295;
    id_u32(j);
    id_u32(4_294_967_295);

    let _i: u64 = 18_446_744_073_709_551_615;
    let j = 18_446_744_073_709_551_615;
    id_u64(j);
    id_u64(18_446_744_073_709_551_615);
}
