//@ compile-flags:-g
//@ disable-gdb-pretty-printers
//@ ignore-backends: gcc

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

//@ gdb-command:run

//@ gdb-command:print no_padding16
//@ gdb-check:$1 = tuple_struct::NoPadding16 (10000, -10001)

//@ gdb-command:print no_padding32
//@ gdb-check:$2 = tuple_struct::NoPadding32 (-10002, -10003.5, 10004)

//@ gdb-command:print no_padding64
//@ gdb-check:$3 = tuple_struct::NoPadding64 (-10005.5, 10006, 10007)

//@ gdb-command:print no_padding163264
//@ gdb-check:$4 = tuple_struct::NoPadding163264 (-10008, 10009, 10010, 10011)

//@ gdb-command:print internal_padding
//@ gdb-check:$5 = tuple_struct::InternalPadding (10012, -10013)

//@ gdb-command:print padding_at_end
//@ gdb-check:$6 = tuple_struct::PaddingAtEnd (-10014, 10015)


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

//@ lldb-command:run

//@ lldb-command:v no_padding16
//@ lldb-check:[...] { 0 = 10000 1 = -10001 }

//@ lldb-command:v no_padding32
//@ lldb-check:[...] { 0 = -10002 1 = -10003.5 2 = 10004 }

//@ lldb-command:v no_padding64
//@ lldb-check:[...] { 0 = -10005.5 1 = 10006 2 = 10007 }

//@ lldb-command:v no_padding163264
//@ lldb-check:[...] { 0 = -10008 1 = 10009 2 = 10010 3 = 10011 }

//@ lldb-command:v internal_padding
//@ lldb-check:[...] { 0 = 10012 1 = -10013 }

//@ lldb-command:v padding_at_end
//@ lldb-check:[...] { 0 = -10014 1 = 10015 }

// This test case mainly makes sure that no field names are generated for tuple structs (as opposed
// to all fields having the name "<unnamed_field>"). Otherwise they are handled the same a normal
// structs.


struct NoPadding16(u16, i16);
struct NoPadding32(i32, f32, u32);
struct NoPadding64(f64, i64, u64);
struct NoPadding163264(i16, u16, i32, u64);
struct InternalPadding(u16, i64);
struct PaddingAtEnd(i64, u16);

fn main() {
    let no_padding16 = NoPadding16(10000, -10001);
    let no_padding32 = NoPadding32(-10002, -10003.5, 10004);
    let no_padding64 = NoPadding64(-10005.5, 10006, 10007);
    let no_padding163264 = NoPadding163264(-10008, 10009, 10010, 10011);

    let internal_padding = InternalPadding(10012, -10013);
    let padding_at_end = PaddingAtEnd(-10014, 10015);

    zzz(); // #break
}

fn zzz() {()}
