// LLDB 1800+ tests were not tested in CI, broke, and now are disabled
//@ ignore-lldb

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

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

//@ gdb-command:run

//@ gdb-command:print *the_a
//@ gdb-check:$1 = unique_enum::ABC::TheA{x: 0, y: 8970181431921507452}

//@ gdb-command:print *the_b
//@ gdb-check:$2 = unique_enum::ABC::TheB(0, 286331153, 286331153)

//@ gdb-command:print *univariant
//@ gdb-check:$3 = unique_enum::Univariant::TheOnlyCase(123234)


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

//@ lldb-command:run

//@ lldb-command:v *the_a
//@ lldb-check:(unique_enum::ABC) *the_a = TheA{x:0, y:8970181431921507452} { x = 0 y = 8970181431921507452 }

//@ lldb-command:v *the_b
//@ lldb-check:(unique_enum::ABC) *the_b = TheB(0, 286331153, 286331153)

//@ lldb-command:v *univariant
//@ lldb-check:(unique_enum::Univariant) *univariant = TheOnlyCase(123234)

#![allow(unused_variables)]

// The first element is to ensure proper alignment, irrespective of the machines word size. Since
// the size of the discriminant value is machine dependent, this has be taken into account when
// datatype layout should be predictable as in this case.
enum ABC {
    TheA { x: i64, y: i64 },
    TheB (i64, i32, i32),
}

// This is a special case since it does not have the implicit discriminant field.
enum Univariant {
    TheOnlyCase(i64)
}

fn main() {

    // In order to avoid endianness trouble all of the following test values consist of a single
    // repeated byte. This way each interpretation of the union should look the same, no matter if
    // this is a big or little endian machine.

    // 0b0111110001111100011111000111110001111100011111000111110001111100 = 8970181431921507452
    // 0b01111100011111000111110001111100 = 2088533116
    // 0b0111110001111100 = 31868
    // 0b01111100 = 124
    let the_a: Box<_> = Box::new(ABC::TheA { x: 0, y: 8970181431921507452 });

    // 0b0001000100010001000100010001000100010001000100010001000100010001 = 1229782938247303441
    // 0b00010001000100010001000100010001 = 286331153
    // 0b0001000100010001 = 4369
    // 0b00010001 = 17
    let the_b: Box<_> = Box::new(ABC::TheB (0, 286331153, 286331153));

    let univariant: Box<_> = Box::new(Univariant::TheOnlyCase(123234));

    zzz(); // #break
}

fn zzz() {()}
