| //@ 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() { () } |