rust/tests/debuginfo/numeric-types.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

299 lines
10 KiB
Rust

//@ compile-flags:-g
//@ ignore-windows-gnu: #128981
// Note: u128 visualization was not supported in 10.0.22621.3233 but was fixed in 10.0.26100.2161.
// FIXME(#133107): this is temporarily marked as `only-64bit` because of course 32-bit msvc has
// a different integer width and thus underlying integer type display. Only marked as such to
// unblock the tree.
//@ only-64bit
//@ min-cdb-version: 10.0.26100.2161
//@ ignore-backends: gcc
// Tests the visualizations for `NonZero<T>`, `Wrapping<T>` and
// `Atomic{Bool,I8,I16,I32,I64,Isize,U8,U16,U32,U64,Usize}` located in `libcore.natvis`.
// === CDB TESTS ==================================================================================
//@ cdb-command: g
//@ cdb-command: dx nz_i8
//@ cdb-check:nz_i8 : 11 [Type: core::num::nonzero::NonZero<i8>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<i8>]
//@ cdb-command: dx nz_i16
//@ cdb-check:nz_i16 : 22 [Type: core::num::nonzero::NonZero<i16>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<i16>]
//@ cdb-command: dx nz_i32
//@ cdb-check:nz_i32 : 33 [Type: core::num::nonzero::NonZero<i32>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<i32>]
//@ cdb-command: dx nz_i64
//@ cdb-check:nz_i64 : 44 [Type: core::num::nonzero::NonZero<i64>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<i64>]
// 128-bit integers don't seem to work in CDB
//@ cdb-command: dx nz_i128
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<i128>]
//@ cdb-command: dx nz_isize
//@ cdb-check:nz_isize : 66 [Type: core::num::nonzero::NonZero<isize>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<isize>]
//@ cdb-command: dx nz_u8
//@ cdb-check:nz_u8 : 0x4d [Type: core::num::nonzero::NonZero<u8>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<u8>]
//@ cdb-command: dx nz_u16
//@ cdb-check:nz_u16 : 0x58 [Type: core::num::nonzero::NonZero<u16>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<u16>]
//@ cdb-command: dx nz_u32
//@ cdb-check:nz_u32 : 0x63 [Type: core::num::nonzero::NonZero<u32>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<u32>]
//@ cdb-command: dx nz_u64
//@ cdb-check:nz_u64 : 0x64 [Type: core::num::nonzero::NonZero<u64>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<u64>]
//@ cdb-command: dx nz_u128
//@ cdb-check:nz_u128 : 111 [Type: core::num::nonzero::NonZero<u128>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<u128>]
//@ cdb-command: dx nz_usize
//@ cdb-check:nz_usize : 0x7a [Type: core::num::nonzero::NonZero<usize>]
//@ cdb-check: [<Raw View>] [Type: core::num::nonzero::NonZero<usize>]
//@ cdb-command: dx w_i8
//@ cdb-check:w_i8 : 10 [Type: core::num::wrapping::Wrapping<i8>]
//@ cdb-check: [+0x000] __0 : 10 [Type: char]
//@ cdb-command: dx w_i16
//@ cdb-check:w_i16 : 20 [Type: core::num::wrapping::Wrapping<i16>]
//@ cdb-check: [+0x000] __0 : 20 [Type: short]
//@ cdb-command: dx w_i32
//@ cdb-check:w_i32 : 30 [Type: core::num::wrapping::Wrapping<i32>]
//@ cdb-check: [+0x000] __0 : 30 [Type: int]
//@ cdb-command: dx w_i64
//@ cdb-check:w_i64 : 40 [Type: core::num::wrapping::Wrapping<i64>]
//@ cdb-check: [+0x000] __0 : 40 [Type: __int64]
//@ cdb-command: dx w_i128
//@ cdb-check:w_i128 : 50 [Type: core::num::wrapping::Wrapping<i128>]
//@ cdb-check: [+0x000] __0 : 50 [Type: i128]
//@ cdb-command: dx w_isize
//@ cdb-check:w_isize : 60 [Type: core::num::wrapping::Wrapping<isize>]
//@ cdb-check: [+0x000] __0 : 60 [Type: __int64]
//@ cdb-command: dx w_u8
//@ cdb-check:w_u8 : 0x46 [Type: core::num::wrapping::Wrapping<u8>]
//@ cdb-check: [+0x000] __0 : 0x46 [Type: unsigned char]
//@ cdb-command: dx w_u16
//@ cdb-check:w_u16 : 0x50 [Type: core::num::wrapping::Wrapping<u16>]
//@ cdb-check: [+0x000] __0 : 0x50 [Type: unsigned short]
//@ cdb-command: dx w_u32
//@ cdb-check:w_u32 : 0x5a [Type: core::num::wrapping::Wrapping<u32>]
//@ cdb-check: [+0x000] __0 : 0x5a [Type: unsigned int]
//@ cdb-command: dx w_u64
//@ cdb-check:w_u64 : 0x64 [Type: core::num::wrapping::Wrapping<u64>]
//@ cdb-check: [+0x000] __0 : 0x64 [Type: unsigned __int64]
//@ cdb-command: dx w_u128
//@ cdb-check:w_u128 : 110 [Type: core::num::wrapping::Wrapping<u128>]
//@ cdb-check: [+0x000] __0 : 110 [Type: u128]
//@ cdb-command: dx w_usize
//@ cdb-check:w_usize : 0x78 [Type: core::num::wrapping::Wrapping<usize>]
//@ cdb-check: [+0x000] __0 : 0x78 [Type: unsigned __int64]
//@ cdb-command: dx a_bool_t
//@ cdb-check:a_bool_t : true [Type: core::sync::atomic::AtomicBool]
//@ cdb-check: [+0x000] v : 0x1 [Type: core::cell::UnsafeCell<u8>]
//@ cdb-command: dx a_bool_f
//@ cdb-check:a_bool_f : false [Type: core::sync::atomic::AtomicBool]
//@ cdb-check: [+0x000] v : 0x0 [Type: core::cell::UnsafeCell<u8>]
//@ cdb-command: dx a_i8
//@ cdb-check:a_i8 : 2 [Type: core::sync::atomic::AtomicI8]
//@ cdb-check: [+0x000] v : 2 [Type: core::cell::UnsafeCell<i8>]
//@ cdb-command: dx a_i16
//@ cdb-check:a_i16 : 4 [Type: core::sync::atomic::AtomicI16]
//@ cdb-check: [+0x000] v : 4 [Type: core::cell::UnsafeCell<i16>]
//@ cdb-command: dx a_i32
//@ cdb-check:a_i32 : 8 [Type: core::sync::atomic::AtomicI32]
//@ cdb-check: [+0x000] v : 8 [Type: core::cell::UnsafeCell<i32>]
//@ cdb-command: dx a_i64
//@ cdb-check:a_i64 : 16 [Type: core::sync::atomic::AtomicI64]
//@ cdb-check: [+0x000] v : 16 [Type: core::cell::UnsafeCell<i64>]
//@ cdb-command: dx a_isize
//@ cdb-check:a_isize : 32 [Type: core::sync::atomic::AtomicIsize]
//@ cdb-check: [+0x000] v : 32 [Type: core::cell::UnsafeCell<isize>]
//@ cdb-command: dx a_u8
//@ cdb-check:a_u8 : 0x40 [Type: core::sync::atomic::AtomicU8]
//@ cdb-check: [+0x000] v : 0x40 [Type: core::cell::UnsafeCell<u8>]
//@ cdb-command: dx a_u16
//@ cdb-check:a_u16 : 0x80 [Type: core::sync::atomic::AtomicU16]
//@ cdb-check: [+0x000] v : 0x80 [Type: core::cell::UnsafeCell<u16>]
//@ cdb-command: dx a_u32
//@ cdb-check:a_u32 : 0x100 [Type: core::sync::atomic::AtomicU32]
//@ cdb-check: [+0x000] v : 0x100 [Type: core::cell::UnsafeCell<u32>]
//@ cdb-command: dx a_u64
//@ cdb-check:a_u64 : 0x200 [Type: core::sync::atomic::AtomicU64]
//@ cdb-check: [+0x000] v : 0x200 [Type: core::cell::UnsafeCell<u64>]
//@ cdb-command: dx a_usize
//@ cdb-check:a_usize : 0x400 [Type: core::sync::atomic::AtomicUsize]
//@ cdb-check: [+0x000] v : 0x400 [Type: core::cell::UnsafeCell<usize>]
// === GDB TESTS ===================================================================================
//@ gdb-command:run
//@ gdb-command:print/d nz_i8
//@ gdb-check:[...]$1 = 11
//@ gdb-command:print nz_i16
//@ gdb-check:[...]$2 = 22
//@ gdb-command:print nz_i32
//@ gdb-check:[...]$3 = 33
//@ gdb-command:print nz_i64
//@ gdb-check:[...]$4 = 44
//@ gdb-command:print nz_i128
//@ gdb-check:[...]$5 = 55
//@ gdb-command:print nz_isize
//@ gdb-check:[...]$6 = 66
//@ gdb-command:print/d nz_u8
//@ gdb-check:[...]$7 = 77
//@ gdb-command:print nz_u16
//@ gdb-check:[...]$8 = 88
//@ gdb-command:print nz_u32
//@ gdb-check:[...]$9 = 99
//@ gdb-command:print nz_u64
//@ gdb-check:[...]$10 = 100
//@ gdb-command:print nz_u128
//@ gdb-check:[...]$11 = 111
//@ gdb-command:print nz_usize
//@ gdb-check:[...]$12 = 122
// gdb-command:print/x nz_i8
// gdb-check:[...]$13 = 0xb
// === LLDB TESTS ==================================================================================
//@ lldb-command:run
//@ lldb-command:v/d nz_i8
//@ lldb-check:[...] 11 { __0 = { 0 = 11 } }
//@ lldb-command:v nz_i16
//@ lldb-check:[...] 22 { __0 = { 0 = 22 } }
//@ lldb-command:v nz_i32
//@ lldb-check:[...] 33 { __0 = { 0 = 33 } }
//@ lldb-command:v nz_i64
//@ lldb-check:[...] 44 { __0 = { 0 = 44 } }
//@ lldb-command:v nz_i128
//@ lldb-check:[...] 55 { __0 = { 0 = 55 } }
//@ lldb-command:v nz_isize
//@ lldb-check:[...] 66 { __0 = { 0 = 66 } }
//@ lldb-command:v/d nz_u8
//@ lldb-check:[...] 77 { __0 = { 0 = 77 } }
//@ lldb-command:v nz_u16
//@ lldb-check:[...] 88 { __0 = { 0 = 88 } }
//@ lldb-command:v nz_u32
//@ lldb-check:[...] 99 { __0 = { 0 = 99 } }
//@ lldb-command:v nz_u64
//@ lldb-check:[...] 100 { __0 = { 0 = 100 } }
//@ lldb-command:v nz_u128
//@ lldb-check:[...] 111 { __0 = { 0 = 111 } }
//@ lldb-command:v nz_usize
//@ lldb-check:[...] 122 { __0 = { 0 = 122 } }
use std::num::*;
use std::sync::atomic::*;
fn main() {
let nz_i8 = NonZero::new(11i8).unwrap();
let nz_i16 = NonZero::new(22i16).unwrap();
let nz_i32 = NonZero::new(33i32).unwrap();
let nz_i64 = NonZero::new(44i64).unwrap();
let nz_i128 = NonZero::new(55i128).unwrap();
let nz_isize = NonZero::new(66isize).unwrap();
let nz_u8 = NonZero::new(77u8).unwrap();
let nz_u16 = NonZero::new(88u16).unwrap();
let nz_u32 = NonZero::new(99u32).unwrap();
let nz_u64 = NonZero::new(100u64).unwrap();
let nz_u128 = NonZero::new(111u128).unwrap();
let nz_usize = NonZero::new(122usize).unwrap();
let w_i8 = Wrapping(10i8);
let w_i16 = Wrapping(20i16);
let w_i32 = Wrapping(30i32);
let w_i64 = Wrapping(40i64);
let w_i128 = Wrapping(50i128);
let w_isize = Wrapping(60isize);
let w_u8 = Wrapping(70u8);
let w_u16 = Wrapping(80u16);
let w_u32 = Wrapping(90u32);
let w_u64 = Wrapping(100u64);
let w_u128 = Wrapping(110u128);
let w_usize = Wrapping(120usize);
let a_bool_t = AtomicBool::new(true);
let a_bool_f = AtomicBool::new(false);
let a_i8 = AtomicI8::new(2);
let a_i16 = AtomicI16::new(4);
let a_i32 = AtomicI32::new(8);
let a_i64 = AtomicI64::new(16);
let a_isize = AtomicIsize::new(32);
let a_u8 = AtomicU8::new(64);
let a_u16 = AtomicU16::new(128);
let a_u32 = AtomicU32::new(256);
let a_u64 = AtomicU64::new(512);
let a_usize = AtomicUsize::new(1024);
zzz(); // #break
}
fn zzz() { }