diff options
| author | Tshepang Mbambo <hopsi@tuta.io> | 2025-08-25 11:29:25 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-25 11:29:25 +0200 |
| commit | d1d1fb3bb1ff6c8ea38293c4362aa4716d13eafa (patch) | |
| tree | b92935283dc39332d14862c9227eda4b865a507b /tests/debuginfo/recursive-struct.rs | |
| parent | 06608bafbc4a85ca4ba3008b9b18b34e320e6eba (diff) | |
| parent | 721337b92a2ea898a21ea01e420d80e2e33213d2 (diff) | |
Merge pull request #2551 from rust-lang/rustc-pull
Rustc pull update
Diffstat (limited to 'tests/debuginfo/recursive-struct.rs')
| -rw-r--r-- | tests/debuginfo/recursive-struct.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/debuginfo/recursive-struct.rs b/tests/debuginfo/recursive-struct.rs index 5be90992848..427a7100a4f 100644 --- a/tests/debuginfo/recursive-struct.rs +++ b/tests/debuginfo/recursive-struct.rs @@ -62,6 +62,7 @@ use self::Opt::{Empty, Val}; use std::boxed::Box as B; +use std::marker::PhantomData; enum Opt<T> { Empty, @@ -98,6 +99,11 @@ struct LongCycleWithAnonymousTypes { value: usize, } +struct Expanding<T> { + a: PhantomData<T>, + b: *const Expanding<(T, T)>, +} + // This test case makes sure that recursive structs are properly described. The Node structs are // generic so that we can have a new type (that newly needs to be described) for the different // cases. The potential problem with recursive types is that the DI generation algorithm gets @@ -205,6 +211,9 @@ fn main() { value: 30 }))))); + // This type can generate new instances infinitely if not handled properly. + std::hint::black_box(Expanding::<()> { a: PhantomData, b: std::ptr::null() }); + zzz(); // #break } |
