From d9f60bcf67ea175ab3298608d8a94563e1ac0f6d Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Tue, 10 Mar 2020 22:31:27 +0100 Subject: [PATCH] add a test for rustc_layout(debug) --- src/test/ui/layout/debug.rs | 7 ++ src/test/ui/layout/debug.stderr | 120 ++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 src/test/ui/layout/debug.rs create mode 100644 src/test/ui/layout/debug.stderr diff --git a/src/test/ui/layout/debug.rs b/src/test/ui/layout/debug.rs new file mode 100644 index 000000000000..64a02ee5a22c --- /dev/null +++ b/src/test/ui/layout/debug.rs @@ -0,0 +1,7 @@ +#![feature(never_type, rustc_attrs)] +#![crate_type = "lib"] + +enum E { Foo, Bar(!, i32, i32) } + +#[rustc_layout(debug)] +type Test = E; //~ ERROR: layout debugging diff --git a/src/test/ui/layout/debug.stderr b/src/test/ui/layout/debug.stderr new file mode 100644 index 000000000000..df8b70f30707 --- /dev/null +++ b/src/test/ui/layout/debug.stderr @@ -0,0 +1,120 @@ +error: layout debugging: LayoutDetails { + fields: Arbitrary { + offsets: [ + Size { + raw: 0, + }, + ], + memory_index: [ + 0, + ], + }, + variants: Multiple { + discr: Scalar { + value: Int( + I32, + false, + ), + valid_range: 0..=0, + }, + discr_kind: Tag, + discr_index: 0, + variants: [ + LayoutDetails { + fields: Arbitrary { + offsets: [], + memory_index: [], + }, + variants: Single { + index: 0, + }, + abi: Aggregate { + sized: true, + }, + largest_niche: None, + align: AbiAndPrefAlign { + abi: Align { + pow2: 0, + }, + pref: Align { + pow2: 3, + }, + }, + size: Size { + raw: 4, + }, + }, + LayoutDetails { + fields: Arbitrary { + offsets: [ + Size { + raw: 4, + }, + Size { + raw: 4, + }, + Size { + raw: 8, + }, + ], + memory_index: [ + 0, + 1, + 2, + ], + }, + variants: Single { + index: 1, + }, + abi: Uninhabited, + largest_niche: None, + align: AbiAndPrefAlign { + abi: Align { + pow2: 2, + }, + pref: Align { + pow2: 3, + }, + }, + size: Size { + raw: 12, + }, + }, + ], + }, + abi: Aggregate { + sized: true, + }, + largest_niche: Some( + Niche { + offset: Size { + raw: 0, + }, + scalar: Scalar { + value: Int( + I32, + false, + ), + valid_range: 0..=0, + }, + }, + ), + align: AbiAndPrefAlign { + abi: Align { + pow2: 2, + }, + pref: Align { + pow2: 3, + }, + }, + size: Size { + raw: 12, + }, +} + --> $DIR/debug.rs:7:1 + | +LL | type Test = E; + | ^^^^^^^^^^^^^^ + +error: aborting due to previous error +