1use rustc_abi::{FieldIdx, VariantIdx};
7use rustc_ast::{InlineAsmOptions, InlineAsmTemplatePiece, Mutability};
8use rustc_data_structures::packed::Pu128;
9use rustc_hir::CoroutineKind;
10use rustc_hir::def_id::DefId;
11use rustc_index::IndexVec;
12use rustc_macros::{StableHash, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
13use rustc_span::def_id::LocalDefId;
14use rustc_span::{Span, Spanned, Symbol};
15use rustc_target::asm::InlineAsmRegOrRegClass;
16use smallvec::SmallVec;
17
18use super::{BasicBlock, Const, Local, UserTypeProjection};
19use crate::mir::coverage::CoverageKind;
20use crate::ty::adjustment::PointerCoercion;
21use crate::ty::{self, GenericArgsRef, List, Region, Ty, UserTypeAnnotationIndex};
22
23#[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) -> MirPhase {
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 {
MirPhase::Built => ::core::fmt::Formatter::write_str(f, "Built"),
MirPhase::Analysis(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Analysis", &__self_0),
MirPhase::Runtime(__self_0) =>
::core::fmt::Formatter::debug_tuple_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: &MirPhase) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(MirPhase::Analysis(__self_0), MirPhase::Analysis(__arg1_0))
=> __self_0 == __arg1_0,
(MirPhase::Runtime(__self_0), MirPhase::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: &MirPhase)
-> ::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: &MirPhase) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(MirPhase::Analysis(__self_0), MirPhase::Analysis(__arg1_0))
=> ::core::cmp::Ord::cmp(__self_0, __arg1_0),
(MirPhase::Runtime(__self_0), MirPhase::Runtime(__arg1_0))
=> ::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord)]
41#[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) {
::std::mem::discriminant(self).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)]
42pub enum MirPhase {
43 Built,
51
52 Analysis(AnalysisPhase),
64
65 Runtime(RuntimePhase),
95}
96
97#[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) -> AnalysisPhase { *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: &AnalysisPhase) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for AnalysisPhase {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for AnalysisPhase {
#[inline]
fn partial_cmp(&self, other: &AnalysisPhase)
-> ::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: &AnalysisPhase) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord)]
99#[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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
AnalysisPhase::Initial => {}
AnalysisPhase::PostCleanup => {}
}
}
}
};StableHash)]
100pub enum AnalysisPhase {
101 Initial = 0,
102 PostCleanup = 1,
118}
119
120#[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) -> RuntimePhase { *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: &RuntimePhase) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for RuntimePhase {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for RuntimePhase {
#[inline]
fn partial_cmp(&self, other: &RuntimePhase)
-> ::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: &RuntimePhase) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord)]
122#[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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
RuntimePhase::Initial => {}
RuntimePhase::PostCleanup => {}
RuntimePhase::Optimized => {}
}
}
}
};StableHash)]
123pub enum RuntimePhase {
124 Initial = 0,
139 PostCleanup = 1,
142 Optimized = 2,
143}
144
145#[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) -> BorrowKind {
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 {
BorrowKind::Shared =>
::core::fmt::Formatter::write_str(f, "Shared"),
BorrowKind::Fake(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Fake",
&__self_0),
BorrowKind::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: &BorrowKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(BorrowKind::Fake(__self_0), BorrowKind::Fake(__arg1_0)) =>
__self_0 == __arg1_0,
(BorrowKind::Mut { kind: __self_0 }, BorrowKind::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: &BorrowKind)
-> ::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: &BorrowKind) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(BorrowKind::Fake(__self_0), BorrowKind::Fake(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(BorrowKind::Mut { kind: __self_0 }, BorrowKind::Mut {
kind: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}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)]
149#[derive(#[automatically_derived]
impl ::core::hash::Hash for BorrowKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
BorrowKind::Fake(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
BorrowKind::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) {
::std::mem::discriminant(self).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)]
150pub enum BorrowKind {
151 Shared,
153
154 Fake(FakeBorrowKind),
174
175 Mut { kind: MutBorrowKind },
177}
178
179#[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) -> RawPtrKind { *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: &RawPtrKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for RawPtrKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for RawPtrKind {
#[inline]
fn partial_cmp(&self, other: &RawPtrKind)
-> ::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: &RawPtrKind) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}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)]
180#[derive(#[automatically_derived]
impl ::core::hash::Hash for RawPtrKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, 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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
RawPtrKind::Mut => {}
RawPtrKind::Const => {}
RawPtrKind::FakeForPtrMetadata => {}
}
}
}
};StableHash)]
181pub enum RawPtrKind {
182 Mut,
183 Const,
184 FakeForPtrMetadata,
193}
194
195#[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) -> MutBorrowKind { *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: &MutBorrowKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for MutBorrowKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for MutBorrowKind {
#[inline]
fn partial_cmp(&self, other: &MutBorrowKind)
-> ::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: &MutBorrowKind) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}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)]
196#[derive(#[automatically_derived]
impl ::core::hash::Hash for MutBorrowKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, 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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
MutBorrowKind::Default => {}
MutBorrowKind::TwoPhaseBorrow => {}
MutBorrowKind::ClosureCapture => {}
}
}
}
};StableHash)]
197pub enum MutBorrowKind {
198 Default,
199 TwoPhaseBorrow,
201 ClosureCapture,
243}
244
245#[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) -> FakeBorrowKind { *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: &FakeBorrowKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for FakeBorrowKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for FakeBorrowKind {
#[inline]
fn partial_cmp(&self, other: &FakeBorrowKind)
-> ::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: &FakeBorrowKind) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}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)]
246#[derive(#[automatically_derived]
impl ::core::hash::Hash for FakeBorrowKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, 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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
FakeBorrowKind::Shallow => {}
FakeBorrowKind::Deep => {}
}
}
}
};StableHash)]
247pub enum FakeBorrowKind {
248 Shallow,
280 Deep,
294}
295
296#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for StatementKind<'tcx> {
#[inline]
fn clone(&self) -> StatementKind<'tcx> {
match self {
StatementKind::Assign(__self_0) =>
StatementKind::Assign(::core::clone::Clone::clone(__self_0)),
StatementKind::FakeRead(__self_0) =>
StatementKind::FakeRead(::core::clone::Clone::clone(__self_0)),
StatementKind::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),
},
StatementKind::StorageLive(__self_0) =>
StatementKind::StorageLive(::core::clone::Clone::clone(__self_0)),
StatementKind::StorageDead(__self_0) =>
StatementKind::StorageDead(::core::clone::Clone::clone(__self_0)),
StatementKind::PlaceMention(__self_0) =>
StatementKind::PlaceMention(::core::clone::Clone::clone(__self_0)),
StatementKind::AscribeUserType(__self_0, __self_1) =>
StatementKind::AscribeUserType(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
StatementKind::Coverage(__self_0) =>
StatementKind::Coverage(::core::clone::Clone::clone(__self_0)),
StatementKind::Intrinsic(__self_0) =>
StatementKind::Intrinsic(::core::clone::Clone::clone(__self_0)),
StatementKind::ConstEvalCounter =>
StatementKind::ConstEvalCounter,
StatementKind::Nop => StatementKind::Nop,
StatementKind::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: &StatementKind<'tcx>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(StatementKind::Assign(__self_0),
StatementKind::Assign(__arg1_0)) => __self_0 == __arg1_0,
(StatementKind::FakeRead(__self_0),
StatementKind::FakeRead(__arg1_0)) => __self_0 == __arg1_0,
(StatementKind::SetDiscriminant {
place: __self_0, variant_index: __self_1 },
StatementKind::SetDiscriminant {
place: __arg1_0, variant_index: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(StatementKind::StorageLive(__self_0),
StatementKind::StorageLive(__arg1_0)) =>
__self_0 == __arg1_0,
(StatementKind::StorageDead(__self_0),
StatementKind::StorageDead(__arg1_0)) =>
__self_0 == __arg1_0,
(StatementKind::PlaceMention(__self_0),
StatementKind::PlaceMention(__arg1_0)) =>
__self_0 == __arg1_0,
(StatementKind::AscribeUserType(__self_0, __self_1),
StatementKind::AscribeUserType(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(StatementKind::Coverage(__self_0),
StatementKind::Coverage(__arg1_0)) => __self_0 == __arg1_0,
(StatementKind::Intrinsic(__self_0),
StatementKind::Intrinsic(__arg1_0)) => __self_0 == __arg1_0,
(StatementKind::BackwardIncompatibleDropHint {
place: __self_0, reason: __self_1 },
StatementKind::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) {
::std::mem::discriminant(self).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)]
305#[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)]
306pub enum StatementKind<'tcx> {
307 Assign(Box<(Place<'tcx>, Rvalue<'tcx>)>),
340
341 FakeRead(Box<(FakeReadCause, Place<'tcx>)>),
357
358 SetDiscriminant { place: Box<Place<'tcx>>, variant_index: VariantIdx },
364
365 StorageLive(Local),
384
385 StorageDead(Local),
387
388 PlaceMention(Box<Place<'tcx>>),
395
396 AscribeUserType(Box<(Place<'tcx>, UserTypeProjection)>, ty::Variance),
413
414 Coverage(
425 #[type_foldable(identity)]
429 #[type_visitable(ignore)]
430 CoverageKind,
431 ),
432
433 Intrinsic(Box<NonDivergingIntrinsic<'tcx>>),
436
437 ConstEvalCounter,
442
443 Nop,
445
446 BackwardIncompatibleDropHint {
452 place: Box<Place<'tcx>>,
454 reason: BackwardIncompatibleDropReason,
456 },
457}
458
459#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for NonDivergingIntrinsic<'tcx> {
#[inline]
fn clone(&self) -> NonDivergingIntrinsic<'tcx> {
match self {
NonDivergingIntrinsic::Assume(__self_0) =>
NonDivergingIntrinsic::Assume(::core::clone::Clone::clone(__self_0)),
NonDivergingIntrinsic::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 {
NonDivergingIntrinsic::Assume(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Assume",
&__self_0),
NonDivergingIntrinsic::CopyNonOverlapping(__self_0) =>
::core::fmt::Formatter::debug_tuple_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: &NonDivergingIntrinsic<'tcx>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(NonDivergingIntrinsic::Assume(__self_0),
NonDivergingIntrinsic::Assume(__arg1_0)) =>
__self_0 == __arg1_0,
(NonDivergingIntrinsic::CopyNonOverlapping(__self_0),
NonDivergingIntrinsic::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) {
::std::mem::discriminant(self).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)]
460#[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)]
461pub enum NonDivergingIntrinsic<'tcx> {
462 Assume(Operand<'tcx>),
469
470 CopyNonOverlapping(CopyNonOverlapping<'tcx>),
484}
485
486#[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) -> WithRetag { *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: &WithRetag) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for WithRetag {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self { WithRetag::Yes => {} WithRetag::No => {} }
}
}
};StableHash)]
488#[rustc_pass_by_value]
489pub enum WithRetag {
490 Yes,
491 No,
492}
493
494impl WithRetag {
495 #[inline]
496 pub fn yes(self) -> bool {
497 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::Yes => true,
_ => false,
}matches!(self, Self::Yes)
498 }
499 #[inline]
500 pub fn no(self) -> bool {
501 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::No => true,
_ => false,
}matches!(self, Self::No)
502 }
503}
504
505#[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) -> FakeReadCause {
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 {
FakeReadCause::ForMatchGuard =>
::core::fmt::Formatter::write_str(f, "ForMatchGuard"),
FakeReadCause::ForMatchedPlace(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ForMatchedPlace", &__self_0),
FakeReadCause::ForGuardBinding =>
::core::fmt::Formatter::write_str(f, "ForGuardBinding"),
FakeReadCause::ForLet(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "ForLet",
&__self_0),
FakeReadCause::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) {
::std::mem::discriminant(self).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: &FakeReadCause) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(FakeReadCause::ForMatchedPlace(__self_0),
FakeReadCause::ForMatchedPlace(__arg1_0)) =>
__self_0 == __arg1_0,
(FakeReadCause::ForLet(__self_0),
FakeReadCause::ForLet(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq)]
507pub enum FakeReadCause {
508 ForMatchGuard,
521
522 ForMatchedPlace(Option<LocalDefId>),
547
548 ForGuardBinding,
562
563 ForLet(Option<LocalDefId>),
582
583 ForIndex,
610}
611
612#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for CopyNonOverlapping<'tcx> {
#[inline]
fn clone(&self) -> CopyNonOverlapping<'tcx> {
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", &self.src, "dst", &self.dst, "count",
&&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: &CopyNonOverlapping<'tcx>) -> 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)]
613#[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)]
614pub struct CopyNonOverlapping<'tcx> {
615 pub src: Operand<'tcx>,
616 pub dst: Operand<'tcx>,
617 pub count: Operand<'tcx>,
619}
620
621#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for CallSource { }
#[automatically_derived]
impl ::core::clone::Clone for CallSource {
#[inline]
fn clone(&self) -> CallSource { *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::write_str(f,
match self {
CallSource::OverloadedOperator => "OverloadedOperator",
CallSource::MatchCmp => "MatchCmp",
CallSource::Misc => "Misc",
CallSource::Use => "Use",
CallSource::Normal => "Normal",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for CallSource { }
#[automatically_derived]
impl ::core::cmp::PartialEq for CallSource {
#[inline]
fn eq(&self, other: &CallSource) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
CallSource::OverloadedOperator => {}
CallSource::MatchCmp => {}
CallSource::Misc => {}
CallSource::Use => {}
CallSource::Normal => {}
}
}
}
};StableHash)]
624#[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)]
625pub enum CallSource {
626 OverloadedOperator,
629 MatchCmp,
634 Misc,
637 Use,
639 Normal,
641}
642
643#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for InlineAsmMacro { }
#[automatically_derived]
impl ::core::clone::Clone for InlineAsmMacro {
#[inline]
fn clone(&self) -> InlineAsmMacro { *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) {
::std::mem::discriminant(self).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: &InlineAsmMacro) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq)]
644#[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)]
645pub enum InlineAsmMacro {
647 Asm,
649 NakedAsm,
651}
652
653#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for TerminatorKind<'tcx> {
#[inline]
fn clone(&self) -> TerminatorKind<'tcx> {
match self {
TerminatorKind::Goto { target: __self_0 } =>
TerminatorKind::Goto {
target: ::core::clone::Clone::clone(__self_0),
},
TerminatorKind::SwitchInt { discr: __self_0, targets: __self_1 }
=>
TerminatorKind::SwitchInt {
discr: ::core::clone::Clone::clone(__self_0),
targets: ::core::clone::Clone::clone(__self_1),
},
TerminatorKind::UnwindResume => TerminatorKind::UnwindResume,
TerminatorKind::UnwindTerminate(__self_0) =>
TerminatorKind::UnwindTerminate(::core::clone::Clone::clone(__self_0)),
TerminatorKind::Return => TerminatorKind::Return,
TerminatorKind::Unreachable => TerminatorKind::Unreachable,
TerminatorKind::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),
},
TerminatorKind::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),
},
TerminatorKind::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),
},
TerminatorKind::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),
},
TerminatorKind::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),
},
TerminatorKind::CoroutineDrop => TerminatorKind::CoroutineDrop,
TerminatorKind::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),
},
TerminatorKind::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),
},
TerminatorKind::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 } => {
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 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__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),
}
}
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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
TerminatorKind::Goto { target: ref __binding_0 } => {
{ __binding_0.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: &TerminatorKind<'tcx>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TerminatorKind::Goto { target: __self_0 },
TerminatorKind::Goto { target: __arg1_0 }) =>
__self_0 == __arg1_0,
(TerminatorKind::SwitchInt {
discr: __self_0, targets: __self_1 },
TerminatorKind::SwitchInt {
discr: __arg1_0, targets: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TerminatorKind::UnwindTerminate(__self_0),
TerminatorKind::UnwindTerminate(__arg1_0)) =>
__self_0 == __arg1_0,
(TerminatorKind::Drop {
place: __self_0,
target: __self_1,
unwind: __self_2,
replace: __self_3,
drop: __self_4 }, TerminatorKind::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,
(TerminatorKind::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: __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,
(TerminatorKind::TailCall {
func: __self_0, args: __self_1, fn_span: __self_2 },
TerminatorKind::TailCall {
func: __arg1_0, args: __arg1_1, fn_span: __arg1_2 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(TerminatorKind::Assert {
cond: __self_0,
expected: __self_1,
msg: __self_2,
target: __self_3,
unwind: __self_4 }, TerminatorKind::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,
(TerminatorKind::Yield {
value: __self_0,
resume: __self_1,
resume_arg: __self_2,
drop: __self_3 }, TerminatorKind::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,
(TerminatorKind::FalseEdge {
real_target: __self_0, imaginary_target: __self_1 },
TerminatorKind::FalseEdge {
real_target: __arg1_0, imaginary_target: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TerminatorKind::FalseUnwind {
real_target: __self_0, unwind: __self_1 },
TerminatorKind::FalseUnwind {
real_target: __arg1_0, unwind: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TerminatorKind::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: __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 } => {
TerminatorKind::Goto {
target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__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 } => {
TerminatorKind::Goto {
target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__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 } => {
{
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::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)]
684pub enum TerminatorKind<'tcx> {
685 Goto { target: BasicBlock },
687
688 SwitchInt {
697 discr: Operand<'tcx>,
699 targets: SwitchTargets,
700 },
701
702 UnwindResume,
709
710 UnwindTerminate(UnwindTerminateReason),
715
716 Return,
728
729 Unreachable,
733
734 Drop {
767 place: Place<'tcx>,
768 target: BasicBlock,
769 unwind: UnwindAction,
770 replace: bool,
771 drop: Option<BasicBlock>,
773 },
774
775 Call {
789 func: Operand<'tcx>,
791 args: Box<[Spanned<Operand<'tcx>>]>,
798 destination: Place<'tcx>,
800 target: Option<BasicBlock>,
802 unwind: UnwindAction,
804 call_source: CallSource,
806 fn_span: Span,
809 },
810
811 TailCall {
828 func: Operand<'tcx>,
830 args: Box<[Spanned<Operand<'tcx>>]>,
835 fn_span: Span,
839 },
840
841 Assert {
853 cond: Operand<'tcx>,
854 expected: bool,
855 msg: Box<AssertMessage<'tcx>>,
856 target: BasicBlock,
857 unwind: UnwindAction,
858 },
859
860 Yield {
883 value: Operand<'tcx>,
885 resume: BasicBlock,
887 resume_arg: Place<'tcx>,
889 drop: Option<BasicBlock>,
891 },
892
893 CoroutineDrop,
904
905 FalseEdge {
912 real_target: BasicBlock,
914 imaginary_target: BasicBlock,
917 },
918
919 FalseUnwind {
927 real_target: BasicBlock,
929 unwind: UnwindAction,
935 },
936
937 InlineAsm {
940 asm_macro: InlineAsmMacro,
942
943 #[type_foldable(identity)]
945 #[type_visitable(ignore)]
946 template: &'tcx [InlineAsmTemplatePiece],
947
948 operands: Box<[InlineAsmOperand<'tcx>]>,
950
951 options: InlineAsmOptions,
953
954 #[type_foldable(identity)]
957 #[type_visitable(ignore)]
958 line_spans: &'tcx [Span],
959
960 targets: Box<[BasicBlock]>,
964
965 unwind: UnwindAction,
968 },
969}
970
971#[derive(#[automatically_derived]
impl ::core::clone::Clone for BackwardIncompatibleDropReason {
#[inline]
fn clone(&self) -> BackwardIncompatibleDropReason {
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) {
::std::mem::discriminant(self).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: &BackwardIncompatibleDropReason) -> bool { true }
}PartialEq)]
972#[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)]
973pub enum BackwardIncompatibleDropReason {
974 Edition2024,
975}
976
977#[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", &self.values, "targets", &&self.targets)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for SwitchTargets {
#[inline]
fn clone(&self) -> SwitchTargets {
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: &SwitchTargets) -> bool {
self.values == other.values && self.targets == other.targets
}
}PartialEq)]
978pub struct SwitchTargets {
979 pub(super) values: SmallVec<[Pu128; 1]>,
982
983 pub(super) targets: SmallVec<[BasicBlock; 2]>,
1004}
1005
1006#[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) -> UnwindAction {
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 {
UnwindAction::Continue =>
::core::fmt::Formatter::write_str(f, "Continue"),
UnwindAction::Unreachable =>
::core::fmt::Formatter::write_str(f, "Unreachable"),
UnwindAction::Terminate(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Terminate", &__self_0),
UnwindAction::Cleanup(__self_0) =>
::core::fmt::Formatter::debug_tuple_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: &UnwindAction) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(UnwindAction::Terminate(__self_0),
UnwindAction::Terminate(__arg1_0)) => __self_0 == __arg1_0,
(UnwindAction::Cleanup(__self_0),
UnwindAction::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) {
::std::mem::discriminant(self).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)]
1008#[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)]
1009pub enum UnwindAction {
1010 Continue,
1015 Unreachable,
1017 Terminate(UnwindTerminateReason),
1021 Cleanup(BasicBlock),
1023}
1024
1025#[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) -> UnwindTerminateReason { *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: &UnwindTerminateReason) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for UnwindTerminateReason {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
UnwindTerminateReason::Abi => {}
UnwindTerminateReason::InCleanup => {}
}
}
}
};StableHash)]
1027#[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)]
1028pub enum UnwindTerminateReason {
1029 Abi,
1031 InCleanup,
1034}
1035
1036#[derive(#[automatically_derived]
impl<O: ::core::clone::Clone> ::core::clone::Clone for AssertKind<O> {
#[inline]
fn clone(&self) -> AssertKind<O> {
match self {
AssertKind::BoundsCheck { len: __self_0, index: __self_1 } =>
AssertKind::BoundsCheck {
len: ::core::clone::Clone::clone(__self_0),
index: ::core::clone::Clone::clone(__self_1),
},
AssertKind::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)),
AssertKind::OverflowNeg(__self_0) =>
AssertKind::OverflowNeg(::core::clone::Clone::clone(__self_0)),
AssertKind::DivisionByZero(__self_0) =>
AssertKind::DivisionByZero(::core::clone::Clone::clone(__self_0)),
AssertKind::RemainderByZero(__self_0) =>
AssertKind::RemainderByZero(::core::clone::Clone::clone(__self_0)),
AssertKind::ResumedAfterReturn(__self_0) =>
AssertKind::ResumedAfterReturn(::core::clone::Clone::clone(__self_0)),
AssertKind::ResumedAfterPanic(__self_0) =>
AssertKind::ResumedAfterPanic(::core::clone::Clone::clone(__self_0)),
AssertKind::ResumedAfterDrop(__self_0) =>
AssertKind::ResumedAfterDrop(::core::clone::Clone::clone(__self_0)),
AssertKind::MisalignedPointerDereference {
required: __self_0, found: __self_1 } =>
AssertKind::MisalignedPointerDereference {
required: ::core::clone::Clone::clone(__self_0),
found: ::core::clone::Clone::clone(__self_1),
},
AssertKind::NullPointerDereference =>
AssertKind::NullPointerDereference,
AssertKind::NullReferenceConstructed =>
AssertKind::NullReferenceConstructed,
AssertKind::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) {
::std::mem::discriminant(self).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: &AssertKind<O>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(AssertKind::BoundsCheck { len: __self_0, index: __self_1 },
AssertKind::BoundsCheck { len: __arg1_0, index: __arg1_1 })
=> __self_0 == __arg1_0 && __self_1 == __arg1_1,
(AssertKind::Overflow(__self_0, __self_1, __self_2),
AssertKind::Overflow(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(AssertKind::OverflowNeg(__self_0),
AssertKind::OverflowNeg(__arg1_0)) => __self_0 == __arg1_0,
(AssertKind::DivisionByZero(__self_0),
AssertKind::DivisionByZero(__arg1_0)) =>
__self_0 == __arg1_0,
(AssertKind::RemainderByZero(__self_0),
AssertKind::RemainderByZero(__arg1_0)) =>
__self_0 == __arg1_0,
(AssertKind::ResumedAfterReturn(__self_0),
AssertKind::ResumedAfterReturn(__arg1_0)) =>
__self_0 == __arg1_0,
(AssertKind::ResumedAfterPanic(__self_0),
AssertKind::ResumedAfterPanic(__arg1_0)) =>
__self_0 == __arg1_0,
(AssertKind::ResumedAfterDrop(__self_0),
AssertKind::ResumedAfterDrop(__arg1_0)) =>
__self_0 == __arg1_0,
(AssertKind::MisalignedPointerDereference {
required: __self_0, found: __self_1 },
AssertKind::MisalignedPointerDereference {
required: __arg1_0, found: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(AssertKind::InvalidEnumConstruction(__self_0),
AssertKind::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 {
AssertKind::BoundsCheck { len: __self_0, index: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"BoundsCheck", "len", __self_0, "index", &__self_1),
AssertKind::Overflow(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f,
"Overflow", __self_0, __self_1, &__self_2),
AssertKind::OverflowNeg(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"OverflowNeg", &__self_0),
AssertKind::DivisionByZero(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DivisionByZero", &__self_0),
AssertKind::RemainderByZero(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RemainderByZero", &__self_0),
AssertKind::ResumedAfterReturn(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ResumedAfterReturn", &__self_0),
AssertKind::ResumedAfterPanic(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ResumedAfterPanic", &__self_0),
AssertKind::ResumedAfterDrop(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ResumedAfterDrop", &__self_0),
AssertKind::MisalignedPointerDereference {
required: __self_0, found: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"MisalignedPointerDereference", "required", __self_0,
"found", &__self_1),
AssertKind::NullPointerDereference =>
::core::fmt::Formatter::write_str(f,
"NullPointerDereference"),
AssertKind::NullReferenceConstructed =>
::core::fmt::Formatter::write_str(f,
"NullReferenceConstructed"),
AssertKind::InvalidEnumConstruction(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"InvalidEnumConstruction", &__self_0),
}
}
}Debug)]
1038#[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)]
1039pub enum AssertKind<O> {
1040 BoundsCheck { len: O, index: O },
1041 Overflow(BinOp, O, O),
1042 OverflowNeg(O),
1043 DivisionByZero(O),
1044 RemainderByZero(O),
1045 ResumedAfterReturn(CoroutineKind),
1046 ResumedAfterPanic(CoroutineKind),
1047 ResumedAfterDrop(CoroutineKind),
1048 MisalignedPointerDereference { required: O, found: O },
1049 NullPointerDereference,
1050 NullReferenceConstructed,
1051 InvalidEnumConstruction(O),
1052}
1053
1054#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for InlineAsmOperand<'tcx> {
#[inline]
fn clone(&self) -> InlineAsmOperand<'tcx> {
match self {
InlineAsmOperand::In { reg: __self_0, value: __self_1 } =>
InlineAsmOperand::In {
reg: ::core::clone::Clone::clone(__self_0),
value: ::core::clone::Clone::clone(__self_1),
},
InlineAsmOperand::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),
},
InlineAsmOperand::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),
},
InlineAsmOperand::Const { value: __self_0 } =>
InlineAsmOperand::Const {
value: ::core::clone::Clone::clone(__self_0),
},
InlineAsmOperand::SymFn { value: __self_0 } =>
InlineAsmOperand::SymFn {
value: ::core::clone::Clone::clone(__self_0),
},
InlineAsmOperand::SymStatic { def_id: __self_0 } =>
InlineAsmOperand::SymStatic {
def_id: ::core::clone::Clone::clone(__self_0),
},
InlineAsmOperand::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 {
InlineAsmOperand::In { reg: __self_0, value: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "In",
"reg", __self_0, "value", &__self_1),
InlineAsmOperand::Out {
reg: __self_0, late: __self_1, place: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f, "Out",
"reg", __self_0, "late", __self_1, "place", &__self_2),
InlineAsmOperand::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", __self_0, "late", __self_1, "in_value", __self_2,
"out_place", &__self_3),
InlineAsmOperand::Const { value: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Const",
"value", &__self_0),
InlineAsmOperand::SymFn { value: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "SymFn",
"value", &__self_0),
InlineAsmOperand::SymStatic { def_id: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"SymStatic", "def_id", &__self_0),
InlineAsmOperand::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: &InlineAsmOperand<'tcx>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(InlineAsmOperand::In { reg: __self_0, value: __self_1 },
InlineAsmOperand::In { reg: __arg1_0, value: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(InlineAsmOperand::Out {
reg: __self_0, late: __self_1, place: __self_2 },
InlineAsmOperand::Out {
reg: __arg1_0, late: __arg1_1, place: __arg1_2 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0 &&
__self_2 == __arg1_2,
(InlineAsmOperand::InOut {
reg: __self_0,
late: __self_1,
in_value: __self_2,
out_place: __self_3 }, InlineAsmOperand::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,
(InlineAsmOperand::Const { value: __self_0 },
InlineAsmOperand::Const { value: __arg1_0 }) =>
__self_0 == __arg1_0,
(InlineAsmOperand::SymFn { value: __self_0 },
InlineAsmOperand::SymFn { value: __arg1_0 }) =>
__self_0 == __arg1_0,
(InlineAsmOperand::SymStatic { def_id: __self_0 },
InlineAsmOperand::SymStatic { def_id: __arg1_0 }) =>
__self_0 == __arg1_0,
(InlineAsmOperand::Label { target_index: __self_0 },
InlineAsmOperand::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) {
::std::mem::discriminant(self).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)]
1055#[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)]
1056pub enum InlineAsmOperand<'tcx> {
1057 In {
1058 reg: InlineAsmRegOrRegClass,
1059 value: Operand<'tcx>,
1060 },
1061 Out {
1062 reg: InlineAsmRegOrRegClass,
1063 late: bool,
1064 place: Option<Place<'tcx>>,
1065 },
1066 InOut {
1067 reg: InlineAsmRegOrRegClass,
1068 late: bool,
1069 in_value: Operand<'tcx>,
1070 out_place: Option<Place<'tcx>>,
1071 },
1072 Const {
1073 value: Box<ConstOperand<'tcx>>,
1074 },
1075 SymFn {
1076 value: Box<ConstOperand<'tcx>>,
1077 },
1078 SymStatic {
1079 def_id: DefId,
1080 },
1081 Label {
1082 target_index: usize,
1084 },
1085}
1086
1087pub type AssertMessage<'tcx> = AssertKind<Operand<'tcx>>;
1089
1090#[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) -> Place<'tcx> {
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: &Place<'tcx>) -> 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)]
1163pub struct Place<'tcx> {
1164 pub local: Local,
1165
1166 pub projection: &'tcx List<PlaceElem<'tcx>>,
1168}
1169
1170#[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) -> ProjectionElem<V, T> {
match self {
ProjectionElem::Deref => ProjectionElem::Deref,
ProjectionElem::Field(__self_0, __self_1) =>
ProjectionElem::Field(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ProjectionElem::Index(__self_0) =>
ProjectionElem::Index(::core::clone::Clone::clone(__self_0)),
ProjectionElem::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),
},
ProjectionElem::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),
},
ProjectionElem::Downcast(__self_0, __self_1) =>
ProjectionElem::Downcast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ProjectionElem::OpaqueCast(__self_0) =>
ProjectionElem::OpaqueCast(::core::clone::Clone::clone(__self_0)),
ProjectionElem::UnwrapUnsafeBinder(__self_0) =>
ProjectionElem::UnwrapUnsafeBinder(::core::clone::Clone::clone(__self_0)),
ProjectionElem::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 {
ProjectionElem::Deref =>
::core::fmt::Formatter::write_str(f, "Deref"),
ProjectionElem::Field(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Field",
__self_0, &__self_1),
ProjectionElem::Index(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Index",
&__self_0),
ProjectionElem::ConstantIndex {
offset: __self_0, min_length: __self_1, from_end: __self_2 }
=>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"ConstantIndex", "offset", __self_0, "min_length", __self_1,
"from_end", &__self_2),
ProjectionElem::Subslice {
from: __self_0, to: __self_1, from_end: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"Subslice", "from", __self_0, "to", __self_1, "from_end",
&__self_2),
ProjectionElem::Downcast(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Downcast", __self_0, &__self_1),
ProjectionElem::OpaqueCast(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"OpaqueCast", &__self_0),
ProjectionElem::UnwrapUnsafeBinder(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"UnwrapUnsafeBinder", &__self_0),
ProjectionElem::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: &ProjectionElem<V, T>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ProjectionElem::Field(__self_0, __self_1),
ProjectionElem::Field(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(ProjectionElem::Index(__self_0),
ProjectionElem::Index(__arg1_0)) => __self_0 == __arg1_0,
(ProjectionElem::ConstantIndex {
offset: __self_0, min_length: __self_1, from_end: __self_2
}, ProjectionElem::ConstantIndex {
offset: __arg1_0, min_length: __arg1_1, from_end: __arg1_2
}) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(ProjectionElem::Subslice {
from: __self_0, to: __self_1, from_end: __self_2 },
ProjectionElem::Subslice {
from: __arg1_0, to: __arg1_1, from_end: __arg1_2 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(ProjectionElem::Downcast(__self_0, __self_1),
ProjectionElem::Downcast(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(ProjectionElem::OpaqueCast(__self_0),
ProjectionElem::OpaqueCast(__arg1_0)) =>
__self_0 == __arg1_0,
(ProjectionElem::UnwrapUnsafeBinder(__self_0),
ProjectionElem::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) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
ProjectionElem::Field(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
ProjectionElem::Index(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
ProjectionElem::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)
}
ProjectionElem::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)
}
ProjectionElem::Downcast(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
ProjectionElem::OpaqueCast(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
ProjectionElem::UnwrapUnsafeBinder(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
1171#[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) {
::std::mem::discriminant(self).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)]
1172pub enum ProjectionElem<V, T> {
1173 Deref,
1174
1175 Field(FieldIdx, T),
1182
1183 Index(V),
1197
1198 ConstantIndex {
1214 offset: u64,
1217 min_length: u64,
1222 from_end: bool,
1225 },
1226
1227 Subslice {
1235 from: u64,
1236 to: u64,
1237 from_end: bool,
1241 },
1242
1243 Downcast(Option<Symbol>, VariantIdx),
1249
1250 OpaqueCast(T),
1255
1256 UnwrapUnsafeBinder(T),
1259
1260 PhantomDeref,
1279}
1280
1281pub type PlaceElem<'tcx> = ProjectionElem<Local, Ty<'tcx>>;
1284
1285#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for Operand<'tcx> {
#[inline]
fn clone(&self) -> Operand<'tcx> {
match self {
Operand::Copy(__self_0) =>
Operand::Copy(::core::clone::Clone::clone(__self_0)),
Operand::Move(__self_0) =>
Operand::Move(::core::clone::Clone::clone(__self_0)),
Operand::Constant(__self_0) =>
Operand::Constant(::core::clone::Clone::clone(__self_0)),
Operand::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: &Operand<'tcx>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Operand::Copy(__self_0), Operand::Copy(__arg1_0)) =>
__self_0 == __arg1_0,
(Operand::Move(__self_0), Operand::Move(__arg1_0)) =>
__self_0 == __arg1_0,
(Operand::Constant(__self_0), Operand::Constant(__arg1_0)) =>
__self_0 == __arg1_0,
(Operand::RuntimeChecks(__self_0),
Operand::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) {
::std::mem::discriminant(self).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)]
1303pub enum Operand<'tcx> {
1304 Copy(Place<'tcx>),
1309
1310 Move(Place<'tcx>),
1328
1329 Constant(Box<ConstOperand<'tcx>>),
1331
1332 RuntimeChecks(RuntimeChecks),
1335}
1336
1337#[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) -> ConstOperand<'tcx> {
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: &ConstOperand<'tcx>) -> 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)]
1338#[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)]
1339pub struct ConstOperand<'tcx> {
1340 pub span: Span,
1341
1342 pub user_ty: Option<UserTypeAnnotationIndex>,
1348
1349 pub const_: Const<'tcx>,
1350}
1351
1352#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for Rvalue<'tcx> {
#[inline]
fn clone(&self) -> Rvalue<'tcx> {
match self {
Rvalue::Use(__self_0, __self_1) =>
Rvalue::Use(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Rvalue::Repeat(__self_0, __self_1) =>
Rvalue::Repeat(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Rvalue::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)),
Rvalue::ThreadLocalRef(__self_0) =>
Rvalue::ThreadLocalRef(::core::clone::Clone::clone(__self_0)),
Rvalue::RawPtr(__self_0, __self_1) =>
Rvalue::RawPtr(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Rvalue::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)),
Rvalue::BinaryOp(__self_0, __self_1) =>
Rvalue::BinaryOp(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Rvalue::UnaryOp(__self_0, __self_1) =>
Rvalue::UnaryOp(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Rvalue::Discriminant(__self_0) =>
Rvalue::Discriminant(::core::clone::Clone::clone(__self_0)),
Rvalue::Aggregate(__self_0, __self_1) =>
Rvalue::Aggregate(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Rvalue::CopyForDeref(__self_0) =>
Rvalue::CopyForDeref(::core::clone::Clone::clone(__self_0)),
Rvalue::WrapUnsafeBinder(__self_0, __self_1) =>
Rvalue::WrapUnsafeBinder(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Rvalue::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) {
::std::mem::discriminant(self).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: &Rvalue<'tcx>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Rvalue::Use(__self_0, __self_1),
Rvalue::Use(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Rvalue::Repeat(__self_0, __self_1),
Rvalue::Repeat(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Rvalue::Ref(__self_0, __self_1, __self_2),
Rvalue::Ref(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Rvalue::ThreadLocalRef(__self_0),
Rvalue::ThreadLocalRef(__arg1_0)) => __self_0 == __arg1_0,
(Rvalue::RawPtr(__self_0, __self_1),
Rvalue::RawPtr(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Rvalue::Cast(__self_0, __self_1, __self_2),
Rvalue::Cast(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Rvalue::BinaryOp(__self_0, __self_1),
Rvalue::BinaryOp(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Rvalue::UnaryOp(__self_0, __self_1),
Rvalue::UnaryOp(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Rvalue::Discriminant(__self_0),
Rvalue::Discriminant(__arg1_0)) => __self_0 == __arg1_0,
(Rvalue::Aggregate(__self_0, __self_1),
Rvalue::Aggregate(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Rvalue::CopyForDeref(__self_0),
Rvalue::CopyForDeref(__arg1_0)) => __self_0 == __arg1_0,
(Rvalue::WrapUnsafeBinder(__self_0, __self_1),
Rvalue::WrapUnsafeBinder(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Rvalue::Reborrow(__self_0, __self_1, __self_2),
Rvalue::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)]
1363pub enum Rvalue<'tcx> {
1364 Use(Operand<'tcx>, WithRetag),
1366
1367 Repeat(Operand<'tcx>, ty::Const<'tcx>),
1371
1372 Ref(Region<'tcx>, BorrowKind, Place<'tcx>),
1380
1381 ThreadLocalRef(DefId),
1393
1394 RawPtr(RawPtrKind, Place<'tcx>),
1402
1403 Cast(CastKind, Operand<'tcx>, Ty<'tcx>),
1409
1410 BinaryOp(BinOp, Box<(Operand<'tcx>, Operand<'tcx>)>),
1425
1426 UnaryOp(UnOp, Operand<'tcx>),
1432
1433 Discriminant(Place<'tcx>),
1444
1445 Aggregate(Box<AggregateKind<'tcx>>, IndexVec<FieldIdx, Operand<'tcx>>),
1454
1455 CopyForDeref(Place<'tcx>),
1466
1467 WrapUnsafeBinder(Operand<'tcx>, Ty<'tcx>),
1469
1470 Reborrow(Ty<'tcx>, Mutability, Place<'tcx>),
1488}
1489
1490#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for CastKind { }
#[automatically_derived]
impl ::core::clone::Clone for CastKind {
#[inline]
fn clone(&self) -> CastKind {
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 {
CastKind::PointerExposeProvenance =>
::core::fmt::Formatter::write_str(f,
"PointerExposeProvenance"),
CastKind::PointerWithExposedProvenance =>
::core::fmt::Formatter::write_str(f,
"PointerWithExposedProvenance"),
CastKind::PointerCoercion(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"PointerCoercion", __self_0, &__self_1),
CastKind::IntToInt =>
::core::fmt::Formatter::write_str(f, "IntToInt"),
CastKind::FloatToInt =>
::core::fmt::Formatter::write_str(f, "FloatToInt"),
CastKind::FloatToFloat =>
::core::fmt::Formatter::write_str(f, "FloatToFloat"),
CastKind::IntToFloat =>
::core::fmt::Formatter::write_str(f, "IntToFloat"),
CastKind::PtrToPtr =>
::core::fmt::Formatter::write_str(f, "PtrToPtr"),
CastKind::FnPtrToPtr =>
::core::fmt::Formatter::write_str(f, "FnPtrToPtr"),
CastKind::Transmute =>
::core::fmt::Formatter::write_str(f, "Transmute"),
CastKind::BoxDerefTransmute =>
::core::fmt::Formatter::write_str(f, "BoxDerefTransmute"),
CastKind::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: &CastKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(CastKind::PointerCoercion(__self_0, __self_1),
CastKind::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) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
CastKind::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) {
::std::mem::discriminant(self).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)]
1491pub enum CastKind {
1492 PointerExposeProvenance,
1496 PointerWithExposedProvenance,
1499 PointerCoercion(PointerCoercion, CoercionSource),
1509 IntToInt,
1510 FloatToInt,
1511 FloatToFloat,
1512 IntToFloat,
1513 PtrToPtr,
1514 FnPtrToPtr,
1515 Transmute,
1520 BoxDerefTransmute,
1528
1529 Subtype,
1540}
1541
1542#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for CoercionSource { }
#[automatically_derived]
impl ::core::clone::Clone for CoercionSource {
#[inline]
fn clone(&self) -> CoercionSource { *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: &CoercionSource) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for CoercionSource {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}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) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, 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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
CoercionSource::AsCast => {}
CoercionSource::Implicit => {}
}
}
}
};StableHash)]
1545pub enum CoercionSource {
1546 AsCast,
1548 Implicit,
1550}
1551
1552#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for AggregateKind<'tcx> {
#[inline]
fn clone(&self) -> AggregateKind<'tcx> {
match self {
AggregateKind::Array(__self_0) =>
AggregateKind::Array(::core::clone::Clone::clone(__self_0)),
AggregateKind::Tuple => AggregateKind::Tuple,
AggregateKind::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)),
AggregateKind::Closure(__self_0, __self_1) =>
AggregateKind::Closure(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
AggregateKind::Coroutine(__self_0, __self_1) =>
AggregateKind::Coroutine(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
AggregateKind::CoroutineClosure(__self_0, __self_1) =>
AggregateKind::CoroutineClosure(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
AggregateKind::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 {
AggregateKind::Array(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Array",
&__self_0),
AggregateKind::Tuple =>
::core::fmt::Formatter::write_str(f, "Tuple"),
AggregateKind::Adt(__self_0, __self_1, __self_2, __self_3,
__self_4) =>
::core::fmt::Formatter::debug_tuple_field5_finish(f, "Adt",
__self_0, __self_1, __self_2, __self_3, &__self_4),
AggregateKind::Closure(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Closure", __self_0, &__self_1),
AggregateKind::Coroutine(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Coroutine", __self_0, &__self_1),
AggregateKind::CoroutineClosure(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"CoroutineClosure", __self_0, &__self_1),
AggregateKind::RawPtr(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_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: &AggregateKind<'tcx>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(AggregateKind::Array(__self_0),
AggregateKind::Array(__arg1_0)) => __self_0 == __arg1_0,
(AggregateKind::Adt(__self_0, __self_1, __self_2, __self_3,
__self_4),
AggregateKind::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,
(AggregateKind::Closure(__self_0, __self_1),
AggregateKind::Closure(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(AggregateKind::Coroutine(__self_0, __self_1),
AggregateKind::Coroutine(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(AggregateKind::CoroutineClosure(__self_0, __self_1),
AggregateKind::CoroutineClosure(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(AggregateKind::RawPtr(__self_0, __self_1),
AggregateKind::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<GenericArgsRef<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<Option<UserTypeAnnotationIndex>>;
let _: ::core::cmp::AssertParamIsEq<Option<FieldIdx>>;
let _: ::core::cmp::AssertParamIsEq<GenericArgsRef<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<GenericArgsRef<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<GenericArgsRef<'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) {
::std::mem::discriminant(self).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)]
1553#[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)]
1554pub enum AggregateKind<'tcx> {
1555 Array(Ty<'tcx>),
1557 Tuple,
1558
1559 Adt(DefId, VariantIdx, GenericArgsRef<'tcx>, Option<UserTypeAnnotationIndex>, Option<FieldIdx>),
1565
1566 Closure(DefId, GenericArgsRef<'tcx>),
1567 Coroutine(DefId, GenericArgsRef<'tcx>),
1568 CoroutineClosure(DefId, GenericArgsRef<'tcx>),
1569
1570 RawPtr(Ty<'tcx>, Mutability),
1584}
1585
1586#[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) -> RuntimeChecks { *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: &RuntimeChecks) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for RuntimeChecks {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}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) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, 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) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
RuntimeChecks::UbChecks => {}
RuntimeChecks::ContractChecks => {}
RuntimeChecks::OverflowChecks => {}
}
}
}
};StableHash)]
1587pub enum RuntimeChecks {
1588 UbChecks,
1591 ContractChecks,
1594 OverflowChecks,
1597}
1598
1599impl RuntimeChecks {
1600 pub fn value(self, sess: &rustc_session::Session) -> bool {
1601 match self {
1602 Self::UbChecks => sess.ub_checks(),
1603 Self::ContractChecks => sess.contract_checks(),
1604 Self::OverflowChecks => sess.overflow_checks(),
1605 }
1606 }
1607}
1608
1609#[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) -> UnOp { *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: &UnOp) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for UnOp {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for UnOp {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1610#[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) {
::std::mem::discriminant(self).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)]
1611pub enum UnOp {
1612 Not,
1614 Neg,
1616 PtrMetadata,
1625}
1626
1627#[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) -> BinOp { *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::write_str(f,
match self {
BinOp::Add => "Add",
BinOp::AddUnchecked => "AddUnchecked",
BinOp::AddWithOverflow => "AddWithOverflow",
BinOp::Sub => "Sub",
BinOp::SubUnchecked => "SubUnchecked",
BinOp::SubWithOverflow => "SubWithOverflow",
BinOp::Mul => "Mul",
BinOp::MulUnchecked => "MulUnchecked",
BinOp::MulWithOverflow => "MulWithOverflow",
BinOp::Div => "Div",
BinOp::Rem => "Rem",
BinOp::BitXor => "BitXor",
BinOp::BitAnd => "BitAnd",
BinOp::BitOr => "BitOr",
BinOp::Shl => "Shl",
BinOp::ShlUnchecked => "ShlUnchecked",
BinOp::Shr => "Shr",
BinOp::ShrUnchecked => "ShrUnchecked",
BinOp::Eq => "Eq",
BinOp::Lt => "Lt",
BinOp::Le => "Le",
BinOp::Ne => "Ne",
BinOp::Ge => "Ge",
BinOp::Gt => "Gt",
BinOp::Cmp => "Cmp",
BinOp::Offset => "Offset",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for BinOp { }
#[automatically_derived]
impl ::core::cmp::PartialEq for BinOp {
#[inline]
fn eq(&self, other: &BinOp) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for BinOp {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for BinOp {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1628#[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) {
::std::mem::discriminant(self).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)]
1629pub enum BinOp {
1630 Add,
1632 AddUnchecked,
1634 AddWithOverflow,
1637 Sub,
1639 SubUnchecked,
1641 SubWithOverflow,
1644 Mul,
1646 MulUnchecked,
1648 MulWithOverflow,
1651 Div,
1658 Rem,
1666 BitXor,
1668 BitAnd,
1670 BitOr,
1672 Shl,
1679 ShlUnchecked,
1681 Shr,
1691 ShrUnchecked,
1693 Eq,
1695 Lt,
1697 Le,
1699 Ne,
1701 Ge,
1703 Gt,
1705 Cmp,
1717 Offset,
1719}
1720
1721#[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) -> AssignOp { *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::write_str(f,
match self {
AssignOp::AddAssign => "AddAssign",
AssignOp::SubAssign => "SubAssign",
AssignOp::MulAssign => "MulAssign",
AssignOp::DivAssign => "DivAssign",
AssignOp::RemAssign => "RemAssign",
AssignOp::BitXorAssign => "BitXorAssign",
AssignOp::BitAndAssign => "BitAndAssign",
AssignOp::BitOrAssign => "BitOrAssign",
AssignOp::ShlAssign => "ShlAssign",
AssignOp::ShrAssign => "ShrAssign",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for AssignOp { }
#[automatically_derived]
impl ::core::cmp::PartialEq for AssignOp {
#[inline]
fn eq(&self, other: &AssignOp) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for AssignOp {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}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) {
::std::mem::discriminant(self).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)]
1724pub enum AssignOp {
1725 AddAssign,
1726 SubAssign,
1727 MulAssign,
1728 DivAssign,
1729 RemAssign,
1730 BitXorAssign,
1731 BitAndAssign,
1732 BitOrAssign,
1733 ShlAssign,
1734 ShrAssign,
1735}
1736
1737impl From<AssignOp> for BinOp {
1741 fn from(op: AssignOp) -> BinOp {
1742 match op {
1743 AssignOp::AddAssign => BinOp::Add,
1744 AssignOp::SubAssign => BinOp::Sub,
1745 AssignOp::MulAssign => BinOp::Mul,
1746 AssignOp::DivAssign => BinOp::Div,
1747 AssignOp::RemAssign => BinOp::Rem,
1748 AssignOp::BitXorAssign => BinOp::BitXor,
1749 AssignOp::BitAndAssign => BinOp::BitAnd,
1750 AssignOp::BitOrAssign => BinOp::BitOr,
1751 AssignOp::ShlAssign => BinOp::Shl,
1752 AssignOp::ShrAssign => BinOp::Shr,
1753 }
1754 }
1755}
1756
1757#[cfg(target_pointer_width = "64")]
1759mod size_asserts {
1760 use rustc_data_structures::static_assert_size;
1761
1762 use super::*;
1763 const _: [(); 32] = [(); ::std::mem::size_of::<AggregateKind<'_>>()];static_assert_size!(AggregateKind<'_>, 32);
1765 const _: [(); 24] = [(); ::std::mem::size_of::<Operand<'_>>()];static_assert_size!(Operand<'_>, 24);
1766 const _: [(); 16] = [(); ::std::mem::size_of::<Place<'_>>()];static_assert_size!(Place<'_>, 16);
1767 const _: [(); 24] = [(); ::std::mem::size_of::<PlaceElem<'_>>()];static_assert_size!(PlaceElem<'_>, 24);
1768 const _: [(); 40] = [(); ::std::mem::size_of::<Rvalue<'_>>()];static_assert_size!(Rvalue<'_>, 40);
1769 const _: [(); 16] = [(); ::std::mem::size_of::<StatementKind<'_>>()];static_assert_size!(StatementKind<'_>, 16);
1770 const _: [(); 80] = [(); ::std::mem::size_of::<TerminatorKind<'_>>()];static_assert_size!(TerminatorKind<'_>, 80);
1771 }