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::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
13use rustc_span::def_id::LocalDefId;
14use rustc_span::source_map::Spanned;
15use rustc_span::{Span, Symbol};
16use rustc_target::asm::InlineAsmRegOrRegClass;
17use smallvec::SmallVec;
18
19use super::{BasicBlock, Const, Local, UserTypeProjection};
20use crate::mir::coverage::CoverageKind;
21use crate::ty::adjustment::PointerCoercion;
22use crate::ty::{self, GenericArgsRef, List, Region, Ty, UserTypeAnnotationIndex};
23
24#[derive(#[automatically_derived]
impl ::core::marker::Copy for MirPhase { }Copy, #[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::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_receiver_is_total_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> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(MirPhase::Analysis(__self_0), MirPhase::Analysis(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(MirPhase::Runtime(__self_0), MirPhase::Runtime(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}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)]
42#[derive(const _: () =
{
impl<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for MirPhase {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
MirPhase::Built => {}
MirPhase::Analysis(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
MirPhase::Runtime(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
43pub enum MirPhase {
44 Built,
52
53 Analysis(AnalysisPhase),
65
66 Runtime(RuntimePhase),
100}
101
102#[derive(#[automatically_derived]
impl ::core::marker::Copy for AnalysisPhase { }Copy, #[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);
match *self {
AnalysisPhase::Initial => {}
AnalysisPhase::PostCleanup => {}
}
}
}
};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::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_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for AnalysisPhase {
#[inline]
fn partial_cmp(&self, other: &AnalysisPhase)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}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)]
104#[derive(const _: () =
{
impl<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for AnalysisPhase {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
AnalysisPhase::Initial => {}
AnalysisPhase::PostCleanup => {}
}
}
}
};HashStable)]
105pub enum AnalysisPhase {
106 Initial = 0,
107 PostCleanup = 1,
122}
123
124#[derive(#[automatically_derived]
impl ::core::marker::Copy for RuntimePhase { }Copy, #[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);
match *self {
RuntimePhase::Initial => {}
RuntimePhase::PostCleanup => {}
RuntimePhase::Optimized => {}
}
}
}
};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::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_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for RuntimePhase {
#[inline]
fn partial_cmp(&self, other: &RuntimePhase)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}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)]
126#[derive(const _: () =
{
impl<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for RuntimePhase {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
RuntimePhase::Initial => {}
RuntimePhase::PostCleanup => {}
RuntimePhase::Optimized => {}
}
}
}
};HashStable)]
127pub enum RuntimePhase {
128 Initial = 0,
144 PostCleanup = 1,
147 Optimized = 2,
148}
149
150#[derive(#[automatically_derived]
impl ::core::marker::Copy for BorrowKind { }Copy, #[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::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_receiver_is_total_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> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(BorrowKind::Fake(__self_0), BorrowKind::Fake(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(BorrowKind::Mut { kind: __self_0 }, BorrowKind::Mut {
kind: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}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)]
154#[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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for BorrowKind {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
BorrowKind::Shared => {}
BorrowKind::Fake(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
BorrowKind::Mut { kind: ref __binding_0 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
155pub enum BorrowKind {
156 Shared,
158
159 Fake(FakeBorrowKind),
179
180 Mut { kind: MutBorrowKind },
182}
183
184#[derive(#[automatically_derived]
impl ::core::marker::Copy for RawPtrKind { }Copy, #[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::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_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for RawPtrKind {
#[inline]
fn partial_cmp(&self, other: &RawPtrKind)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}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);
match *self {
RawPtrKind::Mut => {}
RawPtrKind::Const => {}
RawPtrKind::FakeForPtrMetadata => {}
}
}
}
};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)]
185#[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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for RawPtrKind {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
RawPtrKind::Mut => {}
RawPtrKind::Const => {}
RawPtrKind::FakeForPtrMetadata => {}
}
}
}
};HashStable)]
186pub enum RawPtrKind {
187 Mut,
188 Const,
189 FakeForPtrMetadata,
198}
199
200#[derive(#[automatically_derived]
impl ::core::marker::Copy for MutBorrowKind { }Copy, #[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::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_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for MutBorrowKind {
#[inline]
fn partial_cmp(&self, other: &MutBorrowKind)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}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);
match *self {
MutBorrowKind::Default => {}
MutBorrowKind::TwoPhaseBorrow => {}
MutBorrowKind::ClosureCapture => {}
}
}
}
};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)]
201#[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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for MutBorrowKind {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
MutBorrowKind::Default => {}
MutBorrowKind::TwoPhaseBorrow => {}
MutBorrowKind::ClosureCapture => {}
}
}
}
};HashStable)]
202pub enum MutBorrowKind {
203 Default,
204 TwoPhaseBorrow,
206 ClosureCapture,
248}
249
250#[derive(#[automatically_derived]
impl ::core::marker::Copy for FakeBorrowKind { }Copy, #[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::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_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for FakeBorrowKind {
#[inline]
fn partial_cmp(&self, other: &FakeBorrowKind)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}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);
match *self {
FakeBorrowKind::Shallow => {}
FakeBorrowKind::Deep => {}
}
}
}
};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)]
251#[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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for FakeBorrowKind {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
FakeBorrowKind::Shallow => {}
FakeBorrowKind::Deep => {}
}
}
}
};HashStable)]
252pub enum FakeBorrowKind {
253 Shallow,
285 Deep,
299}
300
301#[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::Retag(__self_0, __self_1) =>
StatementKind::Retag(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
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::fmt::Debug for StatementKind<'tcx> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
StatementKind::Assign(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Assign",
&__self_0),
StatementKind::FakeRead(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"FakeRead", &__self_0),
StatementKind::SetDiscriminant {
place: __self_0, variant_index: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"SetDiscriminant", "place", __self_0, "variant_index",
&__self_1),
StatementKind::StorageLive(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"StorageLive", &__self_0),
StatementKind::StorageDead(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"StorageDead", &__self_0),
StatementKind::Retag(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Retag",
__self_0, &__self_1),
StatementKind::PlaceMention(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"PlaceMention", &__self_0),
StatementKind::AscribeUserType(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"AscribeUserType", __self_0, &__self_1),
StatementKind::Coverage(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Coverage", &__self_0),
StatementKind::Intrinsic(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Intrinsic", &__self_0),
StatementKind::ConstEvalCounter =>
::core::fmt::Formatter::write_str(f, "ConstEvalCounter"),
StatementKind::Nop => ::core::fmt::Formatter::write_str(f, "Nop"),
StatementKind::BackwardIncompatibleDropHint {
place: __self_0, reason: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"BackwardIncompatibleDropHint", "place", __self_0, "reason",
&__self_1),
}
}
}Debug, #[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::Retag(__self_0, __self_1),
StatementKind::Retag(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(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::Retag(ref __binding_0, ref __binding_1) => {
5usize
}
StatementKind::PlaceMention(ref __binding_0) => { 6usize }
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => {
7usize
}
StatementKind::Coverage(ref __binding_0) => { 8usize }
StatementKind::Intrinsic(ref __binding_0) => { 9usize }
StatementKind::ConstEvalCounter => { 10usize }
StatementKind::Nop => { 11usize }
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } => {
12usize
}
};
::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::Retag(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__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::Retag(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
StatementKind::PlaceMention(::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
StatementKind::AscribeUserType(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
StatementKind::Coverage(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
StatementKind::Intrinsic(::rustc_serialize::Decodable::decode(__decoder))
}
10usize => { StatementKind::ConstEvalCounter }
11usize => { StatementKind::Nop }
12usize => {
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..13, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl<'tcx> ::core::hash::Hash for StatementKind<'tcx> {
#[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 {
StatementKind::Assign(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
StatementKind::FakeRead(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
StatementKind::SetDiscriminant {
place: __self_0, variant_index: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
StatementKind::StorageLive(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
StatementKind::StorageDead(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
StatementKind::Retag(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
StatementKind::PlaceMention(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
StatementKind::AscribeUserType(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
StatementKind::Coverage(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
StatementKind::Intrinsic(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
StatementKind::BackwardIncompatibleDropHint {
place: __self_0, reason: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
_ => {}
}
}
}Hash, const _: () =
{
impl<'tcx, '__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for StatementKind<'tcx> {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
StatementKind::Assign(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
StatementKind::FakeRead(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
StatementKind::SetDiscriminant {
place: ref __binding_0, variant_index: ref __binding_1 } =>
{
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
StatementKind::StorageLive(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
StatementKind::StorageDead(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
StatementKind::Retag(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
StatementKind::PlaceMention(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
StatementKind::Coverage(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
StatementKind::Intrinsic(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
StatementKind::ConstEvalCounter => {}
StatementKind::Nop => {}
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
310#[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::Retag(__binding_0, __binding_1) => {
StatementKind::Retag(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__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::Retag(__binding_0, __binding_1) => {
StatementKind::Retag(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__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::Retag(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::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)]
311pub enum StatementKind<'tcx> {
312 Assign(Box<(Place<'tcx>, Rvalue<'tcx>)>),
342
343 FakeRead(Box<(FakeReadCause, Place<'tcx>)>),
359
360 SetDiscriminant { place: Box<Place<'tcx>>, variant_index: VariantIdx },
366
367 StorageLive(Local),
386
387 StorageDead(Local),
389
390 Retag(RetagKind, Box<Place<'tcx>>),
402
403 PlaceMention(Box<Place<'tcx>>),
410
411 AscribeUserType(Box<(Place<'tcx>, UserTypeProjection)>, ty::Variance),
428
429 Coverage(
440 #[type_foldable(identity)]
444 #[type_visitable(ignore)]
445 CoverageKind,
446 ),
447
448 Intrinsic(Box<NonDivergingIntrinsic<'tcx>>),
451
452 ConstEvalCounter,
457
458 Nop,
460
461 BackwardIncompatibleDropHint {
467 place: Box<Place<'tcx>>,
469 reason: BackwardIncompatibleDropReason,
471 },
472}
473
474#[derive(
475 #[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,
476 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,
477 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,
478 #[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,
479 #[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,
480 #[automatically_derived]
impl<'tcx> ::core::hash::Hash for NonDivergingIntrinsic<'tcx> {
#[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 {
NonDivergingIntrinsic::Assume(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
NonDivergingIntrinsic::CopyNonOverlapping(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash,
481 const _: () =
{
impl<'tcx, '__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for NonDivergingIntrinsic<'tcx> {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
NonDivergingIntrinsic::Assume(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
NonDivergingIntrinsic::CopyNonOverlapping(ref __binding_0)
=> {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable,
482 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,
483 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
484)]
485pub enum NonDivergingIntrinsic<'tcx> {
486 Assume(Operand<'tcx>),
493
494 CopyNonOverlapping(CopyNonOverlapping<'tcx>),
508}
509
510#[derive(#[automatically_derived]
impl ::core::marker::Copy for RetagKind { }Copy, #[automatically_derived]
impl ::core::clone::Clone for RetagKind {
#[inline]
fn clone(&self) -> RetagKind { *self }
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for RetagKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RetagKind::FnEntry => { 0usize }
RetagKind::TwoPhase => { 1usize }
RetagKind::Raw => { 2usize }
RetagKind::Default => { 3usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
RetagKind::FnEntry => {}
RetagKind::TwoPhase => {}
RetagKind::Raw => {}
RetagKind::Default => {}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for RetagKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RetagKind::FnEntry }
1usize => { RetagKind::TwoPhase }
2usize => { RetagKind::Raw }
3usize => { RetagKind::Default }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RetagKind`, expected 0..4, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::fmt::Debug for RetagKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RetagKind::FnEntry => "FnEntry",
RetagKind::TwoPhase => "TwoPhase",
RetagKind::Raw => "Raw",
RetagKind::Default => "Default",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for RetagKind {
#[inline]
fn eq(&self, other: &RetagKind) -> 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 RetagKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for RetagKind {
#[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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for RetagKind {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
RetagKind::FnEntry => {}
RetagKind::TwoPhase => {}
RetagKind::Raw => {}
RetagKind::Default => {}
}
}
}
};HashStable)]
512#[rustc_pass_by_value]
513pub enum RetagKind {
514 FnEntry,
516 TwoPhase,
518 Raw,
520 Default,
522}
523
524#[derive(#[automatically_derived]
impl ::core::marker::Copy for FakeReadCause { }Copy, #[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, #[automatically_derived]
impl ::core::hash::Hash for FakeReadCause {
#[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 {
FakeReadCause::ForMatchedPlace(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
FakeReadCause::ForLet(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, const _: () =
{
impl<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for FakeReadCause {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
FakeReadCause::ForMatchGuard => {}
FakeReadCause::ForMatchedPlace(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
FakeReadCause::ForGuardBinding => {}
FakeReadCause::ForLet(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
FakeReadCause::ForIndex => {}
}
}
}
};HashStable, #[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)]
526pub enum FakeReadCause {
527 ForMatchGuard,
540
541 ForMatchedPlace(Option<LocalDefId>),
566
567 ForGuardBinding,
581
582 ForLet(Option<LocalDefId>),
601
602 ForIndex,
629}
630
631#[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::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) {
match *self {
CopyNonOverlapping {
src: ref __binding_0,
dst: ref __binding_1,
count: 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 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, #[automatically_derived]
impl<'tcx> ::core::hash::Hash for CopyNonOverlapping<'tcx> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.src, state);
::core::hash::Hash::hash(&self.dst, state);
::core::hash::Hash::hash(&self.count, state)
}
}Hash, const _: () =
{
impl<'tcx, '__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for CopyNonOverlapping<'tcx> {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
CopyNonOverlapping {
src: ref __binding_0,
dst: ref __binding_1,
count: ref __binding_2 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
632#[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)]
633pub struct CopyNonOverlapping<'tcx> {
634 pub src: Operand<'tcx>,
635 pub dst: Operand<'tcx>,
636 pub count: Operand<'tcx>,
638}
639
640#[derive(#[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);
match *self {
CallSource::OverloadedOperator => {}
CallSource::MatchCmp => {}
CallSource::Misc => {}
CallSource::Use => {}
CallSource::Normal => {}
}
}
}
};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::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, #[automatically_derived]
impl ::core::hash::Hash for CallSource {
#[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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for CallSource {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
CallSource::OverloadedOperator => {}
CallSource::MatchCmp => {}
CallSource::Misc => {}
CallSource::Use => {}
CallSource::Normal => {}
}
}
}
};HashStable)]
643#[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)]
644pub enum CallSource {
645 OverloadedOperator,
648 MatchCmp,
653 Misc,
656 Use,
658 Normal,
660}
661
662#[derive(#[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);
match *self {
InlineAsmMacro::Asm => {}
InlineAsmMacro::NakedAsm => {}
}
}
}
};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, #[automatically_derived]
impl ::core::hash::Hash for InlineAsmMacro {
#[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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for InlineAsmMacro {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
InlineAsmMacro::Asm => {}
InlineAsmMacro::NakedAsm => {}
}
}
}
};HashStable, #[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)]
663#[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)]
664pub enum InlineAsmMacro {
666 Asm,
668 NakedAsm,
670}
671
672#[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,
async_fut: __self_5 } =>
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),
async_fut: ::core::clone::Clone::clone(__self_5),
},
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,
async_fut: ref __binding_5 } => {
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,
async_fut: ref __binding_5 } => {
::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);
}
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),
async_fut: ::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, #[automatically_derived]
impl<'tcx> ::core::hash::Hash for TerminatorKind<'tcx> {
#[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 {
TerminatorKind::Goto { target: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
TerminatorKind::SwitchInt { discr: __self_0, targets: __self_1 }
=> {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
TerminatorKind::UnwindTerminate(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
TerminatorKind::Drop {
place: __self_0,
target: __self_1,
unwind: __self_2,
replace: __self_3,
drop: __self_4,
async_fut: __self_5 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state);
::core::hash::Hash::hash(__self_5, state)
}
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 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state);
::core::hash::Hash::hash(__self_5, state);
::core::hash::Hash::hash(__self_6, state)
}
TerminatorKind::TailCall {
func: __self_0, args: __self_1, fn_span: __self_2 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
TerminatorKind::Assert {
cond: __self_0,
expected: __self_1,
msg: __self_2,
target: __self_3,
unwind: __self_4 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state)
}
TerminatorKind::Yield {
value: __self_0,
resume: __self_1,
resume_arg: __self_2,
drop: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
TerminatorKind::FalseEdge {
real_target: __self_0, imaginary_target: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
TerminatorKind::FalseUnwind {
real_target: __self_0, unwind: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
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 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state);
::core::hash::Hash::hash(__self_5, state);
::core::hash::Hash::hash(__self_6, state)
}
_ => {}
}
}
}Hash, const _: () =
{
impl<'tcx, '__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for TerminatorKind<'tcx> {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
TerminatorKind::Goto { target: ref __binding_0 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
TerminatorKind::SwitchInt {
discr: ref __binding_0, targets: ref __binding_1 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
TerminatorKind::UnwindResume => {}
TerminatorKind::UnwindTerminate(ref __binding_0) => {
{ __binding_0.hash_stable(__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,
async_fut: ref __binding_5 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
{ __binding_3.hash_stable(__hcx, __hasher); }
{ __binding_4.hash_stable(__hcx, __hasher); }
{ __binding_5.hash_stable(__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.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
{ __binding_3.hash_stable(__hcx, __hasher); }
{ __binding_4.hash_stable(__hcx, __hasher); }
{ __binding_5.hash_stable(__hcx, __hasher); }
{ __binding_6.hash_stable(__hcx, __hasher); }
}
TerminatorKind::TailCall {
func: ref __binding_0,
args: ref __binding_1,
fn_span: ref __binding_2 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__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.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
{ __binding_3.hash_stable(__hcx, __hasher); }
{ __binding_4.hash_stable(__hcx, __hasher); }
}
TerminatorKind::Yield {
value: ref __binding_0,
resume: ref __binding_1,
resume_arg: ref __binding_2,
drop: ref __binding_3 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
{ __binding_3.hash_stable(__hcx, __hasher); }
}
TerminatorKind::CoroutineDrop => {}
TerminatorKind::FalseEdge {
real_target: ref __binding_0,
imaginary_target: ref __binding_1 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
TerminatorKind::FalseUnwind {
real_target: ref __binding_0, unwind: ref __binding_1 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__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.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
{ __binding_3.hash_stable(__hcx, __hasher); }
{ __binding_4.hash_stable(__hcx, __hasher); }
{ __binding_5.hash_stable(__hcx, __hasher); }
{ __binding_6.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, #[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,
async_fut: __self_5 }, TerminatorKind::Drop {
place: __arg1_0,
target: __arg1_1,
unwind: __arg1_2,
replace: __arg1_3,
drop: __arg1_4,
async_fut: __arg1_5 }) =>
__self_3 == __arg1_3 && __self_0 == __arg1_0 &&
__self_1 == __arg1_1 && __self_2 == __arg1_2 &&
__self_4 == __arg1_4 && __self_5 == __arg1_5,
(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,
async_fut: __binding_5 } => {
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)?,
async_fut: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_5,
__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,
async_fut: __binding_5 } => {
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),
async_fut: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_5,
__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,
async_fut: ref __binding_5 } => {
{
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);
}
}
}
}
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)]
703pub enum TerminatorKind<'tcx> {
704 Goto { target: BasicBlock },
706
707 SwitchInt {
716 discr: Operand<'tcx>,
718 targets: SwitchTargets,
719 },
720
721 UnwindResume,
728
729 UnwindTerminate(UnwindTerminateReason),
734
735 Return,
747
748 Unreachable,
752
753 Drop {
791 place: Place<'tcx>,
792 target: BasicBlock,
793 unwind: UnwindAction,
794 replace: bool,
795 drop: Option<BasicBlock>,
797 async_fut: Option<Local>,
799 },
800
801 Call {
812 func: Operand<'tcx>,
814 args: Box<[Spanned<Operand<'tcx>>]>,
821 destination: Place<'tcx>,
823 target: Option<BasicBlock>,
825 unwind: UnwindAction,
827 call_source: CallSource,
829 fn_span: Span,
832 },
833
834 TailCall {
851 func: Operand<'tcx>,
853 args: Box<[Spanned<Operand<'tcx>>]>,
858 fn_span: Span,
862 },
863
864 Assert {
876 cond: Operand<'tcx>,
877 expected: bool,
878 msg: Box<AssertMessage<'tcx>>,
879 target: BasicBlock,
880 unwind: UnwindAction,
881 },
882
883 Yield {
901 value: Operand<'tcx>,
903 resume: BasicBlock,
905 resume_arg: Place<'tcx>,
907 drop: Option<BasicBlock>,
909 },
910
911 CoroutineDrop,
922
923 FalseEdge {
930 real_target: BasicBlock,
932 imaginary_target: BasicBlock,
935 },
936
937 FalseUnwind {
945 real_target: BasicBlock,
947 unwind: UnwindAction,
953 },
954
955 InlineAsm {
958 asm_macro: InlineAsmMacro,
960
961 #[type_foldable(identity)]
963 #[type_visitable(ignore)]
964 template: &'tcx [InlineAsmTemplatePiece],
965
966 operands: Box<[InlineAsmOperand<'tcx>]>,
968
969 options: InlineAsmOptions,
971
972 #[type_foldable(identity)]
975 #[type_visitable(ignore)]
976 line_spans: &'tcx [Span],
977
978 targets: Box<[BasicBlock]>,
982
983 unwind: UnwindAction,
986 },
987}
988
989#[derive(
990 #[automatically_derived]
impl ::core::clone::Clone for BackwardIncompatibleDropReason {
#[inline]
fn clone(&self) -> BackwardIncompatibleDropReason {
BackwardIncompatibleDropReason::Edition2024
}
}Clone,
991 #[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,
992 const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for
BackwardIncompatibleDropReason {
fn encode(&self, __encoder: &mut __E) {
match *self {
BackwardIncompatibleDropReason::Edition2024 => {}
}
}
}
};TyEncodable,
993 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,
994 #[automatically_derived]
impl ::core::hash::Hash for BackwardIncompatibleDropReason {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {}
}Hash,
995 const _: () =
{
impl<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for BackwardIncompatibleDropReason {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
BackwardIncompatibleDropReason::Edition2024 => {}
}
}
}
};HashStable,
996 #[automatically_derived]
impl ::core::cmp::PartialEq for BackwardIncompatibleDropReason {
#[inline]
fn eq(&self, other: &BackwardIncompatibleDropReason) -> bool { true }
}PartialEq,
997 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,
998 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
999)]
1000pub enum BackwardIncompatibleDropReason {
1001 Edition2024,
1002}
1003
1004#[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) {
match *self {
SwitchTargets {
values: ref __binding_0, targets: 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 SwitchTargets {
fn decode(__decoder: &mut __D) -> Self {
SwitchTargets {
values: ::rustc_serialize::Decodable::decode(__decoder),
targets: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::hash::Hash for SwitchTargets {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.values, state);
::core::hash::Hash::hash(&self.targets, state)
}
}Hash, const _: () =
{
impl<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for SwitchTargets {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
SwitchTargets {
values: ref __binding_0, targets: ref __binding_1 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, #[automatically_derived]
impl ::core::cmp::PartialEq for SwitchTargets {
#[inline]
fn eq(&self, other: &SwitchTargets) -> bool {
self.values == other.values && self.targets == other.targets
}
}PartialEq)]
1005pub struct SwitchTargets {
1006 pub(super) values: SmallVec<[Pu128; 1]>,
1009
1010 pub(super) targets: SmallVec<[BasicBlock; 2]>,
1031}
1032
1033#[derive(#[automatically_derived]
impl ::core::marker::Copy for UnwindAction { }Copy, #[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::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_receiver_is_total_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, #[automatically_derived]
impl ::core::hash::Hash for UnwindAction {
#[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 {
UnwindAction::Terminate(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
UnwindAction::Cleanup(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, const _: () =
{
impl<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for UnwindAction {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
UnwindAction::Continue => {}
UnwindAction::Unreachable => {}
UnwindAction::Terminate(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
UnwindAction::Cleanup(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
1035#[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)]
1036pub enum UnwindAction {
1037 Continue,
1042 Unreachable,
1044 Terminate(UnwindTerminateReason),
1048 Cleanup(BasicBlock),
1050}
1051
1052#[derive(#[automatically_derived]
impl ::core::marker::Copy for UnwindTerminateReason { }Copy, #[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::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_receiver_is_total_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);
match *self {
UnwindTerminateReason::Abi => {}
UnwindTerminateReason::InCleanup => {}
}
}
}
};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, #[automatically_derived]
impl ::core::hash::Hash for UnwindTerminateReason {
#[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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for UnwindTerminateReason {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
UnwindTerminateReason::Abi => {}
UnwindTerminateReason::InCleanup => {}
}
}
}
};HashStable)]
1054#[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)]
1055pub enum UnwindTerminateReason {
1056 Abi,
1058 InCleanup,
1061}
1062
1063#[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::InvalidEnumConstruction(__self_0) =>
AssertKind::InvalidEnumConstruction(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl<O: ::core::hash::Hash> ::core::hash::Hash for AssertKind<O> {
#[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 {
AssertKind::BoundsCheck { len: __self_0, index: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
AssertKind::Overflow(__self_0, __self_1, __self_2) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
AssertKind::OverflowNeg(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
AssertKind::DivisionByZero(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
AssertKind::RemainderByZero(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
AssertKind::ResumedAfterReturn(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
AssertKind::ResumedAfterPanic(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
AssertKind::ResumedAfterDrop(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
AssertKind::MisalignedPointerDereference {
required: __self_0, found: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
AssertKind::InvalidEnumConstruction(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, const _: () =
{
impl<'__ctx, O>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for AssertKind<O> where
O: ::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
{
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
AssertKind::BoundsCheck {
len: ref __binding_0, index: ref __binding_1 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
AssertKind::Overflow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
AssertKind::OverflowNeg(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
AssertKind::DivisionByZero(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
AssertKind::RemainderByZero(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
AssertKind::ResumedAfterReturn(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
AssertKind::ResumedAfterPanic(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
AssertKind::ResumedAfterDrop(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
AssertKind::MisalignedPointerDereference {
required: ref __binding_0, found: ref __binding_1 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
AssertKind::NullPointerDereference => {}
AssertKind::InvalidEnumConstruction(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, #[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::InvalidEnumConstruction(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"InvalidEnumConstruction", &__self_0),
}
}
}Debug)]
1065#[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::InvalidEnumConstruction(ref __binding_0) => {
10usize
}
};
::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::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::InvalidEnumConstruction(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AssertKind`, expected 0..11, 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::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::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::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)]
1066pub enum AssertKind<O> {
1067 BoundsCheck { len: O, index: O },
1068 Overflow(BinOp, O, O),
1069 OverflowNeg(O),
1070 DivisionByZero(O),
1071 RemainderByZero(O),
1072 ResumedAfterReturn(CoroutineKind),
1073 ResumedAfterPanic(CoroutineKind),
1074 ResumedAfterDrop(CoroutineKind),
1075 MisalignedPointerDereference { required: O, found: O },
1076 NullPointerDereference,
1077 InvalidEnumConstruction(O),
1078}
1079
1080#[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::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, #[automatically_derived]
impl<'tcx> ::core::hash::Hash for InlineAsmOperand<'tcx> {
#[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 {
InlineAsmOperand::In { reg: __self_0, value: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
InlineAsmOperand::Out {
reg: __self_0, late: __self_1, place: __self_2 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
InlineAsmOperand::InOut {
reg: __self_0,
late: __self_1,
in_value: __self_2,
out_place: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
InlineAsmOperand::Const { value: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
InlineAsmOperand::SymFn { value: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
InlineAsmOperand::SymStatic { def_id: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
InlineAsmOperand::Label { target_index: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, const _: () =
{
impl<'tcx, '__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for InlineAsmOperand<'tcx> {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, value: ref __binding_1 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
place: ref __binding_2 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
in_value: ref __binding_2,
out_place: ref __binding_3 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
{ __binding_3.hash_stable(__hcx, __hasher); }
}
InlineAsmOperand::Const { value: ref __binding_0 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
InlineAsmOperand::SymFn { value: ref __binding_0 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
InlineAsmOperand::SymStatic { def_id: ref __binding_0 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
InlineAsmOperand::Label { target_index: ref __binding_0 } =>
{
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
1081#[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)]
1082pub enum InlineAsmOperand<'tcx> {
1083 In {
1084 reg: InlineAsmRegOrRegClass,
1085 value: Operand<'tcx>,
1086 },
1087 Out {
1088 reg: InlineAsmRegOrRegClass,
1089 late: bool,
1090 place: Option<Place<'tcx>>,
1091 },
1092 InOut {
1093 reg: InlineAsmRegOrRegClass,
1094 late: bool,
1095 in_value: Operand<'tcx>,
1096 out_place: Option<Place<'tcx>>,
1097 },
1098 Const {
1099 value: Box<ConstOperand<'tcx>>,
1100 },
1101 SymFn {
1102 value: Box<ConstOperand<'tcx>>,
1103 },
1104 SymStatic {
1105 def_id: DefId,
1106 },
1107 Label {
1108 target_index: usize,
1110 },
1111}
1112
1113pub type AssertMessage<'tcx> = AssertKind<Operand<'tcx>>;
1115
1116#[derive(#[automatically_derived]
impl<'tcx> ::core::marker::Copy for Place<'tcx> { }Copy, #[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::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_receiver_is_total_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) {
match *self {
Place { local: ref __binding_0, projection: __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, '__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for Place<'tcx> {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
Place { local: ref __binding_0, projection: ref __binding_1
} => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
1189pub struct Place<'tcx> {
1190 pub local: Local,
1191
1192 pub projection: &'tcx List<PlaceElem<'tcx>>,
1194}
1195
1196#[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)),
}
}
}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),
}
}
}Debug, #[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_receiver_is_total_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)]
1197#[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
}
};
::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);
}
}
}
}
};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))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ProjectionElem`, expected 0..8, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'__ctx, V, T>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for ProjectionElem<V, T> where
T: ::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>,
V: ::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
{
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
ProjectionElem::Deref => {}
ProjectionElem::Field(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
ProjectionElem::Index(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
ProjectionElem::ConstantIndex {
offset: ref __binding_0,
min_length: ref __binding_1,
from_end: ref __binding_2 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
ProjectionElem::Subslice {
from: ref __binding_0,
to: ref __binding_1,
from_end: ref __binding_2 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
ProjectionElem::Downcast(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
ProjectionElem::OpaqueCast(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
ProjectionElem::UnwrapUnsafeBinder(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)?)
}
})
}
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))
}
}
}
}
};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);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1198pub enum ProjectionElem<V, T> {
1199 Deref,
1200
1201 Field(FieldIdx, T),
1208
1209 Index(V),
1223
1224 ConstantIndex {
1240 offset: u64,
1243 min_length: u64,
1248 from_end: bool,
1251 },
1252
1253 Subslice {
1261 from: u64,
1262 to: u64,
1263 from_end: bool,
1267 },
1268
1269 Downcast(Option<Symbol>, VariantIdx),
1275
1276 OpaqueCast(T),
1281
1282 UnwrapUnsafeBinder(T),
1285}
1286
1287pub type PlaceElem<'tcx> = ProjectionElem<Local, Ty<'tcx>>;
1290
1291#[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::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, #[automatically_derived]
impl<'tcx> ::core::hash::Hash for Operand<'tcx> {
#[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 {
Operand::Copy(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Operand::Move(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Operand::Constant(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Operand::RuntimeChecks(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, const _: () =
{
impl<'tcx, '__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for Operand<'tcx> {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
Operand::Copy(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Operand::Move(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Operand::Constant(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Operand::RuntimeChecks(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
1309pub enum Operand<'tcx> {
1310 Copy(Place<'tcx>),
1315
1316 Move(Place<'tcx>),
1334
1335 Constant(Box<ConstOperand<'tcx>>),
1337
1338 RuntimeChecks(RuntimeChecks),
1341}
1342
1343#[derive(#[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::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) {
match *self {
ConstOperand {
span: ref __binding_0,
user_ty: ref __binding_1,
const_: 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 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, #[automatically_derived]
impl<'tcx> ::core::hash::Hash for ConstOperand<'tcx> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.span, state);
::core::hash::Hash::hash(&self.user_ty, state);
::core::hash::Hash::hash(&self.const_, state)
}
}Hash, const _: () =
{
impl<'tcx, '__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for ConstOperand<'tcx> {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
ConstOperand {
span: ref __binding_0,
user_ty: ref __binding_1,
const_: ref __binding_2 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
1344#[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)]
1345pub struct ConstOperand<'tcx> {
1346 pub span: Span,
1347
1348 pub user_ty: Option<UserTypeAnnotationIndex>,
1354
1355 pub const_: Const<'tcx>,
1356}
1357
1358#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for Rvalue<'tcx> {
#[inline]
fn clone(&self) -> Rvalue<'tcx> {
match self {
Rvalue::Use(__self_0) =>
Rvalue::Use(::core::clone::Clone::clone(__self_0)),
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::ShallowInitBox(__self_0, __self_1) =>
Rvalue::ShallowInitBox(::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)),
}
}
}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) => { 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::ShallowInitBox(ref __binding_0, ref __binding_1) =>
{
10usize
}
Rvalue::CopyForDeref(ref __binding_0) => { 11usize }
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> {
12usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Rvalue::Use(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__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::ShallowInitBox(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);
}
}
}
}
};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))
}
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::ShallowInitBox(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
Rvalue::CopyForDeref(::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
Rvalue::WrapUnsafeBinder(::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, #[automatically_derived]
impl<'tcx> ::core::hash::Hash for Rvalue<'tcx> {
#[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 {
Rvalue::Use(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Rvalue::Repeat(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Rvalue::Ref(__self_0, __self_1, __self_2) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
Rvalue::ThreadLocalRef(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Rvalue::RawPtr(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Rvalue::Cast(__self_0, __self_1, __self_2) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
Rvalue::BinaryOp(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Rvalue::UnaryOp(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Rvalue::Discriminant(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Rvalue::Aggregate(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Rvalue::ShallowInitBox(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Rvalue::CopyForDeref(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Rvalue::WrapUnsafeBinder(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
}
}
}Hash, const _: () =
{
impl<'tcx, '__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for Rvalue<'tcx> {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
Rvalue::Use(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Rvalue::Repeat(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
Rvalue::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
Rvalue::ThreadLocalRef(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Rvalue::RawPtr(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
Rvalue::Cast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
Rvalue::BinaryOp(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
Rvalue::UnaryOp(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
Rvalue::Discriminant(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Rvalue::Aggregate(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
Rvalue::ShallowInitBox(ref __binding_0, ref __binding_1) =>
{
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
Rvalue::CopyForDeref(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, #[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), Rvalue::Use(__arg1_0)) =>
__self_0 == __arg1_0,
(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::ShallowInitBox(__self_0, __self_1),
Rvalue::ShallowInitBox(__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,
_ => 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) => {
Rvalue::Use(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__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::ShallowInitBox(__binding_0, __binding_1) => {
Rvalue::ShallowInitBox(::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)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
Rvalue::Use(__binding_0) => {
Rvalue::Use(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__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::ShallowInitBox(__binding_0, __binding_1) => {
Rvalue::ShallowInitBox(::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))
}
}
}
}
};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) => {
{
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::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::ShallowInitBox(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);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1369pub enum Rvalue<'tcx> {
1370 Use(Operand<'tcx>),
1372
1373 Repeat(Operand<'tcx>, ty::Const<'tcx>),
1377
1378 Ref(Region<'tcx>, BorrowKind, Place<'tcx>),
1386
1387 ThreadLocalRef(DefId),
1399
1400 RawPtr(RawPtrKind, Place<'tcx>),
1408
1409 Cast(CastKind, Operand<'tcx>, Ty<'tcx>),
1415
1416 BinaryOp(BinOp, Box<(Operand<'tcx>, Operand<'tcx>)>),
1431
1432 UnaryOp(UnOp, Operand<'tcx>),
1438
1439 Discriminant(Place<'tcx>),
1450
1451 Aggregate(Box<AggregateKind<'tcx>>, IndexVec<FieldIdx, Operand<'tcx>>),
1460
1461 ShallowInitBox(Operand<'tcx>, Ty<'tcx>),
1467
1468 CopyForDeref(Place<'tcx>),
1479
1480 WrapUnsafeBinder(Operand<'tcx>, Ty<'tcx>),
1482}
1483
1484#[derive(#[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::Subtype =>
::core::fmt::Formatter::write_str(f, "Subtype"),
}
}
}Debug, #[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_receiver_is_total_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::Subtype => { 10usize }
};
::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::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::Subtype }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CastKind`, expected 0..11, 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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for CastKind {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
CastKind::PointerExposeProvenance => {}
CastKind::PointerWithExposedProvenance => {}
CastKind::PointerCoercion(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
CastKind::IntToInt => {}
CastKind::FloatToInt => {}
CastKind::FloatToFloat => {}
CastKind::IntToFloat => {}
CastKind::PtrToPtr => {}
CastKind::FnPtrToPtr => {}
CastKind::Transmute => {}
CastKind::Subtype => {}
}
}
}
};HashStable)]
1485pub enum CastKind {
1486 PointerExposeProvenance,
1490 PointerWithExposedProvenance,
1493 PointerCoercion(PointerCoercion, CoercionSource),
1503 IntToInt,
1504 FloatToInt,
1505 FloatToFloat,
1506 IntToFloat,
1507 PtrToPtr,
1508 FnPtrToPtr,
1509 Transmute,
1514
1515 Subtype,
1526}
1527
1528#[derive(#[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::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_receiver_is_total_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);
match *self {
CoercionSource::AsCast => {}
CoercionSource::Implicit => {}
}
}
}
};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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for CoercionSource {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
CoercionSource::AsCast => {}
CoercionSource::Implicit => {}
}
}
}
};HashStable)]
1531pub enum CoercionSource {
1532 AsCast,
1534 Implicit,
1536}
1537
1538#[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::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_receiver_is_total_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, #[automatically_derived]
impl<'tcx> ::core::hash::Hash for AggregateKind<'tcx> {
#[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 {
AggregateKind::Array(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
AggregateKind::Adt(__self_0, __self_1, __self_2, __self_3,
__self_4) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state)
}
AggregateKind::Closure(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
AggregateKind::Coroutine(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
AggregateKind::CoroutineClosure(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
AggregateKind::RawPtr(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
_ => {}
}
}
}Hash, const _: () =
{
impl<'tcx, '__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for AggregateKind<'tcx> {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
AggregateKind::Array(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
AggregateKind::Tuple => {}
AggregateKind::Adt(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3, ref __binding_4) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
{ __binding_3.hash_stable(__hcx, __hasher); }
{ __binding_4.hash_stable(__hcx, __hasher); }
}
AggregateKind::Closure(ref __binding_0, ref __binding_1) =>
{
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
AggregateKind::Coroutine(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
AggregateKind::CoroutineClosure(ref __binding_0,
ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
AggregateKind::RawPtr(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
1539#[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)]
1540pub enum AggregateKind<'tcx> {
1541 Array(Ty<'tcx>),
1543 Tuple,
1544
1545 Adt(DefId, VariantIdx, GenericArgsRef<'tcx>, Option<UserTypeAnnotationIndex>, Option<FieldIdx>),
1551
1552 Closure(DefId, GenericArgsRef<'tcx>),
1553 Coroutine(DefId, GenericArgsRef<'tcx>),
1554 CoroutineClosure(DefId, GenericArgsRef<'tcx>),
1555
1556 RawPtr(Ty<'tcx>, Mutability),
1570}
1571
1572#[derive(#[automatically_derived]
impl ::core::marker::Copy for RuntimeChecks { }Copy, #[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::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_receiver_is_total_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);
match *self {
RuntimeChecks::UbChecks => {}
RuntimeChecks::ContractChecks => {}
RuntimeChecks::OverflowChecks => {}
}
}
}
};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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for RuntimeChecks {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
RuntimeChecks::UbChecks => {}
RuntimeChecks::ContractChecks => {}
RuntimeChecks::OverflowChecks => {}
}
}
}
};HashStable)]
1573pub enum RuntimeChecks {
1574 UbChecks,
1577 ContractChecks,
1580 OverflowChecks,
1583}
1584
1585impl RuntimeChecks {
1586 pub fn value(self, sess: &rustc_session::Session) -> bool {
1587 match self {
1588 Self::UbChecks => sess.ub_checks(),
1589 Self::ContractChecks => sess.contract_checks(),
1590 Self::OverflowChecks => sess.overflow_checks(),
1591 }
1592 }
1593}
1594
1595#[derive(#[automatically_derived]
impl ::core::marker::Copy for UnOp { }Copy, #[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::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_receiver_is_total_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)]
1596#[derive(const _: () =
{
impl<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for UnOp {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
UnOp::Not => {}
UnOp::Neg => {}
UnOp::PtrMetadata => {}
}
}
}
};HashStable, 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);
match *self {
UnOp::Not => {}
UnOp::Neg => {}
UnOp::PtrMetadata => {}
}
}
}
};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)]
1597pub enum UnOp {
1598 Not,
1600 Neg,
1602 PtrMetadata,
1611}
1612
1613#[derive(#[automatically_derived]
impl ::core::marker::Copy for BinOp { }Copy, #[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::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_receiver_is_total_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)]
1614#[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);
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 => {}
}
}
}
};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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for BinOp {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__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 => {}
}
}
}
};HashStable, 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)]
1615pub enum BinOp {
1616 Add,
1618 AddUnchecked,
1620 AddWithOverflow,
1623 Sub,
1625 SubUnchecked,
1627 SubWithOverflow,
1630 Mul,
1632 MulUnchecked,
1634 MulWithOverflow,
1637 Div,
1644 Rem,
1652 BitXor,
1654 BitAnd,
1656 BitOr,
1658 Shl,
1665 ShlUnchecked,
1667 Shr,
1677 ShrUnchecked,
1679 Eq,
1681 Lt,
1683 Le,
1685 Ne,
1687 Ge,
1689 Gt,
1691 Cmp,
1701 Offset,
1703}
1704
1705#[derive(#[automatically_derived]
impl ::core::marker::Copy for AssignOp { }Copy, #[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::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_receiver_is_total_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for AssignOp {
#[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<'__ctx>
::rustc_data_structures::stable_hasher::HashStable<::rustc_query_system::ich::StableHashingContext<'__ctx>>
for AssignOp {
#[inline]
fn hash_stable(&self,
__hcx:
&mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
AssignOp::AddAssign => {}
AssignOp::SubAssign => {}
AssignOp::MulAssign => {}
AssignOp::DivAssign => {}
AssignOp::RemAssign => {}
AssignOp::BitXorAssign => {}
AssignOp::BitAndAssign => {}
AssignOp::BitOrAssign => {}
AssignOp::ShlAssign => {}
AssignOp::ShrAssign => {}
}
}
}
};HashStable)]
1708pub enum AssignOp {
1709 AddAssign,
1710 SubAssign,
1711 MulAssign,
1712 DivAssign,
1713 RemAssign,
1714 BitXorAssign,
1715 BitAndAssign,
1716 BitOrAssign,
1717 ShlAssign,
1718 ShrAssign,
1719}
1720
1721impl From<AssignOp> for BinOp {
1725 fn from(op: AssignOp) -> BinOp {
1726 match op {
1727 AssignOp::AddAssign => BinOp::Add,
1728 AssignOp::SubAssign => BinOp::Sub,
1729 AssignOp::MulAssign => BinOp::Mul,
1730 AssignOp::DivAssign => BinOp::Div,
1731 AssignOp::RemAssign => BinOp::Rem,
1732 AssignOp::BitXorAssign => BinOp::BitXor,
1733 AssignOp::BitAndAssign => BinOp::BitAnd,
1734 AssignOp::BitOrAssign => BinOp::BitOr,
1735 AssignOp::ShlAssign => BinOp::Shl,
1736 AssignOp::ShrAssign => BinOp::Shr,
1737 }
1738 }
1739}
1740
1741#[cfg(target_pointer_width = "64")]
1743mod size_asserts {
1744 use rustc_data_structures::static_assert_size;
1745
1746 use super::*;
1747 const _: [(); 32] = [(); ::std::mem::size_of::<AggregateKind<'_>>()];static_assert_size!(AggregateKind<'_>, 32);
1749 const _: [(); 24] = [(); ::std::mem::size_of::<Operand<'_>>()];static_assert_size!(Operand<'_>, 24);
1750 const _: [(); 16] = [(); ::std::mem::size_of::<Place<'_>>()];static_assert_size!(Place<'_>, 16);
1751 const _: [(); 24] = [(); ::std::mem::size_of::<PlaceElem<'_>>()];static_assert_size!(PlaceElem<'_>, 24);
1752 const _: [(); 40] = [(); ::std::mem::size_of::<Rvalue<'_>>()];static_assert_size!(Rvalue<'_>, 40);
1753 const _: [(); 16] = [(); ::std::mem::size_of::<StatementKind<'_>>()];static_assert_size!(StatementKind<'_>, 16);
1754 const _: [(); 80] = [(); ::std::mem::size_of::<TerminatorKind<'_>>()];static_assert_size!(TerminatorKind<'_>, 80);
1755 }