rust/tests/debuginfo/c-style-enum.rs
Martin Nordholts 5b57d02e9f compiletest: Use //@ prefixes also for debuginfo test directives
So that when we later add support for revisions we can use the same
syntax for revisions as elsewhere.

This also prevents people from making typos for commands since
`src/tools/compiletest/src/directives/directive_names.rs` will catch such
typos now.

Note that we one FIXME for a non-trivial change for later:
```
// FIXME(148097): Change `// cdb-checksimple_closure` to `//@ cdb-check:simple_closure`
```
2025-11-25 06:13:45 +01:00

156 lines
4 KiB
Rust

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