diff options
Diffstat (limited to '')
-rw-r--r-- | tests/ui/consts/std/alloc.32bit.stderr (renamed from src/test/ui/consts/std/alloc.32bit.stderr) | 12 | ||||
-rw-r--r-- | tests/ui/consts/std/alloc.64bit.stderr (renamed from src/test/ui/consts/std/alloc.64bit.stderr) | 12 | ||||
-rw-r--r-- | tests/ui/consts/std/alloc.rs | 19 | ||||
-rw-r--r-- | tests/ui/consts/std/cell.rs (renamed from src/test/ui/consts/std/cell.rs) | 0 | ||||
-rw-r--r-- | tests/ui/consts/std/cell.stderr (renamed from src/test/ui/consts/std/cell.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/consts/std/iter.rs (renamed from src/test/ui/consts/std/iter.rs) | 0 | ||||
-rw-r--r-- | tests/ui/consts/std/slice.rs (renamed from src/test/ui/consts/std/slice.rs) | 0 |
7 files changed, 31 insertions, 12 deletions
diff --git a/src/test/ui/consts/std/alloc.32bit.stderr b/tests/ui/consts/std/alloc.32bit.stderr index 79efcd3f6..8c83df53d 100644 --- a/src/test/ui/consts/std/alloc.32bit.stderr +++ b/tests/ui/consts/std/alloc.32bit.stderr @@ -1,23 +1,23 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/alloc.rs:9:1 + --> $DIR/alloc.rs:12:1 | LL | const LAYOUT_INVALID_ZERO: Layout = unsafe { Layout::from_size_align_unchecked(0x1000, 0x00) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.<enum-tag>: encountered 0x00000000, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - 00 10 00 00 00 00 00 00 │ ........ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/alloc.rs:13:1 + --> $DIR/alloc.rs:16:1 | LL | const LAYOUT_INVALID_THREE: Layout = unsafe { Layout::from_size_align_unchecked(9, 3) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.<enum-tag>: encountered 0x00000003, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - 09 00 00 00 03 00 00 00 │ ........ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error: aborting due to 2 previous errors diff --git a/src/test/ui/consts/std/alloc.64bit.stderr b/tests/ui/consts/std/alloc.64bit.stderr index cb477b72b..addedad17 100644 --- a/src/test/ui/consts/std/alloc.64bit.stderr +++ b/tests/ui/consts/std/alloc.64bit.stderr @@ -1,23 +1,23 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/alloc.rs:9:1 + --> $DIR/alloc.rs:12:1 | LL | const LAYOUT_INVALID_ZERO: Layout = unsafe { Layout::from_size_align_unchecked(0x1000, 0x00) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.<enum-tag>: encountered 0x0000000000000000, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/alloc.rs:13:1 + --> $DIR/alloc.rs:16:1 | LL | const LAYOUT_INVALID_THREE: Layout = unsafe { Layout::from_size_align_unchecked(9, 3) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.<enum-tag>: encountered 0x0000000000000003, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - 09 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 │ ................ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error: aborting due to 2 previous errors diff --git a/tests/ui/consts/std/alloc.rs b/tests/ui/consts/std/alloc.rs new file mode 100644 index 000000000..9abf35d63 --- /dev/null +++ b/tests/ui/consts/std/alloc.rs @@ -0,0 +1,19 @@ +// stderr-per-bitwidth +// ignore-debug (the debug assertions change the error) +// Strip out raw byte dumps to make comparison platform-independent: +// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)" +// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼ )+ *│.*" -> "HEX_DUMP" +use std::alloc::Layout; + +// ok +const LAYOUT_VALID: Layout = unsafe { Layout::from_size_align_unchecked(0x1000, 0x08) }; + +// not ok, since alignment needs to be non-zero. +const LAYOUT_INVALID_ZERO: Layout = unsafe { Layout::from_size_align_unchecked(0x1000, 0x00) }; +//~^ ERROR it is undefined behavior to use this value + +// not ok, since alignment needs to be a power of two. +const LAYOUT_INVALID_THREE: Layout = unsafe { Layout::from_size_align_unchecked(9, 3) }; +//~^ ERROR it is undefined behavior to use this value + +fn main() {} diff --git a/src/test/ui/consts/std/cell.rs b/tests/ui/consts/std/cell.rs index f1ef54131..f1ef54131 100644 --- a/src/test/ui/consts/std/cell.rs +++ b/tests/ui/consts/std/cell.rs diff --git a/src/test/ui/consts/std/cell.stderr b/tests/ui/consts/std/cell.stderr index 937fa7db0..937fa7db0 100644 --- a/src/test/ui/consts/std/cell.stderr +++ b/tests/ui/consts/std/cell.stderr diff --git a/src/test/ui/consts/std/iter.rs b/tests/ui/consts/std/iter.rs index e9af781eb..e9af781eb 100644 --- a/src/test/ui/consts/std/iter.rs +++ b/tests/ui/consts/std/iter.rs diff --git a/src/test/ui/consts/std/slice.rs b/tests/ui/consts/std/slice.rs index f19defc64..f19defc64 100644 --- a/src/test/ui/consts/std/slice.rs +++ b/tests/ui/consts/std/slice.rs |