1use rustc_abi::{FieldIdx, VariantIdx};
7use rustc_ast::{InlineAsmOptions, InlineAsmTemplatePiece, Mutability};
8use rustc_attr_ir::UnrollAttr;
9use rustc_data_structures::packed::Pu128;
10use rustc_hir::CoroutineKind;
11use rustc_hir::def_id::DefId;
12use rustc_index::IndexVec;
13use rustc_macros::{StableHash, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
14use rustc_span::def_id::LocalDefId;
15use rustc_span::{Span, Spanned, Symbol};
16use rustc_target::asm::InlineAsmRegOrRegClass;
17use smallvec::SmallVec;
18use thin_vec::ThinVec;
19
20use super::{BasicBlock, Const, Local, UserTypeProjection};
21use crate::mir::coverage::CoverageKind;
22use crate::ty::adjustment::PointerCoercion;
23use crate::ty::{self, GenericArgs, List, Region, Ty, UserTypeAnnotationIndex};
24
25#[derive(#[automatically_derived]impl ::core::marker::Copy for MirPhase { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for MirPhase {
}
#[automatically_derived]impl ::core::clone::Clone for MirPhase {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<AnalysisPhase>;
let _: ::core::clone::AssertParamIsClone<RuntimePhase>;
*self
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for MirPhase {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MirPhase::Built => { 0usize }
MirPhase::Analysis(ref __binding_0) => { 1usize }
MirPhase::Runtime(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MirPhase::Built => {}
MirPhase::Analysis(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
MirPhase::Runtime(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for MirPhase {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { MirPhase::Built }
1usize => {
MirPhase::Analysis(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
MirPhase::Runtime(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MirPhase`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]impl ::core::fmt::Debug for MirPhase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Built => ::core::fmt::Formatter::write_str(f, "Built"),
Self::Analysis(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Analysis", &__self_0),
Self::Runtime(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Runtime", &__self_0),
}
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for MirPhase
{
}
#[automatically_derived]impl ::core::cmp::PartialEq for MirPhase {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Analysis(__self_0), Self::Analysis(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Runtime(__self_0), Self::Runtime(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for MirPhase {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AnalysisPhase>;
let _: ::core::cmp::AssertParamIsEq<RuntimePhase>;
}
}Eq, #[automatically_derived]impl ::core::cmp::PartialOrd for MirPhase {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]impl ::core::cmp::Ord for MirPhase {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
match (self, other) {
(Self::Analysis(__self_0), Self::Analysis(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Self::Runtime(__self_0), Self::Runtime(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ =>
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other)),
}
}
}Ord)]
43#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for MirPhase {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
MirPhase::Built => 0u8.stable_hash(__hcx, __hasher),
MirPhase::Analysis(ref __binding_0) =>
1u8.stable_hash(__hcx, __hasher),
MirPhase::Runtime(ref __binding_0) =>
2u8.stable_hash(__hcx, __hasher),
}
match *self {
MirPhase::Built => {}
MirPhase::Analysis(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
MirPhase::Runtime(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
44pub enum MirPhase {
45 Built,
53
54 Analysis(AnalysisPhase),
66
67 Runtime(RuntimePhase),
97}
98
99#[derive(#[automatically_derived]impl ::core::marker::Copy for AnalysisPhase { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for AnalysisPhase {
}
#[automatically_derived]impl ::core::clone::Clone for AnalysisPhase {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for AnalysisPhase {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AnalysisPhase::Initial => { 0usize }
AnalysisPhase::PostCleanup => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for AnalysisPhase {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { AnalysisPhase::Initial }
1usize => { AnalysisPhase::PostCleanup }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AnalysisPhase`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]impl ::core::fmt::Debug for AnalysisPhase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
AnalysisPhase::Initial => "Initial",
AnalysisPhase::PostCleanup => "PostCleanup",
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
AnalysisPhase {
}
#[automatically_derived]impl ::core::cmp::PartialEq for AnalysisPhase {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for AnalysisPhase { }Eq, #[automatically_derived]impl ::core::cmp::PartialOrd for AnalysisPhase {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]impl ::core::cmp::Ord for AnalysisPhase {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other))
}
}Ord)]
101#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
AnalysisPhase {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
AnalysisPhase::Initial => 0u8.stable_hash(__hcx, __hasher),
AnalysisPhase::PostCleanup =>
1u8.stable_hash(__hcx, __hasher),
}
match *self {
AnalysisPhase::Initial => {}
AnalysisPhase::PostCleanup => {}
}
}
}
};StableHash)]
102pub enum AnalysisPhase {
103 Initial = 0,
104 PostCleanup = 1,
120}
121
122#[derive(#[automatically_derived]impl ::core::marker::Copy for RuntimePhase { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for RuntimePhase {
}
#[automatically_derived]impl ::core::clone::Clone for RuntimePhase {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for RuntimePhase {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RuntimePhase::Initial => { 0usize }
RuntimePhase::PostCleanup => { 1usize }
RuntimePhase::Optimized => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for RuntimePhase {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RuntimePhase::Initial }
1usize => { RuntimePhase::PostCleanup }
2usize => { RuntimePhase::Optimized }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RuntimePhase`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]impl ::core::fmt::Debug for RuntimePhase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RuntimePhase::Initial => "Initial",
RuntimePhase::PostCleanup => "PostCleanup",
RuntimePhase::Optimized => "Optimized",
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
RuntimePhase {
}
#[automatically_derived]impl ::core::cmp::PartialEq for RuntimePhase {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for RuntimePhase { }Eq, #[automatically_derived]impl ::core::cmp::PartialOrd for RuntimePhase {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]impl ::core::cmp::Ord for RuntimePhase {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other))
}
}Ord)]
124#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for RuntimePhase
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
RuntimePhase::Initial => 0u8.stable_hash(__hcx, __hasher),
RuntimePhase::PostCleanup =>
1u8.stable_hash(__hcx, __hasher),
RuntimePhase::Optimized => 2u8.stable_hash(__hcx, __hasher),
}
match *self {
RuntimePhase::Initial => {}
RuntimePhase::PostCleanup => {}
RuntimePhase::Optimized => {}
}
}
}
};StableHash)]
125pub enum RuntimePhase {
126 Initial = 0,
140 PostCleanup = 1,
143 Optimized = 2,
144}
145
146#[derive(#[automatically_derived]impl ::core::marker::Copy for BorrowKind { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for BorrowKind {
}
#[automatically_derived]impl ::core::clone::Clone for BorrowKind {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<FakeBorrowKind>;
let _: ::core::clone::AssertParamIsClone<MutBorrowKind>;
*self
}
}Clone, #[automatically_derived]impl ::core::fmt::Debug for BorrowKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Shared => ::core::fmt::Formatter::write_str(f, "Shared"),
Self::Fake(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Fake",
&__self_0),
Self::Mut { kind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Mut kind", &__self_0),
}
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
BorrowKind {
}
#[automatically_derived]impl ::core::cmp::PartialEq for BorrowKind {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Fake(__self_0), Self::Fake(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Mut { kind: __self_0 }, Self::Mut { kind: __arg1_0 })
=> __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for BorrowKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<FakeBorrowKind>;
let _: ::core::cmp::AssertParamIsEq<MutBorrowKind>;
}
}Eq, #[automatically_derived]impl ::core::cmp::PartialOrd for BorrowKind {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]impl ::core::cmp::Ord for BorrowKind {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
match (self, other) {
(Self::Fake(__self_0), Self::Fake(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Self::Mut { kind: __self_0 }, Self::Mut { kind: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ =>
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other)),
}
}
}Ord, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for BorrowKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BorrowKind::Shared => { 0usize }
BorrowKind::Fake(ref __binding_0) => { 1usize }
BorrowKind::Mut { kind: ref __binding_0 } => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
BorrowKind::Shared => {}
BorrowKind::Fake(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
BorrowKind::Mut { kind: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for BorrowKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BorrowKind::Shared }
1usize => {
BorrowKind::Fake(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
BorrowKind::Mut {
kind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BorrowKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable)]
150#[derive(#[automatically_derived]impl ::core::hash::Hash for BorrowKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state);
match self {
Self::Fake(__self_0) => ::core::hash::Hash::hash(__self_0, state),
Self::Mut { kind: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for BorrowKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
BorrowKind::Shared => 0u8.stable_hash(__hcx, __hasher),
BorrowKind::Fake(ref __binding_0) =>
1u8.stable_hash(__hcx, __hasher),
BorrowKind::Mut { kind: ref __binding_0 } =>
2u8.stable_hash(__hcx, __hasher),
}
match *self {
BorrowKind::Shared => {}
BorrowKind::Fake(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
BorrowKind::Mut { kind: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
151pub enum BorrowKind {
152 Shared,
154
155 Fake(FakeBorrowKind),
175
176 Mut { kind: MutBorrowKind },
178}
179
180#[derive(#[automatically_derived]impl ::core::marker::Copy for RawPtrKind { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for RawPtrKind {
}
#[automatically_derived]impl ::core::clone::Clone for RawPtrKind {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::fmt::Debug for RawPtrKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RawPtrKind::Mut => "Mut",
RawPtrKind::Const => "Const",
RawPtrKind::FakeForPtrMetadata => "FakeForPtrMetadata",
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
RawPtrKind {
}
#[automatically_derived]impl ::core::cmp::PartialEq for RawPtrKind {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for RawPtrKind { }Eq, #[automatically_derived]impl ::core::cmp::PartialOrd for RawPtrKind {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]impl ::core::cmp::Ord for RawPtrKind {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other))
}
}Ord, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for RawPtrKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RawPtrKind::Mut => { 0usize }
RawPtrKind::Const => { 1usize }
RawPtrKind::FakeForPtrMetadata => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for RawPtrKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RawPtrKind::Mut }
1usize => { RawPtrKind::Const }
2usize => { RawPtrKind::FakeForPtrMetadata }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RawPtrKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable)]
181#[derive(#[automatically_derived]impl ::core::hash::Hash for RawPtrKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for RawPtrKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
RawPtrKind::Mut => 0u8.stable_hash(__hcx, __hasher),
RawPtrKind::Const => 1u8.stable_hash(__hcx, __hasher),
RawPtrKind::FakeForPtrMetadata =>
2u8.stable_hash(__hcx, __hasher),
}
match *self {
RawPtrKind::Mut => {}
RawPtrKind::Const => {}
RawPtrKind::FakeForPtrMetadata => {}
}
}
}
};StableHash)]
182pub enum RawPtrKind {
183 Mut,
184 Const,
185 FakeForPtrMetadata,
194}
195
196#[derive(#[automatically_derived]impl ::core::marker::Copy for MutBorrowKind { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for MutBorrowKind {
}
#[automatically_derived]impl ::core::clone::Clone for MutBorrowKind {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::fmt::Debug for MutBorrowKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
MutBorrowKind::Default => "Default",
MutBorrowKind::TwoPhaseBorrow => "TwoPhaseBorrow",
MutBorrowKind::ClosureCapture => "ClosureCapture",
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
MutBorrowKind {
}
#[automatically_derived]impl ::core::cmp::PartialEq for MutBorrowKind {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for MutBorrowKind { }Eq, #[automatically_derived]impl ::core::cmp::PartialOrd for MutBorrowKind {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]impl ::core::cmp::Ord for MutBorrowKind {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other))
}
}Ord, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for MutBorrowKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MutBorrowKind::Default => { 0usize }
MutBorrowKind::TwoPhaseBorrow => { 1usize }
MutBorrowKind::ClosureCapture => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for MutBorrowKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { MutBorrowKind::Default }
1usize => { MutBorrowKind::TwoPhaseBorrow }
2usize => { MutBorrowKind::ClosureCapture }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MutBorrowKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable)]
197#[derive(#[automatically_derived]impl ::core::hash::Hash for MutBorrowKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
MutBorrowKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
MutBorrowKind::Default => 0u8.stable_hash(__hcx, __hasher),
MutBorrowKind::TwoPhaseBorrow =>
1u8.stable_hash(__hcx, __hasher),
MutBorrowKind::ClosureCapture =>
2u8.stable_hash(__hcx, __hasher),
}
match *self {
MutBorrowKind::Default => {}
MutBorrowKind::TwoPhaseBorrow => {}
MutBorrowKind::ClosureCapture => {}
}
}
}
};StableHash)]
198pub enum MutBorrowKind {
199 Default,
200 TwoPhaseBorrow,
202 ClosureCapture,
244}
245
246#[derive(#[automatically_derived]impl ::core::marker::Copy for FakeBorrowKind { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for FakeBorrowKind {
}
#[automatically_derived]impl ::core::clone::Clone for FakeBorrowKind {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::fmt::Debug for FakeBorrowKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
FakeBorrowKind::Shallow => "Shallow",
FakeBorrowKind::Deep => "Deep",
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
FakeBorrowKind {
}
#[automatically_derived]impl ::core::cmp::PartialEq for FakeBorrowKind {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for FakeBorrowKind { }Eq, #[automatically_derived]impl ::core::cmp::PartialOrd for FakeBorrowKind {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]impl ::core::cmp::Ord for FakeBorrowKind {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other))
}
}Ord, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for FakeBorrowKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
FakeBorrowKind::Shallow => { 0usize }
FakeBorrowKind::Deep => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for FakeBorrowKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { FakeBorrowKind::Shallow }
1usize => { FakeBorrowKind::Deep }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `FakeBorrowKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable)]
247#[derive(#[automatically_derived]impl ::core::hash::Hash for FakeBorrowKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
FakeBorrowKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
FakeBorrowKind::Shallow => 0u8.stable_hash(__hcx, __hasher),
FakeBorrowKind::Deep => 1u8.stable_hash(__hcx, __hasher),
}
match *self {
FakeBorrowKind::Shallow => {}
FakeBorrowKind::Deep => {}
}
}
}
};StableHash)]
248pub enum FakeBorrowKind {
249 Shallow,
281 Deep,
295}
296
297#[derive(#[automatically_derived]impl<'tcx> ::core::clone::Clone for
StatementKind<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Assign(__self_0) =>
StatementKind::Assign(::core::clone::Clone::clone(__self_0)),
Self::FakeRead(__self_0) =>
StatementKind::FakeRead(::core::clone::Clone::clone(__self_0)),
Self::SetDiscriminant { place: __self_0, variant_index: __self_1 }
=>
StatementKind::SetDiscriminant {
place: ::core::clone::Clone::clone(__self_0),
variant_index: ::core::clone::Clone::clone(__self_1),
},
Self::StorageLive(__self_0) =>
StatementKind::StorageLive(::core::clone::Clone::clone(__self_0)),
Self::StorageDead(__self_0) =>
StatementKind::StorageDead(::core::clone::Clone::clone(__self_0)),
Self::PlaceMention(__self_0) =>
StatementKind::PlaceMention(::core::clone::Clone::clone(__self_0)),
Self::AscribeUserType(__self_0, __self_1) =>
StatementKind::AscribeUserType(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Coverage(__self_0) =>
StatementKind::Coverage(::core::clone::Clone::clone(__self_0)),
Self::Intrinsic(__self_0) =>
StatementKind::Intrinsic(::core::clone::Clone::clone(__self_0)),
Self::ConstEvalCounter => StatementKind::ConstEvalCounter,
Self::Nop => StatementKind::Nop,
Self::BackwardIncompatibleDropHint {
place: __self_0, reason: __self_1 } =>
StatementKind::BackwardIncompatibleDropHint {
place: ::core::clone::Clone::clone(__self_0),
reason: ::core::clone::Clone::clone(__self_1),
},
}
}
}Clone, #[automatically_derived]impl<'tcx> ::core::marker::StructuralPartialEq for
StatementKind<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::cmp::PartialEq for
StatementKind<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Assign(__self_0), Self::Assign(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::FakeRead(__self_0), Self::FakeRead(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::SetDiscriminant {
place: __self_0, variant_index: __self_1 },
Self::SetDiscriminant {
place: __arg1_0, variant_index: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::StorageLive(__self_0), Self::StorageLive(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::StorageDead(__self_0), Self::StorageDead(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::PlaceMention(__self_0), Self::PlaceMention(__arg1_0))
=> __self_0 == __arg1_0,
(Self::AscribeUserType(__self_0, __self_1),
Self::AscribeUserType(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Coverage(__self_0), Self::Coverage(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Intrinsic(__self_0), Self::Intrinsic(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::BackwardIncompatibleDropHint {
place: __self_0, reason: __self_1 },
Self::BackwardIncompatibleDropHint {
place: __arg1_0, reason: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for StatementKind<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
StatementKind::Assign(ref __binding_0) => { 0usize }
StatementKind::FakeRead(ref __binding_0) => { 1usize }
StatementKind::SetDiscriminant {
place: ref __binding_0, variant_index: ref __binding_1 } =>
{
2usize
}
StatementKind::StorageLive(ref __binding_0) => { 3usize }
StatementKind::StorageDead(ref __binding_0) => { 4usize }
StatementKind::PlaceMention(ref __binding_0) => { 5usize }
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => {
6usize
}
StatementKind::Coverage(ref __binding_0) => { 7usize }
StatementKind::Intrinsic(ref __binding_0) => { 8usize }
StatementKind::ConstEvalCounter => { 9usize }
StatementKind::Nop => { 10usize }
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } => {
11usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
StatementKind::Assign(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::FakeRead(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::SetDiscriminant {
place: ref __binding_0, variant_index: ref __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
StatementKind::StorageLive(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::StorageDead(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::PlaceMention(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
StatementKind::Coverage(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::Intrinsic(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::ConstEvalCounter => {}
StatementKind::Nop => {}
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for StatementKind<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
StatementKind::Assign(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
StatementKind::FakeRead(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
StatementKind::SetDiscriminant {
place: ::rustc_serialize::Decodable::decode(__decoder),
variant_index: ::rustc_serialize::Decodable::decode(__decoder),
}
}
3usize => {
StatementKind::StorageLive(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
StatementKind::StorageDead(::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
StatementKind::PlaceMention(::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
StatementKind::AscribeUserType(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
StatementKind::Coverage(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
StatementKind::Intrinsic(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => { StatementKind::ConstEvalCounter }
10usize => { StatementKind::Nop }
11usize => {
StatementKind::BackwardIncompatibleDropHint {
place: ::rustc_serialize::Decodable::decode(__decoder),
reason: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `StatementKind`, expected 0..12, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
StatementKind<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
StatementKind::Assign(ref __binding_0) =>
0u8.stable_hash(__hcx, __hasher),
StatementKind::FakeRead(ref __binding_0) =>
1u8.stable_hash(__hcx, __hasher),
StatementKind::SetDiscriminant {
place: ref __binding_0, variant_index: ref __binding_1 } =>
2u8.stable_hash(__hcx, __hasher),
StatementKind::StorageLive(ref __binding_0) =>
3u8.stable_hash(__hcx, __hasher),
StatementKind::StorageDead(ref __binding_0) =>
4u8.stable_hash(__hcx, __hasher),
StatementKind::PlaceMention(ref __binding_0) =>
5u8.stable_hash(__hcx, __hasher),
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => 6u8.stable_hash(__hcx, __hasher),
StatementKind::Coverage(ref __binding_0) =>
7u8.stable_hash(__hcx, __hasher),
StatementKind::Intrinsic(ref __binding_0) =>
8u8.stable_hash(__hcx, __hasher),
StatementKind::ConstEvalCounter =>
9u8.stable_hash(__hcx, __hasher),
StatementKind::Nop => 10u8.stable_hash(__hcx, __hasher),
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } =>
11u8.stable_hash(__hcx, __hasher),
}
match *self {
StatementKind::Assign(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::FakeRead(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::SetDiscriminant {
place: ref __binding_0, variant_index: ref __binding_1 } =>
{
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
StatementKind::StorageLive(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::StorageDead(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::PlaceMention(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
StatementKind::Coverage(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::Intrinsic(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::ConstEvalCounter => {}
StatementKind::Nop => {}
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
306#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for StatementKind<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
StatementKind::Assign(__binding_0) => {
StatementKind::Assign(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::FakeRead(__binding_0) => {
StatementKind::FakeRead(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::SetDiscriminant {
place: __binding_0, variant_index: __binding_1 } => {
StatementKind::SetDiscriminant {
place: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
variant_index: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
StatementKind::StorageLive(__binding_0) => {
StatementKind::StorageLive(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::StorageDead(__binding_0) => {
StatementKind::StorageDead(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::PlaceMention(__binding_0) => {
StatementKind::PlaceMention(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::AscribeUserType(__binding_0, __binding_1) =>
{
StatementKind::AscribeUserType(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
StatementKind::Coverage(__binding_0) => {
StatementKind::Coverage(__binding_0)
}
StatementKind::Intrinsic(__binding_0) => {
StatementKind::Intrinsic(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::ConstEvalCounter => {
StatementKind::ConstEvalCounter
}
StatementKind::Nop => { StatementKind::Nop }
StatementKind::BackwardIncompatibleDropHint {
place: __binding_0, reason: __binding_1 } => {
StatementKind::BackwardIncompatibleDropHint {
place: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
reason: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
StatementKind::Assign(__binding_0) => {
StatementKind::Assign(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::FakeRead(__binding_0) => {
StatementKind::FakeRead(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::SetDiscriminant {
place: __binding_0, variant_index: __binding_1 } => {
StatementKind::SetDiscriminant {
place: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
variant_index: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
StatementKind::StorageLive(__binding_0) => {
StatementKind::StorageLive(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::StorageDead(__binding_0) => {
StatementKind::StorageDead(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::PlaceMention(__binding_0) => {
StatementKind::PlaceMention(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::AscribeUserType(__binding_0, __binding_1) =>
{
StatementKind::AscribeUserType(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
StatementKind::Coverage(__binding_0) => {
StatementKind::Coverage(__binding_0)
}
StatementKind::Intrinsic(__binding_0) => {
StatementKind::Intrinsic(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::ConstEvalCounter => {
StatementKind::ConstEvalCounter
}
StatementKind::Nop => { StatementKind::Nop }
StatementKind::BackwardIncompatibleDropHint {
place: __binding_0, reason: __binding_1 } => {
StatementKind::BackwardIncompatibleDropHint {
place: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
reason: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for StatementKind<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
StatementKind::Assign(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::FakeRead(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::SetDiscriminant {
place: ref __binding_0, variant_index: ref __binding_1 } =>
{
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::StorageLive(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::StorageDead(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::PlaceMention(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::Coverage(..) => {}
StatementKind::Intrinsic(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::ConstEvalCounter => {}
StatementKind::Nop => {}
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
307pub enum StatementKind<'tcx> {
308 Assign(Box<(Place<'tcx>, Rvalue<'tcx>)>),
341
342 FakeRead(Box<(FakeReadCause, Place<'tcx>)>),
358
359 SetDiscriminant { place: Box<Place<'tcx>>, variant_index: VariantIdx },
365
366 StorageLive(Local),
385
386 StorageDead(Local),
388
389 PlaceMention(Box<Place<'tcx>>),
396
397 AscribeUserType(Box<(Place<'tcx>, UserTypeProjection)>, ty::Variance),
414
415 Coverage(
426 #[type_foldable(identity)]
430 #[type_visitable(ignore)]
431 CoverageKind,
432 ),
433
434 Intrinsic(Box<NonDivergingIntrinsic<'tcx>>),
437
438 ConstEvalCounter,
443
444 Nop,
446
447 BackwardIncompatibleDropHint {
453 place: Box<Place<'tcx>>,
455 reason: BackwardIncompatibleDropReason,
457 },
458}
459
460#[derive(#[automatically_derived]impl<'tcx> ::core::clone::Clone for
NonDivergingIntrinsic<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Assume(__self_0) =>
NonDivergingIntrinsic::Assume(::core::clone::Clone::clone(__self_0)),
Self::CopyNonOverlapping(__self_0) =>
NonDivergingIntrinsic::CopyNonOverlapping(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for NonDivergingIntrinsic<'tcx>
{
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
NonDivergingIntrinsic::Assume(ref __binding_0) => { 0usize }
NonDivergingIntrinsic::CopyNonOverlapping(ref __binding_0)
=> {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
NonDivergingIntrinsic::Assume(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
NonDivergingIntrinsic::CopyNonOverlapping(ref __binding_0)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for NonDivergingIntrinsic<'tcx>
{
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
NonDivergingIntrinsic::Assume(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
NonDivergingIntrinsic::CopyNonOverlapping(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `NonDivergingIntrinsic`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]impl<'tcx> ::core::fmt::Debug for
NonDivergingIntrinsic<'tcx> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Assume(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Assume", &__self_0),
Self::CopyNonOverlapping(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"CopyNonOverlapping", &__self_0),
}
}
}Debug, #[automatically_derived]impl<'tcx> ::core::marker::StructuralPartialEq for
NonDivergingIntrinsic<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::cmp::PartialEq for
NonDivergingIntrinsic<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Assume(__self_0), Self::Assume(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::CopyNonOverlapping(__self_0),
Self::CopyNonOverlapping(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
NonDivergingIntrinsic<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
NonDivergingIntrinsic::Assume(ref __binding_0) =>
0u8.stable_hash(__hcx, __hasher),
NonDivergingIntrinsic::CopyNonOverlapping(ref __binding_0)
=> 1u8.stable_hash(__hcx, __hasher),
}
match *self {
NonDivergingIntrinsic::Assume(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
NonDivergingIntrinsic::CopyNonOverlapping(ref __binding_0)
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
461#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for NonDivergingIntrinsic<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
NonDivergingIntrinsic::Assume(__binding_0) => {
NonDivergingIntrinsic::Assume(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
NonDivergingIntrinsic::CopyNonOverlapping(__binding_0) => {
NonDivergingIntrinsic::CopyNonOverlapping(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
NonDivergingIntrinsic::Assume(__binding_0) => {
NonDivergingIntrinsic::Assume(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
NonDivergingIntrinsic::CopyNonOverlapping(__binding_0) => {
NonDivergingIntrinsic::CopyNonOverlapping(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for NonDivergingIntrinsic<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
NonDivergingIntrinsic::Assume(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
NonDivergingIntrinsic::CopyNonOverlapping(ref __binding_0)
=> {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
462pub enum NonDivergingIntrinsic<'tcx> {
463 Assume(Operand<'tcx>),
470
471 CopyNonOverlapping(CopyNonOverlapping<'tcx>),
485}
486
487#[derive(#[automatically_derived]impl ::core::marker::Copy for WithRetag { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for WithRetag {
}
#[automatically_derived]impl ::core::clone::Clone for WithRetag {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for WithRetag {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
WithRetag::Yes => { 0usize }
WithRetag::No => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for WithRetag {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { WithRetag::Yes }
1usize => { WithRetag::No }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `WithRetag`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]impl ::core::fmt::Debug for WithRetag {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self { WithRetag::Yes => "Yes", WithRetag::No => "No", })
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for WithRetag
{
}
#[automatically_derived]impl ::core::cmp::PartialEq for WithRetag {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for WithRetag { }Eq, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for WithRetag {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
WithRetag::Yes => 0u8.stable_hash(__hcx, __hasher),
WithRetag::No => 1u8.stable_hash(__hcx, __hasher),
}
match *self { WithRetag::Yes => {} WithRetag::No => {} }
}
}
};StableHash)]
489#[rustc_pass_by_value]
490pub enum WithRetag {
491 Yes,
492 No,
493}
494
495impl WithRetag {
496 #[inline]
497 pub fn yes(self) -> bool {
498 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::Yes => true,
_ => false,
}matches!(self, Self::Yes)
499 }
500 #[inline]
501 pub fn no(self) -> bool {
502 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::No => true,
_ => false,
}matches!(self, Self::No)
503 }
504}
505
506#[derive(#[automatically_derived]impl ::core::marker::Copy for FakeReadCause { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for FakeReadCause {
}
#[automatically_derived]impl ::core::clone::Clone for FakeReadCause {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<Option<LocalDefId>>;
let _: ::core::clone::AssertParamIsClone<Option<LocalDefId>>;
*self
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for FakeReadCause {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
FakeReadCause::ForMatchGuard => { 0usize }
FakeReadCause::ForMatchedPlace(ref __binding_0) => {
1usize
}
FakeReadCause::ForGuardBinding => { 2usize }
FakeReadCause::ForLet(ref __binding_0) => { 3usize }
FakeReadCause::ForIndex => { 4usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
FakeReadCause::ForMatchGuard => {}
FakeReadCause::ForMatchedPlace(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
FakeReadCause::ForGuardBinding => {}
FakeReadCause::ForLet(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
FakeReadCause::ForIndex => {}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for FakeReadCause {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { FakeReadCause::ForMatchGuard }
1usize => {
FakeReadCause::ForMatchedPlace(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => { FakeReadCause::ForGuardBinding }
3usize => {
FakeReadCause::ForLet(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => { FakeReadCause::ForIndex }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `FakeReadCause`, expected 0..5, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]impl ::core::fmt::Debug for FakeReadCause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::ForMatchGuard =>
::core::fmt::Formatter::write_str(f, "ForMatchGuard"),
Self::ForMatchedPlace(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"ForMatchedPlace", &__self_0),
Self::ForGuardBinding =>
::core::fmt::Formatter::write_str(f, "ForGuardBinding"),
Self::ForLet(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"ForLet", &__self_0),
Self::ForIndex =>
::core::fmt::Formatter::write_str(f, "ForIndex"),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
FakeReadCause {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
FakeReadCause::ForMatchGuard =>
0u8.stable_hash(__hcx, __hasher),
FakeReadCause::ForMatchedPlace(ref __binding_0) =>
1u8.stable_hash(__hcx, __hasher),
FakeReadCause::ForGuardBinding =>
2u8.stable_hash(__hcx, __hasher),
FakeReadCause::ForLet(ref __binding_0) =>
3u8.stable_hash(__hcx, __hasher),
FakeReadCause::ForIndex => 4u8.stable_hash(__hcx, __hasher),
}
match *self {
FakeReadCause::ForMatchGuard => {}
FakeReadCause::ForMatchedPlace(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
FakeReadCause::ForGuardBinding => {}
FakeReadCause::ForLet(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
FakeReadCause::ForIndex => {}
}
}
}
};StableHash, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
FakeReadCause {
}
#[automatically_derived]impl ::core::cmp::PartialEq for FakeReadCause {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::ForMatchedPlace(__self_0),
Self::ForMatchedPlace(__arg1_0)) => __self_0 == __arg1_0,
(Self::ForLet(__self_0), Self::ForLet(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq)]
508pub enum FakeReadCause {
509 ForMatchGuard,
522
523 ForMatchedPlace(Option<LocalDefId>),
548
549 ForGuardBinding,
563
564 ForLet(Option<LocalDefId>),
583
584 ForIndex,
611}
612
613#[derive(#[automatically_derived]impl<'tcx> ::core::clone::Clone for
CopyNonOverlapping<'tcx> {
#[inline]
fn clone(&self) -> Self {
CopyNonOverlapping {
src: ::core::clone::Clone::clone(&self.src),
dst: ::core::clone::Clone::clone(&self.dst),
count: ::core::clone::Clone::clone(&self.count),
}
}
}Clone, #[automatically_derived]impl<'tcx> ::core::fmt::Debug for
CopyNonOverlapping<'tcx> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"CopyNonOverlapping src dst count", &self.src, &self.dst,
&&self.count)
}
}Debug, #[automatically_derived]impl<'tcx> ::core::marker::StructuralPartialEq for
CopyNonOverlapping<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::cmp::PartialEq for
CopyNonOverlapping<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
self.src == other.src && self.dst == other.dst &&
self.count == other.count
}
}PartialEq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for CopyNonOverlapping<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let CopyNonOverlapping {
src: ref __binding_0,
dst: ref __binding_1,
count: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for CopyNonOverlapping<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
CopyNonOverlapping {
src: ::rustc_serialize::Decodable::decode(__decoder),
dst: ::rustc_serialize::Decodable::decode(__decoder),
count: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
CopyNonOverlapping<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
CopyNonOverlapping {
src: ref __binding_0,
dst: ref __binding_1,
count: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
614#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for CopyNonOverlapping<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
CopyNonOverlapping {
src: __binding_0, dst: __binding_1, count: __binding_2 } =>
{
CopyNonOverlapping {
src: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
dst: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
count: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
}
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
CopyNonOverlapping {
src: __binding_0, dst: __binding_1, count: __binding_2 } =>
{
CopyNonOverlapping {
src: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
dst: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
count: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
}
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for CopyNonOverlapping<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
CopyNonOverlapping {
src: ref __binding_0,
dst: ref __binding_1,
count: ref __binding_2 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
615pub struct CopyNonOverlapping<'tcx> {
616 pub src: Operand<'tcx>,
617 pub dst: Operand<'tcx>,
618 pub count: Operand<'tcx>,
620}
621
622#[derive(#[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for CallSource {
}
#[automatically_derived]impl ::core::clone::Clone for CallSource {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::marker::Copy for CallSource { }Copy, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for CallSource {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
CallSource::OverloadedOperator => { 0usize }
CallSource::MatchCmp => { 1usize }
CallSource::Misc => { 2usize }
CallSource::Use => { 3usize }
CallSource::Normal => { 4usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for CallSource {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { CallSource::OverloadedOperator }
1usize => { CallSource::MatchCmp }
2usize => { CallSource::Misc }
3usize => { CallSource::Use }
4usize => { CallSource::Normal }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CallSource`, expected 0..5, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]impl ::core::fmt::Debug for CallSource {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_c_like_enum_write_str(f,
"OverloadedOperator MatchCmp Misc Use Normal",
match self {
CallSource::OverloadedOperator => 0usize,
CallSource::MatchCmp => 19usize,
CallSource::Misc => 28usize,
CallSource::Use => 33usize,
CallSource::Normal => 37usize,
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
CallSource {
}
#[automatically_derived]impl ::core::cmp::PartialEq for CallSource {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for CallSource {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
CallSource::OverloadedOperator =>
0u8.stable_hash(__hcx, __hasher),
CallSource::MatchCmp => 1u8.stable_hash(__hcx, __hasher),
CallSource::Misc => 2u8.stable_hash(__hcx, __hasher),
CallSource::Use => 3u8.stable_hash(__hcx, __hasher),
CallSource::Normal => 4u8.stable_hash(__hcx, __hasher),
}
match *self {
CallSource::OverloadedOperator => {}
CallSource::MatchCmp => {}
CallSource::Misc => {}
CallSource::Use => {}
CallSource::Normal => {}
}
}
}
};StableHash)]
625#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for CallSource {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
CallSource::OverloadedOperator => {
CallSource::OverloadedOperator
}
CallSource::MatchCmp => { CallSource::MatchCmp }
CallSource::Misc => { CallSource::Misc }
CallSource::Use => { CallSource::Use }
CallSource::Normal => { CallSource::Normal }
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
CallSource::OverloadedOperator => {
CallSource::OverloadedOperator
}
CallSource::MatchCmp => { CallSource::MatchCmp }
CallSource::Misc => { CallSource::Misc }
CallSource::Use => { CallSource::Use }
CallSource::Normal => { CallSource::Normal }
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for CallSource {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
CallSource::OverloadedOperator => {}
CallSource::MatchCmp => {}
CallSource::Misc => {}
CallSource::Use => {}
CallSource::Normal => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
626pub enum CallSource {
627 OverloadedOperator,
630 MatchCmp,
635 Misc,
638 Use,
640 Normal,
642}
643
644#[derive(#[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for InlineAsmMacro {
}
#[automatically_derived]impl ::core::clone::Clone for InlineAsmMacro {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::marker::Copy for InlineAsmMacro { }Copy, #[automatically_derived]impl ::core::fmt::Debug for InlineAsmMacro {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
InlineAsmMacro::Asm => "Asm",
InlineAsmMacro::NakedAsm => "NakedAsm",
})
}
}Debug, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for InlineAsmMacro {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
InlineAsmMacro::Asm => { 0usize }
InlineAsmMacro::NakedAsm => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for InlineAsmMacro {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { InlineAsmMacro::Asm }
1usize => { InlineAsmMacro::NakedAsm }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `InlineAsmMacro`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
InlineAsmMacro {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
InlineAsmMacro::Asm => 0u8.stable_hash(__hcx, __hasher),
InlineAsmMacro::NakedAsm =>
1u8.stable_hash(__hcx, __hasher),
}
match *self {
InlineAsmMacro::Asm => {}
InlineAsmMacro::NakedAsm => {}
}
}
}
};StableHash, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
InlineAsmMacro {
}
#[automatically_derived]impl ::core::cmp::PartialEq for InlineAsmMacro {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq)]
645#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for InlineAsmMacro {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
InlineAsmMacro::Asm => { InlineAsmMacro::Asm }
InlineAsmMacro::NakedAsm => { InlineAsmMacro::NakedAsm }
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
InlineAsmMacro::Asm => { InlineAsmMacro::Asm }
InlineAsmMacro::NakedAsm => { InlineAsmMacro::NakedAsm }
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for InlineAsmMacro {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
InlineAsmMacro::Asm => {}
InlineAsmMacro::NakedAsm => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
646pub enum InlineAsmMacro {
648 Asm,
650 NakedAsm,
652}
653
654#[derive(#[automatically_derived]impl<'tcx> ::core::clone::Clone for
TerminatorKind<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Goto { target: __self_0, loop_hint_attrs: __self_1 } =>
TerminatorKind::Goto {
target: ::core::clone::Clone::clone(__self_0),
loop_hint_attrs: ::core::clone::Clone::clone(__self_1),
},
Self::SwitchInt { discr: __self_0, targets: __self_1 } =>
TerminatorKind::SwitchInt {
discr: ::core::clone::Clone::clone(__self_0),
targets: ::core::clone::Clone::clone(__self_1),
},
Self::UnwindResume => TerminatorKind::UnwindResume,
Self::UnwindTerminate(__self_0) =>
TerminatorKind::UnwindTerminate(::core::clone::Clone::clone(__self_0)),
Self::Return => TerminatorKind::Return,
Self::Unreachable => TerminatorKind::Unreachable,
Self::Drop {
place: __self_0,
target: __self_1,
unwind: __self_2,
replace: __self_3,
drop: __self_4 } =>
TerminatorKind::Drop {
place: ::core::clone::Clone::clone(__self_0),
target: ::core::clone::Clone::clone(__self_1),
unwind: ::core::clone::Clone::clone(__self_2),
replace: ::core::clone::Clone::clone(__self_3),
drop: ::core::clone::Clone::clone(__self_4),
},
Self::Call {
func: __self_0,
args: __self_1,
destination: __self_2,
target: __self_3,
unwind: __self_4,
call_source: __self_5,
fn_span: __self_6 } =>
TerminatorKind::Call {
func: ::core::clone::Clone::clone(__self_0),
args: ::core::clone::Clone::clone(__self_1),
destination: ::core::clone::Clone::clone(__self_2),
target: ::core::clone::Clone::clone(__self_3),
unwind: ::core::clone::Clone::clone(__self_4),
call_source: ::core::clone::Clone::clone(__self_5),
fn_span: ::core::clone::Clone::clone(__self_6),
},
Self::TailCall { func: __self_0, args: __self_1, fn_span: __self_2
} =>
TerminatorKind::TailCall {
func: ::core::clone::Clone::clone(__self_0),
args: ::core::clone::Clone::clone(__self_1),
fn_span: ::core::clone::Clone::clone(__self_2),
},
Self::Assert {
cond: __self_0,
expected: __self_1,
msg: __self_2,
target: __self_3,
unwind: __self_4 } =>
TerminatorKind::Assert {
cond: ::core::clone::Clone::clone(__self_0),
expected: ::core::clone::Clone::clone(__self_1),
msg: ::core::clone::Clone::clone(__self_2),
target: ::core::clone::Clone::clone(__self_3),
unwind: ::core::clone::Clone::clone(__self_4),
},
Self::Yield {
value: __self_0,
resume: __self_1,
resume_arg: __self_2,
drop: __self_3 } =>
TerminatorKind::Yield {
value: ::core::clone::Clone::clone(__self_0),
resume: ::core::clone::Clone::clone(__self_1),
resume_arg: ::core::clone::Clone::clone(__self_2),
drop: ::core::clone::Clone::clone(__self_3),
},
Self::CoroutineDrop => TerminatorKind::CoroutineDrop,
Self::FalseEdge {
real_target: __self_0, imaginary_target: __self_1 } =>
TerminatorKind::FalseEdge {
real_target: ::core::clone::Clone::clone(__self_0),
imaginary_target: ::core::clone::Clone::clone(__self_1),
},
Self::FalseUnwind { real_target: __self_0, unwind: __self_1 } =>
TerminatorKind::FalseUnwind {
real_target: ::core::clone::Clone::clone(__self_0),
unwind: ::core::clone::Clone::clone(__self_1),
},
Self::InlineAsm {
asm_macro: __self_0,
template: __self_1,
operands: __self_2,
options: __self_3,
line_spans: __self_4,
targets: __self_5,
unwind: __self_6 } =>
TerminatorKind::InlineAsm {
asm_macro: ::core::clone::Clone::clone(__self_0),
template: ::core::clone::Clone::clone(__self_1),
operands: ::core::clone::Clone::clone(__self_2),
options: ::core::clone::Clone::clone(__self_3),
line_spans: ::core::clone::Clone::clone(__self_4),
targets: ::core::clone::Clone::clone(__self_5),
unwind: ::core::clone::Clone::clone(__self_6),
},
}
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for TerminatorKind<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
TerminatorKind::Goto {
target: ref __binding_0, loop_hint_attrs: ref __binding_1 }
=> {
0usize
}
TerminatorKind::SwitchInt {
discr: ref __binding_0, targets: ref __binding_1 } => {
1usize
}
TerminatorKind::UnwindResume => { 2usize }
TerminatorKind::UnwindTerminate(ref __binding_0) => {
3usize
}
TerminatorKind::Return => { 4usize }
TerminatorKind::Unreachable => { 5usize }
TerminatorKind::Drop {
place: ref __binding_0,
target: ref __binding_1,
unwind: ref __binding_2,
replace: ref __binding_3,
drop: ref __binding_4 } => {
6usize
}
TerminatorKind::Call {
func: ref __binding_0,
args: ref __binding_1,
destination: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4,
call_source: ref __binding_5,
fn_span: ref __binding_6 } => {
7usize
}
TerminatorKind::TailCall {
func: ref __binding_0,
args: ref __binding_1,
fn_span: ref __binding_2 } => {
8usize
}
TerminatorKind::Assert {
cond: ref __binding_0,
expected: ref __binding_1,
msg: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4 } => {
9usize
}
TerminatorKind::Yield {
value: ref __binding_0,
resume: ref __binding_1,
resume_arg: ref __binding_2,
drop: ref __binding_3 } => {
10usize
}
TerminatorKind::CoroutineDrop => { 11usize }
TerminatorKind::FalseEdge {
real_target: ref __binding_0,
imaginary_target: ref __binding_1 } => {
12usize
}
TerminatorKind::FalseUnwind {
real_target: ref __binding_0, unwind: ref __binding_1 } => {
13usize
}
TerminatorKind::InlineAsm {
asm_macro: ref __binding_0,
template: __binding_1,
operands: ref __binding_2,
options: ref __binding_3,
line_spans: __binding_4,
targets: ref __binding_5,
unwind: ref __binding_6 } => {
14usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
TerminatorKind::Goto {
target: ref __binding_0, loop_hint_attrs: ref __binding_1 }
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TerminatorKind::SwitchInt {
discr: ref __binding_0, targets: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TerminatorKind::UnwindResume => {}
TerminatorKind::UnwindTerminate(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TerminatorKind::Return => {}
TerminatorKind::Unreachable => {}
TerminatorKind::Drop {
place: ref __binding_0,
target: ref __binding_1,
unwind: ref __binding_2,
replace: ref __binding_3,
drop: ref __binding_4 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
}
TerminatorKind::Call {
func: ref __binding_0,
args: ref __binding_1,
destination: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4,
call_source: ref __binding_5,
fn_span: ref __binding_6 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_6,
__encoder);
}
TerminatorKind::TailCall {
func: ref __binding_0,
args: ref __binding_1,
fn_span: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
TerminatorKind::Assert {
cond: ref __binding_0,
expected: ref __binding_1,
msg: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
}
TerminatorKind::Yield {
value: ref __binding_0,
resume: ref __binding_1,
resume_arg: ref __binding_2,
drop: ref __binding_3 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
TerminatorKind::CoroutineDrop => {}
TerminatorKind::FalseEdge {
real_target: ref __binding_0,
imaginary_target: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TerminatorKind::FalseUnwind {
real_target: ref __binding_0, unwind: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TerminatorKind::InlineAsm {
asm_macro: ref __binding_0,
template: __binding_1,
operands: ref __binding_2,
options: ref __binding_3,
line_spans: __binding_4,
targets: ref __binding_5,
unwind: ref __binding_6 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_6,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for TerminatorKind<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
TerminatorKind::Goto {
target: ::rustc_serialize::Decodable::decode(__decoder),
loop_hint_attrs: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
TerminatorKind::SwitchInt {
discr: ::rustc_serialize::Decodable::decode(__decoder),
targets: ::rustc_serialize::Decodable::decode(__decoder),
}
}
2usize => { TerminatorKind::UnwindResume }
3usize => {
TerminatorKind::UnwindTerminate(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => { TerminatorKind::Return }
5usize => { TerminatorKind::Unreachable }
6usize => {
TerminatorKind::Drop {
place: ::rustc_serialize::Decodable::decode(__decoder),
target: ::rustc_serialize::Decodable::decode(__decoder),
unwind: ::rustc_serialize::Decodable::decode(__decoder),
replace: ::rustc_serialize::Decodable::decode(__decoder),
drop: ::rustc_serialize::Decodable::decode(__decoder),
}
}
7usize => {
TerminatorKind::Call {
func: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
destination: ::rustc_serialize::Decodable::decode(__decoder),
target: ::rustc_serialize::Decodable::decode(__decoder),
unwind: ::rustc_serialize::Decodable::decode(__decoder),
call_source: ::rustc_serialize::Decodable::decode(__decoder),
fn_span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
8usize => {
TerminatorKind::TailCall {
func: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
fn_span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
9usize => {
TerminatorKind::Assert {
cond: ::rustc_serialize::Decodable::decode(__decoder),
expected: ::rustc_serialize::Decodable::decode(__decoder),
msg: ::rustc_serialize::Decodable::decode(__decoder),
target: ::rustc_serialize::Decodable::decode(__decoder),
unwind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
10usize => {
TerminatorKind::Yield {
value: ::rustc_serialize::Decodable::decode(__decoder),
resume: ::rustc_serialize::Decodable::decode(__decoder),
resume_arg: ::rustc_serialize::Decodable::decode(__decoder),
drop: ::rustc_serialize::Decodable::decode(__decoder),
}
}
11usize => { TerminatorKind::CoroutineDrop }
12usize => {
TerminatorKind::FalseEdge {
real_target: ::rustc_serialize::Decodable::decode(__decoder),
imaginary_target: ::rustc_serialize::Decodable::decode(__decoder),
}
}
13usize => {
TerminatorKind::FalseUnwind {
real_target: ::rustc_serialize::Decodable::decode(__decoder),
unwind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
14usize => {
TerminatorKind::InlineAsm {
asm_macro: ::rustc_serialize::Decodable::decode(__decoder),
template: ::rustc_middle::ty::codec::RefDecodable::decode(__decoder),
operands: ::rustc_serialize::Decodable::decode(__decoder),
options: ::rustc_serialize::Decodable::decode(__decoder),
line_spans: ::rustc_middle::ty::codec::RefDecodable::decode(__decoder),
targets: ::rustc_serialize::Decodable::decode(__decoder),
unwind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `TerminatorKind`, expected 0..15, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
TerminatorKind<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
TerminatorKind::Goto {
target: ref __binding_0, loop_hint_attrs: ref __binding_1 }
=> 0u8.stable_hash(__hcx, __hasher),
TerminatorKind::SwitchInt {
discr: ref __binding_0, targets: ref __binding_1 } =>
1u8.stable_hash(__hcx, __hasher),
TerminatorKind::UnwindResume =>
2u8.stable_hash(__hcx, __hasher),
TerminatorKind::UnwindTerminate(ref __binding_0) =>
3u8.stable_hash(__hcx, __hasher),
TerminatorKind::Return => 4u8.stable_hash(__hcx, __hasher),
TerminatorKind::Unreachable =>
5u8.stable_hash(__hcx, __hasher),
TerminatorKind::Drop {
place: ref __binding_0,
target: ref __binding_1,
unwind: ref __binding_2,
replace: ref __binding_3,
drop: ref __binding_4 } => 6u8.stable_hash(__hcx, __hasher),
TerminatorKind::Call {
func: ref __binding_0,
args: ref __binding_1,
destination: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4,
call_source: ref __binding_5,
fn_span: ref __binding_6 } =>
7u8.stable_hash(__hcx, __hasher),
TerminatorKind::TailCall {
func: ref __binding_0,
args: ref __binding_1,
fn_span: ref __binding_2 } =>
8u8.stable_hash(__hcx, __hasher),
TerminatorKind::Assert {
cond: ref __binding_0,
expected: ref __binding_1,
msg: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4 } =>
9u8.stable_hash(__hcx, __hasher),
TerminatorKind::Yield {
value: ref __binding_0,
resume: ref __binding_1,
resume_arg: ref __binding_2,
drop: ref __binding_3 } =>
10u8.stable_hash(__hcx, __hasher),
TerminatorKind::CoroutineDrop =>
11u8.stable_hash(__hcx, __hasher),
TerminatorKind::FalseEdge {
real_target: ref __binding_0,
imaginary_target: ref __binding_1 } =>
12u8.stable_hash(__hcx, __hasher),
TerminatorKind::FalseUnwind {
real_target: ref __binding_0, unwind: ref __binding_1 } =>
13u8.stable_hash(__hcx, __hasher),
TerminatorKind::InlineAsm {
asm_macro: ref __binding_0,
template: ref __binding_1,
operands: ref __binding_2,
options: ref __binding_3,
line_spans: ref __binding_4,
targets: ref __binding_5,
unwind: ref __binding_6 } =>
14u8.stable_hash(__hcx, __hasher),
}
match *self {
TerminatorKind::Goto {
target: ref __binding_0, loop_hint_attrs: ref __binding_1 }
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
TerminatorKind::SwitchInt {
discr: ref __binding_0, targets: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
TerminatorKind::UnwindResume => {}
TerminatorKind::UnwindTerminate(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
TerminatorKind::Return => {}
TerminatorKind::Unreachable => {}
TerminatorKind::Drop {
place: ref __binding_0,
target: ref __binding_1,
unwind: ref __binding_2,
replace: ref __binding_3,
drop: ref __binding_4 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
{ __binding_4.stable_hash(__hcx, __hasher); }
}
TerminatorKind::Call {
func: ref __binding_0,
args: ref __binding_1,
destination: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4,
call_source: ref __binding_5,
fn_span: ref __binding_6 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
{ __binding_4.stable_hash(__hcx, __hasher); }
{ __binding_5.stable_hash(__hcx, __hasher); }
{ __binding_6.stable_hash(__hcx, __hasher); }
}
TerminatorKind::TailCall {
func: ref __binding_0,
args: ref __binding_1,
fn_span: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
TerminatorKind::Assert {
cond: ref __binding_0,
expected: ref __binding_1,
msg: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
{ __binding_4.stable_hash(__hcx, __hasher); }
}
TerminatorKind::Yield {
value: ref __binding_0,
resume: ref __binding_1,
resume_arg: ref __binding_2,
drop: ref __binding_3 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
}
TerminatorKind::CoroutineDrop => {}
TerminatorKind::FalseEdge {
real_target: ref __binding_0,
imaginary_target: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
TerminatorKind::FalseUnwind {
real_target: ref __binding_0, unwind: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
TerminatorKind::InlineAsm {
asm_macro: ref __binding_0,
template: ref __binding_1,
operands: ref __binding_2,
options: ref __binding_3,
line_spans: ref __binding_4,
targets: ref __binding_5,
unwind: ref __binding_6 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
{ __binding_4.stable_hash(__hcx, __hasher); }
{ __binding_5.stable_hash(__hcx, __hasher); }
{ __binding_6.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]impl<'tcx> ::core::marker::StructuralPartialEq for
TerminatorKind<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::cmp::PartialEq for
TerminatorKind<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Goto { target: __self_0, loop_hint_attrs: __self_1 },
Self::Goto { target: __arg1_0, loop_hint_attrs: __arg1_1 })
=> __self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::SwitchInt { discr: __self_0, targets: __self_1 },
Self::SwitchInt { discr: __arg1_0, targets: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::UnwindTerminate(__self_0),
Self::UnwindTerminate(__arg1_0)) => __self_0 == __arg1_0,
(Self::Drop {
place: __self_0,
target: __self_1,
unwind: __self_2,
replace: __self_3,
drop: __self_4 }, Self::Drop {
place: __arg1_0,
target: __arg1_1,
unwind: __arg1_2,
replace: __arg1_3,
drop: __arg1_4 }) =>
__self_3 == __arg1_3 && __self_0 == __arg1_0 &&
__self_1 == __arg1_1 && __self_2 == __arg1_2 &&
__self_4 == __arg1_4,
(Self::Call {
func: __self_0,
args: __self_1,
destination: __self_2,
target: __self_3,
unwind: __self_4,
call_source: __self_5,
fn_span: __self_6 }, Self::Call {
func: __arg1_0,
args: __arg1_1,
destination: __arg1_2,
target: __arg1_3,
unwind: __arg1_4,
call_source: __arg1_5,
fn_span: __arg1_6 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4 && __self_5 == __arg1_5 &&
__self_6 == __arg1_6,
(Self::TailCall {
func: __self_0, args: __self_1, fn_span: __self_2 },
Self::TailCall {
func: __arg1_0, args: __arg1_1, fn_span: __arg1_2 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::Assert {
cond: __self_0,
expected: __self_1,
msg: __self_2,
target: __self_3,
unwind: __self_4 }, Self::Assert {
cond: __arg1_0,
expected: __arg1_1,
msg: __arg1_2,
target: __arg1_3,
unwind: __arg1_4 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4,
(Self::Yield {
value: __self_0,
resume: __self_1,
resume_arg: __self_2,
drop: __self_3 }, Self::Yield {
value: __arg1_0,
resume: __arg1_1,
resume_arg: __arg1_2,
drop: __arg1_3 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(Self::FalseEdge {
real_target: __self_0, imaginary_target: __self_1 },
Self::FalseEdge {
real_target: __arg1_0, imaginary_target: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::FalseUnwind { real_target: __self_0, unwind: __self_1
}, Self::FalseUnwind {
real_target: __arg1_0, unwind: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::InlineAsm {
asm_macro: __self_0,
template: __self_1,
operands: __self_2,
options: __self_3,
line_spans: __self_4,
targets: __self_5,
unwind: __self_6 }, Self::InlineAsm {
asm_macro: __arg1_0,
template: __arg1_1,
operands: __arg1_2,
options: __arg1_3,
line_spans: __arg1_4,
targets: __arg1_5,
unwind: __arg1_6 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4 && __self_5 == __arg1_5 &&
__self_6 == __arg1_6,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for TerminatorKind<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
TerminatorKind::Goto {
target: __binding_0, loop_hint_attrs: __binding_1 } => {
TerminatorKind::Goto {
target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
loop_hint_attrs: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
TerminatorKind::SwitchInt {
discr: __binding_0, targets: __binding_1 } => {
TerminatorKind::SwitchInt {
discr: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
targets: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
TerminatorKind::UnwindResume => {
TerminatorKind::UnwindResume
}
TerminatorKind::UnwindTerminate(__binding_0) => {
TerminatorKind::UnwindTerminate(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
TerminatorKind::Return => { TerminatorKind::Return }
TerminatorKind::Unreachable => {
TerminatorKind::Unreachable
}
TerminatorKind::Drop {
place: __binding_0,
target: __binding_1,
unwind: __binding_2,
replace: __binding_3,
drop: __binding_4 } => {
TerminatorKind::Drop {
place: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
unwind: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
replace: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
drop: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_4,
__folder)?,
}
}
TerminatorKind::Call {
func: __binding_0,
args: __binding_1,
destination: __binding_2,
target: __binding_3,
unwind: __binding_4,
call_source: __binding_5,
fn_span: __binding_6 } => {
TerminatorKind::Call {
func: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
args: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
destination: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
unwind: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_4,
__folder)?,
call_source: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_5,
__folder)?,
fn_span: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_6,
__folder)?,
}
}
TerminatorKind::TailCall {
func: __binding_0, args: __binding_1, fn_span: __binding_2 }
=> {
TerminatorKind::TailCall {
func: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
args: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
fn_span: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
}
}
TerminatorKind::Assert {
cond: __binding_0,
expected: __binding_1,
msg: __binding_2,
target: __binding_3,
unwind: __binding_4 } => {
TerminatorKind::Assert {
cond: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
expected: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
msg: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
unwind: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_4,
__folder)?,
}
}
TerminatorKind::Yield {
value: __binding_0,
resume: __binding_1,
resume_arg: __binding_2,
drop: __binding_3 } => {
TerminatorKind::Yield {
value: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
resume: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
resume_arg: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
drop: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
}
}
TerminatorKind::CoroutineDrop => {
TerminatorKind::CoroutineDrop
}
TerminatorKind::FalseEdge {
real_target: __binding_0, imaginary_target: __binding_1 } =>
{
TerminatorKind::FalseEdge {
real_target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
imaginary_target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
TerminatorKind::FalseUnwind {
real_target: __binding_0, unwind: __binding_1 } => {
TerminatorKind::FalseUnwind {
real_target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
unwind: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
TerminatorKind::InlineAsm {
asm_macro: __binding_0,
template: __binding_1,
operands: __binding_2,
options: __binding_3,
line_spans: __binding_4,
targets: __binding_5,
unwind: __binding_6 } => {
TerminatorKind::InlineAsm {
asm_macro: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
template: __binding_1,
operands: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
options: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
line_spans: __binding_4,
targets: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_5,
__folder)?,
unwind: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_6,
__folder)?,
}
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
TerminatorKind::Goto {
target: __binding_0, loop_hint_attrs: __binding_1 } => {
TerminatorKind::Goto {
target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
loop_hint_attrs: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
TerminatorKind::SwitchInt {
discr: __binding_0, targets: __binding_1 } => {
TerminatorKind::SwitchInt {
discr: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
targets: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
TerminatorKind::UnwindResume => {
TerminatorKind::UnwindResume
}
TerminatorKind::UnwindTerminate(__binding_0) => {
TerminatorKind::UnwindTerminate(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
TerminatorKind::Return => { TerminatorKind::Return }
TerminatorKind::Unreachable => {
TerminatorKind::Unreachable
}
TerminatorKind::Drop {
place: __binding_0,
target: __binding_1,
unwind: __binding_2,
replace: __binding_3,
drop: __binding_4 } => {
TerminatorKind::Drop {
place: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
unwind: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
replace: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
drop: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_4,
__folder),
}
}
TerminatorKind::Call {
func: __binding_0,
args: __binding_1,
destination: __binding_2,
target: __binding_3,
unwind: __binding_4,
call_source: __binding_5,
fn_span: __binding_6 } => {
TerminatorKind::Call {
func: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
args: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
destination: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
unwind: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_4,
__folder),
call_source: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_5,
__folder),
fn_span: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_6,
__folder),
}
}
TerminatorKind::TailCall {
func: __binding_0, args: __binding_1, fn_span: __binding_2 }
=> {
TerminatorKind::TailCall {
func: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
args: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
fn_span: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
}
}
TerminatorKind::Assert {
cond: __binding_0,
expected: __binding_1,
msg: __binding_2,
target: __binding_3,
unwind: __binding_4 } => {
TerminatorKind::Assert {
cond: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
expected: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
msg: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
unwind: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_4,
__folder),
}
}
TerminatorKind::Yield {
value: __binding_0,
resume: __binding_1,
resume_arg: __binding_2,
drop: __binding_3 } => {
TerminatorKind::Yield {
value: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
resume: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
resume_arg: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
drop: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
}
}
TerminatorKind::CoroutineDrop => {
TerminatorKind::CoroutineDrop
}
TerminatorKind::FalseEdge {
real_target: __binding_0, imaginary_target: __binding_1 } =>
{
TerminatorKind::FalseEdge {
real_target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
imaginary_target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
TerminatorKind::FalseUnwind {
real_target: __binding_0, unwind: __binding_1 } => {
TerminatorKind::FalseUnwind {
real_target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
unwind: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
TerminatorKind::InlineAsm {
asm_macro: __binding_0,
template: __binding_1,
operands: __binding_2,
options: __binding_3,
line_spans: __binding_4,
targets: __binding_5,
unwind: __binding_6 } => {
TerminatorKind::InlineAsm {
asm_macro: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
template: __binding_1,
operands: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
options: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
line_spans: __binding_4,
targets: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_5,
__folder),
unwind: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_6,
__folder),
}
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for TerminatorKind<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
TerminatorKind::Goto {
target: ref __binding_0, loop_hint_attrs: ref __binding_1 }
=> {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::SwitchInt {
discr: ref __binding_0, targets: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::UnwindResume => {}
TerminatorKind::UnwindTerminate(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::Return => {}
TerminatorKind::Unreachable => {}
TerminatorKind::Drop {
place: ref __binding_0,
target: ref __binding_1,
unwind: ref __binding_2,
replace: ref __binding_3,
drop: ref __binding_4 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_4,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::Call {
func: ref __binding_0,
args: ref __binding_1,
destination: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4,
call_source: ref __binding_5,
fn_span: ref __binding_6 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_4,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_5,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_6,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::TailCall {
func: ref __binding_0,
args: ref __binding_1,
fn_span: ref __binding_2 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::Assert {
cond: ref __binding_0,
expected: ref __binding_1,
msg: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_4,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::Yield {
value: ref __binding_0,
resume: ref __binding_1,
resume_arg: ref __binding_2,
drop: ref __binding_3 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::CoroutineDrop => {}
TerminatorKind::FalseEdge {
real_target: ref __binding_0,
imaginary_target: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::FalseUnwind {
real_target: ref __binding_0, unwind: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::InlineAsm {
asm_macro: ref __binding_0,
operands: ref __binding_2,
options: ref __binding_3,
targets: ref __binding_5,
unwind: ref __binding_6, .. } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_5,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_6,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
685pub enum TerminatorKind<'tcx> {
686 Goto { target: BasicBlock, loop_hint_attrs: ThinVec<UnrollAttr> },
688
689 SwitchInt {
698 discr: Operand<'tcx>,
700 targets: SwitchTargets,
701 },
702
703 UnwindResume,
710
711 UnwindTerminate(UnwindTerminateReason),
716
717 Return,
729
730 Unreachable,
734
735 Drop {
768 place: Place<'tcx>,
769 target: BasicBlock,
770 unwind: UnwindAction,
771 replace: bool,
772 drop: Option<BasicBlock>,
774 },
775
776 Call {
790 func: Operand<'tcx>,
792 args: Box<[Spanned<Operand<'tcx>>]>,
799 destination: Place<'tcx>,
801 target: Option<BasicBlock>,
803 unwind: UnwindAction,
805 call_source: CallSource,
807 fn_span: Span,
810 },
811
812 TailCall {
829 func: Operand<'tcx>,
831 args: Box<[Spanned<Operand<'tcx>>]>,
836 fn_span: Span,
840 },
841
842 Assert {
854 cond: Operand<'tcx>,
855 expected: bool,
856 msg: Box<AssertMessage<'tcx>>,
857 target: BasicBlock,
858 unwind: UnwindAction,
859 },
860
861 Yield {
884 value: Operand<'tcx>,
886 resume: BasicBlock,
888 resume_arg: Place<'tcx>,
890 drop: Option<BasicBlock>,
892 },
893
894 CoroutineDrop,
905
906 FalseEdge {
913 real_target: BasicBlock,
915 imaginary_target: BasicBlock,
918 },
919
920 FalseUnwind {
928 real_target: BasicBlock,
930 unwind: UnwindAction,
936 },
937
938 InlineAsm {
941 asm_macro: InlineAsmMacro,
943
944 #[type_foldable(identity)]
946 #[type_visitable(ignore)]
947 template: &'tcx [InlineAsmTemplatePiece],
948
949 operands: Box<[InlineAsmOperand<'tcx>]>,
951
952 options: InlineAsmOptions,
954
955 #[type_foldable(identity)]
958 #[type_visitable(ignore)]
959 line_spans: &'tcx [Span],
960
961 targets: Box<[BasicBlock]>,
965
966 unwind: UnwindAction,
969 },
970}
971
972#[derive(#[automatically_derived]impl ::core::clone::Clone for
BackwardIncompatibleDropReason {
#[inline]
fn clone(&self) -> Self { BackwardIncompatibleDropReason::Edition2024 }
}Clone, #[automatically_derived]impl ::core::fmt::Debug for
BackwardIncompatibleDropReason {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Edition2024")
}
}Debug, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for
BackwardIncompatibleDropReason {
fn encode(&self, __encoder: &mut __E) {}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for
BackwardIncompatibleDropReason {
fn decode(__decoder: &mut __D) -> Self {
BackwardIncompatibleDropReason::Edition2024
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
BackwardIncompatibleDropReason {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
BackwardIncompatibleDropReason::Edition2024 =>
0u8.stable_hash(__hcx, __hasher),
}
match *self {
BackwardIncompatibleDropReason::Edition2024 => {}
}
}
}
};StableHash, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
BackwardIncompatibleDropReason {
}
#[automatically_derived]impl ::core::cmp::PartialEq for
BackwardIncompatibleDropReason {
#[inline]
fn eq(&self, other: &Self) -> bool { true }
}PartialEq)]
973#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for BackwardIncompatibleDropReason {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
BackwardIncompatibleDropReason::Edition2024 => {
BackwardIncompatibleDropReason::Edition2024
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
BackwardIncompatibleDropReason::Edition2024 => {
BackwardIncompatibleDropReason::Edition2024
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for BackwardIncompatibleDropReason {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
BackwardIncompatibleDropReason::Edition2024 => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
974pub enum BackwardIncompatibleDropReason {
975 Edition2024,
976}
977
978#[derive(#[automatically_derived]impl ::core::fmt::Debug for SwitchTargets {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"SwitchTargets values targets", &self.values, &&self.targets)
}
}Debug, #[automatically_derived]impl ::core::clone::Clone for SwitchTargets {
#[inline]
fn clone(&self) -> Self {
SwitchTargets {
values: ::core::clone::Clone::clone(&self.values),
targets: ::core::clone::Clone::clone(&self.targets),
}
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for SwitchTargets {
fn encode(&self, __encoder: &mut __E) {
let SwitchTargets {
values: ref __binding_0, targets: ref __binding_1 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for SwitchTargets {
fn decode(__decoder: &mut __D) -> Self {
SwitchTargets {
values: ::rustc_serialize::Decodable::decode(__decoder),
targets: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
SwitchTargets {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
SwitchTargets {
values: ref __binding_0, targets: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
SwitchTargets {
}
#[automatically_derived]impl ::core::cmp::PartialEq for SwitchTargets {
#[inline]
fn eq(&self, other: &Self) -> bool {
self.values == other.values && self.targets == other.targets
}
}PartialEq)]
979pub struct SwitchTargets {
980 pub(super) values: SmallVec<[Pu128; 1]>,
983
984 pub(super) targets: SmallVec<[BasicBlock; 2]>,
1005}
1006
1007#[derive(#[automatically_derived]impl ::core::marker::Copy for UnwindAction { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for UnwindAction {
}
#[automatically_derived]impl ::core::clone::Clone for UnwindAction {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<UnwindTerminateReason>;
let _: ::core::clone::AssertParamIsClone<BasicBlock>;
*self
}
}Clone, #[automatically_derived]impl ::core::fmt::Debug for UnwindAction {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Continue =>
::core::fmt::Formatter::write_str(f, "Continue"),
Self::Unreachable =>
::core::fmt::Formatter::write_str(f, "Unreachable"),
Self::Terminate(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Terminate", &__self_0),
Self::Cleanup(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Cleanup", &__self_0),
}
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
UnwindAction {
}
#[automatically_derived]impl ::core::cmp::PartialEq for UnwindAction {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Terminate(__self_0), Self::Terminate(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Cleanup(__self_0), Self::Cleanup(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for UnwindAction {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<UnwindTerminateReason>;
let _: ::core::cmp::AssertParamIsEq<BasicBlock>;
}
}Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for UnwindAction {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnwindAction::Continue => { 0usize }
UnwindAction::Unreachable => { 1usize }
UnwindAction::Terminate(ref __binding_0) => { 2usize }
UnwindAction::Cleanup(ref __binding_0) => { 3usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
UnwindAction::Continue => {}
UnwindAction::Unreachable => {}
UnwindAction::Terminate(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
UnwindAction::Cleanup(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for UnwindAction {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnwindAction::Continue }
1usize => { UnwindAction::Unreachable }
2usize => {
UnwindAction::Terminate(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
UnwindAction::Cleanup(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnwindAction`, expected 0..4, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for UnwindAction
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
UnwindAction::Continue => 0u8.stable_hash(__hcx, __hasher),
UnwindAction::Unreachable =>
1u8.stable_hash(__hcx, __hasher),
UnwindAction::Terminate(ref __binding_0) =>
2u8.stable_hash(__hcx, __hasher),
UnwindAction::Cleanup(ref __binding_0) =>
3u8.stable_hash(__hcx, __hasher),
}
match *self {
UnwindAction::Continue => {}
UnwindAction::Unreachable => {}
UnwindAction::Terminate(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
UnwindAction::Cleanup(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
1009#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for UnwindAction {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
UnwindAction::Continue => { UnwindAction::Continue }
UnwindAction::Unreachable => { UnwindAction::Unreachable }
UnwindAction::Terminate(__binding_0) => {
UnwindAction::Terminate(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
UnwindAction::Cleanup(__binding_0) => {
UnwindAction::Cleanup(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
UnwindAction::Continue => { UnwindAction::Continue }
UnwindAction::Unreachable => { UnwindAction::Unreachable }
UnwindAction::Terminate(__binding_0) => {
UnwindAction::Terminate(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
UnwindAction::Cleanup(__binding_0) => {
UnwindAction::Cleanup(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for UnwindAction {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
UnwindAction::Continue => {}
UnwindAction::Unreachable => {}
UnwindAction::Terminate(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
UnwindAction::Cleanup(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1010pub enum UnwindAction {
1011 Continue,
1016 Unreachable,
1018 Terminate(UnwindTerminateReason),
1022 Cleanup(BasicBlock),
1024}
1025
1026#[derive(#[automatically_derived]impl ::core::marker::Copy for UnwindTerminateReason {
}Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for UnwindTerminateReason {
}
#[automatically_derived]impl ::core::clone::Clone for UnwindTerminateReason {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::fmt::Debug for UnwindTerminateReason {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
UnwindTerminateReason::Abi => "Abi",
UnwindTerminateReason::InCleanup => "InCleanup",
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
UnwindTerminateReason {
}
#[automatically_derived]impl ::core::cmp::PartialEq for UnwindTerminateReason
{
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for UnwindTerminateReason { }Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for UnwindTerminateReason {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnwindTerminateReason::Abi => { 0usize }
UnwindTerminateReason::InCleanup => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for UnwindTerminateReason {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnwindTerminateReason::Abi }
1usize => { UnwindTerminateReason::InCleanup }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnwindTerminateReason`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
UnwindTerminateReason {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
UnwindTerminateReason::Abi =>
0u8.stable_hash(__hcx, __hasher),
UnwindTerminateReason::InCleanup =>
1u8.stable_hash(__hcx, __hasher),
}
match *self {
UnwindTerminateReason::Abi => {}
UnwindTerminateReason::InCleanup => {}
}
}
}
};StableHash)]
1028#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for UnwindTerminateReason {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
UnwindTerminateReason::Abi => { UnwindTerminateReason::Abi }
UnwindTerminateReason::InCleanup => {
UnwindTerminateReason::InCleanup
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
UnwindTerminateReason::Abi => { UnwindTerminateReason::Abi }
UnwindTerminateReason::InCleanup => {
UnwindTerminateReason::InCleanup
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for UnwindTerminateReason {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
UnwindTerminateReason::Abi => {}
UnwindTerminateReason::InCleanup => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1029pub enum UnwindTerminateReason {
1030 Abi,
1032 InCleanup,
1035}
1036
1037#[derive(#[automatically_derived]impl<O: ::core::clone::Clone> ::core::clone::Clone for
AssertKind<O> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::BoundsCheck { len: __self_0, index: __self_1 } =>
AssertKind::BoundsCheck {
len: ::core::clone::Clone::clone(__self_0),
index: ::core::clone::Clone::clone(__self_1),
},
Self::Overflow(__self_0, __self_1, __self_2) =>
AssertKind::Overflow(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
Self::OverflowNeg(__self_0) =>
AssertKind::OverflowNeg(::core::clone::Clone::clone(__self_0)),
Self::DivisionByZero(__self_0) =>
AssertKind::DivisionByZero(::core::clone::Clone::clone(__self_0)),
Self::RemainderByZero(__self_0) =>
AssertKind::RemainderByZero(::core::clone::Clone::clone(__self_0)),
Self::ResumedAfterReturn(__self_0) =>
AssertKind::ResumedAfterReturn(::core::clone::Clone::clone(__self_0)),
Self::ResumedAfterPanic(__self_0) =>
AssertKind::ResumedAfterPanic(::core::clone::Clone::clone(__self_0)),
Self::ResumedAfterDrop(__self_0) =>
AssertKind::ResumedAfterDrop(::core::clone::Clone::clone(__self_0)),
Self::MisalignedPointerDereference {
required: __self_0, found: __self_1 } =>
AssertKind::MisalignedPointerDereference {
required: ::core::clone::Clone::clone(__self_0),
found: ::core::clone::Clone::clone(__self_1),
},
Self::NullPointerDereference =>
AssertKind::NullPointerDereference,
Self::NullReferenceConstructed =>
AssertKind::NullReferenceConstructed,
Self::InvalidEnumConstruction(__self_0) =>
AssertKind::InvalidEnumConstruction(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<O> ::rustc_data_structures::stable_hash::StableHash for
AssertKind<O> where
O: ::rustc_data_structures::stable_hash::StableHash {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
AssertKind::BoundsCheck {
len: ref __binding_0, index: ref __binding_1 } =>
0u8.stable_hash(__hcx, __hasher),
AssertKind::Overflow(ref __binding_0, ref __binding_1,
ref __binding_2) => 1u8.stable_hash(__hcx, __hasher),
AssertKind::OverflowNeg(ref __binding_0) =>
2u8.stable_hash(__hcx, __hasher),
AssertKind::DivisionByZero(ref __binding_0) =>
3u8.stable_hash(__hcx, __hasher),
AssertKind::RemainderByZero(ref __binding_0) =>
4u8.stable_hash(__hcx, __hasher),
AssertKind::ResumedAfterReturn(ref __binding_0) =>
5u8.stable_hash(__hcx, __hasher),
AssertKind::ResumedAfterPanic(ref __binding_0) =>
6u8.stable_hash(__hcx, __hasher),
AssertKind::ResumedAfterDrop(ref __binding_0) =>
7u8.stable_hash(__hcx, __hasher),
AssertKind::MisalignedPointerDereference {
required: ref __binding_0, found: ref __binding_1 } =>
8u8.stable_hash(__hcx, __hasher),
AssertKind::NullPointerDereference =>
9u8.stable_hash(__hcx, __hasher),
AssertKind::NullReferenceConstructed =>
10u8.stable_hash(__hcx, __hasher),
AssertKind::InvalidEnumConstruction(ref __binding_0) =>
11u8.stable_hash(__hcx, __hasher),
}
match *self {
AssertKind::BoundsCheck {
len: ref __binding_0, index: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
AssertKind::Overflow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
AssertKind::OverflowNeg(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::DivisionByZero(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::RemainderByZero(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::ResumedAfterReturn(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::ResumedAfterPanic(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::ResumedAfterDrop(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::MisalignedPointerDereference {
required: ref __binding_0, found: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
AssertKind::NullPointerDereference => {}
AssertKind::NullReferenceConstructed => {}
AssertKind::InvalidEnumConstruction(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]impl<O: ::core::cmp::PartialEq>
::core::marker::StructuralPartialEq for AssertKind<O> {
}
#[automatically_derived]impl<O: ::core::cmp::PartialEq> ::core::cmp::PartialEq
for AssertKind<O> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::BoundsCheck { len: __self_0, index: __self_1 },
Self::BoundsCheck { len: __arg1_0, index: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Overflow(__self_0, __self_1, __self_2),
Self::Overflow(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::OverflowNeg(__self_0), Self::OverflowNeg(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::DivisionByZero(__self_0),
Self::DivisionByZero(__arg1_0)) => __self_0 == __arg1_0,
(Self::RemainderByZero(__self_0),
Self::RemainderByZero(__arg1_0)) => __self_0 == __arg1_0,
(Self::ResumedAfterReturn(__self_0),
Self::ResumedAfterReturn(__arg1_0)) => __self_0 == __arg1_0,
(Self::ResumedAfterPanic(__self_0),
Self::ResumedAfterPanic(__arg1_0)) => __self_0 == __arg1_0,
(Self::ResumedAfterDrop(__self_0),
Self::ResumedAfterDrop(__arg1_0)) => __self_0 == __arg1_0,
(Self::MisalignedPointerDereference {
required: __self_0, found: __self_1 },
Self::MisalignedPointerDereference {
required: __arg1_0, found: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::InvalidEnumConstruction(__self_0),
Self::InvalidEnumConstruction(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]impl<O: ::core::fmt::Debug> ::core::fmt::Debug for
AssertKind<O> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::BoundsCheck { len: __self_0, index: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"BoundsCheck len index", __self_0, &__self_1),
Self::Overflow(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"Overflow", __self_0, __self_1, &__self_2),
Self::OverflowNeg(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"OverflowNeg", &__self_0),
Self::DivisionByZero(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"DivisionByZero", &__self_0),
Self::RemainderByZero(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"RemainderByZero", &__self_0),
Self::ResumedAfterReturn(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"ResumedAfterReturn", &__self_0),
Self::ResumedAfterPanic(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"ResumedAfterPanic", &__self_0),
Self::ResumedAfterDrop(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"ResumedAfterDrop", &__self_0),
Self::MisalignedPointerDereference {
required: __self_0, found: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"MisalignedPointerDereference required found", __self_0,
&__self_1),
Self::NullPointerDereference =>
::core::fmt::Formatter::write_str(f,
"NullPointerDereference"),
Self::NullReferenceConstructed =>
::core::fmt::Formatter::write_str(f,
"NullReferenceConstructed"),
Self::InvalidEnumConstruction(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"InvalidEnumConstruction", &__self_0),
}
}
}Debug)]
1039#[derive(const _: () =
{
impl<'tcx, O, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for AssertKind<O> where
O: ::rustc_serialize::Encodable<__E> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AssertKind::BoundsCheck {
len: ref __binding_0, index: ref __binding_1 } => {
0usize
}
AssertKind::Overflow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
1usize
}
AssertKind::OverflowNeg(ref __binding_0) => { 2usize }
AssertKind::DivisionByZero(ref __binding_0) => { 3usize }
AssertKind::RemainderByZero(ref __binding_0) => { 4usize }
AssertKind::ResumedAfterReturn(ref __binding_0) => {
5usize
}
AssertKind::ResumedAfterPanic(ref __binding_0) => { 6usize }
AssertKind::ResumedAfterDrop(ref __binding_0) => { 7usize }
AssertKind::MisalignedPointerDereference {
required: ref __binding_0, found: ref __binding_1 } => {
8usize
}
AssertKind::NullPointerDereference => { 9usize }
AssertKind::NullReferenceConstructed => { 10usize }
AssertKind::InvalidEnumConstruction(ref __binding_0) => {
11usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AssertKind::BoundsCheck {
len: ref __binding_0, index: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
AssertKind::Overflow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
AssertKind::OverflowNeg(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::DivisionByZero(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::RemainderByZero(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::ResumedAfterReturn(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::ResumedAfterPanic(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::ResumedAfterDrop(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::MisalignedPointerDereference {
required: ref __binding_0, found: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
AssertKind::NullPointerDereference => {}
AssertKind::NullReferenceConstructed => {}
AssertKind::InvalidEnumConstruction(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, O, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for AssertKind<O> where
O: ::rustc_serialize::Decodable<__D> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
AssertKind::BoundsCheck {
len: ::rustc_serialize::Decodable::decode(__decoder),
index: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
AssertKind::Overflow(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
AssertKind::OverflowNeg(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
AssertKind::DivisionByZero(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
AssertKind::RemainderByZero(::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
AssertKind::ResumedAfterReturn(::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
AssertKind::ResumedAfterPanic(::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
AssertKind::ResumedAfterDrop(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
AssertKind::MisalignedPointerDereference {
required: ::rustc_serialize::Decodable::decode(__decoder),
found: ::rustc_serialize::Decodable::decode(__decoder),
}
}
9usize => { AssertKind::NullPointerDereference }
10usize => { AssertKind::NullReferenceConstructed }
11usize => {
AssertKind::InvalidEnumConstruction(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AssertKind`, expected 0..12, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx, O>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for AssertKind<O> where
O: ::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
{
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
AssertKind::BoundsCheck {
len: __binding_0, index: __binding_1 } => {
AssertKind::BoundsCheck {
len: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
index: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
AssertKind::Overflow(__binding_0, __binding_1, __binding_2)
=> {
AssertKind::Overflow(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?)
}
AssertKind::OverflowNeg(__binding_0) => {
AssertKind::OverflowNeg(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::DivisionByZero(__binding_0) => {
AssertKind::DivisionByZero(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::RemainderByZero(__binding_0) => {
AssertKind::RemainderByZero(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::ResumedAfterReturn(__binding_0) => {
AssertKind::ResumedAfterReturn(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::ResumedAfterPanic(__binding_0) => {
AssertKind::ResumedAfterPanic(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::ResumedAfterDrop(__binding_0) => {
AssertKind::ResumedAfterDrop(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::MisalignedPointerDereference {
required: __binding_0, found: __binding_1 } => {
AssertKind::MisalignedPointerDereference {
required: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
found: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
AssertKind::NullPointerDereference => {
AssertKind::NullPointerDereference
}
AssertKind::NullReferenceConstructed => {
AssertKind::NullReferenceConstructed
}
AssertKind::InvalidEnumConstruction(__binding_0) => {
AssertKind::InvalidEnumConstruction(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
AssertKind::BoundsCheck {
len: __binding_0, index: __binding_1 } => {
AssertKind::BoundsCheck {
len: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
index: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
AssertKind::Overflow(__binding_0, __binding_1, __binding_2)
=> {
AssertKind::Overflow(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder))
}
AssertKind::OverflowNeg(__binding_0) => {
AssertKind::OverflowNeg(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::DivisionByZero(__binding_0) => {
AssertKind::DivisionByZero(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::RemainderByZero(__binding_0) => {
AssertKind::RemainderByZero(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::ResumedAfterReturn(__binding_0) => {
AssertKind::ResumedAfterReturn(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::ResumedAfterPanic(__binding_0) => {
AssertKind::ResumedAfterPanic(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::ResumedAfterDrop(__binding_0) => {
AssertKind::ResumedAfterDrop(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::MisalignedPointerDereference {
required: __binding_0, found: __binding_1 } => {
AssertKind::MisalignedPointerDereference {
required: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
found: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
AssertKind::NullPointerDereference => {
AssertKind::NullPointerDereference
}
AssertKind::NullReferenceConstructed => {
AssertKind::NullReferenceConstructed
}
AssertKind::InvalidEnumConstruction(__binding_0) => {
AssertKind::InvalidEnumConstruction(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx, O>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for AssertKind<O> where
O: ::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
{
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
AssertKind::BoundsCheck {
len: ref __binding_0, index: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::Overflow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::OverflowNeg(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::DivisionByZero(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::RemainderByZero(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::ResumedAfterReturn(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::ResumedAfterPanic(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::ResumedAfterDrop(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::MisalignedPointerDereference {
required: ref __binding_0, found: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::NullPointerDereference => {}
AssertKind::NullReferenceConstructed => {}
AssertKind::InvalidEnumConstruction(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1040pub enum AssertKind<O> {
1041 BoundsCheck { len: O, index: O },
1042 Overflow(BinOp, O, O),
1043 OverflowNeg(O),
1044 DivisionByZero(O),
1045 RemainderByZero(O),
1046 ResumedAfterReturn(CoroutineKind),
1047 ResumedAfterPanic(CoroutineKind),
1048 ResumedAfterDrop(CoroutineKind),
1049 MisalignedPointerDereference { required: O, found: O },
1050 NullPointerDereference,
1051 NullReferenceConstructed,
1052 InvalidEnumConstruction(O),
1053}
1054
1055#[derive(#[automatically_derived]impl<'tcx> ::core::clone::Clone for
InlineAsmOperand<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::In { reg: __self_0, value: __self_1 } =>
InlineAsmOperand::In {
reg: ::core::clone::Clone::clone(__self_0),
value: ::core::clone::Clone::clone(__self_1),
},
Self::Out { reg: __self_0, late: __self_1, place: __self_2 } =>
InlineAsmOperand::Out {
reg: ::core::clone::Clone::clone(__self_0),
late: ::core::clone::Clone::clone(__self_1),
place: ::core::clone::Clone::clone(__self_2),
},
Self::InOut {
reg: __self_0,
late: __self_1,
in_value: __self_2,
out_place: __self_3 } =>
InlineAsmOperand::InOut {
reg: ::core::clone::Clone::clone(__self_0),
late: ::core::clone::Clone::clone(__self_1),
in_value: ::core::clone::Clone::clone(__self_2),
out_place: ::core::clone::Clone::clone(__self_3),
},
Self::Const { value: __self_0 } =>
InlineAsmOperand::Const {
value: ::core::clone::Clone::clone(__self_0),
},
Self::SymFn { value: __self_0 } =>
InlineAsmOperand::SymFn {
value: ::core::clone::Clone::clone(__self_0),
},
Self::SymStatic { def_id: __self_0 } =>
InlineAsmOperand::SymStatic {
def_id: ::core::clone::Clone::clone(__self_0),
},
Self::Label { target_index: __self_0 } =>
InlineAsmOperand::Label {
target_index: ::core::clone::Clone::clone(__self_0),
},
}
}
}Clone, #[automatically_derived]impl<'tcx> ::core::fmt::Debug for
InlineAsmOperand<'tcx> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::In { reg: __self_0, value: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"In reg value", __self_0, &__self_1),
Self::Out { reg: __self_0, late: __self_1, place: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"Out reg late place", __self_0, __self_1, &__self_2),
Self::InOut {
reg: __self_0,
late: __self_1,
in_value: __self_2,
out_place: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f,
"InOut reg late in_value out_place", __self_0, __self_1,
__self_2, &__self_3),
Self::Const { value: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Const value", &__self_0),
Self::SymFn { value: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"SymFn value", &__self_0),
Self::SymStatic { def_id: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"SymStatic def_id", &__self_0),
Self::Label { target_index: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Label target_index", &__self_0),
}
}
}Debug, #[automatically_derived]impl<'tcx> ::core::marker::StructuralPartialEq for
InlineAsmOperand<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::cmp::PartialEq for
InlineAsmOperand<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::In { reg: __self_0, value: __self_1 }, Self::In {
reg: __arg1_0, value: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Out { reg: __self_0, late: __self_1, place: __self_2 },
Self::Out { reg: __arg1_0, late: __arg1_1, place: __arg1_2
}) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0 &&
__self_2 == __arg1_2,
(Self::InOut {
reg: __self_0,
late: __self_1,
in_value: __self_2,
out_place: __self_3 }, Self::InOut {
reg: __arg1_0,
late: __arg1_1,
in_value: __arg1_2,
out_place: __arg1_3 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(Self::Const { value: __self_0 }, Self::Const {
value: __arg1_0 }) => __self_0 == __arg1_0,
(Self::SymFn { value: __self_0 }, Self::SymFn {
value: __arg1_0 }) => __self_0 == __arg1_0,
(Self::SymStatic { def_id: __self_0 }, Self::SymStatic {
def_id: __arg1_0 }) => __self_0 == __arg1_0,
(Self::Label { target_index: __self_0 }, Self::Label {
target_index: __arg1_0 }) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for InlineAsmOperand<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, value: ref __binding_1 } => {
0usize
}
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
place: ref __binding_2 } => {
1usize
}
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
in_value: ref __binding_2,
out_place: ref __binding_3 } => {
2usize
}
InlineAsmOperand::Const { value: ref __binding_0 } => {
3usize
}
InlineAsmOperand::SymFn { value: ref __binding_0 } => {
4usize
}
InlineAsmOperand::SymStatic { def_id: ref __binding_0 } => {
5usize
}
InlineAsmOperand::Label { target_index: ref __binding_0 } =>
{
6usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, value: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
place: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
in_value: ref __binding_2,
out_place: ref __binding_3 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
InlineAsmOperand::Const { value: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmOperand::SymFn { value: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmOperand::SymStatic { def_id: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmOperand::Label { target_index: ref __binding_0 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for InlineAsmOperand<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
InlineAsmOperand::In {
reg: ::rustc_serialize::Decodable::decode(__decoder),
value: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
InlineAsmOperand::Out {
reg: ::rustc_serialize::Decodable::decode(__decoder),
late: ::rustc_serialize::Decodable::decode(__decoder),
place: ::rustc_serialize::Decodable::decode(__decoder),
}
}
2usize => {
InlineAsmOperand::InOut {
reg: ::rustc_serialize::Decodable::decode(__decoder),
late: ::rustc_serialize::Decodable::decode(__decoder),
in_value: ::rustc_serialize::Decodable::decode(__decoder),
out_place: ::rustc_serialize::Decodable::decode(__decoder),
}
}
3usize => {
InlineAsmOperand::Const {
value: ::rustc_serialize::Decodable::decode(__decoder),
}
}
4usize => {
InlineAsmOperand::SymFn {
value: ::rustc_serialize::Decodable::decode(__decoder),
}
}
5usize => {
InlineAsmOperand::SymStatic {
def_id: ::rustc_serialize::Decodable::decode(__decoder),
}
}
6usize => {
InlineAsmOperand::Label {
target_index: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `InlineAsmOperand`, expected 0..7, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
InlineAsmOperand<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, value: ref __binding_1 } =>
0u8.stable_hash(__hcx, __hasher),
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
place: ref __binding_2 } =>
1u8.stable_hash(__hcx, __hasher),
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
in_value: ref __binding_2,
out_place: ref __binding_3 } =>
2u8.stable_hash(__hcx, __hasher),
InlineAsmOperand::Const { value: ref __binding_0 } =>
3u8.stable_hash(__hcx, __hasher),
InlineAsmOperand::SymFn { value: ref __binding_0 } =>
4u8.stable_hash(__hcx, __hasher),
InlineAsmOperand::SymStatic { def_id: ref __binding_0 } =>
5u8.stable_hash(__hcx, __hasher),
InlineAsmOperand::Label { target_index: ref __binding_0 } =>
6u8.stable_hash(__hcx, __hasher),
}
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, value: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
place: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
in_value: ref __binding_2,
out_place: ref __binding_3 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::Const { value: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::SymFn { value: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::SymStatic { def_id: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::Label { target_index: ref __binding_0 } =>
{
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
1056#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for InlineAsmOperand<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
InlineAsmOperand::In { reg: __binding_0, value: __binding_1
} => {
InlineAsmOperand::In {
reg: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
value: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
InlineAsmOperand::Out {
reg: __binding_0, late: __binding_1, place: __binding_2 } =>
{
InlineAsmOperand::Out {
reg: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
late: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
place: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
}
}
InlineAsmOperand::InOut {
reg: __binding_0,
late: __binding_1,
in_value: __binding_2,
out_place: __binding_3 } => {
InlineAsmOperand::InOut {
reg: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
late: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
in_value: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
out_place: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
}
}
InlineAsmOperand::Const { value: __binding_0 } => {
InlineAsmOperand::Const {
value: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
}
}
InlineAsmOperand::SymFn { value: __binding_0 } => {
InlineAsmOperand::SymFn {
value: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
}
}
InlineAsmOperand::SymStatic { def_id: __binding_0 } => {
InlineAsmOperand::SymStatic {
def_id: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
}
}
InlineAsmOperand::Label { target_index: __binding_0 } => {
InlineAsmOperand::Label {
target_index: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
}
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
InlineAsmOperand::In { reg: __binding_0, value: __binding_1
} => {
InlineAsmOperand::In {
reg: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
value: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
InlineAsmOperand::Out {
reg: __binding_0, late: __binding_1, place: __binding_2 } =>
{
InlineAsmOperand::Out {
reg: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
late: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
place: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
}
}
InlineAsmOperand::InOut {
reg: __binding_0,
late: __binding_1,
in_value: __binding_2,
out_place: __binding_3 } => {
InlineAsmOperand::InOut {
reg: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
late: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
in_value: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
out_place: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
}
}
InlineAsmOperand::Const { value: __binding_0 } => {
InlineAsmOperand::Const {
value: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
}
}
InlineAsmOperand::SymFn { value: __binding_0 } => {
InlineAsmOperand::SymFn {
value: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
}
}
InlineAsmOperand::SymStatic { def_id: __binding_0 } => {
InlineAsmOperand::SymStatic {
def_id: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
}
}
InlineAsmOperand::Label { target_index: __binding_0 } => {
InlineAsmOperand::Label {
target_index: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
}
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for InlineAsmOperand<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, value: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
place: ref __binding_2 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
in_value: ref __binding_2,
out_place: ref __binding_3 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::Const { value: ref __binding_0 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::SymFn { value: ref __binding_0 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::SymStatic { def_id: ref __binding_0 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::Label { target_index: ref __binding_0 } =>
{
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1057pub enum InlineAsmOperand<'tcx> {
1058 In {
1059 reg: InlineAsmRegOrRegClass,
1060 value: Operand<'tcx>,
1061 },
1062 Out {
1063 reg: InlineAsmRegOrRegClass,
1064 late: bool,
1065 place: Option<Place<'tcx>>,
1066 },
1067 InOut {
1068 reg: InlineAsmRegOrRegClass,
1069 late: bool,
1070 in_value: Operand<'tcx>,
1071 out_place: Option<Place<'tcx>>,
1072 },
1073 Const {
1074 value: Box<ConstOperand<'tcx>>,
1075 },
1076 SymFn {
1077 value: Box<ConstOperand<'tcx>>,
1078 },
1079 SymStatic {
1080 def_id: DefId,
1081 },
1082 Label {
1083 target_index: usize,
1085 },
1086}
1087
1088pub type AssertMessage<'tcx> = AssertKind<Operand<'tcx>>;
1090
1091#[derive(#[automatically_derived]impl<'tcx> ::core::marker::Copy for Place<'tcx> { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl<'tcx>
::core::clone::TrivialClone for Place<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::clone::Clone for Place<'tcx> {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<Local>;
let _: ::core::clone::AssertParamIsClone<&'tcx List<PlaceElem<'tcx>>>;
*self
}
}Clone, #[automatically_derived]impl<'tcx> ::core::marker::StructuralPartialEq for
Place<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::cmp::PartialEq for Place<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
self.local == other.local && self.projection == other.projection
}
}PartialEq, #[automatically_derived]impl<'tcx> ::core::cmp::Eq for Place<'tcx> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Local>;
let _: ::core::cmp::AssertParamIsEq<&'tcx List<PlaceElem<'tcx>>>;
}
}Eq, #[automatically_derived]impl<'tcx> ::core::hash::Hash for Place<'tcx> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.local, state);
::core::hash::Hash::hash(&self.projection, state)
}
}Hash, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for Place<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let Place { local: ref __binding_0, projection: __binding_1
} = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
};TyEncodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
Place<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
Place { local: ref __binding_0, projection: ref __binding_1
} => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for Place<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
Place { local: __binding_0, projection: __binding_1 } => {
Place {
local: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
projection: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
Place { local: __binding_0, projection: __binding_1 } => {
Place {
local: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
projection: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for Place<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
Place { local: ref __binding_0, projection: ref __binding_1
} => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1164pub struct Place<'tcx> {
1165 pub local: Local,
1166
1167 pub projection: &'tcx List<PlaceElem<'tcx>>,
1169}
1170
1171#[derive(#[automatically_derived]impl<V: ::core::marker::Copy, T: ::core::marker::Copy>
::core::marker::Copy for ProjectionElem<V, T> {
}Copy, #[automatically_derived]impl<V: ::core::clone::Clone, T: ::core::clone::Clone>
::core::clone::Clone for ProjectionElem<V, T> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Deref => ProjectionElem::Deref,
Self::Field(__self_0, __self_1) =>
ProjectionElem::Field(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Index(__self_0) =>
ProjectionElem::Index(::core::clone::Clone::clone(__self_0)),
Self::ConstantIndex {
offset: __self_0, min_length: __self_1, from_end: __self_2 }
=>
ProjectionElem::ConstantIndex {
offset: ::core::clone::Clone::clone(__self_0),
min_length: ::core::clone::Clone::clone(__self_1),
from_end: ::core::clone::Clone::clone(__self_2),
},
Self::Subslice { from: __self_0, to: __self_1, from_end: __self_2
} =>
ProjectionElem::Subslice {
from: ::core::clone::Clone::clone(__self_0),
to: ::core::clone::Clone::clone(__self_1),
from_end: ::core::clone::Clone::clone(__self_2),
},
Self::Downcast(__self_0, __self_1) =>
ProjectionElem::Downcast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::OpaqueCast(__self_0) =>
ProjectionElem::OpaqueCast(::core::clone::Clone::clone(__self_0)),
Self::UnwrapUnsafeBinder(__self_0) =>
ProjectionElem::UnwrapUnsafeBinder(::core::clone::Clone::clone(__self_0)),
Self::PhantomDeref => ProjectionElem::PhantomDeref,
}
}
}Clone, #[automatically_derived]impl<V: ::core::fmt::Debug, T: ::core::fmt::Debug>
::core::fmt::Debug for ProjectionElem<V, T> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Deref => ::core::fmt::Formatter::write_str(f, "Deref"),
Self::Field(__self_0, __self_1) =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Field",
__self_0, &__self_1),
Self::Index(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Index",
&__self_0),
Self::ConstantIndex {
offset: __self_0, min_length: __self_1, from_end: __self_2 }
=>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"ConstantIndex offset min_length from_end", __self_0,
__self_1, &__self_2),
Self::Subslice { from: __self_0, to: __self_1, from_end: __self_2
} =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"Subslice from to from_end", __self_0, __self_1, &__self_2),
Self::Downcast(__self_0, __self_1) =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Downcast", __self_0, &__self_1),
Self::OpaqueCast(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"OpaqueCast", &__self_0),
Self::UnwrapUnsafeBinder(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"UnwrapUnsafeBinder", &__self_0),
Self::PhantomDeref =>
::core::fmt::Formatter::write_str(f, "PhantomDeref"),
}
}
}Debug, #[automatically_derived]impl<V: ::core::cmp::PartialEq,
T: ::core::cmp::PartialEq> ::core::marker::StructuralPartialEq for
ProjectionElem<V, T> {
}
#[automatically_derived]impl<V: ::core::cmp::PartialEq,
T: ::core::cmp::PartialEq> ::core::cmp::PartialEq for ProjectionElem<V, T>
{
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Field(__self_0, __self_1),
Self::Field(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Index(__self_0), Self::Index(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::ConstantIndex {
offset: __self_0, min_length: __self_1, from_end: __self_2
}, Self::ConstantIndex {
offset: __arg1_0, min_length: __arg1_1, from_end: __arg1_2
}) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::Subslice {
from: __self_0, to: __self_1, from_end: __self_2 },
Self::Subslice {
from: __arg1_0, to: __arg1_1, from_end: __arg1_2 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::Downcast(__self_0, __self_1),
Self::Downcast(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::OpaqueCast(__self_0), Self::OpaqueCast(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::UnwrapUnsafeBinder(__self_0),
Self::UnwrapUnsafeBinder(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]impl<V: ::core::cmp::Eq, T: ::core::cmp::Eq>
::core::cmp::Eq for ProjectionElem<V, T> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<FieldIdx>;
let _: ::core::cmp::AssertParamIsEq<T>;
let _: ::core::cmp::AssertParamIsEq<V>;
let _: ::core::cmp::AssertParamIsEq<u64>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Option<Symbol>>;
let _: ::core::cmp::AssertParamIsEq<VariantIdx>;
}
}Eq, #[automatically_derived]impl<V: ::core::hash::Hash, T: ::core::hash::Hash>
::core::hash::Hash for ProjectionElem<V, T> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state);
match self {
Self::Field(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Self::Index(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Self::ConstantIndex {
offset: __self_0, min_length: __self_1, from_end: __self_2 }
=> {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
Self::Subslice { from: __self_0, to: __self_1, from_end: __self_2
} => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
Self::Downcast(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Self::OpaqueCast(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Self::UnwrapUnsafeBinder(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
1172#[derive(const _: () =
{
impl<'tcx, V, T, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for ProjectionElem<V, T> where
T: ::rustc_serialize::Encodable<__E>,
V: ::rustc_serialize::Encodable<__E> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ProjectionElem::Deref => { 0usize }
ProjectionElem::Field(ref __binding_0, ref __binding_1) => {
1usize
}
ProjectionElem::Index(ref __binding_0) => { 2usize }
ProjectionElem::ConstantIndex {
offset: ref __binding_0,
min_length: ref __binding_1,
from_end: ref __binding_2 } => {
3usize
}
ProjectionElem::Subslice {
from: ref __binding_0,
to: ref __binding_1,
from_end: ref __binding_2 } => {
4usize
}
ProjectionElem::Downcast(ref __binding_0, ref __binding_1)
=> {
5usize
}
ProjectionElem::OpaqueCast(ref __binding_0) => { 6usize }
ProjectionElem::UnwrapUnsafeBinder(ref __binding_0) => {
7usize
}
ProjectionElem::PhantomDeref => { 8usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ProjectionElem::Deref => {}
ProjectionElem::Field(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ProjectionElem::Index(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ProjectionElem::ConstantIndex {
offset: ref __binding_0,
min_length: ref __binding_1,
from_end: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ProjectionElem::Subslice {
from: ref __binding_0,
to: ref __binding_1,
from_end: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ProjectionElem::Downcast(ref __binding_0, ref __binding_1)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ProjectionElem::OpaqueCast(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ProjectionElem::UnwrapUnsafeBinder(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ProjectionElem::PhantomDeref => {}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, V, T, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for ProjectionElem<V, T> where
T: ::rustc_serialize::Decodable<__D>,
V: ::rustc_serialize::Decodable<__D> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { ProjectionElem::Deref }
1usize => {
ProjectionElem::Field(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
ProjectionElem::Index(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
ProjectionElem::ConstantIndex {
offset: ::rustc_serialize::Decodable::decode(__decoder),
min_length: ::rustc_serialize::Decodable::decode(__decoder),
from_end: ::rustc_serialize::Decodable::decode(__decoder),
}
}
4usize => {
ProjectionElem::Subslice {
from: ::rustc_serialize::Decodable::decode(__decoder),
to: ::rustc_serialize::Decodable::decode(__decoder),
from_end: ::rustc_serialize::Decodable::decode(__decoder),
}
}
5usize => {
ProjectionElem::Downcast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
ProjectionElem::OpaqueCast(::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
ProjectionElem::UnwrapUnsafeBinder(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => { ProjectionElem::PhantomDeref }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ProjectionElem`, expected 0..9, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<V, T> ::rustc_data_structures::stable_hash::StableHash for
ProjectionElem<V, T> where
T: ::rustc_data_structures::stable_hash::StableHash,
V: ::rustc_data_structures::stable_hash::StableHash {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
ProjectionElem::Deref => 0u8.stable_hash(__hcx, __hasher),
ProjectionElem::Field(ref __binding_0, ref __binding_1) =>
1u8.stable_hash(__hcx, __hasher),
ProjectionElem::Index(ref __binding_0) =>
2u8.stable_hash(__hcx, __hasher),
ProjectionElem::ConstantIndex {
offset: ref __binding_0,
min_length: ref __binding_1,
from_end: ref __binding_2 } =>
3u8.stable_hash(__hcx, __hasher),
ProjectionElem::Subslice {
from: ref __binding_0,
to: ref __binding_1,
from_end: ref __binding_2 } =>
4u8.stable_hash(__hcx, __hasher),
ProjectionElem::Downcast(ref __binding_0, ref __binding_1)
=> 5u8.stable_hash(__hcx, __hasher),
ProjectionElem::OpaqueCast(ref __binding_0) =>
6u8.stable_hash(__hcx, __hasher),
ProjectionElem::UnwrapUnsafeBinder(ref __binding_0) =>
7u8.stable_hash(__hcx, __hasher),
ProjectionElem::PhantomDeref =>
8u8.stable_hash(__hcx, __hasher),
}
match *self {
ProjectionElem::Deref => {}
ProjectionElem::Field(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
ProjectionElem::Index(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
ProjectionElem::ConstantIndex {
offset: ref __binding_0,
min_length: ref __binding_1,
from_end: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
ProjectionElem::Subslice {
from: ref __binding_0,
to: ref __binding_1,
from_end: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
ProjectionElem::Downcast(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
ProjectionElem::OpaqueCast(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
ProjectionElem::UnwrapUnsafeBinder(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
ProjectionElem::PhantomDeref => {}
}
}
}
};StableHash, const _: () =
{
impl<'tcx, V, T>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for ProjectionElem<V, T> where
T: ::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>,
V: ::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
{
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
ProjectionElem::Deref => { ProjectionElem::Deref }
ProjectionElem::Field(__binding_0, __binding_1) => {
ProjectionElem::Field(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
ProjectionElem::Index(__binding_0) => {
ProjectionElem::Index(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
ProjectionElem::ConstantIndex {
offset: __binding_0,
min_length: __binding_1,
from_end: __binding_2 } => {
ProjectionElem::ConstantIndex {
offset: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
min_length: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
from_end: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
}
}
ProjectionElem::Subslice {
from: __binding_0, to: __binding_1, from_end: __binding_2 }
=> {
ProjectionElem::Subslice {
from: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
to: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
from_end: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
}
}
ProjectionElem::Downcast(__binding_0, __binding_1) => {
ProjectionElem::Downcast(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
ProjectionElem::OpaqueCast(__binding_0) => {
ProjectionElem::OpaqueCast(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
ProjectionElem::UnwrapUnsafeBinder(__binding_0) => {
ProjectionElem::UnwrapUnsafeBinder(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
ProjectionElem::PhantomDeref => {
ProjectionElem::PhantomDeref
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
ProjectionElem::Deref => { ProjectionElem::Deref }
ProjectionElem::Field(__binding_0, __binding_1) => {
ProjectionElem::Field(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
ProjectionElem::Index(__binding_0) => {
ProjectionElem::Index(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
ProjectionElem::ConstantIndex {
offset: __binding_0,
min_length: __binding_1,
from_end: __binding_2 } => {
ProjectionElem::ConstantIndex {
offset: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
min_length: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
from_end: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
}
}
ProjectionElem::Subslice {
from: __binding_0, to: __binding_1, from_end: __binding_2 }
=> {
ProjectionElem::Subslice {
from: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
to: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
from_end: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
}
}
ProjectionElem::Downcast(__binding_0, __binding_1) => {
ProjectionElem::Downcast(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
ProjectionElem::OpaqueCast(__binding_0) => {
ProjectionElem::OpaqueCast(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
ProjectionElem::UnwrapUnsafeBinder(__binding_0) => {
ProjectionElem::UnwrapUnsafeBinder(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
ProjectionElem::PhantomDeref => {
ProjectionElem::PhantomDeref
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx, V, T>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for ProjectionElem<V, T> where
T: ::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>,
V: ::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
{
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
ProjectionElem::Deref => {}
ProjectionElem::Field(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::Index(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::ConstantIndex {
offset: ref __binding_0,
min_length: ref __binding_1,
from_end: ref __binding_2 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::Subslice {
from: ref __binding_0,
to: ref __binding_1,
from_end: ref __binding_2 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::Downcast(ref __binding_0, ref __binding_1)
=> {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::OpaqueCast(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::UnwrapUnsafeBinder(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::PhantomDeref => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1173pub enum ProjectionElem<V, T> {
1174 Deref,
1175
1176 Field(FieldIdx, T),
1183
1184 Index(V),
1198
1199 ConstantIndex {
1215 offset: u64,
1218 min_length: u64,
1223 from_end: bool,
1226 },
1227
1228 Subslice {
1236 from: u64,
1237 to: u64,
1238 from_end: bool,
1242 },
1243
1244 Downcast(Option<Symbol>, VariantIdx),
1250
1251 OpaqueCast(T),
1256
1257 UnwrapUnsafeBinder(T),
1260
1261 PhantomDeref,
1280}
1281
1282pub type PlaceElem<'tcx> = ProjectionElem<Local, Ty<'tcx>>;
1285
1286#[derive(#[automatically_derived]impl<'tcx> ::core::clone::Clone for Operand<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Copy(__self_0) =>
Operand::Copy(::core::clone::Clone::clone(__self_0)),
Self::Move(__self_0) =>
Operand::Move(::core::clone::Clone::clone(__self_0)),
Self::Constant(__self_0) =>
Operand::Constant(::core::clone::Clone::clone(__self_0)),
Self::RuntimeChecks(__self_0) =>
Operand::RuntimeChecks(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]impl<'tcx> ::core::marker::StructuralPartialEq for
Operand<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::cmp::PartialEq for Operand<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Copy(__self_0), Self::Copy(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Move(__self_0), Self::Move(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Constant(__self_0), Self::Constant(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::RuntimeChecks(__self_0), Self::RuntimeChecks(__arg1_0))
=> __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for Operand<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Operand::Copy(ref __binding_0) => { 0usize }
Operand::Move(ref __binding_0) => { 1usize }
Operand::Constant(ref __binding_0) => { 2usize }
Operand::RuntimeChecks(ref __binding_0) => { 3usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Operand::Copy(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Operand::Move(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Operand::Constant(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Operand::RuntimeChecks(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for Operand<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
Operand::Copy(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
Operand::Move(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
Operand::Constant(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
Operand::RuntimeChecks(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Operand`, expected 0..4, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
Operand<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
Operand::Copy(ref __binding_0) =>
0u8.stable_hash(__hcx, __hasher),
Operand::Move(ref __binding_0) =>
1u8.stable_hash(__hcx, __hasher),
Operand::Constant(ref __binding_0) =>
2u8.stable_hash(__hcx, __hasher),
Operand::RuntimeChecks(ref __binding_0) =>
3u8.stable_hash(__hcx, __hasher),
}
match *self {
Operand::Copy(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Operand::Move(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Operand::Constant(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Operand::RuntimeChecks(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for Operand<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
Operand::Copy(__binding_0) => {
Operand::Copy(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Operand::Move(__binding_0) => {
Operand::Move(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Operand::Constant(__binding_0) => {
Operand::Constant(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Operand::RuntimeChecks(__binding_0) => {
Operand::RuntimeChecks(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
Operand::Copy(__binding_0) => {
Operand::Copy(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Operand::Move(__binding_0) => {
Operand::Move(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Operand::Constant(__binding_0) => {
Operand::Constant(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Operand::RuntimeChecks(__binding_0) => {
Operand::RuntimeChecks(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for Operand<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
Operand::Copy(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Operand::Move(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Operand::Constant(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Operand::RuntimeChecks(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1304pub enum Operand<'tcx> {
1305 Copy(Place<'tcx>),
1310
1311 Move(Place<'tcx>),
1329
1330 Constant(Box<ConstOperand<'tcx>>),
1332
1333 RuntimeChecks(RuntimeChecks),
1336}
1337
1338#[derive(#[automatically_derived]#[doc(hidden)]unsafe impl<'tcx>
::core::clone::TrivialClone for ConstOperand<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::clone::Clone for ConstOperand<'tcx>
{
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<Span>;
let _:
::core::clone::AssertParamIsClone<Option<UserTypeAnnotationIndex>>;
let _: ::core::clone::AssertParamIsClone<Const<'tcx>>;
*self
}
}Clone, #[automatically_derived]impl<'tcx> ::core::marker::Copy for ConstOperand<'tcx>
{
}Copy, #[automatically_derived]impl<'tcx> ::core::marker::StructuralPartialEq for
ConstOperand<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::cmp::PartialEq for
ConstOperand<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
self.span == other.span && self.user_ty == other.user_ty &&
self.const_ == other.const_
}
}PartialEq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for ConstOperand<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let ConstOperand {
span: ref __binding_0,
user_ty: ref __binding_1,
const_: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for ConstOperand<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
ConstOperand {
span: ::rustc_serialize::Decodable::decode(__decoder),
user_ty: ::rustc_serialize::Decodable::decode(__decoder),
const_: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
ConstOperand<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
ConstOperand {
span: ref __binding_0,
user_ty: ref __binding_1,
const_: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
1339#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for ConstOperand<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
ConstOperand {
span: __binding_0, user_ty: __binding_1, const_: __binding_2
} => {
ConstOperand {
span: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
user_ty: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
const_: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
}
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
ConstOperand {
span: __binding_0, user_ty: __binding_1, const_: __binding_2
} => {
ConstOperand {
span: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
user_ty: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
const_: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
}
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for ConstOperand<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
ConstOperand {
span: ref __binding_0,
user_ty: ref __binding_1,
const_: ref __binding_2 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1340pub struct ConstOperand<'tcx> {
1341 pub span: Span,
1342
1343 pub user_ty: Option<UserTypeAnnotationIndex>,
1349
1350 pub const_: Const<'tcx>,
1351}
1352
1353#[derive(#[automatically_derived]impl<'tcx> ::core::clone::Clone for Rvalue<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Use(__self_0, __self_1) =>
Rvalue::Use(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Repeat(__self_0, __self_1) =>
Rvalue::Repeat(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Ref(__self_0, __self_1, __self_2) =>
Rvalue::Ref(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
Self::ThreadLocalRef(__self_0) =>
Rvalue::ThreadLocalRef(::core::clone::Clone::clone(__self_0)),
Self::RawPtr(__self_0, __self_1) =>
Rvalue::RawPtr(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Cast(__self_0, __self_1, __self_2) =>
Rvalue::Cast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
Self::BinaryOp(__self_0, __self_1) =>
Rvalue::BinaryOp(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::UnaryOp(__self_0, __self_1) =>
Rvalue::UnaryOp(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Discriminant(__self_0) =>
Rvalue::Discriminant(::core::clone::Clone::clone(__self_0)),
Self::Aggregate(__self_0, __self_1) =>
Rvalue::Aggregate(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::CopyForDeref(__self_0) =>
Rvalue::CopyForDeref(::core::clone::Clone::clone(__self_0)),
Self::WrapUnsafeBinder(__self_0, __self_1) =>
Rvalue::WrapUnsafeBinder(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Reborrow(__self_0, __self_1, __self_2) =>
Rvalue::Reborrow(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
}
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for Rvalue<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Rvalue::Use(ref __binding_0, ref __binding_1) => { 0usize }
Rvalue::Repeat(ref __binding_0, ref __binding_1) => {
1usize
}
Rvalue::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
2usize
}
Rvalue::ThreadLocalRef(ref __binding_0) => { 3usize }
Rvalue::RawPtr(ref __binding_0, ref __binding_1) => {
4usize
}
Rvalue::Cast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
5usize
}
Rvalue::BinaryOp(ref __binding_0, ref __binding_1) => {
6usize
}
Rvalue::UnaryOp(ref __binding_0, ref __binding_1) => {
7usize
}
Rvalue::Discriminant(ref __binding_0) => { 8usize }
Rvalue::Aggregate(ref __binding_0, ref __binding_1) => {
9usize
}
Rvalue::CopyForDeref(ref __binding_0) => { 10usize }
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> {
11usize
}
Rvalue::Reborrow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
12usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Rvalue::Use(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::Repeat(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
Rvalue::ThreadLocalRef(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Rvalue::RawPtr(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::Cast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
Rvalue::BinaryOp(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::UnaryOp(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::Discriminant(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Rvalue::Aggregate(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::CopyForDeref(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::Reborrow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for Rvalue<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
Rvalue::Use(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
Rvalue::Repeat(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
Rvalue::Ref(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
Rvalue::ThreadLocalRef(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
Rvalue::RawPtr(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
Rvalue::Cast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
Rvalue::BinaryOp(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
Rvalue::UnaryOp(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
Rvalue::Discriminant(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
Rvalue::Aggregate(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
Rvalue::CopyForDeref(::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
Rvalue::WrapUnsafeBinder(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
Rvalue::Reborrow(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Rvalue`, expected 0..13, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
Rvalue<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
Rvalue::Use(ref __binding_0, ref __binding_1) =>
0u8.stable_hash(__hcx, __hasher),
Rvalue::Repeat(ref __binding_0, ref __binding_1) =>
1u8.stable_hash(__hcx, __hasher),
Rvalue::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => 2u8.stable_hash(__hcx, __hasher),
Rvalue::ThreadLocalRef(ref __binding_0) =>
3u8.stable_hash(__hcx, __hasher),
Rvalue::RawPtr(ref __binding_0, ref __binding_1) =>
4u8.stable_hash(__hcx, __hasher),
Rvalue::Cast(ref __binding_0, ref __binding_1,
ref __binding_2) => 5u8.stable_hash(__hcx, __hasher),
Rvalue::BinaryOp(ref __binding_0, ref __binding_1) =>
6u8.stable_hash(__hcx, __hasher),
Rvalue::UnaryOp(ref __binding_0, ref __binding_1) =>
7u8.stable_hash(__hcx, __hasher),
Rvalue::Discriminant(ref __binding_0) =>
8u8.stable_hash(__hcx, __hasher),
Rvalue::Aggregate(ref __binding_0, ref __binding_1) =>
9u8.stable_hash(__hcx, __hasher),
Rvalue::CopyForDeref(ref __binding_0) =>
10u8.stable_hash(__hcx, __hasher),
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> 11u8.stable_hash(__hcx, __hasher),
Rvalue::Reborrow(ref __binding_0, ref __binding_1,
ref __binding_2) => 12u8.stable_hash(__hcx, __hasher),
}
match *self {
Rvalue::Use(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::Repeat(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
Rvalue::ThreadLocalRef(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Rvalue::RawPtr(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::Cast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
Rvalue::BinaryOp(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::UnaryOp(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::Discriminant(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Rvalue::Aggregate(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::CopyForDeref(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::Reborrow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]impl<'tcx> ::core::marker::StructuralPartialEq for
Rvalue<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::cmp::PartialEq for Rvalue<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Use(__self_0, __self_1), Self::Use(__arg1_0, __arg1_1))
=> __self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Repeat(__self_0, __self_1),
Self::Repeat(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Ref(__self_0, __self_1, __self_2),
Self::Ref(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::ThreadLocalRef(__self_0),
Self::ThreadLocalRef(__arg1_0)) => __self_0 == __arg1_0,
(Self::RawPtr(__self_0, __self_1),
Self::RawPtr(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Cast(__self_0, __self_1, __self_2),
Self::Cast(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::BinaryOp(__self_0, __self_1),
Self::BinaryOp(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::UnaryOp(__self_0, __self_1),
Self::UnaryOp(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Discriminant(__self_0), Self::Discriminant(__arg1_0))
=> __self_0 == __arg1_0,
(Self::Aggregate(__self_0, __self_1),
Self::Aggregate(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::CopyForDeref(__self_0), Self::CopyForDeref(__arg1_0))
=> __self_0 == __arg1_0,
(Self::WrapUnsafeBinder(__self_0, __self_1),
Self::WrapUnsafeBinder(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Reborrow(__self_0, __self_1, __self_2),
Self::Reborrow(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for Rvalue<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
Rvalue::Use(__binding_0, __binding_1) => {
Rvalue::Use(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::Repeat(__binding_0, __binding_1) => {
Rvalue::Repeat(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::Ref(__binding_0, __binding_1, __binding_2) => {
Rvalue::Ref(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?)
}
Rvalue::ThreadLocalRef(__binding_0) => {
Rvalue::ThreadLocalRef(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Rvalue::RawPtr(__binding_0, __binding_1) => {
Rvalue::RawPtr(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::Cast(__binding_0, __binding_1, __binding_2) => {
Rvalue::Cast(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?)
}
Rvalue::BinaryOp(__binding_0, __binding_1) => {
Rvalue::BinaryOp(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::UnaryOp(__binding_0, __binding_1) => {
Rvalue::UnaryOp(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::Discriminant(__binding_0) => {
Rvalue::Discriminant(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Rvalue::Aggregate(__binding_0, __binding_1) => {
Rvalue::Aggregate(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::CopyForDeref(__binding_0) => {
Rvalue::CopyForDeref(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Rvalue::WrapUnsafeBinder(__binding_0, __binding_1) => {
Rvalue::WrapUnsafeBinder(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::Reborrow(__binding_0, __binding_1, __binding_2) => {
Rvalue::Reborrow(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
Rvalue::Use(__binding_0, __binding_1) => {
Rvalue::Use(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::Repeat(__binding_0, __binding_1) => {
Rvalue::Repeat(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::Ref(__binding_0, __binding_1, __binding_2) => {
Rvalue::Ref(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder))
}
Rvalue::ThreadLocalRef(__binding_0) => {
Rvalue::ThreadLocalRef(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Rvalue::RawPtr(__binding_0, __binding_1) => {
Rvalue::RawPtr(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::Cast(__binding_0, __binding_1, __binding_2) => {
Rvalue::Cast(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder))
}
Rvalue::BinaryOp(__binding_0, __binding_1) => {
Rvalue::BinaryOp(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::UnaryOp(__binding_0, __binding_1) => {
Rvalue::UnaryOp(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::Discriminant(__binding_0) => {
Rvalue::Discriminant(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Rvalue::Aggregate(__binding_0, __binding_1) => {
Rvalue::Aggregate(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::CopyForDeref(__binding_0) => {
Rvalue::CopyForDeref(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Rvalue::WrapUnsafeBinder(__binding_0, __binding_1) => {
Rvalue::WrapUnsafeBinder(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::Reborrow(__binding_0, __binding_1, __binding_2) => {
Rvalue::Reborrow(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder))
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for Rvalue<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
Rvalue::Use(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Repeat(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::ThreadLocalRef(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::RawPtr(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Cast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::BinaryOp(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::UnaryOp(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Discriminant(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Aggregate(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::CopyForDeref(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Reborrow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1364pub enum Rvalue<'tcx> {
1365 Use(Operand<'tcx>, WithRetag),
1367
1368 Repeat(Operand<'tcx>, ty::Const<'tcx>),
1372
1373 Ref(Region<'tcx>, BorrowKind, Place<'tcx>),
1381
1382 ThreadLocalRef(DefId),
1394
1395 RawPtr(RawPtrKind, Place<'tcx>),
1403
1404 Cast(CastKind, Operand<'tcx>, Ty<'tcx>),
1410
1411 BinaryOp(BinOp, Box<(Operand<'tcx>, Operand<'tcx>)>),
1426
1427 UnaryOp(UnOp, Operand<'tcx>),
1433
1434 Discriminant(Place<'tcx>),
1445
1446 Aggregate(Box<AggregateKind<'tcx>>, IndexVec<FieldIdx, Operand<'tcx>>),
1452
1453 CopyForDeref(Place<'tcx>),
1464
1465 WrapUnsafeBinder(Operand<'tcx>, Ty<'tcx>),
1467
1468 Reborrow(Ty<'tcx>, Mutability, Place<'tcx>),
1486}
1487
1488#[derive(#[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for CastKind {
}
#[automatically_derived]impl ::core::clone::Clone for CastKind {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<PointerCoercion>;
let _: ::core::clone::AssertParamIsClone<CoercionSource>;
*self
}
}Clone, #[automatically_derived]impl ::core::marker::Copy for CastKind { }Copy, #[automatically_derived]impl ::core::fmt::Debug for CastKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::PointerExposeProvenance =>
::core::fmt::Formatter::write_str(f,
"PointerExposeProvenance"),
Self::PointerWithExposedProvenance =>
::core::fmt::Formatter::write_str(f,
"PointerWithExposedProvenance"),
Self::PointerCoercion(__self_0, __self_1) =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"PointerCoercion", __self_0, &__self_1),
Self::IntToInt =>
::core::fmt::Formatter::write_str(f, "IntToInt"),
Self::FloatToInt =>
::core::fmt::Formatter::write_str(f, "FloatToInt"),
Self::FloatToFloat =>
::core::fmt::Formatter::write_str(f, "FloatToFloat"),
Self::IntToFloat =>
::core::fmt::Formatter::write_str(f, "IntToFloat"),
Self::PtrToPtr =>
::core::fmt::Formatter::write_str(f, "PtrToPtr"),
Self::FnPtrToPtr =>
::core::fmt::Formatter::write_str(f, "FnPtrToPtr"),
Self::Transmute =>
::core::fmt::Formatter::write_str(f, "Transmute"),
Self::BoxDerefTransmute =>
::core::fmt::Formatter::write_str(f, "BoxDerefTransmute"),
Self::Subtype => ::core::fmt::Formatter::write_str(f, "Subtype"),
}
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for CastKind
{
}
#[automatically_derived]impl ::core::cmp::PartialEq for CastKind {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::PointerCoercion(__self_0, __self_1),
Self::PointerCoercion(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for CastKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<PointerCoercion>;
let _: ::core::cmp::AssertParamIsEq<CoercionSource>;
}
}Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for CastKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
CastKind::PointerExposeProvenance => { 0usize }
CastKind::PointerWithExposedProvenance => { 1usize }
CastKind::PointerCoercion(ref __binding_0, ref __binding_1)
=> {
2usize
}
CastKind::IntToInt => { 3usize }
CastKind::FloatToInt => { 4usize }
CastKind::FloatToFloat => { 5usize }
CastKind::IntToFloat => { 6usize }
CastKind::PtrToPtr => { 7usize }
CastKind::FnPtrToPtr => { 8usize }
CastKind::Transmute => { 9usize }
CastKind::BoxDerefTransmute => { 10usize }
CastKind::Subtype => { 11usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
CastKind::PointerExposeProvenance => {}
CastKind::PointerWithExposedProvenance => {}
CastKind::PointerCoercion(ref __binding_0, ref __binding_1)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
CastKind::IntToInt => {}
CastKind::FloatToInt => {}
CastKind::FloatToFloat => {}
CastKind::IntToFloat => {}
CastKind::PtrToPtr => {}
CastKind::FnPtrToPtr => {}
CastKind::Transmute => {}
CastKind::BoxDerefTransmute => {}
CastKind::Subtype => {}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for CastKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { CastKind::PointerExposeProvenance }
1usize => { CastKind::PointerWithExposedProvenance }
2usize => {
CastKind::PointerCoercion(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => { CastKind::IntToInt }
4usize => { CastKind::FloatToInt }
5usize => { CastKind::FloatToFloat }
6usize => { CastKind::IntToFloat }
7usize => { CastKind::PtrToPtr }
8usize => { CastKind::FnPtrToPtr }
9usize => { CastKind::Transmute }
10usize => { CastKind::BoxDerefTransmute }
11usize => { CastKind::Subtype }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CastKind`, expected 0..12, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]impl ::core::hash::Hash for CastKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state);
match self {
Self::PointerCoercion(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
_ => {}
}
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for CastKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
CastKind::PointerExposeProvenance =>
0u8.stable_hash(__hcx, __hasher),
CastKind::PointerWithExposedProvenance =>
1u8.stable_hash(__hcx, __hasher),
CastKind::PointerCoercion(ref __binding_0, ref __binding_1)
=> 2u8.stable_hash(__hcx, __hasher),
CastKind::IntToInt => 3u8.stable_hash(__hcx, __hasher),
CastKind::FloatToInt => 4u8.stable_hash(__hcx, __hasher),
CastKind::FloatToFloat => 5u8.stable_hash(__hcx, __hasher),
CastKind::IntToFloat => 6u8.stable_hash(__hcx, __hasher),
CastKind::PtrToPtr => 7u8.stable_hash(__hcx, __hasher),
CastKind::FnPtrToPtr => 8u8.stable_hash(__hcx, __hasher),
CastKind::Transmute => 9u8.stable_hash(__hcx, __hasher),
CastKind::BoxDerefTransmute =>
10u8.stable_hash(__hcx, __hasher),
CastKind::Subtype => 11u8.stable_hash(__hcx, __hasher),
}
match *self {
CastKind::PointerExposeProvenance => {}
CastKind::PointerWithExposedProvenance => {}
CastKind::PointerCoercion(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
CastKind::IntToInt => {}
CastKind::FloatToInt => {}
CastKind::FloatToFloat => {}
CastKind::IntToFloat => {}
CastKind::PtrToPtr => {}
CastKind::FnPtrToPtr => {}
CastKind::Transmute => {}
CastKind::BoxDerefTransmute => {}
CastKind::Subtype => {}
}
}
}
};StableHash)]
1489pub enum CastKind {
1490 PointerExposeProvenance,
1494 PointerWithExposedProvenance,
1497 PointerCoercion(PointerCoercion, CoercionSource),
1507 IntToInt,
1508 FloatToInt,
1509 FloatToFloat,
1510 IntToFloat,
1511 PtrToPtr,
1512 FnPtrToPtr,
1513 Transmute,
1518 BoxDerefTransmute,
1526
1527 Subtype,
1538}
1539
1540#[derive(#[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for CoercionSource {
}
#[automatically_derived]impl ::core::clone::Clone for CoercionSource {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::marker::Copy for CoercionSource { }Copy, #[automatically_derived]impl ::core::fmt::Debug for CoercionSource {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
CoercionSource::AsCast => "AsCast",
CoercionSource::Implicit => "Implicit",
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
CoercionSource {
}
#[automatically_derived]impl ::core::cmp::PartialEq for CoercionSource {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for CoercionSource { }Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for CoercionSource {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
CoercionSource::AsCast => { 0usize }
CoercionSource::Implicit => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for CoercionSource {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { CoercionSource::AsCast }
1usize => { CoercionSource::Implicit }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CoercionSource`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]impl ::core::hash::Hash for CoercionSource {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
CoercionSource {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
CoercionSource::AsCast => 0u8.stable_hash(__hcx, __hasher),
CoercionSource::Implicit =>
1u8.stable_hash(__hcx, __hasher),
}
match *self {
CoercionSource::AsCast => {}
CoercionSource::Implicit => {}
}
}
}
};StableHash)]
1543pub enum CoercionSource {
1544 AsCast,
1546 Implicit,
1548}
1549
1550#[derive(#[automatically_derived]impl<'tcx> ::core::clone::Clone for
AggregateKind<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Array(__self_0) =>
AggregateKind::Array(::core::clone::Clone::clone(__self_0)),
Self::Tuple => AggregateKind::Tuple,
Self::Adt(__self_0, __self_1, __self_2, __self_3, __self_4) =>
AggregateKind::Adt(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2),
::core::clone::Clone::clone(__self_3),
::core::clone::Clone::clone(__self_4)),
Self::Closure(__self_0, __self_1) =>
AggregateKind::Closure(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Coroutine(__self_0, __self_1) =>
AggregateKind::Coroutine(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::CoroutineClosure(__self_0, __self_1) =>
AggregateKind::CoroutineClosure(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::RawPtr(__self_0, __self_1) =>
AggregateKind::RawPtr(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, #[automatically_derived]impl<'tcx> ::core::fmt::Debug for AggregateKind<'tcx>
{
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Array(__self_0) =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Array",
&__self_0),
Self::Tuple => ::core::fmt::Formatter::write_str(f, "Tuple"),
Self::Adt(__self_0, __self_1, __self_2, __self_3, __self_4) =>
::core::fmt::Formatter::debug_struct_field5_finish(f, "Adt",
__self_0, __self_1, __self_2, __self_3, &__self_4),
Self::Closure(__self_0, __self_1) =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Closure", __self_0, &__self_1),
Self::Coroutine(__self_0, __self_1) =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Coroutine", __self_0, &__self_1),
Self::CoroutineClosure(__self_0, __self_1) =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"CoroutineClosure", __self_0, &__self_1),
Self::RawPtr(__self_0, __self_1) =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"RawPtr", __self_0, &__self_1),
}
}
}Debug, #[automatically_derived]impl<'tcx> ::core::marker::StructuralPartialEq for
AggregateKind<'tcx> {
}
#[automatically_derived]impl<'tcx> ::core::cmp::PartialEq for
AggregateKind<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Array(__self_0), Self::Array(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Adt(__self_0, __self_1, __self_2, __self_3, __self_4),
Self::Adt(__arg1_0, __arg1_1, __arg1_2, __arg1_3, __arg1_4))
=>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4,
(Self::Closure(__self_0, __self_1),
Self::Closure(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Coroutine(__self_0, __self_1),
Self::Coroutine(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::CoroutineClosure(__self_0, __self_1),
Self::CoroutineClosure(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::RawPtr(__self_0, __self_1),
Self::RawPtr(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, #[automatically_derived]impl<'tcx> ::core::cmp::Eq for AggregateKind<'tcx> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ty<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<DefId>;
let _: ::core::cmp::AssertParamIsEq<VariantIdx>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<Option<UserTypeAnnotationIndex>>;
let _: ::core::cmp::AssertParamIsEq<Option<FieldIdx>>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<GenericArgs<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<Ty<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<Mutability>;
}
}Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for AggregateKind<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AggregateKind::Array(ref __binding_0) => { 0usize }
AggregateKind::Tuple => { 1usize }
AggregateKind::Adt(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3, ref __binding_4) => {
2usize
}
AggregateKind::Closure(ref __binding_0, ref __binding_1) =>
{
3usize
}
AggregateKind::Coroutine(ref __binding_0, ref __binding_1)
=> {
4usize
}
AggregateKind::CoroutineClosure(ref __binding_0,
ref __binding_1) => {
5usize
}
AggregateKind::RawPtr(ref __binding_0, ref __binding_1) => {
6usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AggregateKind::Array(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AggregateKind::Tuple => {}
AggregateKind::Adt(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3, ref __binding_4) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
}
AggregateKind::Closure(ref __binding_0, ref __binding_1) =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
AggregateKind::Coroutine(ref __binding_0, ref __binding_1)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
AggregateKind::CoroutineClosure(ref __binding_0,
ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
AggregateKind::RawPtr(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for AggregateKind<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
AggregateKind::Array(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { AggregateKind::Tuple }
2usize => {
AggregateKind::Adt(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
AggregateKind::Closure(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
AggregateKind::Coroutine(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
AggregateKind::CoroutineClosure(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
AggregateKind::RawPtr(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AggregateKind`, expected 0..7, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
AggregateKind<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
AggregateKind::Array(ref __binding_0) =>
0u8.stable_hash(__hcx, __hasher),
AggregateKind::Tuple => 1u8.stable_hash(__hcx, __hasher),
AggregateKind::Adt(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3, ref __binding_4) =>
2u8.stable_hash(__hcx, __hasher),
AggregateKind::Closure(ref __binding_0, ref __binding_1) =>
3u8.stable_hash(__hcx, __hasher),
AggregateKind::Coroutine(ref __binding_0, ref __binding_1)
=> 4u8.stable_hash(__hcx, __hasher),
AggregateKind::CoroutineClosure(ref __binding_0,
ref __binding_1) => 5u8.stable_hash(__hcx, __hasher),
AggregateKind::RawPtr(ref __binding_0, ref __binding_1) =>
6u8.stable_hash(__hcx, __hasher),
}
match *self {
AggregateKind::Array(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AggregateKind::Tuple => {}
AggregateKind::Adt(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3, ref __binding_4) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
{ __binding_4.stable_hash(__hcx, __hasher); }
}
AggregateKind::Closure(ref __binding_0, ref __binding_1) =>
{
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
AggregateKind::Coroutine(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
AggregateKind::CoroutineClosure(ref __binding_0,
ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
AggregateKind::RawPtr(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
1551#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for AggregateKind<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
AggregateKind::Array(__binding_0) => {
AggregateKind::Array(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AggregateKind::Tuple => { AggregateKind::Tuple }
AggregateKind::Adt(__binding_0, __binding_1, __binding_2,
__binding_3, __binding_4) => {
AggregateKind::Adt(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_4,
__folder)?)
}
AggregateKind::Closure(__binding_0, __binding_1) => {
AggregateKind::Closure(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
AggregateKind::Coroutine(__binding_0, __binding_1) => {
AggregateKind::Coroutine(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
AggregateKind::CoroutineClosure(__binding_0, __binding_1) =>
{
AggregateKind::CoroutineClosure(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
AggregateKind::RawPtr(__binding_0, __binding_1) => {
AggregateKind::RawPtr(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
AggregateKind::Array(__binding_0) => {
AggregateKind::Array(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AggregateKind::Tuple => { AggregateKind::Tuple }
AggregateKind::Adt(__binding_0, __binding_1, __binding_2,
__binding_3, __binding_4) => {
AggregateKind::Adt(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_4,
__folder))
}
AggregateKind::Closure(__binding_0, __binding_1) => {
AggregateKind::Closure(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
AggregateKind::Coroutine(__binding_0, __binding_1) => {
AggregateKind::Coroutine(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
AggregateKind::CoroutineClosure(__binding_0, __binding_1) =>
{
AggregateKind::CoroutineClosure(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
AggregateKind::RawPtr(__binding_0, __binding_1) => {
AggregateKind::RawPtr(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for AggregateKind<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
AggregateKind::Array(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AggregateKind::Tuple => {}
AggregateKind::Adt(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3, ref __binding_4) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_4,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AggregateKind::Closure(ref __binding_0, ref __binding_1) =>
{
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AggregateKind::Coroutine(ref __binding_0, ref __binding_1)
=> {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AggregateKind::CoroutineClosure(ref __binding_0,
ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AggregateKind::RawPtr(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1552pub enum AggregateKind<'tcx> {
1553 Array(Ty<'tcx>),
1555 Tuple,
1556
1557 Adt(DefId, VariantIdx, GenericArgs<'tcx>, Option<UserTypeAnnotationIndex>, Option<FieldIdx>),
1563
1564 Closure(DefId, GenericArgs<'tcx>),
1565 Coroutine(DefId, GenericArgs<'tcx>),
1566 CoroutineClosure(DefId, GenericArgs<'tcx>),
1567
1568 RawPtr(Ty<'tcx>, Mutability),
1582}
1583
1584#[derive(#[automatically_derived]impl ::core::marker::Copy for RuntimeChecks { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for RuntimeChecks {
}
#[automatically_derived]impl ::core::clone::Clone for RuntimeChecks {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::fmt::Debug for RuntimeChecks {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RuntimeChecks::UbChecks => "UbChecks",
RuntimeChecks::ContractChecks => "ContractChecks",
RuntimeChecks::OverflowChecks => "OverflowChecks",
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for
RuntimeChecks {
}
#[automatically_derived]impl ::core::cmp::PartialEq for RuntimeChecks {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for RuntimeChecks { }Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for RuntimeChecks {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RuntimeChecks::UbChecks => { 0usize }
RuntimeChecks::ContractChecks => { 1usize }
RuntimeChecks::OverflowChecks => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for RuntimeChecks {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RuntimeChecks::UbChecks }
1usize => { RuntimeChecks::ContractChecks }
2usize => { RuntimeChecks::OverflowChecks }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RuntimeChecks`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]impl ::core::hash::Hash for RuntimeChecks {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
RuntimeChecks {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
RuntimeChecks::UbChecks => 0u8.stable_hash(__hcx, __hasher),
RuntimeChecks::ContractChecks =>
1u8.stable_hash(__hcx, __hasher),
RuntimeChecks::OverflowChecks =>
2u8.stable_hash(__hcx, __hasher),
}
match *self {
RuntimeChecks::UbChecks => {}
RuntimeChecks::ContractChecks => {}
RuntimeChecks::OverflowChecks => {}
}
}
}
};StableHash)]
1585pub enum RuntimeChecks {
1586 UbChecks,
1589 ContractChecks,
1592 OverflowChecks,
1595}
1596
1597impl RuntimeChecks {
1598 pub fn value(self, sess: &rustc_session::Session) -> bool {
1599 match self {
1600 Self::UbChecks => sess.ub_checks(),
1601 Self::ContractChecks => sess.contract_checks(),
1602 Self::OverflowChecks => sess.overflow_checks(),
1603 }
1604 }
1605}
1606
1607#[derive(#[automatically_derived]impl ::core::marker::Copy for UnOp { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for UnOp {
}
#[automatically_derived]impl ::core::clone::Clone for UnOp {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::fmt::Debug for UnOp {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
UnOp::Not => "Not",
UnOp::Neg => "Neg",
UnOp::PtrMetadata => "PtrMetadata",
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for UnOp { }
#[automatically_derived]impl ::core::cmp::PartialEq for UnOp {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for UnOp { }Eq, #[automatically_derived]impl ::core::hash::Hash for UnOp {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash)]
1608#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for UnOp {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
UnOp::Not => 0u8.stable_hash(__hcx, __hasher),
UnOp::Neg => 1u8.stable_hash(__hcx, __hasher),
UnOp::PtrMetadata => 2u8.stable_hash(__hcx, __hasher),
}
match *self {
UnOp::Not => {}
UnOp::Neg => {}
UnOp::PtrMetadata => {}
}
}
}
};StableHash, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for UnOp {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnOp::Not => { 0usize }
UnOp::Neg => { 1usize }
UnOp::PtrMetadata => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for UnOp {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnOp::Not }
1usize => { UnOp::Neg }
2usize => { UnOp::PtrMetadata }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnOp`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for UnOp {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
UnOp::Not => { UnOp::Not }
UnOp::Neg => { UnOp::Neg }
UnOp::PtrMetadata => { UnOp::PtrMetadata }
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
UnOp::Not => { UnOp::Not }
UnOp::Neg => { UnOp::Neg }
UnOp::PtrMetadata => { UnOp::PtrMetadata }
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for UnOp {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
UnOp::Not => {}
UnOp::Neg => {}
UnOp::PtrMetadata => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1609pub enum UnOp {
1610 Not,
1612 Neg,
1614 PtrMetadata,
1623}
1624
1625#[derive(#[automatically_derived]impl ::core::marker::Copy for BinOp { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for BinOp {
}
#[automatically_derived]impl ::core::clone::Clone for BinOp {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::fmt::Debug for BinOp {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_c_like_enum_write_str(f,
"Add AddUnchecked AddWithOverflow Sub SubUnchecked SubWithOverflow Mul MulUnchecked MulWithOverflow Div Rem BitXor BitAnd BitOr Shl ShlUnchecked Shr ShrUnchecked Eq Lt Le Ne Ge Gt Cmp Offset",
match self {
BinOp::Add => 0usize,
BinOp::AddUnchecked => 4usize,
BinOp::AddWithOverflow => 17usize,
BinOp::Sub => 33usize,
BinOp::SubUnchecked => 37usize,
BinOp::SubWithOverflow => 50usize,
BinOp::Mul => 66usize,
BinOp::MulUnchecked => 70usize,
BinOp::MulWithOverflow => 83usize,
BinOp::Div => 99usize,
BinOp::Rem => 103usize,
BinOp::BitXor => 107usize,
BinOp::BitAnd => 114usize,
BinOp::BitOr => 121usize,
BinOp::Shl => 127usize,
BinOp::ShlUnchecked => 131usize,
BinOp::Shr => 144usize,
BinOp::ShrUnchecked => 148usize,
BinOp::Eq => 161usize,
BinOp::Lt => 164usize,
BinOp::Le => 167usize,
BinOp::Ne => 170usize,
BinOp::Ge => 173usize,
BinOp::Gt => 176usize,
BinOp::Cmp => 179usize,
BinOp::Offset => 183usize,
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for BinOp { }
#[automatically_derived]impl ::core::cmp::PartialEq for BinOp {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for BinOp { }Eq, #[automatically_derived]impl ::core::hash::Hash for BinOp {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash)]
1626#[derive(const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for BinOp {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BinOp::Add => { 0usize }
BinOp::AddUnchecked => { 1usize }
BinOp::AddWithOverflow => { 2usize }
BinOp::Sub => { 3usize }
BinOp::SubUnchecked => { 4usize }
BinOp::SubWithOverflow => { 5usize }
BinOp::Mul => { 6usize }
BinOp::MulUnchecked => { 7usize }
BinOp::MulWithOverflow => { 8usize }
BinOp::Div => { 9usize }
BinOp::Rem => { 10usize }
BinOp::BitXor => { 11usize }
BinOp::BitAnd => { 12usize }
BinOp::BitOr => { 13usize }
BinOp::Shl => { 14usize }
BinOp::ShlUnchecked => { 15usize }
BinOp::Shr => { 16usize }
BinOp::ShrUnchecked => { 17usize }
BinOp::Eq => { 18usize }
BinOp::Lt => { 19usize }
BinOp::Le => { 20usize }
BinOp::Ne => { 21usize }
BinOp::Ge => { 22usize }
BinOp::Gt => { 23usize }
BinOp::Cmp => { 24usize }
BinOp::Offset => { 25usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for BinOp {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BinOp::Add }
1usize => { BinOp::AddUnchecked }
2usize => { BinOp::AddWithOverflow }
3usize => { BinOp::Sub }
4usize => { BinOp::SubUnchecked }
5usize => { BinOp::SubWithOverflow }
6usize => { BinOp::Mul }
7usize => { BinOp::MulUnchecked }
8usize => { BinOp::MulWithOverflow }
9usize => { BinOp::Div }
10usize => { BinOp::Rem }
11usize => { BinOp::BitXor }
12usize => { BinOp::BitAnd }
13usize => { BinOp::BitOr }
14usize => { BinOp::Shl }
15usize => { BinOp::ShlUnchecked }
16usize => { BinOp::Shr }
17usize => { BinOp::ShrUnchecked }
18usize => { BinOp::Eq }
19usize => { BinOp::Lt }
20usize => { BinOp::Le }
21usize => { BinOp::Ne }
22usize => { BinOp::Ge }
23usize => { BinOp::Gt }
24usize => { BinOp::Cmp }
25usize => { BinOp::Offset }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BinOp`, expected 0..26, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for BinOp {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
BinOp::Add => 0u8.stable_hash(__hcx, __hasher),
BinOp::AddUnchecked => 1u8.stable_hash(__hcx, __hasher),
BinOp::AddWithOverflow => 2u8.stable_hash(__hcx, __hasher),
BinOp::Sub => 3u8.stable_hash(__hcx, __hasher),
BinOp::SubUnchecked => 4u8.stable_hash(__hcx, __hasher),
BinOp::SubWithOverflow => 5u8.stable_hash(__hcx, __hasher),
BinOp::Mul => 6u8.stable_hash(__hcx, __hasher),
BinOp::MulUnchecked => 7u8.stable_hash(__hcx, __hasher),
BinOp::MulWithOverflow => 8u8.stable_hash(__hcx, __hasher),
BinOp::Div => 9u8.stable_hash(__hcx, __hasher),
BinOp::Rem => 10u8.stable_hash(__hcx, __hasher),
BinOp::BitXor => 11u8.stable_hash(__hcx, __hasher),
BinOp::BitAnd => 12u8.stable_hash(__hcx, __hasher),
BinOp::BitOr => 13u8.stable_hash(__hcx, __hasher),
BinOp::Shl => 14u8.stable_hash(__hcx, __hasher),
BinOp::ShlUnchecked => 15u8.stable_hash(__hcx, __hasher),
BinOp::Shr => 16u8.stable_hash(__hcx, __hasher),
BinOp::ShrUnchecked => 17u8.stable_hash(__hcx, __hasher),
BinOp::Eq => 18u8.stable_hash(__hcx, __hasher),
BinOp::Lt => 19u8.stable_hash(__hcx, __hasher),
BinOp::Le => 20u8.stable_hash(__hcx, __hasher),
BinOp::Ne => 21u8.stable_hash(__hcx, __hasher),
BinOp::Ge => 22u8.stable_hash(__hcx, __hasher),
BinOp::Gt => 23u8.stable_hash(__hcx, __hasher),
BinOp::Cmp => 24u8.stable_hash(__hcx, __hasher),
BinOp::Offset => 25u8.stable_hash(__hcx, __hasher),
}
match *self {
BinOp::Add => {}
BinOp::AddUnchecked => {}
BinOp::AddWithOverflow => {}
BinOp::Sub => {}
BinOp::SubUnchecked => {}
BinOp::SubWithOverflow => {}
BinOp::Mul => {}
BinOp::MulUnchecked => {}
BinOp::MulWithOverflow => {}
BinOp::Div => {}
BinOp::Rem => {}
BinOp::BitXor => {}
BinOp::BitAnd => {}
BinOp::BitOr => {}
BinOp::Shl => {}
BinOp::ShlUnchecked => {}
BinOp::Shr => {}
BinOp::ShrUnchecked => {}
BinOp::Eq => {}
BinOp::Lt => {}
BinOp::Le => {}
BinOp::Ne => {}
BinOp::Ge => {}
BinOp::Gt => {}
BinOp::Cmp => {}
BinOp::Offset => {}
}
}
}
};StableHash, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for BinOp {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
BinOp::Add => { BinOp::Add }
BinOp::AddUnchecked => { BinOp::AddUnchecked }
BinOp::AddWithOverflow => { BinOp::AddWithOverflow }
BinOp::Sub => { BinOp::Sub }
BinOp::SubUnchecked => { BinOp::SubUnchecked }
BinOp::SubWithOverflow => { BinOp::SubWithOverflow }
BinOp::Mul => { BinOp::Mul }
BinOp::MulUnchecked => { BinOp::MulUnchecked }
BinOp::MulWithOverflow => { BinOp::MulWithOverflow }
BinOp::Div => { BinOp::Div }
BinOp::Rem => { BinOp::Rem }
BinOp::BitXor => { BinOp::BitXor }
BinOp::BitAnd => { BinOp::BitAnd }
BinOp::BitOr => { BinOp::BitOr }
BinOp::Shl => { BinOp::Shl }
BinOp::ShlUnchecked => { BinOp::ShlUnchecked }
BinOp::Shr => { BinOp::Shr }
BinOp::ShrUnchecked => { BinOp::ShrUnchecked }
BinOp::Eq => { BinOp::Eq }
BinOp::Lt => { BinOp::Lt }
BinOp::Le => { BinOp::Le }
BinOp::Ne => { BinOp::Ne }
BinOp::Ge => { BinOp::Ge }
BinOp::Gt => { BinOp::Gt }
BinOp::Cmp => { BinOp::Cmp }
BinOp::Offset => { BinOp::Offset }
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
BinOp::Add => { BinOp::Add }
BinOp::AddUnchecked => { BinOp::AddUnchecked }
BinOp::AddWithOverflow => { BinOp::AddWithOverflow }
BinOp::Sub => { BinOp::Sub }
BinOp::SubUnchecked => { BinOp::SubUnchecked }
BinOp::SubWithOverflow => { BinOp::SubWithOverflow }
BinOp::Mul => { BinOp::Mul }
BinOp::MulUnchecked => { BinOp::MulUnchecked }
BinOp::MulWithOverflow => { BinOp::MulWithOverflow }
BinOp::Div => { BinOp::Div }
BinOp::Rem => { BinOp::Rem }
BinOp::BitXor => { BinOp::BitXor }
BinOp::BitAnd => { BinOp::BitAnd }
BinOp::BitOr => { BinOp::BitOr }
BinOp::Shl => { BinOp::Shl }
BinOp::ShlUnchecked => { BinOp::ShlUnchecked }
BinOp::Shr => { BinOp::Shr }
BinOp::ShrUnchecked => { BinOp::ShrUnchecked }
BinOp::Eq => { BinOp::Eq }
BinOp::Lt => { BinOp::Lt }
BinOp::Le => { BinOp::Le }
BinOp::Ne => { BinOp::Ne }
BinOp::Ge => { BinOp::Ge }
BinOp::Gt => { BinOp::Gt }
BinOp::Cmp => { BinOp::Cmp }
BinOp::Offset => { BinOp::Offset }
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for BinOp {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
BinOp::Add => {}
BinOp::AddUnchecked => {}
BinOp::AddWithOverflow => {}
BinOp::Sub => {}
BinOp::SubUnchecked => {}
BinOp::SubWithOverflow => {}
BinOp::Mul => {}
BinOp::MulUnchecked => {}
BinOp::MulWithOverflow => {}
BinOp::Div => {}
BinOp::Rem => {}
BinOp::BitXor => {}
BinOp::BitAnd => {}
BinOp::BitOr => {}
BinOp::Shl => {}
BinOp::ShlUnchecked => {}
BinOp::Shr => {}
BinOp::ShrUnchecked => {}
BinOp::Eq => {}
BinOp::Lt => {}
BinOp::Le => {}
BinOp::Ne => {}
BinOp::Ge => {}
BinOp::Gt => {}
BinOp::Cmp => {}
BinOp::Offset => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1627pub enum BinOp {
1628 Add,
1630 AddUnchecked,
1632 AddWithOverflow,
1635 Sub,
1637 SubUnchecked,
1639 SubWithOverflow,
1642 Mul,
1644 MulUnchecked,
1646 MulWithOverflow,
1649 Div,
1656 Rem,
1664 BitXor,
1666 BitAnd,
1668 BitOr,
1670 Shl,
1677 ShlUnchecked,
1679 Shr,
1689 ShrUnchecked,
1691 Eq,
1693 Lt,
1695 Le,
1697 Ne,
1699 Ge,
1701 Gt,
1703 Cmp,
1715 Offset,
1717}
1718
1719#[derive(#[automatically_derived]impl ::core::marker::Copy for AssignOp { }Copy, #[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for AssignOp {
}
#[automatically_derived]impl ::core::clone::Clone for AssignOp {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::fmt::Debug for AssignOp {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_c_like_enum_write_str(f,
"AddAssign SubAssign MulAssign DivAssign RemAssign BitXorAssign BitAndAssign BitOrAssign ShlAssign ShrAssign",
match self {
AssignOp::AddAssign => 0usize,
AssignOp::SubAssign => 10usize,
AssignOp::MulAssign => 20usize,
AssignOp::DivAssign => 30usize,
AssignOp::RemAssign => 40usize,
AssignOp::BitXorAssign => 50usize,
AssignOp::BitAndAssign => 63usize,
AssignOp::BitOrAssign => 76usize,
AssignOp::ShlAssign => 88usize,
AssignOp::ShrAssign => 98usize,
})
}
}Debug, #[automatically_derived]impl ::core::marker::StructuralPartialEq for AssignOp
{
}
#[automatically_derived]impl ::core::cmp::PartialEq for AssignOp {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]impl ::core::cmp::Eq for AssignOp { }Eq, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for AssignOp {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
AssignOp::AddAssign => 0u8.stable_hash(__hcx, __hasher),
AssignOp::SubAssign => 1u8.stable_hash(__hcx, __hasher),
AssignOp::MulAssign => 2u8.stable_hash(__hcx, __hasher),
AssignOp::DivAssign => 3u8.stable_hash(__hcx, __hasher),
AssignOp::RemAssign => 4u8.stable_hash(__hcx, __hasher),
AssignOp::BitXorAssign => 5u8.stable_hash(__hcx, __hasher),
AssignOp::BitAndAssign => 6u8.stable_hash(__hcx, __hasher),
AssignOp::BitOrAssign => 7u8.stable_hash(__hcx, __hasher),
AssignOp::ShlAssign => 8u8.stable_hash(__hcx, __hasher),
AssignOp::ShrAssign => 9u8.stable_hash(__hcx, __hasher),
}
match *self {
AssignOp::AddAssign => {}
AssignOp::SubAssign => {}
AssignOp::MulAssign => {}
AssignOp::DivAssign => {}
AssignOp::RemAssign => {}
AssignOp::BitXorAssign => {}
AssignOp::BitAndAssign => {}
AssignOp::BitOrAssign => {}
AssignOp::ShlAssign => {}
AssignOp::ShrAssign => {}
}
}
}
};StableHash)]
1722pub enum AssignOp {
1723 AddAssign,
1724 SubAssign,
1725 MulAssign,
1726 DivAssign,
1727 RemAssign,
1728 BitXorAssign,
1729 BitAndAssign,
1730 BitOrAssign,
1731 ShlAssign,
1732 ShrAssign,
1733}
1734
1735impl From<AssignOp> for BinOp {
1739 fn from(op: AssignOp) -> BinOp {
1740 match op {
1741 AssignOp::AddAssign => BinOp::Add,
1742 AssignOp::SubAssign => BinOp::Sub,
1743 AssignOp::MulAssign => BinOp::Mul,
1744 AssignOp::DivAssign => BinOp::Div,
1745 AssignOp::RemAssign => BinOp::Rem,
1746 AssignOp::BitXorAssign => BinOp::BitXor,
1747 AssignOp::BitAndAssign => BinOp::BitAnd,
1748 AssignOp::BitOrAssign => BinOp::BitOr,
1749 AssignOp::ShlAssign => BinOp::Shl,
1750 AssignOp::ShrAssign => BinOp::Shr,
1751 }
1752 }
1753}
1754
1755#[cfg(target_pointer_width = "64")]
1757mod size_asserts {
1758 use rustc_data_structures::static_assert_size;
1759
1760 use super::*;
1761 const _: [(); 32] = [(); ::std::mem::size_of::<AggregateKind<'_>>()];static_assert_size!(AggregateKind<'_>, 32);
1763 const _: [(); 24] = [(); ::std::mem::size_of::<Operand<'_>>()];static_assert_size!(Operand<'_>, 24);
1764 const _: [(); 16] = [(); ::std::mem::size_of::<Place<'_>>()];static_assert_size!(Place<'_>, 16);
1765 const _: [(); 24] = [(); ::std::mem::size_of::<PlaceElem<'_>>()];static_assert_size!(PlaceElem<'_>, 24);
1766 const _: [(); 40] = [(); ::std::mem::size_of::<Rvalue<'_>>()];static_assert_size!(Rvalue<'_>, 40);
1767 const _: [(); 16] = [(); ::std::mem::size_of::<StatementKind<'_>>()];static_assert_size!(StatementKind<'_>, 16);
1768 const _: [(); 80] = [(); ::std::mem::size_of::<TerminatorKind<'_>>()];static_assert_size!(TerminatorKind<'_>, 80);
1769 }