//@ ignore-aarch64

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

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

//@ gdb-command:print c_style_enum::SINGLE_VARIANT
//@ gdb-check:$1 = c_style_enum::SingleVariant::TheOnlyVariant

//@ gdb-command:print c_style_enum::AUTO_ONE
//@ gdb-check:$2 = c_style_enum::AutoDiscriminant::One

//@ gdb-command:print c_style_enum::AUTO_TWO
//@ gdb-check:$3 = c_style_enum::AutoDiscriminant::One

//@ gdb-command:print c_style_enum::AUTO_THREE
//@ gdb-check:$4 = c_style_enum::AutoDiscriminant::One

//@ gdb-command:print c_style_enum::MANUAL_ONE
//@ gdb-check:$5 = c_style_enum::ManualDiscriminant::OneHundred

//@ gdb-command:print c_style_enum::MANUAL_TWO
//@ gdb-check:$6 = c_style_enum::ManualDiscriminant::OneHundred

//@ gdb-command:print c_style_enum::MANUAL_THREE
//@ gdb-check:$7 = c_style_enum::ManualDiscriminant::OneHundred

//@ gdb-command:run

//@ gdb-command:print auto_one
//@ gdb-check:$8 = c_style_enum::AutoDiscriminant::One

//@ gdb-command:print auto_two
//@ gdb-check:$9 = c_style_enum::AutoDiscriminant::Two

//@ gdb-command:print auto_three
//@ gdb-check:$10 = c_style_enum::AutoDiscriminant::Three

//@ gdb-command:print manual_one_hundred
//@ gdb-check:$11 = c_style_enum::ManualDiscriminant::OneHundred

//@ gdb-command:print manual_one_thousand
//@ gdb-check:$12 = c_style_enum::ManualDiscriminant::OneThousand

//@ gdb-command:print manual_one_million
//@ gdb-check:$13 = c_style_enum::ManualDiscriminant::OneMillion

//@ gdb-command:print single_variant
//@ gdb-check:$14 = c_style_enum::SingleVariant::TheOnlyVariant

//@ gdb-command:print AUTO_TWO
//@ gdb-check:$15 = c_style_enum::AutoDiscriminant::Two

//@ gdb-command:print AUTO_THREE
//@ gdb-check:$16 = c_style_enum::AutoDiscriminant::Three

//@ gdb-command:print MANUAL_TWO
//@ gdb-check:$17 = c_style_enum::ManualDiscriminant::OneThousand

//@ gdb-command:print MANUAL_THREE
//@ gdb-check:$18 = c_style_enum::ManualDiscriminant::OneMillion


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

//@ lldb-command:run

//@ lldb-command:v auto_one
//@ lldb-check:[...] One

//@ lldb-command:v auto_two
//@ lldb-check:[...] Two

//@ lldb-command:v auto_three
//@ lldb-check:[...] Three

//@ lldb-command:v manual_one_hundred
//@ lldb-check:[...] OneHundred

//@ lldb-command:v manual_one_thousand
//@ lldb-check:[...] OneThousand

//@ lldb-command:v manual_one_million
//@ lldb-check:[...] OneMillion

//@ lldb-command:v single_variant
//@ lldb-check:[...] TheOnlyVariant

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

use self::AutoDiscriminant::{One, Two, Three};
use self::ManualDiscriminant::{OneHundred, OneThousand, OneMillion};
use self::SingleVariant::TheOnlyVariant;

#[derive(Copy, Clone)]
enum AutoDiscriminant {
    One,
    Two,
    Three
}

#[derive(Copy, Clone)]
enum ManualDiscriminant {
    OneHundred = 100,
    OneThousand = 1000,
    OneMillion = 1000000
}

#[derive(Copy, Clone)]
#[repr(u8)]
enum SingleVariant {
    TheOnlyVariant
}

static SINGLE_VARIANT: SingleVariant = TheOnlyVariant;

static mut AUTO_ONE: AutoDiscriminant = One;
static mut AUTO_TWO: AutoDiscriminant = One;
static mut AUTO_THREE: AutoDiscriminant = One;

static mut MANUAL_ONE: ManualDiscriminant = OneHundred;
static mut MANUAL_TWO: ManualDiscriminant = OneHundred;
static mut MANUAL_THREE: ManualDiscriminant = OneHundred;

fn main() {

    let auto_one = One;
    let auto_two = Two;
    let auto_three = Three;

    let manual_one_hundred = OneHundred;
    let manual_one_thousand = OneThousand;
    let manual_one_million = OneMillion;

    let single_variant = TheOnlyVariant;

    unsafe {
        AUTO_TWO = Two;
        AUTO_THREE = Three;

        MANUAL_TWO = OneThousand;
        MANUAL_THREE = OneMillion;
    };

    zzz(); // #break

    // Borrow to avoid an eager load of the constant value in the static.
    let a = &SINGLE_VARIANT;
    let a = unsafe { AUTO_ONE };
    let a = unsafe { MANUAL_ONE };
}

fn zzz() { () }
