//@ compile-flags:-g

// === GDB TESTS ===================================================================================

// gdb-command:print simple_tuple::NO_PADDING_8
// gdb-check:$1 = (-50, 50)
// gdb-command:print simple_tuple::NO_PADDING_16
// gdb-check:$2 = (-1, 2, 3)
// gdb-command:print simple_tuple::NO_PADDING_32
// gdb-check:$3 = (4, 5, 6)
// gdb-command:print simple_tuple::NO_PADDING_64
// gdb-check:$4 = (7, 8, 9)

// gdb-command:print simple_tuple::INTERNAL_PADDING_1
// gdb-check:$5 = (10, 11)
// gdb-command:print simple_tuple::INTERNAL_PADDING_2
// gdb-check:$6 = (12, 13, 14, 15)

// gdb-command:print simple_tuple::PADDING_AT_END
// gdb-check:$7 = (16, 17)

// gdb-command:run

// gdb-command:print noPadding8
// gdb-check:$8 = (-100, 100)
// gdb-command:print noPadding16
// gdb-check:$9 = (0, 1, 2)
// gdb-command:print noPadding32
// gdb-check:$10 = (3, 4.5, 5)
// gdb-command:print noPadding64
// gdb-check:$11 = (6, 7.5, 8)

// gdb-command:print internalPadding1
// gdb-check:$12 = (9, 10)
// gdb-command:print internalPadding2
// gdb-check:$13 = (11, 12, 13, 14)

// gdb-command:print paddingAtEnd
// gdb-check:$14 = (15, 16)

// gdb-command:print simple_tuple::NO_PADDING_8
// gdb-check:$15 = (-127, 127)
// gdb-command:print simple_tuple::NO_PADDING_16
// gdb-check:$16 = (-10, 10, 9)
// gdb-command:print simple_tuple::NO_PADDING_32
// gdb-check:$17 = (14, 15, 16)
// gdb-command:print simple_tuple::NO_PADDING_64
// gdb-check:$18 = (17, 18, 19)

// gdb-command:print simple_tuple::INTERNAL_PADDING_1
// gdb-check:$19 = (110, 111)
// gdb-command:print simple_tuple::INTERNAL_PADDING_2
// gdb-check:$20 = (112, 113, 114, 115)

// gdb-command:print simple_tuple::PADDING_AT_END
// gdb-check:$21 = (116, 117)


// === LLDB TESTS ==================================================================================

// lldb-command:run

// lldb-command:v/d noPadding8
// lldb-check:[...] { 0 = -100 1 = 100 }
// lldb-command:v noPadding16
// lldb-check:[...] { 0 = 0 1 = 1 2 = 2 }
// lldb-command:v noPadding32
// lldb-check:[...] { 0 = 3 1 = 4.5 2 = 5 }
// lldb-command:v noPadding64
// lldb-check:[...] { 0 = 6 1 = 7.5 2 = 8 }

// lldb-command:v internalPadding1
// lldb-check:[...] { 0 = 9 1 = 10 }
// lldb-command:v internalPadding2
// lldb-check:[...] { 0 = 11 1 = 12 2 = 13 3 = 14 }

// lldb-command:v paddingAtEnd
// lldb-check:[...] { 0 = 15 1 = 16 }


// === CDB TESTS ==================================================================================

// cdb-command: g

// cdb-command:dx noPadding8,d
// cdb-check:noPadding8,d [...]: (-100, 100) [Type: tuple$<i8,u8>]
// cdb-check:[...][0]              : -100 [Type: [...]]
// cdb-check:[...][1]              : 100 [Type: [...]]
// cdb-command:dx noPadding16,d
// cdb-check:noPadding16,d [...]: (0, 1, 2) [Type: tuple$<i16,i16,u16>]
// cdb-check:[...][0]              : 0 [Type: [...]]
// cdb-check:[...][1]              : 1 [Type: [...]]
// cdb-check:[...][2]              : 2 [Type: [...]]
// cdb-command:dx noPadding32,d
// cdb-check:noPadding32,d [...]: (3, 4.5[...], 5) [Type: tuple$<i32,f32,u32>]
// cdb-check:[...][0]              : 3 [Type: [...]]
// cdb-check:[...][1]              : 4.5[...] [Type: [...]]
// cdb-check:[...][2]              : 5 [Type: [...]]
// cdb-command:dx noPadding64,d
// cdb-check:noPadding64,d [...]: (6, 7.5[...], 8) [Type: tuple$<i64,f64,u64>]
// cdb-check:[...][0]              : 6 [Type: [...]]
// cdb-check:[...][1]              : 7.500000 [Type: [...]]
// cdb-check:[...][2]              : 8 [Type: [...]]

// cdb-command:dx internalPadding1,d
// cdb-check:internalPadding1,d [...]: (9, 10) [Type: tuple$<i16,i32>]
// cdb-check:[...][0]              : 9 [Type: short]
// cdb-check:[...][1]              : 10 [Type: int]
// cdb-command:dx internalPadding2,d
// cdb-check:internalPadding2,d [...]: (11, 12, 13, 14) [Type: tuple$<i16,i32,u32,u64>]
// cdb-check:[...][0]              : 11 [Type: [...]]
// cdb-check:[...][1]              : 12 [Type: [...]]
// cdb-check:[...][2]              : 13 [Type: [...]]
// cdb-check:[...][3]              : 14 [Type: [...]]

// cdb-command:dx paddingAtEnd,d
// cdb-check:paddingAtEnd,d [...]: (15, 16) [Type: tuple$<i32,i16>]
// cdb-check:[...][0]              : 15 [Type: [...]]
// cdb-check:[...][1]              : 16 [Type: [...]]


#![allow(unused_variables)]
#![allow(dead_code)]
#![feature(omit_gdb_pretty_printer_section)]
#![omit_gdb_pretty_printer_section]

static mut NO_PADDING_8: (i8, u8) = (-50, 50);
static mut NO_PADDING_16: (i16, i16, u16) = (-1, 2, 3);

static mut NO_PADDING_32: (i32, f32, u32) = (4, 5.0, 6);
static mut NO_PADDING_64: (i64, f64, u64) = (7, 8.0, 9);

static mut INTERNAL_PADDING_1: (i16, i32) = (10, 11);
static mut INTERNAL_PADDING_2: (i16, i32, u32, u64) = (12, 13, 14, 15);

static mut PADDING_AT_END: (i32, i16) = (16, 17);

fn main() {
    let noPadding8: (i8, u8) = (-100, 100);
    let noPadding16: (i16, i16, u16) = (0, 1, 2);
    let noPadding32: (i32, f32, u32) = (3, 4.5, 5);
    let noPadding64: (i64, f64, u64) = (6, 7.5, 8);

    let internalPadding1: (i16, i32) = (9, 10);
    let internalPadding2: (i16, i32, u32, u64) = (11, 12, 13, 14);

    let paddingAtEnd: (i32, i16) = (15, 16);

    unsafe {
        NO_PADDING_8 = (-127, 127);
        NO_PADDING_16 = (-10, 10, 9);

        NO_PADDING_32 = (14, 15.0, 16);
        NO_PADDING_64 = (17, 18.0, 19);

        INTERNAL_PADDING_1 = (110, 111);
        INTERNAL_PADDING_2 = (112, 113, 114, 115);

        PADDING_AT_END = (116, 117);
    }

    zzz(); // #break
}

fn zzz() {()}
