make no-variant types a dedicated Variants variant
This commit is contained in:
parent
21de42bf8d
commit
e023590de4
53 changed files with 246 additions and 495 deletions
|
@ -206,7 +206,7 @@ impl<'a, Ty> TyAndLayout<'a, Ty> {
|
||||||
let (mut result, mut total) = from_fields_at(*self, Size::ZERO)?;
|
let (mut result, mut total) = from_fields_at(*self, Size::ZERO)?;
|
||||||
|
|
||||||
match &self.variants {
|
match &self.variants {
|
||||||
abi::Variants::Single { .. } => {}
|
abi::Variants::Single { .. } | abi::Variants::Empty => {}
|
||||||
abi::Variants::Multiple { variants, .. } => {
|
abi::Variants::Multiple { variants, .. } => {
|
||||||
// Treat enum variants like union members.
|
// Treat enum variants like union members.
|
||||||
// HACK(eddyb) pretend the `enum` field (discriminant)
|
// HACK(eddyb) pretend the `enum` field (discriminant)
|
||||||
|
|
|
@ -120,7 +120,7 @@ impl<Cx: HasDataLayout> LayoutCalculator<Cx> {
|
||||||
.max_by_key(|niche| niche.available(dl));
|
.max_by_key(|niche| niche.available(dl));
|
||||||
|
|
||||||
LayoutData {
|
LayoutData {
|
||||||
variants: Variants::Single { index: Some(VariantIdx::new(0)) },
|
variants: Variants::Single { index: VariantIdx::new(0) },
|
||||||
fields: FieldsShape::Arbitrary {
|
fields: FieldsShape::Arbitrary {
|
||||||
offsets: [Size::ZERO, b_offset].into(),
|
offsets: [Size::ZERO, b_offset].into(),
|
||||||
memory_index: [0, 1].into(),
|
memory_index: [0, 1].into(),
|
||||||
|
@ -213,8 +213,9 @@ impl<Cx: HasDataLayout> LayoutCalculator<Cx> {
|
||||||
&self,
|
&self,
|
||||||
) -> LayoutData<FieldIdx, VariantIdx> {
|
) -> LayoutData<FieldIdx, VariantIdx> {
|
||||||
let dl = self.cx.data_layout();
|
let dl = self.cx.data_layout();
|
||||||
|
// This is also used for uninhabited enums, so we use `Variants::Empty`.
|
||||||
LayoutData {
|
LayoutData {
|
||||||
variants: Variants::Single { index: None },
|
variants: Variants::Empty,
|
||||||
fields: FieldsShape::Primitive,
|
fields: FieldsShape::Primitive,
|
||||||
backend_repr: BackendRepr::Uninhabited,
|
backend_repr: BackendRepr::Uninhabited,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
|
@ -385,7 +386,7 @@ impl<Cx: HasDataLayout> LayoutCalculator<Cx> {
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(LayoutData {
|
Ok(LayoutData {
|
||||||
variants: Variants::Single { index: Some(only_variant_idx) },
|
variants: Variants::Single { index: only_variant_idx },
|
||||||
fields: FieldsShape::Union(union_field_count),
|
fields: FieldsShape::Union(union_field_count),
|
||||||
backend_repr: abi,
|
backend_repr: abi,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
|
@ -424,7 +425,7 @@ impl<Cx: HasDataLayout> LayoutCalculator<Cx> {
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut st = self.univariant(&variants[v], repr, kind)?;
|
let mut st = self.univariant(&variants[v], repr, kind)?;
|
||||||
st.variants = Variants::Single { index: Some(v) };
|
st.variants = Variants::Single { index: v };
|
||||||
|
|
||||||
if is_unsafe_cell {
|
if is_unsafe_cell {
|
||||||
let hide_niches = |scalar: &mut _| match scalar {
|
let hide_niches = |scalar: &mut _| match scalar {
|
||||||
|
@ -543,7 +544,7 @@ impl<Cx: HasDataLayout> LayoutCalculator<Cx> {
|
||||||
.iter_enumerated()
|
.iter_enumerated()
|
||||||
.map(|(j, v)| {
|
.map(|(j, v)| {
|
||||||
let mut st = self.univariant(v, repr, StructKind::AlwaysSized).ok()?;
|
let mut st = self.univariant(v, repr, StructKind::AlwaysSized).ok()?;
|
||||||
st.variants = Variants::Single { index: Some(j) };
|
st.variants = Variants::Single { index: j };
|
||||||
|
|
||||||
align = align.max(st.align);
|
align = align.max(st.align);
|
||||||
max_repr_align = max_repr_align.max(st.max_repr_align);
|
max_repr_align = max_repr_align.max(st.max_repr_align);
|
||||||
|
@ -736,7 +737,7 @@ impl<Cx: HasDataLayout> LayoutCalculator<Cx> {
|
||||||
repr,
|
repr,
|
||||||
StructKind::Prefixed(min_ity.size(), prefix_align),
|
StructKind::Prefixed(min_ity.size(), prefix_align),
|
||||||
)?;
|
)?;
|
||||||
st.variants = Variants::Single { index: Some(i) };
|
st.variants = Variants::Single { index: i };
|
||||||
// Find the first field we can't move later
|
// Find the first field we can't move later
|
||||||
// to make room for a larger discriminant.
|
// to make room for a larger discriminant.
|
||||||
for field_idx in st.fields.index_by_increasing_offset() {
|
for field_idx in st.fields.index_by_increasing_offset() {
|
||||||
|
@ -1004,8 +1005,8 @@ impl<Cx: HasDataLayout> LayoutCalculator<Cx> {
|
||||||
Variants::Multiple { tag, tag_encoding, tag_field, .. } => {
|
Variants::Multiple { tag, tag_encoding, tag_field, .. } => {
|
||||||
Variants::Multiple { tag, tag_encoding, tag_field, variants: best_layout.variants }
|
Variants::Multiple { tag, tag_encoding, tag_field, variants: best_layout.variants }
|
||||||
}
|
}
|
||||||
Variants::Single { .. } => {
|
Variants::Single { .. } | Variants::Empty => {
|
||||||
panic!("encountered a single-variant enum during multi-variant layout")
|
panic!("encountered a single-variant or empty enum during multi-variant layout")
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Ok(best_layout.layout)
|
Ok(best_layout.layout)
|
||||||
|
@ -1344,7 +1345,7 @@ impl<Cx: HasDataLayout> LayoutCalculator<Cx> {
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(LayoutData {
|
Ok(LayoutData {
|
||||||
variants: Variants::Single { index: Some(VariantIdx::new(0)) },
|
variants: Variants::Single { index: VariantIdx::new(0) },
|
||||||
fields: FieldsShape::Arbitrary { offsets, memory_index },
|
fields: FieldsShape::Arbitrary { offsets, memory_index },
|
||||||
backend_repr: abi,
|
backend_repr: abi,
|
||||||
largest_niche,
|
largest_niche,
|
||||||
|
|
|
@ -1504,11 +1504,13 @@ impl BackendRepr {
|
||||||
#[derive(PartialEq, Eq, Hash, Clone, Debug)]
|
#[derive(PartialEq, Eq, Hash, Clone, Debug)]
|
||||||
#[cfg_attr(feature = "nightly", derive(HashStable_Generic))]
|
#[cfg_attr(feature = "nightly", derive(HashStable_Generic))]
|
||||||
pub enum Variants<FieldIdx: Idx, VariantIdx: Idx> {
|
pub enum Variants<FieldIdx: Idx, VariantIdx: Idx> {
|
||||||
|
/// A type with no valid variants. Must be uninhabited.
|
||||||
|
Empty,
|
||||||
|
|
||||||
/// Single enum variants, structs/tuples, unions, and all non-ADTs.
|
/// Single enum variants, structs/tuples, unions, and all non-ADTs.
|
||||||
Single {
|
Single {
|
||||||
/// Always `Some(0)` for types without variants (i.e., everything except for `!`, enums, and
|
/// Always `0` for types that cannot have multiple variants.
|
||||||
/// generators). `None` indicates an uninhabited type; this is used for zero-variant enums.
|
index: VariantIdx,
|
||||||
index: Option<VariantIdx>,
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Enum-likes with more than one variant: each variant comes with
|
/// Enum-likes with more than one variant: each variant comes with
|
||||||
|
@ -1706,7 +1708,7 @@ impl<FieldIdx: Idx, VariantIdx: Idx> LayoutData<FieldIdx, VariantIdx> {
|
||||||
let size = scalar.size(cx);
|
let size = scalar.size(cx);
|
||||||
let align = scalar.align(cx);
|
let align = scalar.align(cx);
|
||||||
LayoutData {
|
LayoutData {
|
||||||
variants: Variants::Single { index: Some(VariantIdx::new(0)) },
|
variants: Variants::Single { index: VariantIdx::new(0) },
|
||||||
fields: FieldsShape::Primitive,
|
fields: FieldsShape::Primitive,
|
||||||
backend_repr: BackendRepr::Scalar(scalar),
|
backend_repr: BackendRepr::Scalar(scalar),
|
||||||
largest_niche,
|
largest_niche,
|
||||||
|
|
|
@ -18,8 +18,9 @@ pub(crate) fn codegen_set_discriminant<'tcx>(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
match layout.variants {
|
match layout.variants {
|
||||||
|
Variants::Empty => unreachable!("we already handled uninhabited types"),
|
||||||
Variants::Single { index } => {
|
Variants::Single { index } => {
|
||||||
assert_eq!(index.unwrap(), variant_index);
|
assert_eq!(index, variant_index);
|
||||||
}
|
}
|
||||||
Variants::Multiple {
|
Variants::Multiple {
|
||||||
tag: _,
|
tag: _,
|
||||||
|
@ -85,11 +86,11 @@ pub(crate) fn codegen_get_discriminant<'tcx>(
|
||||||
}
|
}
|
||||||
|
|
||||||
let (tag_scalar, tag_field, tag_encoding) = match &layout.variants {
|
let (tag_scalar, tag_field, tag_encoding) = match &layout.variants {
|
||||||
|
Variants::Empty => unreachable!("we already handled uninhabited types"),
|
||||||
Variants::Single { index } => {
|
Variants::Single { index } => {
|
||||||
let index = index.unwrap();
|
|
||||||
let discr_val = layout
|
let discr_val = layout
|
||||||
.ty
|
.ty
|
||||||
.discriminant_for_variant(fx.tcx, index)
|
.discriminant_for_variant(fx.tcx, *index)
|
||||||
.map_or(u128::from(index.as_u32()), |discr| discr.val);
|
.map_or(u128::from(index.as_u32()), |discr| discr.val);
|
||||||
|
|
||||||
let val = match dest_layout.ty.kind() {
|
let val = match dest_layout.ty.kind() {
|
||||||
|
|
|
@ -99,14 +99,14 @@ fn uncached_gcc_type<'gcc, 'tcx>(
|
||||||
if !cx.sess().fewer_names() =>
|
if !cx.sess().fewer_names() =>
|
||||||
{
|
{
|
||||||
let mut name = with_no_trimmed_paths!(layout.ty.to_string());
|
let mut name = with_no_trimmed_paths!(layout.ty.to_string());
|
||||||
if let (&ty::Adt(def, _), &Variants::Single { index: Some(index) }) =
|
if let (&ty::Adt(def, _), &Variants::Single { index }) =
|
||||||
(layout.ty.kind(), &layout.variants)
|
(layout.ty.kind(), &layout.variants)
|
||||||
{
|
{
|
||||||
if def.is_enum() && !def.variants().is_empty() {
|
if def.is_enum() && !def.variants().is_empty() {
|
||||||
write!(&mut name, "::{}", def.variant(index).name).unwrap();
|
write!(&mut name, "::{}", def.variant(index).name).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let (&ty::Coroutine(_, _), &Variants::Single { index: Some(index) }) =
|
if let (&ty::Coroutine(_, _), &Variants::Single { index }) =
|
||||||
(layout.ty.kind(), &layout.variants)
|
(layout.ty.kind(), &layout.variants)
|
||||||
{
|
{
|
||||||
write!(&mut name, "::{}", ty::CoroutineArgs::variant_name(index)).unwrap();
|
write!(&mut name, "::{}", ty::CoroutineArgs::variant_name(index)).unwrap();
|
||||||
|
@ -230,7 +230,7 @@ impl<'tcx> LayoutGccExt<'tcx> for TyAndLayout<'tcx> {
|
||||||
|
|
||||||
// Check the cache.
|
// Check the cache.
|
||||||
let variant_index = match self.variants {
|
let variant_index = match self.variants {
|
||||||
Variants::Single { index } => index,
|
Variants::Single { index } => Some(index),
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
let cached_type = cx.types.borrow().get(&(self.ty, variant_index)).cloned();
|
let cached_type = cx.types.borrow().get(&(self.ty, variant_index)).cloned();
|
||||||
|
|
|
@ -212,21 +212,18 @@ pub(super) fn build_enum_type_di_node<'ll, 'tcx>(
|
||||||
),
|
),
|
||||||
|cx, enum_type_di_node| {
|
|cx, enum_type_di_node| {
|
||||||
match enum_type_and_layout.variants {
|
match enum_type_and_layout.variants {
|
||||||
Variants::Single { index: variant_index } => {
|
Variants::Empty => {
|
||||||
let Some(variant_index) = variant_index else {
|
|
||||||
// Uninhabited enums have Variants::Single. We don't generate
|
// Uninhabited enums have Variants::Single. We don't generate
|
||||||
// any members for them.
|
// any members for them.
|
||||||
return smallvec![];
|
return smallvec![];
|
||||||
};
|
}
|
||||||
|
Variants::Single { index: variant_index } => build_single_variant_union_fields(
|
||||||
build_single_variant_union_fields(
|
|
||||||
cx,
|
cx,
|
||||||
enum_adt_def,
|
enum_adt_def,
|
||||||
enum_type_and_layout,
|
enum_type_and_layout,
|
||||||
enum_type_di_node,
|
enum_type_di_node,
|
||||||
variant_index,
|
variant_index,
|
||||||
)
|
),
|
||||||
}
|
|
||||||
Variants::Multiple {
|
Variants::Multiple {
|
||||||
tag_encoding: TagEncoding::Direct,
|
tag_encoding: TagEncoding::Direct,
|
||||||
ref variants,
|
ref variants,
|
||||||
|
@ -303,6 +300,7 @@ pub(super) fn build_coroutine_di_node<'ll, 'tcx>(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Variants::Single { .. }
|
Variants::Single { .. }
|
||||||
|
| Variants::Empty
|
||||||
| Variants::Multiple { tag_encoding: TagEncoding::Niche { .. }, .. } => {
|
| Variants::Multiple { tag_encoding: TagEncoding::Niche { .. }, .. } => {
|
||||||
bug!(
|
bug!(
|
||||||
"Encountered coroutine with non-direct-tag layout: {:?}",
|
"Encountered coroutine with non-direct-tag layout: {:?}",
|
||||||
|
|
|
@ -392,7 +392,7 @@ fn compute_discriminant_value<'ll, 'tcx>(
|
||||||
variant_index: VariantIdx,
|
variant_index: VariantIdx,
|
||||||
) -> DiscrResult {
|
) -> DiscrResult {
|
||||||
match enum_type_and_layout.layout.variants() {
|
match enum_type_and_layout.layout.variants() {
|
||||||
&Variants::Single { .. } => DiscrResult::NoDiscriminant,
|
&Variants::Single { .. } | &Variants::Empty => DiscrResult::NoDiscriminant,
|
||||||
&Variants::Multiple { tag_encoding: TagEncoding::Direct, .. } => DiscrResult::Value(
|
&Variants::Multiple { tag_encoding: TagEncoding::Direct, .. } => DiscrResult::Value(
|
||||||
enum_type_and_layout.ty.discriminant_for_variant(cx.tcx, variant_index).unwrap().val,
|
enum_type_and_layout.ty.discriminant_for_variant(cx.tcx, variant_index).unwrap().val,
|
||||||
),
|
),
|
||||||
|
|
|
@ -358,8 +358,8 @@ fn build_discr_member_di_node<'ll, 'tcx>(
|
||||||
let containing_scope = enum_or_coroutine_type_di_node;
|
let containing_scope = enum_or_coroutine_type_di_node;
|
||||||
|
|
||||||
match enum_or_coroutine_type_and_layout.layout.variants() {
|
match enum_or_coroutine_type_and_layout.layout.variants() {
|
||||||
// A single-variant enum has no discriminant.
|
// A single-variant or no-variant enum has no discriminant.
|
||||||
&Variants::Single { .. } => None,
|
&Variants::Single { .. } | &Variants::Empty => None,
|
||||||
|
|
||||||
&Variants::Multiple { tag_field, .. } => {
|
&Variants::Multiple { tag_field, .. } => {
|
||||||
let tag_base_type = tag_base_type(cx.tcx, enum_or_coroutine_type_and_layout);
|
let tag_base_type = tag_base_type(cx.tcx, enum_or_coroutine_type_and_layout);
|
||||||
|
|
|
@ -35,14 +35,14 @@ fn uncached_llvm_type<'a, 'tcx>(
|
||||||
if !cx.sess().fewer_names() =>
|
if !cx.sess().fewer_names() =>
|
||||||
{
|
{
|
||||||
let mut name = with_no_visible_paths!(with_no_trimmed_paths!(layout.ty.to_string()));
|
let mut name = with_no_visible_paths!(with_no_trimmed_paths!(layout.ty.to_string()));
|
||||||
if let (&ty::Adt(def, _), &Variants::Single { index: Some(index) }) =
|
if let (&ty::Adt(def, _), &Variants::Single { index }) =
|
||||||
(layout.ty.kind(), &layout.variants)
|
(layout.ty.kind(), &layout.variants)
|
||||||
{
|
{
|
||||||
if def.is_enum() {
|
if def.is_enum() {
|
||||||
write!(&mut name, "::{}", def.variant(index).name).unwrap();
|
write!(&mut name, "::{}", def.variant(index).name).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let (&ty::Coroutine(_, _), &Variants::Single { index: Some(index) }) =
|
if let (&ty::Coroutine(_, _), &Variants::Single { index }) =
|
||||||
(layout.ty.kind(), &layout.variants)
|
(layout.ty.kind(), &layout.variants)
|
||||||
{
|
{
|
||||||
write!(&mut name, "::{}", ty::CoroutineArgs::variant_name(index)).unwrap();
|
write!(&mut name, "::{}", ty::CoroutineArgs::variant_name(index)).unwrap();
|
||||||
|
@ -216,7 +216,7 @@ impl<'tcx> LayoutLlvmExt<'tcx> for TyAndLayout<'tcx> {
|
||||||
|
|
||||||
// Check the cache.
|
// Check the cache.
|
||||||
let variant_index = match self.variants {
|
let variant_index = match self.variants {
|
||||||
Variants::Single { index } => index,
|
Variants::Single { index } => Some(index),
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
if let Some(llty) = cx.type_lowering.borrow().get(&(self.ty, variant_index)) {
|
if let Some(llty) = cx.type_lowering.borrow().get(&(self.ty, variant_index)) {
|
||||||
|
|
|
@ -65,8 +65,8 @@ fn tag_base_type_opt<'tcx>(
|
||||||
});
|
});
|
||||||
|
|
||||||
match enum_type_and_layout.layout.variants() {
|
match enum_type_and_layout.layout.variants() {
|
||||||
// A single-variant enum has no discriminant.
|
// A single-variant or no-variant enum has no discriminant.
|
||||||
Variants::Single { .. } => None,
|
Variants::Single { .. } | Variants::Empty => None,
|
||||||
|
|
||||||
Variants::Multiple { tag_encoding: TagEncoding::Niche { .. }, tag, .. } => {
|
Variants::Multiple { tag_encoding: TagEncoding::Niche { .. }, tag, .. } => {
|
||||||
// Niche tags are always normalized to unsized integers of the correct size.
|
// Niche tags are always normalized to unsized integers of the correct size.
|
||||||
|
|
|
@ -243,8 +243,8 @@ impl<'a, 'tcx, V: CodegenObject> PlaceRef<'tcx, V> {
|
||||||
return bx.cx().const_poison(cast_to);
|
return bx.cx().const_poison(cast_to);
|
||||||
}
|
}
|
||||||
let (tag_scalar, tag_encoding, tag_field) = match self.layout.variants {
|
let (tag_scalar, tag_encoding, tag_field) = match self.layout.variants {
|
||||||
|
Variants::Empty => unreachable!("we already handled uninhabited types"),
|
||||||
Variants::Single { index } => {
|
Variants::Single { index } => {
|
||||||
let index = index.unwrap(); // we already checked `is_uninhabited`
|
|
||||||
let discr_val = self
|
let discr_val = self
|
||||||
.layout
|
.layout
|
||||||
.ty
|
.ty
|
||||||
|
@ -366,9 +366,9 @@ impl<'a, 'tcx, V: CodegenObject> PlaceRef<'tcx, V> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
match self.layout.variants {
|
match self.layout.variants {
|
||||||
Variants::Single { index } => {
|
Variants::Empty => unreachable!("we already handled uninhabited types"),
|
||||||
assert_eq!(index.unwrap(), variant_index);
|
Variants::Single { index } => assert_eq!(index, variant_index),
|
||||||
}
|
|
||||||
Variants::Multiple { tag_encoding: TagEncoding::Direct, tag_field, .. } => {
|
Variants::Multiple { tag_encoding: TagEncoding::Direct, tag_field, .. } => {
|
||||||
let ptr = self.project_field(bx, tag_field);
|
let ptr = self.project_field(bx, tag_field);
|
||||||
let to =
|
let to =
|
||||||
|
|
|
@ -65,15 +65,18 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
||||||
// We use "tag" to refer to how the discriminant is encoded in memory, which can be either
|
// We use "tag" to refer to how the discriminant is encoded in memory, which can be either
|
||||||
// straight-forward (`TagEncoding::Direct`) or with a niche (`TagEncoding::Niche`).
|
// straight-forward (`TagEncoding::Direct`) or with a niche (`TagEncoding::Niche`).
|
||||||
let (tag_scalar_layout, tag_encoding, tag_field) = match op.layout().variants {
|
let (tag_scalar_layout, tag_encoding, tag_field) = match op.layout().variants {
|
||||||
|
Variants::Empty => {
|
||||||
|
throw_ub!(UninhabitedEnumVariantRead(None));
|
||||||
|
}
|
||||||
Variants::Single { index } => {
|
Variants::Single { index } => {
|
||||||
if op.layout().is_uninhabited() {
|
if op.layout().is_uninhabited() {
|
||||||
// For consistency with `write_discriminant`, and to make sure that
|
// For consistency with `write_discriminant`, and to make sure that
|
||||||
// `project_downcast` cannot fail due to strange layouts, we declare immediate UB
|
// `project_downcast` cannot fail due to strange layouts, we declare immediate UB
|
||||||
// for uninhabited enums.
|
// for uninhabited enums.
|
||||||
throw_ub!(UninhabitedEnumVariantRead(None));
|
throw_ub!(UninhabitedEnumVariantRead(Some(index)));
|
||||||
}
|
}
|
||||||
// Since the type is inhabited, there must be an index.
|
// Since the type is inhabited, there must be an index.
|
||||||
return interp_ok(index.unwrap());
|
return interp_ok(index);
|
||||||
}
|
}
|
||||||
Variants::Multiple { tag, ref tag_encoding, tag_field, .. } => {
|
Variants::Multiple { tag, ref tag_encoding, tag_field, .. } => {
|
||||||
(tag, tag_encoding, tag_field)
|
(tag, tag_encoding, tag_field)
|
||||||
|
@ -238,6 +241,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
||||||
}
|
}
|
||||||
|
|
||||||
match layout.variants {
|
match layout.variants {
|
||||||
|
abi::Variants::Empty => unreachable!("we already handled uninhabited types"),
|
||||||
abi::Variants::Single { .. } => {
|
abi::Variants::Single { .. } => {
|
||||||
// The tag of a `Single` enum is like the tag of the niched
|
// The tag of a `Single` enum is like the tag of the niched
|
||||||
// variant: there's no tag as the discriminant is encoded
|
// variant: there's no tag as the discriminant is encoded
|
||||||
|
|
|
@ -302,7 +302,7 @@ impl<'rt, 'tcx, M: Machine<'tcx>> ValidityVisitor<'rt, 'tcx, M> {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Variants::Single { .. } => {}
|
Variants::Single { .. } | Variants::Empty => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now we know we are projecting to a field, so figure out which one.
|
// Now we know we are projecting to a field, so figure out which one.
|
||||||
|
@ -342,10 +342,9 @@ impl<'rt, 'tcx, M: Machine<'tcx>> ValidityVisitor<'rt, 'tcx, M> {
|
||||||
match layout.variants {
|
match layout.variants {
|
||||||
Variants::Single { index } => {
|
Variants::Single { index } => {
|
||||||
// Inside a variant
|
// Inside a variant
|
||||||
PathElem::Field(
|
PathElem::Field(def.variant(index).fields[FieldIdx::from_usize(field)].name)
|
||||||
def.variant(index.unwrap()).fields[FieldIdx::from_usize(field)].name,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
Variants::Empty => panic!("there is no field in Variants::Empty types"),
|
||||||
Variants::Multiple { .. } => bug!("we handled variants above"),
|
Variants::Multiple { .. } => bug!("we handled variants above"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1012,7 +1011,7 @@ impl<'rt, 'tcx, M: Machine<'tcx>> ValidityVisitor<'rt, 'tcx, M> {
|
||||||
}
|
}
|
||||||
// Don't forget potential other variants.
|
// Don't forget potential other variants.
|
||||||
match &layout.variants {
|
match &layout.variants {
|
||||||
Variants::Single { .. } => {
|
Variants::Single { .. } | Variants::Empty => {
|
||||||
// Fully handled above.
|
// Fully handled above.
|
||||||
}
|
}
|
||||||
Variants::Multiple { variants, .. } => {
|
Variants::Multiple { variants, .. } => {
|
||||||
|
|
|
@ -218,8 +218,8 @@ pub trait ValueVisitor<'tcx, M: Machine<'tcx>>: Sized {
|
||||||
// recurse with the inner type
|
// recurse with the inner type
|
||||||
self.visit_variant(v, idx, &inner)?;
|
self.visit_variant(v, idx, &inner)?;
|
||||||
}
|
}
|
||||||
// For single-variant layouts, we already did anything there is to do.
|
// For single-variant layouts, we already did everything there is to do.
|
||||||
Variants::Single { .. } => {}
|
Variants::Single { .. } | Variants::Empty => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
interp_ok(())
|
interp_ok(())
|
||||||
|
|
|
@ -155,6 +155,7 @@ fn check_validity_requirement_lax<'tcx>(
|
||||||
}
|
}
|
||||||
|
|
||||||
match &this.variants {
|
match &this.variants {
|
||||||
|
Variants::Empty => return Ok(false),
|
||||||
Variants::Single { .. } => {
|
Variants::Single { .. } => {
|
||||||
// All fields of this single variant have already been checked above, there is nothing
|
// All fields of this single variant have already been checked above, there is nothing
|
||||||
// else to do.
|
// else to do.
|
||||||
|
|
|
@ -734,23 +734,22 @@ where
|
||||||
let layout = match this.variants {
|
let layout = match this.variants {
|
||||||
Variants::Single { index }
|
Variants::Single { index }
|
||||||
// If all variants but one are uninhabited, the variant layout is the enum layout.
|
// If all variants but one are uninhabited, the variant layout is the enum layout.
|
||||||
if index == Some(variant_index) &&
|
if index == variant_index =>
|
||||||
// Don't confuse variants of uninhabited enums with the enum itself.
|
|
||||||
// For more details see https://github.com/rust-lang/rust/issues/69763.
|
|
||||||
this.fields != FieldsShape::Primitive =>
|
|
||||||
{
|
{
|
||||||
this.layout
|
this.layout
|
||||||
}
|
}
|
||||||
|
|
||||||
Variants::Single { index } => {
|
Variants::Single { .. } | Variants::Empty => {
|
||||||
// `Single` variant enums *can* have other variants, but those are uninhabited.
|
// Single-variant and no-variant enums *can* have other variants, but those are
|
||||||
|
// uninhabited. Produce a layout that has the right fields for that variant, so that
|
||||||
|
// the rest of the compiler can project fields etc as usual.
|
||||||
|
|
||||||
let tcx = cx.tcx();
|
let tcx = cx.tcx();
|
||||||
let typing_env = cx.typing_env();
|
let typing_env = cx.typing_env();
|
||||||
|
|
||||||
// Deny calling for_variant more than once for non-Single enums.
|
// Deny calling for_variant more than once for non-Single enums.
|
||||||
if let Ok(original_layout) = tcx.layout_of(typing_env.as_query_input(this.ty)) {
|
if let Ok(original_layout) = tcx.layout_of(typing_env.as_query_input(this.ty)) {
|
||||||
assert_eq!(original_layout.variants, Variants::Single { index });
|
assert_eq!(original_layout.variants, this.variants);
|
||||||
}
|
}
|
||||||
|
|
||||||
let fields = match this.ty.kind() {
|
let fields = match this.ty.kind() {
|
||||||
|
@ -760,7 +759,7 @@ where
|
||||||
_ => bug!("`ty_and_layout_for_variant` on unexpected type {}", this.ty),
|
_ => bug!("`ty_and_layout_for_variant` on unexpected type {}", this.ty),
|
||||||
};
|
};
|
||||||
tcx.mk_layout(LayoutData {
|
tcx.mk_layout(LayoutData {
|
||||||
variants: Variants::Single { index: Some(variant_index) },
|
variants: Variants::Single { index: variant_index },
|
||||||
fields: match NonZero::new(fields) {
|
fields: match NonZero::new(fields) {
|
||||||
Some(fields) => FieldsShape::Union(fields),
|
Some(fields) => FieldsShape::Union(fields),
|
||||||
None => FieldsShape::Arbitrary { offsets: IndexVec::new(), memory_index: IndexVec::new() },
|
None => FieldsShape::Arbitrary { offsets: IndexVec::new(), memory_index: IndexVec::new() },
|
||||||
|
@ -777,7 +776,7 @@ where
|
||||||
Variants::Multiple { ref variants, .. } => cx.tcx().mk_layout(variants[variant_index].clone()),
|
Variants::Multiple { ref variants, .. } => cx.tcx().mk_layout(variants[variant_index].clone()),
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(*layout.variants(), Variants::Single { index: Some(variant_index) });
|
assert_eq!(*layout.variants(), Variants::Single { index: variant_index });
|
||||||
|
|
||||||
TyAndLayout { ty: this.ty, layout }
|
TyAndLayout { ty: this.ty, layout }
|
||||||
}
|
}
|
||||||
|
@ -904,10 +903,11 @@ where
|
||||||
),
|
),
|
||||||
|
|
||||||
ty::Coroutine(def_id, args) => match this.variants {
|
ty::Coroutine(def_id, args) => match this.variants {
|
||||||
|
Variants::Empty => unreachable!(),
|
||||||
Variants::Single { index } => TyMaybeWithLayout::Ty(
|
Variants::Single { index } => TyMaybeWithLayout::Ty(
|
||||||
args.as_coroutine()
|
args.as_coroutine()
|
||||||
.state_tys(def_id, tcx)
|
.state_tys(def_id, tcx)
|
||||||
.nth(index.unwrap().as_usize())
|
.nth(index.as_usize())
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.nth(i)
|
.nth(i)
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
|
@ -926,10 +926,10 @@ where
|
||||||
ty::Adt(def, args) => {
|
ty::Adt(def, args) => {
|
||||||
match this.variants {
|
match this.variants {
|
||||||
Variants::Single { index } => {
|
Variants::Single { index } => {
|
||||||
let field =
|
let field = &def.variant(index).fields[FieldIdx::from_usize(i)];
|
||||||
&def.variant(index.unwrap()).fields[FieldIdx::from_usize(i)];
|
|
||||||
TyMaybeWithLayout::Ty(field.ty(tcx, args))
|
TyMaybeWithLayout::Ty(field.ty(tcx, args))
|
||||||
}
|
}
|
||||||
|
Variants::Empty => panic!("there is no field in Variants::Empty types"),
|
||||||
|
|
||||||
// Discriminant field for enums (where applicable).
|
// Discriminant field for enums (where applicable).
|
||||||
Variants::Multiple { tag, .. } => {
|
Variants::Multiple { tag, .. } => {
|
||||||
|
|
|
@ -216,7 +216,7 @@ impl EnumSizeOpt {
|
||||||
};
|
};
|
||||||
let layout = tcx.layout_of(typing_env.as_query_input(ty)).ok()?;
|
let layout = tcx.layout_of(typing_env.as_query_input(ty)).ok()?;
|
||||||
let variants = match &layout.variants {
|
let variants = match &layout.variants {
|
||||||
Variants::Single { .. } => return None,
|
Variants::Single { .. } | Variants::Empty => return None,
|
||||||
Variants::Multiple { tag_encoding: TagEncoding::Niche { .. }, .. } => return None,
|
Variants::Multiple { tag_encoding: TagEncoding::Niche { .. }, .. } => return None,
|
||||||
|
|
||||||
Variants::Multiple { variants, .. } if variants.len() <= 1 => return None,
|
Variants::Multiple { variants, .. } if variants.len() <= 1 => return None,
|
||||||
|
|
|
@ -54,11 +54,11 @@ fn variant_discriminants<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
) -> FxHashSet<u128> {
|
) -> FxHashSet<u128> {
|
||||||
match &layout.variants {
|
match &layout.variants {
|
||||||
Variants::Single { index: None } => {
|
Variants::Empty => {
|
||||||
// Uninhabited, no valid discriminant.
|
// Uninhabited, no valid discriminant.
|
||||||
FxHashSet::default()
|
FxHashSet::default()
|
||||||
}
|
}
|
||||||
Variants::Single { index: Some(index) } => {
|
Variants::Single { index } => {
|
||||||
let mut res = FxHashSet::default();
|
let mut res = FxHashSet::default();
|
||||||
res.insert(
|
res.insert(
|
||||||
ty.discriminant_for_variant(tcx, *index)
|
ty.discriminant_for_variant(tcx, *index)
|
||||||
|
|
|
@ -164,9 +164,10 @@ impl<'tcx> Stable<'tcx> for rustc_abi::Variants<rustc_abi::FieldIdx, rustc_abi::
|
||||||
|
|
||||||
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
||||||
match self {
|
match self {
|
||||||
rustc_abi::Variants::Single { index } => VariantsShape::Single {
|
rustc_abi::Variants::Single { index } => {
|
||||||
index: index.unwrap_or(rustc_abi::VariantIdx::from_u32(0)).stable(tables),
|
VariantsShape::Single { index: index.stable(tables) }
|
||||||
},
|
}
|
||||||
|
rustc_abi::Variants::Empty => VariantsShape::Empty,
|
||||||
rustc_abi::Variants::Multiple { tag, tag_encoding, tag_field, variants } => {
|
rustc_abi::Variants::Multiple { tag, tag_encoding, tag_field, variants } => {
|
||||||
VariantsShape::Multiple {
|
VariantsShape::Multiple {
|
||||||
tag: tag.stable(tables),
|
tag: tag.stable(tables),
|
||||||
|
|
|
@ -116,7 +116,7 @@ where
|
||||||
FieldsShape::Arbitrary { .. } => {
|
FieldsShape::Arbitrary { .. } => {
|
||||||
match arg_layout.variants {
|
match arg_layout.variants {
|
||||||
abi::Variants::Multiple { .. } => return Err(CannotUseFpConv),
|
abi::Variants::Multiple { .. } => return Err(CannotUseFpConv),
|
||||||
abi::Variants::Single { .. } => (),
|
abi::Variants::Single { .. } | abi::Variants::Empty => (),
|
||||||
}
|
}
|
||||||
for i in arg_layout.fields.index_by_increasing_offset() {
|
for i in arg_layout.fields.index_by_increasing_offset() {
|
||||||
let field = arg_layout.field(cx, i);
|
let field = arg_layout.field(cx, i);
|
||||||
|
|
|
@ -122,7 +122,7 @@ where
|
||||||
FieldsShape::Arbitrary { .. } => {
|
FieldsShape::Arbitrary { .. } => {
|
||||||
match arg_layout.variants {
|
match arg_layout.variants {
|
||||||
abi::Variants::Multiple { .. } => return Err(CannotUseFpConv),
|
abi::Variants::Multiple { .. } => return Err(CannotUseFpConv),
|
||||||
abi::Variants::Single { .. } => (),
|
abi::Variants::Single { .. } | abi::Variants::Empty => (),
|
||||||
}
|
}
|
||||||
for i in arg_layout.fields.index_by_increasing_offset() {
|
for i in arg_layout.fields.index_by_increasing_offset() {
|
||||||
let field = arg_layout.field(cx, i);
|
let field = arg_layout.field(cx, i);
|
||||||
|
|
|
@ -65,7 +65,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
match &layout.variants {
|
match &layout.variants {
|
||||||
abi::Variants::Single { .. } => {}
|
abi::Variants::Single { .. } | abi::Variants::Empty => {}
|
||||||
abi::Variants::Multiple { variants, .. } => {
|
abi::Variants::Multiple { variants, .. } => {
|
||||||
// Treat enum variants like union members.
|
// Treat enum variants like union members.
|
||||||
for variant_idx in variants.indices() {
|
for variant_idx in variants.indices() {
|
||||||
|
|
|
@ -338,14 +338,11 @@ pub(crate) mod rustc {
|
||||||
};
|
};
|
||||||
|
|
||||||
match layout.variants() {
|
match layout.variants() {
|
||||||
|
Variants::Empty => Ok(Self::uninhabited()),
|
||||||
Variants::Single { index } => {
|
Variants::Single { index } => {
|
||||||
if let Some(index) = index {
|
|
||||||
// `Variants::Single` on enums with variants denotes that
|
// `Variants::Single` on enums with variants denotes that
|
||||||
// the enum delegates its layout to the variant at `index`.
|
// the enum delegates its layout to the variant at `index`.
|
||||||
layout_of_variant(*index, None)
|
layout_of_variant(*index, None)
|
||||||
} else {
|
|
||||||
Ok(Self::uninhabited())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Variants::Multiple { tag, tag_encoding, tag_field, .. } => {
|
Variants::Multiple { tag, tag_encoding, tag_field, .. } => {
|
||||||
// `Variants::Multiple` denotes an enum with multiple
|
// `Variants::Multiple` denotes an enum with multiple
|
||||||
|
@ -498,13 +495,15 @@ pub(crate) mod rustc {
|
||||||
(ty, layout): (Ty<'tcx>, Layout<'tcx>),
|
(ty, layout): (Ty<'tcx>, Layout<'tcx>),
|
||||||
i: FieldIdx,
|
i: FieldIdx,
|
||||||
) -> Ty<'tcx> {
|
) -> Ty<'tcx> {
|
||||||
|
// FIXME: Why does this not just use `ty_and_layout_field`?
|
||||||
match ty.kind() {
|
match ty.kind() {
|
||||||
ty::Adt(def, args) => {
|
ty::Adt(def, args) => {
|
||||||
match layout.variants {
|
match layout.variants {
|
||||||
Variants::Single { index } => {
|
Variants::Single { index } => {
|
||||||
let field = &def.variant(index.unwrap()).fields[i];
|
let field = &def.variant(index).fields[i];
|
||||||
field.ty(cx.tcx(), args)
|
field.ty(cx.tcx(), args)
|
||||||
}
|
}
|
||||||
|
Variants::Empty => panic!("there is no field in Variants::Empty types"),
|
||||||
// Discriminant field for enums (where applicable).
|
// Discriminant field for enums (where applicable).
|
||||||
Variants::Multiple { tag, .. } => {
|
Variants::Multiple { tag, .. } => {
|
||||||
assert_eq!(i.as_usize(), 0);
|
assert_eq!(i.as_usize(), 0);
|
||||||
|
|
|
@ -339,7 +339,7 @@ fn layout_of_uncached<'tcx>(
|
||||||
let largest_niche = if count != 0 { element.largest_niche } else { None };
|
let largest_niche = if count != 0 { element.largest_niche } else { None };
|
||||||
|
|
||||||
tcx.mk_layout(LayoutData {
|
tcx.mk_layout(LayoutData {
|
||||||
variants: Variants::Single { index: Some(FIRST_VARIANT) },
|
variants: Variants::Single { index: FIRST_VARIANT },
|
||||||
fields: FieldsShape::Array { stride: element.size, count },
|
fields: FieldsShape::Array { stride: element.size, count },
|
||||||
backend_repr: abi,
|
backend_repr: abi,
|
||||||
largest_niche,
|
largest_niche,
|
||||||
|
@ -352,7 +352,7 @@ fn layout_of_uncached<'tcx>(
|
||||||
ty::Slice(element) => {
|
ty::Slice(element) => {
|
||||||
let element = cx.layout_of(element)?;
|
let element = cx.layout_of(element)?;
|
||||||
tcx.mk_layout(LayoutData {
|
tcx.mk_layout(LayoutData {
|
||||||
variants: Variants::Single { index: Some(FIRST_VARIANT) },
|
variants: Variants::Single { index: FIRST_VARIANT },
|
||||||
fields: FieldsShape::Array { stride: element.size, count: 0 },
|
fields: FieldsShape::Array { stride: element.size, count: 0 },
|
||||||
backend_repr: BackendRepr::Memory { sized: false },
|
backend_repr: BackendRepr::Memory { sized: false },
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
|
@ -363,7 +363,7 @@ fn layout_of_uncached<'tcx>(
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
ty::Str => tcx.mk_layout(LayoutData {
|
ty::Str => tcx.mk_layout(LayoutData {
|
||||||
variants: Variants::Single { index: Some(FIRST_VARIANT) },
|
variants: Variants::Single { index: FIRST_VARIANT },
|
||||||
fields: FieldsShape::Array { stride: Size::from_bytes(1), count: 0 },
|
fields: FieldsShape::Array { stride: Size::from_bytes(1), count: 0 },
|
||||||
backend_repr: BackendRepr::Memory { sized: false },
|
backend_repr: BackendRepr::Memory { sized: false },
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
|
@ -534,7 +534,7 @@ fn layout_of_uncached<'tcx>(
|
||||||
};
|
};
|
||||||
|
|
||||||
tcx.mk_layout(LayoutData {
|
tcx.mk_layout(LayoutData {
|
||||||
variants: Variants::Single { index: Some(FIRST_VARIANT) },
|
variants: Variants::Single { index: FIRST_VARIANT },
|
||||||
fields,
|
fields,
|
||||||
backend_repr: abi,
|
backend_repr: abi,
|
||||||
largest_niche: e_ly.largest_niche,
|
largest_niche: e_ly.largest_niche,
|
||||||
|
@ -926,7 +926,7 @@ fn coroutine_layout<'tcx>(
|
||||||
&ReprOptions::default(),
|
&ReprOptions::default(),
|
||||||
StructKind::Prefixed(prefix_size, prefix_align.abi),
|
StructKind::Prefixed(prefix_size, prefix_align.abi),
|
||||||
)?;
|
)?;
|
||||||
variant.variants = Variants::Single { index: Some(index) };
|
variant.variants = Variants::Single { index };
|
||||||
|
|
||||||
let FieldsShape::Arbitrary { offsets, memory_index } = variant.fields else {
|
let FieldsShape::Arbitrary { offsets, memory_index } = variant.fields else {
|
||||||
bug!();
|
bug!();
|
||||||
|
@ -1104,17 +1104,13 @@ fn variant_info_for_adt<'tcx>(
|
||||||
};
|
};
|
||||||
|
|
||||||
match layout.variants {
|
match layout.variants {
|
||||||
|
Variants::Empty => (vec![], None),
|
||||||
|
|
||||||
Variants::Single { index } => {
|
Variants::Single { index } => {
|
||||||
if let Some(index) = index
|
|
||||||
&& layout.fields != FieldsShape::Primitive
|
|
||||||
{
|
|
||||||
debug!("print-type-size `{:#?}` variant {}", layout, adt_def.variant(index).name);
|
debug!("print-type-size `{:#?}` variant {}", layout, adt_def.variant(index).name);
|
||||||
let variant_def = &adt_def.variant(index);
|
let variant_def = &adt_def.variant(index);
|
||||||
let fields: Vec<_> = variant_def.fields.iter().map(|f| f.name).collect();
|
let fields: Vec<_> = variant_def.fields.iter().map(|f| f.name).collect();
|
||||||
(vec![build_variant_info(Some(variant_def.name), &fields, layout)], None)
|
(vec![build_variant_info(Some(variant_def.name), &fields, layout)], None)
|
||||||
} else {
|
|
||||||
(vec![], None)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Variants::Multiple { tag, ref tag_encoding, .. } => {
|
Variants::Multiple { tag, ref tag_encoding, .. } => {
|
||||||
|
|
|
@ -242,15 +242,15 @@ pub(super) fn layout_sanity_check<'tcx>(cx: &LayoutCx<'tcx>, layout: &TyAndLayou
|
||||||
check_layout_abi(cx, layout);
|
check_layout_abi(cx, layout);
|
||||||
|
|
||||||
match &layout.variants {
|
match &layout.variants {
|
||||||
Variants::Single { index: None } => {
|
Variants::Empty => {
|
||||||
assert!(layout.is_uninhabited());
|
assert!(layout.is_uninhabited());
|
||||||
}
|
}
|
||||||
Variants::Single { index: Some(idx) } => {
|
Variants::Single { index } => {
|
||||||
if let Some(variants) = layout.ty.variant_range(tcx) {
|
if let Some(variants) = layout.ty.variant_range(tcx) {
|
||||||
assert!(variants.contains(idx));
|
assert!(variants.contains(index));
|
||||||
} else {
|
} else {
|
||||||
// Types without variants use `0` as dummy variant index.
|
// Types without variants use `0` as dummy variant index.
|
||||||
assert!(idx.as_u32() == 0);
|
assert!(index.as_u32() == 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Variants::Multiple { variants, tag, tag_encoding, .. } => {
|
Variants::Multiple { variants, tag, tag_encoding, .. } => {
|
||||||
|
|
|
@ -180,8 +180,10 @@ impl FieldsShape {
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize)]
|
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize)]
|
||||||
pub enum VariantsShape {
|
pub enum VariantsShape {
|
||||||
|
/// A type with no valid variants. Must be uninhabited.
|
||||||
|
Empty,
|
||||||
|
|
||||||
/// Single enum variants, structs/tuples, unions, and all non-ADTs.
|
/// Single enum variants, structs/tuples, unions, and all non-ADTs.
|
||||||
// FIXME: needs to become `Option` like in the internal type.
|
|
||||||
Single { index: VariantIdx },
|
Single { index: VariantIdx },
|
||||||
|
|
||||||
/// Enum-likes with more than one inhabited variant: each variant comes with
|
/// Enum-likes with more than one inhabited variant: each variant comes with
|
||||||
|
|
|
@ -605,7 +605,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
|
||||||
// `UnsafeCell` action.
|
// `UnsafeCell` action.
|
||||||
(self.unsafe_cell_action)(v)
|
(self.unsafe_cell_action)(v)
|
||||||
}
|
}
|
||||||
Variants::Single { .. } => {
|
Variants::Single { .. } | Variants::Empty => {
|
||||||
// Proceed further, try to find where exactly that `UnsafeCell`
|
// Proceed further, try to find where exactly that `UnsafeCell`
|
||||||
// is hiding.
|
// is hiding.
|
||||||
self.walk_value(v)
|
self.walk_value(v)
|
||||||
|
|
|
@ -189,7 +189,7 @@ fn layout_of_simd_ty(
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(Arc::new(Layout {
|
Ok(Arc::new(Layout {
|
||||||
variants: Variants::Single { index: Some(struct_variant_idx()) },
|
variants: Variants::Single { index: struct_variant_idx() },
|
||||||
fields,
|
fields,
|
||||||
backend_repr: BackendRepr::Vector { element: e_abi, count: e_len },
|
backend_repr: BackendRepr::Vector { element: e_abi, count: e_len },
|
||||||
largest_niche: e_ly.largest_niche,
|
largest_niche: e_ly.largest_niche,
|
||||||
|
@ -305,7 +305,7 @@ pub fn layout_of_ty_query(
|
||||||
let largest_niche = if count != 0 { element.largest_niche } else { None };
|
let largest_niche = if count != 0 { element.largest_niche } else { None };
|
||||||
|
|
||||||
Layout {
|
Layout {
|
||||||
variants: Variants::Single { index: Some(struct_variant_idx()) },
|
variants: Variants::Single { index: struct_variant_idx() },
|
||||||
fields: FieldsShape::Array { stride: element.size, count },
|
fields: FieldsShape::Array { stride: element.size, count },
|
||||||
backend_repr,
|
backend_repr,
|
||||||
largest_niche,
|
largest_niche,
|
||||||
|
@ -318,7 +318,7 @@ pub fn layout_of_ty_query(
|
||||||
TyKind::Slice(element) => {
|
TyKind::Slice(element) => {
|
||||||
let element = db.layout_of_ty(element.clone(), trait_env)?;
|
let element = db.layout_of_ty(element.clone(), trait_env)?;
|
||||||
Layout {
|
Layout {
|
||||||
variants: Variants::Single { index: Some(struct_variant_idx()) },
|
variants: Variants::Single { index: struct_variant_idx() },
|
||||||
fields: FieldsShape::Array { stride: element.size, count: 0 },
|
fields: FieldsShape::Array { stride: element.size, count: 0 },
|
||||||
backend_repr: BackendRepr::Memory { sized: false },
|
backend_repr: BackendRepr::Memory { sized: false },
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
|
@ -329,7 +329,7 @@ pub fn layout_of_ty_query(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TyKind::Str => Layout {
|
TyKind::Str => Layout {
|
||||||
variants: Variants::Single { index: Some(struct_variant_idx()) },
|
variants: Variants::Single { index: struct_variant_idx() },
|
||||||
fields: FieldsShape::Array { stride: Size::from_bytes(1), count: 0 },
|
fields: FieldsShape::Array { stride: Size::from_bytes(1), count: 0 },
|
||||||
backend_repr: BackendRepr::Memory { sized: false },
|
backend_repr: BackendRepr::Memory { sized: false },
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
|
|
|
@ -813,7 +813,7 @@ impl Evaluator<'_> {
|
||||||
ProjectionElem::Field(Either::Left(f)) => {
|
ProjectionElem::Field(Either::Left(f)) => {
|
||||||
let layout = self.layout(&prev_ty)?;
|
let layout = self.layout(&prev_ty)?;
|
||||||
let variant_layout = match &layout.variants {
|
let variant_layout = match &layout.variants {
|
||||||
Variants::Single { .. } => &layout,
|
Variants::Single { .. } | Variants::Empty => &layout,
|
||||||
Variants::Multiple { variants, .. } => {
|
Variants::Multiple { variants, .. } => {
|
||||||
&variants[match f.parent {
|
&variants[match f.parent {
|
||||||
hir_def::VariantId::EnumVariantId(it) => {
|
hir_def::VariantId::EnumVariantId(it) => {
|
||||||
|
@ -1638,9 +1638,9 @@ impl Evaluator<'_> {
|
||||||
return Ok(0);
|
return Ok(0);
|
||||||
};
|
};
|
||||||
match &layout.variants {
|
match &layout.variants {
|
||||||
|
Variants::Empty => unreachable!(),
|
||||||
Variants::Single { index } => {
|
Variants::Single { index } => {
|
||||||
let r = self
|
let r = self.const_eval_discriminant(self.db.enum_data(e).variants[index.0].0)?;
|
||||||
.const_eval_discriminant(self.db.enum_data(e).variants[index.unwrap().0].0)?;
|
|
||||||
Ok(r)
|
Ok(r)
|
||||||
}
|
}
|
||||||
Variants::Multiple { tag, tag_encoding, variants, .. } => {
|
Variants::Multiple { tag, tag_encoding, variants, .. } => {
|
||||||
|
@ -1801,7 +1801,7 @@ impl Evaluator<'_> {
|
||||||
}
|
}
|
||||||
let layout = self.layout_adt(adt, subst)?;
|
let layout = self.layout_adt(adt, subst)?;
|
||||||
Ok(match &layout.variants {
|
Ok(match &layout.variants {
|
||||||
Variants::Single { .. } => (layout.size.bytes_usize(), layout, None),
|
Variants::Single { .. } | Variants::Empty => (layout.size.bytes_usize(), layout, None),
|
||||||
Variants::Multiple { variants, tag, tag_encoding, .. } => {
|
Variants::Multiple { variants, tag, tag_encoding, .. } => {
|
||||||
let enum_variant_id = match it {
|
let enum_variant_id = match it {
|
||||||
VariantId::EnumVariantId(it) => it,
|
VariantId::EnumVariantId(it) => it,
|
||||||
|
|
|
@ -334,8 +334,9 @@ pub(crate) fn detect_variant_from_bytes<'a>(
|
||||||
e: EnumId,
|
e: EnumId,
|
||||||
) -> Option<(EnumVariantId, &'a Layout)> {
|
) -> Option<(EnumVariantId, &'a Layout)> {
|
||||||
let (var_id, var_layout) = match &layout.variants {
|
let (var_id, var_layout) = match &layout.variants {
|
||||||
|
hir_def::layout::Variants::Empty => unreachable!(),
|
||||||
hir_def::layout::Variants::Single { index } => {
|
hir_def::layout::Variants::Single { index } => {
|
||||||
(db.enum_data(e).variants[index.unwrap().0].0, layout)
|
(db.enum_data(e).variants[index.0].0, layout)
|
||||||
}
|
}
|
||||||
hir_def::layout::Variants::Multiple { tag, tag_encoding, variants, .. } => {
|
hir_def::layout::Variants::Multiple { tag, tag_encoding, variants, .. } => {
|
||||||
let size = tag.size(target_data_layout).bytes_usize();
|
let size = tag.size(target_data_layout).bytes_usize();
|
||||||
|
|
|
@ -18,9 +18,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -47,9 +45,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -18,9 +18,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -58,9 +56,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -18,9 +18,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -58,9 +56,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -18,9 +18,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -58,9 +56,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -18,9 +18,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -47,9 +45,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -18,9 +18,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -58,9 +56,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -21,9 +21,7 @@ error: fn_abi_of(test) = FnAbi {
|
||||||
fields: Primitive,
|
fields: Primitive,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -69,9 +67,7 @@ error: fn_abi_of(test) = FnAbi {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -128,9 +124,7 @@ error: fn_abi_of(TestFnPtr) = FnAbi {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -167,9 +161,7 @@ error: fn_abi_of(TestFnPtr) = FnAbi {
|
||||||
fields: Primitive,
|
fields: Primitive,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -218,9 +210,7 @@ error: fn_abi_of(test_generic) = FnAbi {
|
||||||
fields: Primitive,
|
fields: Primitive,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -254,9 +244,7 @@ error: fn_abi_of(test_generic) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -304,9 +292,7 @@ error: ABIs are not compatible
|
||||||
fields: Primitive,
|
fields: Primitive,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -340,9 +326,7 @@ error: ABIs are not compatible
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -378,9 +362,7 @@ error: ABIs are not compatible
|
||||||
fields: Primitive,
|
fields: Primitive,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -414,9 +396,7 @@ error: ABIs are not compatible
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -455,9 +435,7 @@ error: ABIs are not compatible
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -495,9 +473,7 @@ error: ABIs are not compatible
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -530,9 +506,7 @@ error: ABIs are not compatible
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -570,9 +544,7 @@ error: ABIs are not compatible
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -613,9 +585,7 @@ error: ABIs are not compatible
|
||||||
fields: Primitive,
|
fields: Primitive,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -649,9 +619,7 @@ error: ABIs are not compatible
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -687,9 +655,7 @@ error: ABIs are not compatible
|
||||||
fields: Primitive,
|
fields: Primitive,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -723,9 +689,7 @@ error: ABIs are not compatible
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -767,9 +731,7 @@ error: ABIs are not compatible
|
||||||
fields: Primitive,
|
fields: Primitive,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -803,9 +765,7 @@ error: ABIs are not compatible
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -841,9 +801,7 @@ error: ABIs are not compatible
|
||||||
fields: Primitive,
|
fields: Primitive,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -877,9 +835,7 @@ error: ABIs are not compatible
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -946,9 +902,7 @@ error: fn_abi_of(assoc_test) = FnAbi {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -984,9 +938,7 @@ error: fn_abi_of(assoc_test) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -18,9 +18,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -47,9 +45,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -18,9 +18,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -47,9 +45,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -18,9 +18,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -58,9 +56,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -18,9 +18,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
@ -47,9 +45,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: $SOME_ALIGN,
|
unadjusted_abi_align: $SOME_ALIGN,
|
||||||
|
|
|
@ -57,9 +57,7 @@ error: layout_of(E) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -85,9 +83,7 @@ error: layout_of(E) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -138,9 +134,7 @@ error: layout_of(S) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -164,9 +158,7 @@ error: layout_of(U) = Layout {
|
||||||
),
|
),
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -259,9 +251,7 @@ error: layout_of(Result<i32, i32>) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -298,9 +288,7 @@ error: layout_of(Result<i32, i32>) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -333,9 +321,7 @@ error: layout_of(i32) = Layout {
|
||||||
fields: Primitive,
|
fields: Primitive,
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -359,9 +345,7 @@ error: layout_of(V) = Layout {
|
||||||
),
|
),
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(2 bytes),
|
unadjusted_abi_align: Align(2 bytes),
|
||||||
|
@ -385,9 +369,7 @@ error: layout_of(W) = Layout {
|
||||||
),
|
),
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(2 bytes),
|
unadjusted_abi_align: Align(2 bytes),
|
||||||
|
@ -411,9 +393,7 @@ error: layout_of(Y) = Layout {
|
||||||
),
|
),
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(2 bytes),
|
unadjusted_abi_align: Align(2 bytes),
|
||||||
|
@ -437,9 +417,7 @@ error: layout_of(P1) = Layout {
|
||||||
),
|
),
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -463,9 +441,7 @@ error: layout_of(P2) = Layout {
|
||||||
),
|
),
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -489,9 +465,7 @@ error: layout_of(P3) = Layout {
|
||||||
),
|
),
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -515,9 +489,7 @@ error: layout_of(P4) = Layout {
|
||||||
),
|
),
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -546,9 +518,7 @@ error: layout_of(P5) = Layout {
|
||||||
),
|
),
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -577,9 +547,7 @@ error: layout_of(MaybeUninit<u8>) = Layout {
|
||||||
),
|
),
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
|
|
@ -57,9 +57,7 @@ error: layout_of(A) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -133,9 +131,7 @@ error: layout_of(B) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -209,9 +205,7 @@ error: layout_of(C) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(2 bytes),
|
unadjusted_abi_align: Align(2 bytes),
|
||||||
|
@ -285,9 +279,7 @@ error: layout_of(P) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -361,9 +353,7 @@ error: layout_of(T) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
|
|
@ -79,9 +79,7 @@ error: layout_of(MissingPayloadField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -101,9 +99,7 @@ error: layout_of(MissingPayloadField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -201,9 +197,7 @@ error: layout_of(CommonPayloadField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -240,9 +234,7 @@ error: layout_of(CommonPayloadField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -338,9 +330,7 @@ error: layout_of(CommonPayloadFieldIsMaybeUninit) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -376,9 +366,7 @@ error: layout_of(CommonPayloadFieldIsMaybeUninit) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -490,9 +478,7 @@ error: layout_of(NicheFirst) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -512,9 +498,7 @@ error: layout_of(NicheFirst) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -534,9 +518,7 @@ error: layout_of(NicheFirst) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 2,
|
||||||
2,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -648,9 +630,7 @@ error: layout_of(NicheSecond) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -670,9 +650,7 @@ error: layout_of(NicheSecond) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -692,9 +670,7 @@ error: layout_of(NicheSecond) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 2,
|
||||||
2,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
|
|
@ -51,9 +51,7 @@ error: layout_of(Aligned1) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: Some(
|
max_repr_align: Some(
|
||||||
Align(8 bytes),
|
Align(8 bytes),
|
||||||
|
@ -75,9 +73,7 @@ error: layout_of(Aligned1) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: Some(
|
max_repr_align: Some(
|
||||||
Align(8 bytes),
|
Align(8 bytes),
|
||||||
|
@ -155,9 +151,7 @@ error: layout_of(Aligned2) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: Some(
|
max_repr_align: Some(
|
||||||
Align(1 bytes),
|
Align(1 bytes),
|
||||||
|
@ -179,9 +173,7 @@ error: layout_of(Aligned2) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: Some(
|
max_repr_align: Some(
|
||||||
Align(1 bytes),
|
Align(1 bytes),
|
||||||
|
|
|
@ -57,9 +57,7 @@ error: layout_of(A) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -133,9 +131,7 @@ error: layout_of(B) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -209,9 +205,7 @@ error: layout_of(C) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(2 bytes),
|
unadjusted_abi_align: Align(2 bytes),
|
||||||
|
@ -285,9 +279,7 @@ error: layout_of(P) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -361,9 +353,7 @@ error: layout_of(T) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
|
|
@ -55,9 +55,7 @@ error: layout_of(Result<[u32; 0], bool>) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -90,9 +88,7 @@ error: layout_of(Result<[u32; 0], bool>) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -164,9 +160,7 @@ error: layout_of(MultipleAlignments) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(2 bytes),
|
unadjusted_abi_align: Align(2 bytes),
|
||||||
|
@ -190,9 +184,7 @@ error: layout_of(MultipleAlignments) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -225,9 +217,7 @@ error: layout_of(MultipleAlignments) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 2,
|
||||||
2,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -299,9 +289,7 @@ error: layout_of(Result<[u32; 0], Packed<NonZero<u16>>>) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -334,9 +322,7 @@ error: layout_of(Result<[u32; 0], Packed<NonZero<u16>>>) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -412,9 +398,7 @@ error: layout_of(Result<[u32; 0], Packed<U16IsZero>>) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -447,9 +431,7 @@ error: layout_of(Result<[u32; 0], Packed<U16IsZero>>) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
|
|
@ -51,9 +51,7 @@ error: layout_of(Univariant) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -135,9 +133,7 @@ error: layout_of(TwoVariants) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -173,9 +169,7 @@ error: layout_of(TwoVariants) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -247,9 +241,7 @@ error: layout_of(DeadBranchHasOtherField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: Some(
|
max_repr_align: Some(
|
||||||
Align(8 bytes),
|
Align(8 bytes),
|
||||||
|
@ -275,9 +267,7 @@ error: layout_of(DeadBranchHasOtherField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(8 bytes),
|
unadjusted_abi_align: Align(8 bytes),
|
||||||
|
|
|
@ -51,9 +51,7 @@ error: layout_of(Univariant) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -135,9 +133,7 @@ error: layout_of(TwoVariants) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -173,9 +169,7 @@ error: layout_of(TwoVariants) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -247,9 +241,7 @@ error: layout_of(DeadBranchHasOtherField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: Some(
|
max_repr_align: Some(
|
||||||
Align(8 bytes),
|
Align(8 bytes),
|
||||||
|
@ -275,9 +267,7 @@ error: layout_of(DeadBranchHasOtherField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(8 bytes),
|
unadjusted_abi_align: Align(8 bytes),
|
||||||
|
|
|
@ -51,9 +51,7 @@ error: layout_of(Univariant) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -135,9 +133,7 @@ error: layout_of(TwoVariants) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -173,9 +169,7 @@ error: layout_of(TwoVariants) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -247,9 +241,7 @@ error: layout_of(DeadBranchHasOtherField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: Some(
|
max_repr_align: Some(
|
||||||
Align(8 bytes),
|
Align(8 bytes),
|
||||||
|
@ -275,9 +267,7 @@ error: layout_of(DeadBranchHasOtherField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(8 bytes),
|
unadjusted_abi_align: Align(8 bytes),
|
||||||
|
|
|
@ -51,9 +51,7 @@ error: layout_of(Univariant) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -135,9 +133,7 @@ error: layout_of(TwoVariants) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -173,9 +169,7 @@ error: layout_of(TwoVariants) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -247,9 +241,7 @@ error: layout_of(DeadBranchHasOtherField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: Some(
|
max_repr_align: Some(
|
||||||
Align(8 bytes),
|
Align(8 bytes),
|
||||||
|
@ -275,9 +267,7 @@ error: layout_of(DeadBranchHasOtherField) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(8 bytes),
|
unadjusted_abi_align: Align(8 bytes),
|
||||||
|
|
|
@ -51,9 +51,7 @@ error: layout_of(UnivariantU8) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -135,9 +133,7 @@ error: layout_of(TwoVariantsU8) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -173,9 +169,7 @@ error: layout_of(TwoVariantsU8) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -247,9 +241,7 @@ error: layout_of(DeadBranchHasOtherFieldU8) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: Some(
|
max_repr_align: Some(
|
||||||
Align(8 bytes),
|
Align(8 bytes),
|
||||||
|
@ -275,9 +267,7 @@ error: layout_of(DeadBranchHasOtherFieldU8) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(8 bytes),
|
unadjusted_abi_align: Align(8 bytes),
|
||||||
|
|
|
@ -32,9 +32,7 @@ error: layout_of(NonZero<u32>) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -71,9 +69,7 @@ error: layout_of((u32) is 1..=) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -137,9 +133,7 @@ error: layout_of(Option<(u32) is 1..=>) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -178,9 +172,7 @@ error: layout_of(Option<(u32) is 1..=>) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -249,9 +241,7 @@ error: layout_of(Option<NonZero<u32>>) = Layout {
|
||||||
},
|
},
|
||||||
largest_niche: None,
|
largest_niche: None,
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(1 bytes),
|
unadjusted_abi_align: Align(1 bytes),
|
||||||
|
@ -290,9 +280,7 @@ error: layout_of(Option<NonZero<u32>>) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 1,
|
||||||
1,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
@ -341,9 +329,7 @@ error: layout_of(NonZeroU32New) = Layout {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
variants: Single {
|
variants: Single {
|
||||||
index: Some(
|
index: 0,
|
||||||
0,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
max_repr_align: None,
|
max_repr_align: None,
|
||||||
unadjusted_abi_align: Align(4 bytes),
|
unadjusted_abi_align: Align(4 bytes),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue