Skip to content

Commit 6d0e04d

Browse files
committed
Wrap NonZero::new_unchecked call in the print_type_sizes test in a const
1 parent e36dc78 commit 6d0e04d

File tree

2 files changed

+8
-30
lines changed

2 files changed

+8
-30
lines changed

tests/ui/print_type_sizes/niche-filling.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,14 @@ pub struct NestedNonZero {
5555

5656
impl Default for NestedNonZero {
5757
fn default() -> Self {
58-
NestedNonZero { pre: 0, val: unsafe { NonZero::new_unchecked(1) }, post: 0 }
58+
// Ideally we'd call NonZero::new_unchecked, but this test is supposed
59+
// to be target-independent and NonZero::new_unchecked is #[track_caller]
60+
// (see #129658) so mentioning that function pulls in std::panic::Location
61+
// which contains a &str, whose layout is target-dependent.
62+
const ONE: NonZero<u32> = const {
63+
unsafe { std::mem::transmute(1u32) }
64+
};
65+
NestedNonZero { pre: 0, val: ONE, post: 0 }
5966
}
6067
}
6168

tests/ui/print_type_sizes/niche-filling.stdout

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,3 @@
1-
print-type-size type: `std::fmt::Arguments<'_>`: 48 bytes, alignment: 8 bytes
2-
print-type-size field `.pieces`: 16 bytes
3-
print-type-size field `.args`: 16 bytes
4-
print-type-size field `.fmt`: 16 bytes
5-
print-type-size type: `std::panic::Location<'_>`: 24 bytes, alignment: 8 bytes
6-
print-type-size field `.file`: 16 bytes
7-
print-type-size field `.line`: 4 bytes
8-
print-type-size field `.col`: 4 bytes
9-
print-type-size type: `core::fmt::rt::Argument<'_>`: 16 bytes, alignment: 8 bytes
10-
print-type-size field `.ty`: 16 bytes
11-
print-type-size type: `core::fmt::rt::ArgumentType<'_>`: 16 bytes, alignment: 8 bytes
12-
print-type-size variant `Placeholder`: 16 bytes
13-
print-type-size field `.value`: 8 bytes
14-
print-type-size field `.formatter`: 8 bytes
15-
print-type-size field `._lifetime`: 0 bytes
16-
print-type-size variant `Count`: 10 bytes
17-
print-type-size padding: 8 bytes
18-
print-type-size field `.0`: 2 bytes, alignment: 2 bytes
19-
print-type-size type: `std::option::Option<&[core::fmt::rt::Placeholder]>`: 16 bytes, alignment: 8 bytes
20-
print-type-size variant `Some`: 16 bytes
21-
print-type-size field `.0`: 16 bytes
22-
print-type-size variant `None`: 0 bytes
231
print-type-size type: `IndirectNonZero`: 12 bytes, alignment: 4 bytes
242
print-type-size field `.nested`: 8 bytes
253
print-type-size field `.post`: 2 bytes
@@ -56,8 +34,6 @@ print-type-size field `.val`: 4 bytes
5634
print-type-size field `.post`: 2 bytes
5735
print-type-size field `.pre`: 1 bytes
5836
print-type-size end padding: 1 bytes
59-
print-type-size type: `std::ptr::NonNull<()>`: 8 bytes, alignment: 8 bytes
60-
print-type-size field `.pointer`: 8 bytes
6137
print-type-size type: `Enum4<(), char, (), ()>`: 4 bytes, alignment: 4 bytes
6238
print-type-size variant `Two`: 4 bytes
6339
print-type-size field `.0`: 4 bytes
@@ -96,10 +72,6 @@ print-type-size type: `core::num::niche_types::NonZeroU32Inner`: 4 bytes, alignm
9672
print-type-size field `.0`: 4 bytes
9773
print-type-size type: `std::num::NonZero<u32>`: 4 bytes, alignment: 4 bytes
9874
print-type-size field `.0`: 4 bytes
99-
print-type-size type: `std::option::Option<std::num::NonZero<u32>>`: 4 bytes, alignment: 4 bytes
100-
print-type-size variant `Some`: 4 bytes
101-
print-type-size field `.0`: 4 bytes
102-
print-type-size variant `None`: 0 bytes
10375
print-type-size type: `Enum4<(), (), (), MyOption<u8>>`: 2 bytes, alignment: 1 bytes
10476
print-type-size variant `Four`: 2 bytes
10577
print-type-size field `.0`: 2 bytes
@@ -140,4 +112,3 @@ print-type-size discriminant: 1 bytes
140112
print-type-size variant `Less`: 0 bytes
141113
print-type-size variant `Equal`: 0 bytes
142114
print-type-size variant `Greater`: 0 bytes
143-
print-type-size type: `std::marker::PhantomData<&()>`: 0 bytes, alignment: 1 bytes

0 commit comments

Comments
 (0)