1use rustc_abi::{FieldIdx, VariantIdx};
7use rustc_ast::{InlineAsmOptions, InlineAsmTemplatePiece, Mutability};
8use rustc_attr_ir::UnrollAttr;
9use rustc_data_structures::packed::Pu128;
10use rustc_hir::CoroutineKind;
11use rustc_hir::def_id::DefId;
12use rustc_index::IndexVec;
13use rustc_macros::{StableHash, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
14use rustc_span::def_id::LocalDefId;
15use rustc_span::{Span, Spanned, Symbol};
16use rustc_target::asm::InlineAsmRegOrRegClass;
17use smallvec::SmallVec;
18use thin_vec::ThinVec;
19
20use super::{BasicBlock, Const, Local, UserTypeProjection};
21use crate::mir::coverage::CoverageKind;
22use crate::ty::adjustment::PointerCoercion;
23use crate::ty::{self, GenericArgsRef, List, Region, Ty, UserTypeAnnotationIndex};
24
25#[derive(#[automatically_derived]
impl ::core::marker::Copy for MirPhase { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for MirPhase { }
#[automatically_derived]
impl ::core::clone::Clone for MirPhase {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<AnalysisPhase>;
let _: ::core::clone::AssertParamIsClone<RuntimePhase>;
*self
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for MirPhase {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MirPhase::Built => { 0usize }
MirPhase::Analysis(ref __binding_0) => { 1usize }
MirPhase::Runtime(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MirPhase::Built => {}
MirPhase::Analysis(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
MirPhase::Runtime(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for MirPhase {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { MirPhase::Built }
1usize => {
MirPhase::Analysis(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
MirPhase::Runtime(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MirPhase`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::fmt::Debug for MirPhase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Built => ::core::fmt::Formatter::write_str(f, "Built"),
Self::Analysis(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Analysis", &__self_0),
Self::Runtime(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Runtime", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for MirPhase { }
#[automatically_derived]
impl ::core::cmp::PartialEq for MirPhase {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Analysis(__self_0), Self::Analysis(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Runtime(__self_0), Self::Runtime(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for MirPhase {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AnalysisPhase>;
let _: ::core::cmp::AssertParamIsEq<RuntimePhase>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for MirPhase {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for MirPhase {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
match (self, other) {
(Self::Analysis(__self_0), Self::Analysis(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Self::Runtime(__self_0), Self::Runtime(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ =>
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other)),
}
}
}Ord)]
43#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for MirPhase {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
MirPhase::Built => {}
MirPhase::Analysis(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
MirPhase::Runtime(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
44pub enum MirPhase {
45 Built,
53
54 Analysis(AnalysisPhase),
66
67 Runtime(RuntimePhase),
97}
98
99#[derive(#[automatically_derived]
impl ::core::marker::Copy for AnalysisPhase { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for AnalysisPhase { }
#[automatically_derived]
impl ::core::clone::Clone for AnalysisPhase {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for AnalysisPhase {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AnalysisPhase::Initial => { 0usize }
AnalysisPhase::PostCleanup => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for AnalysisPhase {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { AnalysisPhase::Initial }
1usize => { AnalysisPhase::PostCleanup }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AnalysisPhase`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::fmt::Debug for AnalysisPhase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
AnalysisPhase::Initial => "Initial",
AnalysisPhase::PostCleanup => "PostCleanup",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for AnalysisPhase { }
#[automatically_derived]
impl ::core::cmp::PartialEq for AnalysisPhase {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for AnalysisPhase { }Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for AnalysisPhase {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for AnalysisPhase {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other))
}
}Ord)]
101#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
AnalysisPhase {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
AnalysisPhase::Initial => {}
AnalysisPhase::PostCleanup => {}
}
}
}
};StableHash)]
102pub enum AnalysisPhase {
103 Initial = 0,
104 PostCleanup = 1,
120}
121
122#[derive(#[automatically_derived]
impl ::core::marker::Copy for RuntimePhase { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for RuntimePhase { }
#[automatically_derived]
impl ::core::clone::Clone for RuntimePhase {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for RuntimePhase {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RuntimePhase::Initial => { 0usize }
RuntimePhase::PostCleanup => { 1usize }
RuntimePhase::Optimized => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for RuntimePhase {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RuntimePhase::Initial }
1usize => { RuntimePhase::PostCleanup }
2usize => { RuntimePhase::Optimized }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RuntimePhase`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::fmt::Debug for RuntimePhase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RuntimePhase::Initial => "Initial",
RuntimePhase::PostCleanup => "PostCleanup",
RuntimePhase::Optimized => "Optimized",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for RuntimePhase { }
#[automatically_derived]
impl ::core::cmp::PartialEq for RuntimePhase {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for RuntimePhase { }Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for RuntimePhase {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for RuntimePhase {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other))
}
}Ord)]
124#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for RuntimePhase
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
RuntimePhase::Initial => {}
RuntimePhase::PostCleanup => {}
RuntimePhase::Optimized => {}
}
}
}
};StableHash)]
125pub enum RuntimePhase {
126 Initial = 0,
141 PostCleanup = 1,
144 Optimized = 2,
145}
146
147#[derive(#[automatically_derived]
impl ::core::marker::Copy for BorrowKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for BorrowKind { }
#[automatically_derived]
impl ::core::clone::Clone for BorrowKind {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<FakeBorrowKind>;
let _: ::core::clone::AssertParamIsClone<MutBorrowKind>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for BorrowKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Shared => ::core::fmt::Formatter::write_str(f, "Shared"),
Self::Fake(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Fake",
&__self_0),
Self::Mut { kind: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Mut",
"kind", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for BorrowKind { }
#[automatically_derived]
impl ::core::cmp::PartialEq for BorrowKind {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Fake(__self_0), Self::Fake(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Mut { kind: __self_0 }, Self::Mut { kind: __arg1_0 })
=> __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for BorrowKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<FakeBorrowKind>;
let _: ::core::cmp::AssertParamIsEq<MutBorrowKind>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for BorrowKind {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for BorrowKind {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
match (self, other) {
(Self::Fake(__self_0), Self::Fake(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Self::Mut { kind: __self_0 }, Self::Mut { kind: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ =>
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other)),
}
}
}Ord, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for BorrowKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BorrowKind::Shared => { 0usize }
BorrowKind::Fake(ref __binding_0) => { 1usize }
BorrowKind::Mut { kind: ref __binding_0 } => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
BorrowKind::Shared => {}
BorrowKind::Fake(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
BorrowKind::Mut { kind: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for BorrowKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BorrowKind::Shared }
1usize => {
BorrowKind::Fake(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
BorrowKind::Mut {
kind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BorrowKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable)]
151#[derive(#[automatically_derived]
impl ::core::hash::Hash for BorrowKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state);
match self {
Self::Fake(__self_0) => ::core::hash::Hash::hash(__self_0, state),
Self::Mut { kind: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for BorrowKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
BorrowKind::Shared => {}
BorrowKind::Fake(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
BorrowKind::Mut { kind: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
152pub enum BorrowKind {
153 Shared,
155
156 Fake(FakeBorrowKind),
176
177 Mut { kind: MutBorrowKind },
179}
180
181#[derive(#[automatically_derived]
impl ::core::marker::Copy for RawPtrKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for RawPtrKind { }
#[automatically_derived]
impl ::core::clone::Clone for RawPtrKind {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for RawPtrKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RawPtrKind::Mut => "Mut",
RawPtrKind::Const => "Const",
RawPtrKind::FakeForPtrMetadata => "FakeForPtrMetadata",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for RawPtrKind { }
#[automatically_derived]
impl ::core::cmp::PartialEq for RawPtrKind {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for RawPtrKind { }Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for RawPtrKind {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for RawPtrKind {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other))
}
}Ord, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for RawPtrKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RawPtrKind::Mut => { 0usize }
RawPtrKind::Const => { 1usize }
RawPtrKind::FakeForPtrMetadata => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for RawPtrKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RawPtrKind::Mut }
1usize => { RawPtrKind::Const }
2usize => { RawPtrKind::FakeForPtrMetadata }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RawPtrKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable)]
182#[derive(#[automatically_derived]
impl ::core::hash::Hash for RawPtrKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for RawPtrKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
RawPtrKind::Mut => {}
RawPtrKind::Const => {}
RawPtrKind::FakeForPtrMetadata => {}
}
}
}
};StableHash)]
183pub enum RawPtrKind {
184 Mut,
185 Const,
186 FakeForPtrMetadata,
195}
196
197#[derive(#[automatically_derived]
impl ::core::marker::Copy for MutBorrowKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for MutBorrowKind { }
#[automatically_derived]
impl ::core::clone::Clone for MutBorrowKind {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for MutBorrowKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
MutBorrowKind::Default => "Default",
MutBorrowKind::TwoPhaseBorrow => "TwoPhaseBorrow",
MutBorrowKind::ClosureCapture => "ClosureCapture",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for MutBorrowKind { }
#[automatically_derived]
impl ::core::cmp::PartialEq for MutBorrowKind {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for MutBorrowKind { }Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for MutBorrowKind {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for MutBorrowKind {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other))
}
}Ord, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for MutBorrowKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MutBorrowKind::Default => { 0usize }
MutBorrowKind::TwoPhaseBorrow => { 1usize }
MutBorrowKind::ClosureCapture => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for MutBorrowKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { MutBorrowKind::Default }
1usize => { MutBorrowKind::TwoPhaseBorrow }
2usize => { MutBorrowKind::ClosureCapture }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MutBorrowKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable)]
198#[derive(#[automatically_derived]
impl ::core::hash::Hash for MutBorrowKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
MutBorrowKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
MutBorrowKind::Default => {}
MutBorrowKind::TwoPhaseBorrow => {}
MutBorrowKind::ClosureCapture => {}
}
}
}
};StableHash)]
199pub enum MutBorrowKind {
200 Default,
201 TwoPhaseBorrow,
203 ClosureCapture,
245}
246
247#[derive(#[automatically_derived]
impl ::core::marker::Copy for FakeBorrowKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for FakeBorrowKind { }
#[automatically_derived]
impl ::core::clone::Clone for FakeBorrowKind {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for FakeBorrowKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
FakeBorrowKind::Shallow => "Shallow",
FakeBorrowKind::Deep => "Deep",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for FakeBorrowKind { }
#[automatically_derived]
impl ::core::cmp::PartialEq for FakeBorrowKind {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for FakeBorrowKind { }Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for FakeBorrowKind {
#[inline]
fn partial_cmp(&self, other: &Self)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for FakeBorrowKind {
#[inline]
fn cmp(&self, other: &Self) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&::core::intrinsics::discriminant_value(self),
&::core::intrinsics::discriminant_value(other))
}
}Ord, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for FakeBorrowKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
FakeBorrowKind::Shallow => { 0usize }
FakeBorrowKind::Deep => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for FakeBorrowKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { FakeBorrowKind::Shallow }
1usize => { FakeBorrowKind::Deep }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `FakeBorrowKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable)]
248#[derive(#[automatically_derived]
impl ::core::hash::Hash for FakeBorrowKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
FakeBorrowKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
FakeBorrowKind::Shallow => {}
FakeBorrowKind::Deep => {}
}
}
}
};StableHash)]
249pub enum FakeBorrowKind {
250 Shallow,
282 Deep,
296}
297
298#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for StatementKind<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Assign(__self_0) =>
StatementKind::Assign(::core::clone::Clone::clone(__self_0)),
Self::FakeRead(__self_0) =>
StatementKind::FakeRead(::core::clone::Clone::clone(__self_0)),
Self::SetDiscriminant { place: __self_0, variant_index: __self_1 }
=>
StatementKind::SetDiscriminant {
place: ::core::clone::Clone::clone(__self_0),
variant_index: ::core::clone::Clone::clone(__self_1),
},
Self::StorageLive(__self_0) =>
StatementKind::StorageLive(::core::clone::Clone::clone(__self_0)),
Self::StorageDead(__self_0) =>
StatementKind::StorageDead(::core::clone::Clone::clone(__self_0)),
Self::PlaceMention(__self_0) =>
StatementKind::PlaceMention(::core::clone::Clone::clone(__self_0)),
Self::AscribeUserType(__self_0, __self_1) =>
StatementKind::AscribeUserType(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Coverage(__self_0) =>
StatementKind::Coverage(::core::clone::Clone::clone(__self_0)),
Self::Intrinsic(__self_0) =>
StatementKind::Intrinsic(::core::clone::Clone::clone(__self_0)),
Self::ConstEvalCounter => StatementKind::ConstEvalCounter,
Self::Nop => StatementKind::Nop,
Self::BackwardIncompatibleDropHint {
place: __self_0, reason: __self_1 } =>
StatementKind::BackwardIncompatibleDropHint {
place: ::core::clone::Clone::clone(__self_0),
reason: ::core::clone::Clone::clone(__self_1),
},
}
}
}Clone, #[automatically_derived]
impl<'tcx> ::core::marker::StructuralPartialEq for StatementKind<'tcx> { }
#[automatically_derived]
impl<'tcx> ::core::cmp::PartialEq for StatementKind<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Assign(__self_0), Self::Assign(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::FakeRead(__self_0), Self::FakeRead(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::SetDiscriminant {
place: __self_0, variant_index: __self_1 },
Self::SetDiscriminant {
place: __arg1_0, variant_index: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::StorageLive(__self_0), Self::StorageLive(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::StorageDead(__self_0), Self::StorageDead(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::PlaceMention(__self_0), Self::PlaceMention(__arg1_0))
=> __self_0 == __arg1_0,
(Self::AscribeUserType(__self_0, __self_1),
Self::AscribeUserType(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Coverage(__self_0), Self::Coverage(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Intrinsic(__self_0), Self::Intrinsic(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::BackwardIncompatibleDropHint {
place: __self_0, reason: __self_1 },
Self::BackwardIncompatibleDropHint {
place: __arg1_0, reason: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for StatementKind<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
StatementKind::Assign(ref __binding_0) => { 0usize }
StatementKind::FakeRead(ref __binding_0) => { 1usize }
StatementKind::SetDiscriminant {
place: ref __binding_0, variant_index: ref __binding_1 } =>
{
2usize
}
StatementKind::StorageLive(ref __binding_0) => { 3usize }
StatementKind::StorageDead(ref __binding_0) => { 4usize }
StatementKind::PlaceMention(ref __binding_0) => { 5usize }
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => {
6usize
}
StatementKind::Coverage(ref __binding_0) => { 7usize }
StatementKind::Intrinsic(ref __binding_0) => { 8usize }
StatementKind::ConstEvalCounter => { 9usize }
StatementKind::Nop => { 10usize }
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } => {
11usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
StatementKind::Assign(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::FakeRead(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::SetDiscriminant {
place: ref __binding_0, variant_index: ref __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
StatementKind::StorageLive(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::StorageDead(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::PlaceMention(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
StatementKind::Coverage(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::Intrinsic(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StatementKind::ConstEvalCounter => {}
StatementKind::Nop => {}
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for StatementKind<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
StatementKind::Assign(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
StatementKind::FakeRead(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
StatementKind::SetDiscriminant {
place: ::rustc_serialize::Decodable::decode(__decoder),
variant_index: ::rustc_serialize::Decodable::decode(__decoder),
}
}
3usize => {
StatementKind::StorageLive(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
StatementKind::StorageDead(::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
StatementKind::PlaceMention(::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
StatementKind::AscribeUserType(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
StatementKind::Coverage(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
StatementKind::Intrinsic(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => { StatementKind::ConstEvalCounter }
10usize => { StatementKind::Nop }
11usize => {
StatementKind::BackwardIncompatibleDropHint {
place: ::rustc_serialize::Decodable::decode(__decoder),
reason: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `StatementKind`, expected 0..12, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
StatementKind<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
StatementKind::Assign(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::FakeRead(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::SetDiscriminant {
place: ref __binding_0, variant_index: ref __binding_1 } =>
{
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
StatementKind::StorageLive(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::StorageDead(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::PlaceMention(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
StatementKind::Coverage(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::Intrinsic(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
StatementKind::ConstEvalCounter => {}
StatementKind::Nop => {}
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
307#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for StatementKind<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
StatementKind::Assign(__binding_0) => {
StatementKind::Assign(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::FakeRead(__binding_0) => {
StatementKind::FakeRead(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::SetDiscriminant {
place: __binding_0, variant_index: __binding_1 } => {
StatementKind::SetDiscriminant {
place: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
variant_index: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
StatementKind::StorageLive(__binding_0) => {
StatementKind::StorageLive(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::StorageDead(__binding_0) => {
StatementKind::StorageDead(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::PlaceMention(__binding_0) => {
StatementKind::PlaceMention(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::AscribeUserType(__binding_0, __binding_1) =>
{
StatementKind::AscribeUserType(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
StatementKind::Coverage(__binding_0) => {
StatementKind::Coverage(__binding_0)
}
StatementKind::Intrinsic(__binding_0) => {
StatementKind::Intrinsic(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
StatementKind::ConstEvalCounter => {
StatementKind::ConstEvalCounter
}
StatementKind::Nop => { StatementKind::Nop }
StatementKind::BackwardIncompatibleDropHint {
place: __binding_0, reason: __binding_1 } => {
StatementKind::BackwardIncompatibleDropHint {
place: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
reason: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
StatementKind::Assign(__binding_0) => {
StatementKind::Assign(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::FakeRead(__binding_0) => {
StatementKind::FakeRead(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::SetDiscriminant {
place: __binding_0, variant_index: __binding_1 } => {
StatementKind::SetDiscriminant {
place: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
variant_index: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
StatementKind::StorageLive(__binding_0) => {
StatementKind::StorageLive(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::StorageDead(__binding_0) => {
StatementKind::StorageDead(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::PlaceMention(__binding_0) => {
StatementKind::PlaceMention(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::AscribeUserType(__binding_0, __binding_1) =>
{
StatementKind::AscribeUserType(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
StatementKind::Coverage(__binding_0) => {
StatementKind::Coverage(__binding_0)
}
StatementKind::Intrinsic(__binding_0) => {
StatementKind::Intrinsic(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
StatementKind::ConstEvalCounter => {
StatementKind::ConstEvalCounter
}
StatementKind::Nop => { StatementKind::Nop }
StatementKind::BackwardIncompatibleDropHint {
place: __binding_0, reason: __binding_1 } => {
StatementKind::BackwardIncompatibleDropHint {
place: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
reason: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for StatementKind<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
StatementKind::Assign(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::FakeRead(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::SetDiscriminant {
place: ref __binding_0, variant_index: ref __binding_1 } =>
{
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::StorageLive(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::StorageDead(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::PlaceMention(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::AscribeUserType(ref __binding_0,
ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::Coverage(..) => {}
StatementKind::Intrinsic(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
StatementKind::ConstEvalCounter => {}
StatementKind::Nop => {}
StatementKind::BackwardIncompatibleDropHint {
place: ref __binding_0, reason: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
308pub enum StatementKind<'tcx> {
309 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 PlaceMention(Box<Place<'tcx>>),
397
398 AscribeUserType(Box<(Place<'tcx>, UserTypeProjection)>, ty::Variance),
415
416 Coverage(
427 #[type_foldable(identity)]
431 #[type_visitable(ignore)]
432 CoverageKind,
433 ),
434
435 Intrinsic(Box<NonDivergingIntrinsic<'tcx>>),
438
439 ConstEvalCounter,
444
445 Nop,
447
448 BackwardIncompatibleDropHint {
454 place: Box<Place<'tcx>>,
456 reason: BackwardIncompatibleDropReason,
458 },
459}
460
461#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for NonDivergingIntrinsic<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Assume(__self_0) =>
NonDivergingIntrinsic::Assume(::core::clone::Clone::clone(__self_0)),
Self::CopyNonOverlapping(__self_0) =>
NonDivergingIntrinsic::CopyNonOverlapping(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for NonDivergingIntrinsic<'tcx>
{
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
NonDivergingIntrinsic::Assume(ref __binding_0) => { 0usize }
NonDivergingIntrinsic::CopyNonOverlapping(ref __binding_0)
=> {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
NonDivergingIntrinsic::Assume(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
NonDivergingIntrinsic::CopyNonOverlapping(ref __binding_0)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for NonDivergingIntrinsic<'tcx>
{
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
NonDivergingIntrinsic::Assume(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
NonDivergingIntrinsic::CopyNonOverlapping(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `NonDivergingIntrinsic`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl<'tcx> ::core::fmt::Debug for NonDivergingIntrinsic<'tcx> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Assume(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Assume",
&__self_0),
Self::CopyNonOverlapping(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"CopyNonOverlapping", &__self_0),
}
}
}Debug, #[automatically_derived]
impl<'tcx> ::core::marker::StructuralPartialEq for NonDivergingIntrinsic<'tcx>
{
}
#[automatically_derived]
impl<'tcx> ::core::cmp::PartialEq for NonDivergingIntrinsic<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Assume(__self_0), Self::Assume(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::CopyNonOverlapping(__self_0),
Self::CopyNonOverlapping(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
NonDivergingIntrinsic<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
NonDivergingIntrinsic::Assume(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
NonDivergingIntrinsic::CopyNonOverlapping(ref __binding_0)
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
462#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for NonDivergingIntrinsic<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
NonDivergingIntrinsic::Assume(__binding_0) => {
NonDivergingIntrinsic::Assume(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
NonDivergingIntrinsic::CopyNonOverlapping(__binding_0) => {
NonDivergingIntrinsic::CopyNonOverlapping(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
NonDivergingIntrinsic::Assume(__binding_0) => {
NonDivergingIntrinsic::Assume(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
NonDivergingIntrinsic::CopyNonOverlapping(__binding_0) => {
NonDivergingIntrinsic::CopyNonOverlapping(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for NonDivergingIntrinsic<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
NonDivergingIntrinsic::Assume(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
NonDivergingIntrinsic::CopyNonOverlapping(ref __binding_0)
=> {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
463pub enum NonDivergingIntrinsic<'tcx> {
464 Assume(Operand<'tcx>),
471
472 CopyNonOverlapping(CopyNonOverlapping<'tcx>),
486}
487
488#[derive(#[automatically_derived]
impl ::core::marker::Copy for WithRetag { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for WithRetag { }
#[automatically_derived]
impl ::core::clone::Clone for WithRetag {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for WithRetag {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
WithRetag::Yes => { 0usize }
WithRetag::No => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for WithRetag {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { WithRetag::Yes }
1usize => { WithRetag::No }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `WithRetag`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::fmt::Debug for WithRetag {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self { WithRetag::Yes => "Yes", WithRetag::No => "No", })
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for WithRetag { }
#[automatically_derived]
impl ::core::cmp::PartialEq for WithRetag {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for WithRetag { }Eq, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for WithRetag {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self { WithRetag::Yes => {} WithRetag::No => {} }
}
}
};StableHash)]
490#[rustc_pass_by_value]
491pub enum WithRetag {
492 Yes,
493 No,
494}
495
496impl WithRetag {
497 #[inline]
498 pub fn yes(self) -> bool {
499 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::Yes => true,
_ => false,
}matches!(self, Self::Yes)
500 }
501 #[inline]
502 pub fn no(self) -> bool {
503 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::No => true,
_ => false,
}matches!(self, Self::No)
504 }
505}
506
507#[derive(#[automatically_derived]
impl ::core::marker::Copy for FakeReadCause { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for FakeReadCause { }
#[automatically_derived]
impl ::core::clone::Clone for FakeReadCause {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<Option<LocalDefId>>;
let _: ::core::clone::AssertParamIsClone<Option<LocalDefId>>;
*self
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for FakeReadCause {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
FakeReadCause::ForMatchGuard => { 0usize }
FakeReadCause::ForMatchedPlace(ref __binding_0) => {
1usize
}
FakeReadCause::ForGuardBinding => { 2usize }
FakeReadCause::ForLet(ref __binding_0) => { 3usize }
FakeReadCause::ForIndex => { 4usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
FakeReadCause::ForMatchGuard => {}
FakeReadCause::ForMatchedPlace(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
FakeReadCause::ForGuardBinding => {}
FakeReadCause::ForLet(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
FakeReadCause::ForIndex => {}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for FakeReadCause {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { FakeReadCause::ForMatchGuard }
1usize => {
FakeReadCause::ForMatchedPlace(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => { FakeReadCause::ForGuardBinding }
3usize => {
FakeReadCause::ForLet(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => { FakeReadCause::ForIndex }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `FakeReadCause`, expected 0..5, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::fmt::Debug for FakeReadCause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::ForMatchGuard =>
::core::fmt::Formatter::write_str(f, "ForMatchGuard"),
Self::ForMatchedPlace(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ForMatchedPlace", &__self_0),
Self::ForGuardBinding =>
::core::fmt::Formatter::write_str(f, "ForGuardBinding"),
Self::ForLet(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "ForLet",
&__self_0),
Self::ForIndex =>
::core::fmt::Formatter::write_str(f, "ForIndex"),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
FakeReadCause {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
FakeReadCause::ForMatchGuard => {}
FakeReadCause::ForMatchedPlace(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
FakeReadCause::ForGuardBinding => {}
FakeReadCause::ForLet(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
FakeReadCause::ForIndex => {}
}
}
}
};StableHash, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for FakeReadCause { }
#[automatically_derived]
impl ::core::cmp::PartialEq for FakeReadCause {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::ForMatchedPlace(__self_0),
Self::ForMatchedPlace(__arg1_0)) => __self_0 == __arg1_0,
(Self::ForLet(__self_0), Self::ForLet(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq)]
509pub enum FakeReadCause {
510 ForMatchGuard,
523
524 ForMatchedPlace(Option<LocalDefId>),
549
550 ForGuardBinding,
564
565 ForLet(Option<LocalDefId>),
584
585 ForIndex,
612}
613
614#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for CopyNonOverlapping<'tcx> {
#[inline]
fn clone(&self) -> Self {
CopyNonOverlapping {
src: ::core::clone::Clone::clone(&self.src),
dst: ::core::clone::Clone::clone(&self.dst),
count: ::core::clone::Clone::clone(&self.count),
}
}
}Clone, #[automatically_derived]
impl<'tcx> ::core::fmt::Debug for CopyNonOverlapping<'tcx> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"CopyNonOverlapping", "src", &self.src, "dst", &self.dst, "count",
&&self.count)
}
}Debug, #[automatically_derived]
impl<'tcx> ::core::marker::StructuralPartialEq for CopyNonOverlapping<'tcx> {
}
#[automatically_derived]
impl<'tcx> ::core::cmp::PartialEq for CopyNonOverlapping<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
self.src == other.src && self.dst == other.dst &&
self.count == other.count
}
}PartialEq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for CopyNonOverlapping<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let CopyNonOverlapping {
src: ref __binding_0,
dst: ref __binding_1,
count: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for CopyNonOverlapping<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
CopyNonOverlapping {
src: ::rustc_serialize::Decodable::decode(__decoder),
dst: ::rustc_serialize::Decodable::decode(__decoder),
count: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
CopyNonOverlapping<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
CopyNonOverlapping {
src: ref __binding_0,
dst: ref __binding_1,
count: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
615#[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)]
616pub struct CopyNonOverlapping<'tcx> {
617 pub src: Operand<'tcx>,
618 pub dst: Operand<'tcx>,
619 pub count: Operand<'tcx>,
621}
622
623#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for CallSource { }
#[automatically_derived]
impl ::core::clone::Clone for CallSource {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for CallSource { }Copy, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for CallSource {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
CallSource::OverloadedOperator => { 0usize }
CallSource::MatchCmp => { 1usize }
CallSource::Misc => { 2usize }
CallSource::Use => { 3usize }
CallSource::Normal => { 4usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for CallSource {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { CallSource::OverloadedOperator }
1usize => { CallSource::MatchCmp }
2usize => { CallSource::Misc }
3usize => { CallSource::Use }
4usize => { CallSource::Normal }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CallSource`, expected 0..5, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::fmt::Debug for CallSource {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
CallSource::OverloadedOperator => "OverloadedOperator",
CallSource::MatchCmp => "MatchCmp",
CallSource::Misc => "Misc",
CallSource::Use => "Use",
CallSource::Normal => "Normal",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for CallSource { }
#[automatically_derived]
impl ::core::cmp::PartialEq for CallSource {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for CallSource {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
CallSource::OverloadedOperator => {}
CallSource::MatchCmp => {}
CallSource::Misc => {}
CallSource::Use => {}
CallSource::Normal => {}
}
}
}
};StableHash)]
626#[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)]
627pub enum CallSource {
628 OverloadedOperator,
631 MatchCmp,
636 Misc,
639 Use,
641 Normal,
643}
644
645#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for InlineAsmMacro { }
#[automatically_derived]
impl ::core::clone::Clone for InlineAsmMacro {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for InlineAsmMacro { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for InlineAsmMacro {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
InlineAsmMacro::Asm => "Asm",
InlineAsmMacro::NakedAsm => "NakedAsm",
})
}
}Debug, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for InlineAsmMacro {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
InlineAsmMacro::Asm => { 0usize }
InlineAsmMacro::NakedAsm => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for InlineAsmMacro {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { InlineAsmMacro::Asm }
1usize => { InlineAsmMacro::NakedAsm }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `InlineAsmMacro`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
InlineAsmMacro {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
InlineAsmMacro::Asm => {}
InlineAsmMacro::NakedAsm => {}
}
}
}
};StableHash, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for InlineAsmMacro { }
#[automatically_derived]
impl ::core::cmp::PartialEq for InlineAsmMacro {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq)]
646#[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)]
647pub enum InlineAsmMacro {
649 Asm,
651 NakedAsm,
653}
654
655#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for TerminatorKind<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Goto { target: __self_0, loop_hint_attrs: __self_1 } =>
TerminatorKind::Goto {
target: ::core::clone::Clone::clone(__self_0),
loop_hint_attrs: ::core::clone::Clone::clone(__self_1),
},
Self::SwitchInt { discr: __self_0, targets: __self_1 } =>
TerminatorKind::SwitchInt {
discr: ::core::clone::Clone::clone(__self_0),
targets: ::core::clone::Clone::clone(__self_1),
},
Self::UnwindResume => TerminatorKind::UnwindResume,
Self::UnwindTerminate(__self_0) =>
TerminatorKind::UnwindTerminate(::core::clone::Clone::clone(__self_0)),
Self::Return => TerminatorKind::Return,
Self::Unreachable => TerminatorKind::Unreachable,
Self::Drop {
place: __self_0,
target: __self_1,
unwind: __self_2,
replace: __self_3,
drop: __self_4 } =>
TerminatorKind::Drop {
place: ::core::clone::Clone::clone(__self_0),
target: ::core::clone::Clone::clone(__self_1),
unwind: ::core::clone::Clone::clone(__self_2),
replace: ::core::clone::Clone::clone(__self_3),
drop: ::core::clone::Clone::clone(__self_4),
},
Self::Call {
func: __self_0,
args: __self_1,
destination: __self_2,
target: __self_3,
unwind: __self_4,
call_source: __self_5,
fn_span: __self_6 } =>
TerminatorKind::Call {
func: ::core::clone::Clone::clone(__self_0),
args: ::core::clone::Clone::clone(__self_1),
destination: ::core::clone::Clone::clone(__self_2),
target: ::core::clone::Clone::clone(__self_3),
unwind: ::core::clone::Clone::clone(__self_4),
call_source: ::core::clone::Clone::clone(__self_5),
fn_span: ::core::clone::Clone::clone(__self_6),
},
Self::TailCall { func: __self_0, args: __self_1, fn_span: __self_2
} =>
TerminatorKind::TailCall {
func: ::core::clone::Clone::clone(__self_0),
args: ::core::clone::Clone::clone(__self_1),
fn_span: ::core::clone::Clone::clone(__self_2),
},
Self::Assert {
cond: __self_0,
expected: __self_1,
msg: __self_2,
target: __self_3,
unwind: __self_4 } =>
TerminatorKind::Assert {
cond: ::core::clone::Clone::clone(__self_0),
expected: ::core::clone::Clone::clone(__self_1),
msg: ::core::clone::Clone::clone(__self_2),
target: ::core::clone::Clone::clone(__self_3),
unwind: ::core::clone::Clone::clone(__self_4),
},
Self::Yield {
value: __self_0,
resume: __self_1,
resume_arg: __self_2,
drop: __self_3 } =>
TerminatorKind::Yield {
value: ::core::clone::Clone::clone(__self_0),
resume: ::core::clone::Clone::clone(__self_1),
resume_arg: ::core::clone::Clone::clone(__self_2),
drop: ::core::clone::Clone::clone(__self_3),
},
Self::CoroutineDrop => TerminatorKind::CoroutineDrop,
Self::FalseEdge {
real_target: __self_0, imaginary_target: __self_1 } =>
TerminatorKind::FalseEdge {
real_target: ::core::clone::Clone::clone(__self_0),
imaginary_target: ::core::clone::Clone::clone(__self_1),
},
Self::FalseUnwind { real_target: __self_0, unwind: __self_1 } =>
TerminatorKind::FalseUnwind {
real_target: ::core::clone::Clone::clone(__self_0),
unwind: ::core::clone::Clone::clone(__self_1),
},
Self::InlineAsm {
asm_macro: __self_0,
template: __self_1,
operands: __self_2,
options: __self_3,
line_spans: __self_4,
targets: __self_5,
unwind: __self_6 } =>
TerminatorKind::InlineAsm {
asm_macro: ::core::clone::Clone::clone(__self_0),
template: ::core::clone::Clone::clone(__self_1),
operands: ::core::clone::Clone::clone(__self_2),
options: ::core::clone::Clone::clone(__self_3),
line_spans: ::core::clone::Clone::clone(__self_4),
targets: ::core::clone::Clone::clone(__self_5),
unwind: ::core::clone::Clone::clone(__self_6),
},
}
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for TerminatorKind<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
TerminatorKind::Goto {
target: ref __binding_0, loop_hint_attrs: ref __binding_1 }
=> {
0usize
}
TerminatorKind::SwitchInt {
discr: ref __binding_0, targets: ref __binding_1 } => {
1usize
}
TerminatorKind::UnwindResume => { 2usize }
TerminatorKind::UnwindTerminate(ref __binding_0) => {
3usize
}
TerminatorKind::Return => { 4usize }
TerminatorKind::Unreachable => { 5usize }
TerminatorKind::Drop {
place: ref __binding_0,
target: ref __binding_1,
unwind: ref __binding_2,
replace: ref __binding_3,
drop: ref __binding_4 } => {
6usize
}
TerminatorKind::Call {
func: ref __binding_0,
args: ref __binding_1,
destination: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4,
call_source: ref __binding_5,
fn_span: ref __binding_6 } => {
7usize
}
TerminatorKind::TailCall {
func: ref __binding_0,
args: ref __binding_1,
fn_span: ref __binding_2 } => {
8usize
}
TerminatorKind::Assert {
cond: ref __binding_0,
expected: ref __binding_1,
msg: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4 } => {
9usize
}
TerminatorKind::Yield {
value: ref __binding_0,
resume: ref __binding_1,
resume_arg: ref __binding_2,
drop: ref __binding_3 } => {
10usize
}
TerminatorKind::CoroutineDrop => { 11usize }
TerminatorKind::FalseEdge {
real_target: ref __binding_0,
imaginary_target: ref __binding_1 } => {
12usize
}
TerminatorKind::FalseUnwind {
real_target: ref __binding_0, unwind: ref __binding_1 } => {
13usize
}
TerminatorKind::InlineAsm {
asm_macro: ref __binding_0,
template: __binding_1,
operands: ref __binding_2,
options: ref __binding_3,
line_spans: __binding_4,
targets: ref __binding_5,
unwind: ref __binding_6 } => {
14usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
TerminatorKind::Goto {
target: ref __binding_0, loop_hint_attrs: ref __binding_1 }
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TerminatorKind::SwitchInt {
discr: ref __binding_0, targets: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TerminatorKind::UnwindResume => {}
TerminatorKind::UnwindTerminate(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TerminatorKind::Return => {}
TerminatorKind::Unreachable => {}
TerminatorKind::Drop {
place: ref __binding_0,
target: ref __binding_1,
unwind: ref __binding_2,
replace: ref __binding_3,
drop: ref __binding_4 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
}
TerminatorKind::Call {
func: ref __binding_0,
args: ref __binding_1,
destination: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4,
call_source: ref __binding_5,
fn_span: ref __binding_6 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_6,
__encoder);
}
TerminatorKind::TailCall {
func: ref __binding_0,
args: ref __binding_1,
fn_span: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
TerminatorKind::Assert {
cond: ref __binding_0,
expected: ref __binding_1,
msg: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
}
TerminatorKind::Yield {
value: ref __binding_0,
resume: ref __binding_1,
resume_arg: ref __binding_2,
drop: ref __binding_3 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
TerminatorKind::CoroutineDrop => {}
TerminatorKind::FalseEdge {
real_target: ref __binding_0,
imaginary_target: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TerminatorKind::FalseUnwind {
real_target: ref __binding_0, unwind: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TerminatorKind::InlineAsm {
asm_macro: ref __binding_0,
template: __binding_1,
operands: ref __binding_2,
options: ref __binding_3,
line_spans: __binding_4,
targets: ref __binding_5,
unwind: ref __binding_6 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_6,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for TerminatorKind<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
TerminatorKind::Goto {
target: ::rustc_serialize::Decodable::decode(__decoder),
loop_hint_attrs: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
TerminatorKind::SwitchInt {
discr: ::rustc_serialize::Decodable::decode(__decoder),
targets: ::rustc_serialize::Decodable::decode(__decoder),
}
}
2usize => { TerminatorKind::UnwindResume }
3usize => {
TerminatorKind::UnwindTerminate(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => { TerminatorKind::Return }
5usize => { TerminatorKind::Unreachable }
6usize => {
TerminatorKind::Drop {
place: ::rustc_serialize::Decodable::decode(__decoder),
target: ::rustc_serialize::Decodable::decode(__decoder),
unwind: ::rustc_serialize::Decodable::decode(__decoder),
replace: ::rustc_serialize::Decodable::decode(__decoder),
drop: ::rustc_serialize::Decodable::decode(__decoder),
}
}
7usize => {
TerminatorKind::Call {
func: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
destination: ::rustc_serialize::Decodable::decode(__decoder),
target: ::rustc_serialize::Decodable::decode(__decoder),
unwind: ::rustc_serialize::Decodable::decode(__decoder),
call_source: ::rustc_serialize::Decodable::decode(__decoder),
fn_span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
8usize => {
TerminatorKind::TailCall {
func: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
fn_span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
9usize => {
TerminatorKind::Assert {
cond: ::rustc_serialize::Decodable::decode(__decoder),
expected: ::rustc_serialize::Decodable::decode(__decoder),
msg: ::rustc_serialize::Decodable::decode(__decoder),
target: ::rustc_serialize::Decodable::decode(__decoder),
unwind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
10usize => {
TerminatorKind::Yield {
value: ::rustc_serialize::Decodable::decode(__decoder),
resume: ::rustc_serialize::Decodable::decode(__decoder),
resume_arg: ::rustc_serialize::Decodable::decode(__decoder),
drop: ::rustc_serialize::Decodable::decode(__decoder),
}
}
11usize => { TerminatorKind::CoroutineDrop }
12usize => {
TerminatorKind::FalseEdge {
real_target: ::rustc_serialize::Decodable::decode(__decoder),
imaginary_target: ::rustc_serialize::Decodable::decode(__decoder),
}
}
13usize => {
TerminatorKind::FalseUnwind {
real_target: ::rustc_serialize::Decodable::decode(__decoder),
unwind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
14usize => {
TerminatorKind::InlineAsm {
asm_macro: ::rustc_serialize::Decodable::decode(__decoder),
template: ::rustc_middle::ty::codec::RefDecodable::decode(__decoder),
operands: ::rustc_serialize::Decodable::decode(__decoder),
options: ::rustc_serialize::Decodable::decode(__decoder),
line_spans: ::rustc_middle::ty::codec::RefDecodable::decode(__decoder),
targets: ::rustc_serialize::Decodable::decode(__decoder),
unwind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `TerminatorKind`, expected 0..15, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
TerminatorKind<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
TerminatorKind::Goto {
target: ref __binding_0, loop_hint_attrs: ref __binding_1 }
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
TerminatorKind::SwitchInt {
discr: ref __binding_0, targets: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
TerminatorKind::UnwindResume => {}
TerminatorKind::UnwindTerminate(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
TerminatorKind::Return => {}
TerminatorKind::Unreachable => {}
TerminatorKind::Drop {
place: ref __binding_0,
target: ref __binding_1,
unwind: ref __binding_2,
replace: ref __binding_3,
drop: ref __binding_4 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
{ __binding_4.stable_hash(__hcx, __hasher); }
}
TerminatorKind::Call {
func: ref __binding_0,
args: ref __binding_1,
destination: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4,
call_source: ref __binding_5,
fn_span: ref __binding_6 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
{ __binding_4.stable_hash(__hcx, __hasher); }
{ __binding_5.stable_hash(__hcx, __hasher); }
{ __binding_6.stable_hash(__hcx, __hasher); }
}
TerminatorKind::TailCall {
func: ref __binding_0,
args: ref __binding_1,
fn_span: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
TerminatorKind::Assert {
cond: ref __binding_0,
expected: ref __binding_1,
msg: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
{ __binding_4.stable_hash(__hcx, __hasher); }
}
TerminatorKind::Yield {
value: ref __binding_0,
resume: ref __binding_1,
resume_arg: ref __binding_2,
drop: ref __binding_3 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
}
TerminatorKind::CoroutineDrop => {}
TerminatorKind::FalseEdge {
real_target: ref __binding_0,
imaginary_target: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
TerminatorKind::FalseUnwind {
real_target: ref __binding_0, unwind: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
TerminatorKind::InlineAsm {
asm_macro: ref __binding_0,
template: ref __binding_1,
operands: ref __binding_2,
options: ref __binding_3,
line_spans: ref __binding_4,
targets: ref __binding_5,
unwind: ref __binding_6 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
{ __binding_4.stable_hash(__hcx, __hasher); }
{ __binding_5.stable_hash(__hcx, __hasher); }
{ __binding_6.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]
impl<'tcx> ::core::marker::StructuralPartialEq for TerminatorKind<'tcx> { }
#[automatically_derived]
impl<'tcx> ::core::cmp::PartialEq for TerminatorKind<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Goto { target: __self_0, loop_hint_attrs: __self_1 },
Self::Goto { target: __arg1_0, loop_hint_attrs: __arg1_1 })
=> __self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::SwitchInt { discr: __self_0, targets: __self_1 },
Self::SwitchInt { discr: __arg1_0, targets: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::UnwindTerminate(__self_0),
Self::UnwindTerminate(__arg1_0)) => __self_0 == __arg1_0,
(Self::Drop {
place: __self_0,
target: __self_1,
unwind: __self_2,
replace: __self_3,
drop: __self_4 }, Self::Drop {
place: __arg1_0,
target: __arg1_1,
unwind: __arg1_2,
replace: __arg1_3,
drop: __arg1_4 }) =>
__self_3 == __arg1_3 && __self_0 == __arg1_0 &&
__self_1 == __arg1_1 && __self_2 == __arg1_2 &&
__self_4 == __arg1_4,
(Self::Call {
func: __self_0,
args: __self_1,
destination: __self_2,
target: __self_3,
unwind: __self_4,
call_source: __self_5,
fn_span: __self_6 }, Self::Call {
func: __arg1_0,
args: __arg1_1,
destination: __arg1_2,
target: __arg1_3,
unwind: __arg1_4,
call_source: __arg1_5,
fn_span: __arg1_6 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4 && __self_5 == __arg1_5 &&
__self_6 == __arg1_6,
(Self::TailCall {
func: __self_0, args: __self_1, fn_span: __self_2 },
Self::TailCall {
func: __arg1_0, args: __arg1_1, fn_span: __arg1_2 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::Assert {
cond: __self_0,
expected: __self_1,
msg: __self_2,
target: __self_3,
unwind: __self_4 }, Self::Assert {
cond: __arg1_0,
expected: __arg1_1,
msg: __arg1_2,
target: __arg1_3,
unwind: __arg1_4 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4,
(Self::Yield {
value: __self_0,
resume: __self_1,
resume_arg: __self_2,
drop: __self_3 }, Self::Yield {
value: __arg1_0,
resume: __arg1_1,
resume_arg: __arg1_2,
drop: __arg1_3 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(Self::FalseEdge {
real_target: __self_0, imaginary_target: __self_1 },
Self::FalseEdge {
real_target: __arg1_0, imaginary_target: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::FalseUnwind { real_target: __self_0, unwind: __self_1
}, Self::FalseUnwind {
real_target: __arg1_0, unwind: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::InlineAsm {
asm_macro: __self_0,
template: __self_1,
operands: __self_2,
options: __self_3,
line_spans: __self_4,
targets: __self_5,
unwind: __self_6 }, Self::InlineAsm {
asm_macro: __arg1_0,
template: __arg1_1,
operands: __arg1_2,
options: __arg1_3,
line_spans: __arg1_4,
targets: __arg1_5,
unwind: __arg1_6 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4 && __self_5 == __arg1_5 &&
__self_6 == __arg1_6,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for TerminatorKind<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
TerminatorKind::Goto {
target: __binding_0, loop_hint_attrs: __binding_1 } => {
TerminatorKind::Goto {
target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
loop_hint_attrs: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
TerminatorKind::SwitchInt {
discr: __binding_0, targets: __binding_1 } => {
TerminatorKind::SwitchInt {
discr: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
targets: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
TerminatorKind::UnwindResume => {
TerminatorKind::UnwindResume
}
TerminatorKind::UnwindTerminate(__binding_0) => {
TerminatorKind::UnwindTerminate(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
TerminatorKind::Return => { TerminatorKind::Return }
TerminatorKind::Unreachable => {
TerminatorKind::Unreachable
}
TerminatorKind::Drop {
place: __binding_0,
target: __binding_1,
unwind: __binding_2,
replace: __binding_3,
drop: __binding_4 } => {
TerminatorKind::Drop {
place: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
unwind: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
replace: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
drop: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_4,
__folder)?,
}
}
TerminatorKind::Call {
func: __binding_0,
args: __binding_1,
destination: __binding_2,
target: __binding_3,
unwind: __binding_4,
call_source: __binding_5,
fn_span: __binding_6 } => {
TerminatorKind::Call {
func: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
args: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
destination: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
unwind: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_4,
__folder)?,
call_source: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_5,
__folder)?,
fn_span: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_6,
__folder)?,
}
}
TerminatorKind::TailCall {
func: __binding_0, args: __binding_1, fn_span: __binding_2 }
=> {
TerminatorKind::TailCall {
func: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
args: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
fn_span: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
}
}
TerminatorKind::Assert {
cond: __binding_0,
expected: __binding_1,
msg: __binding_2,
target: __binding_3,
unwind: __binding_4 } => {
TerminatorKind::Assert {
cond: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
expected: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
msg: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
unwind: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_4,
__folder)?,
}
}
TerminatorKind::Yield {
value: __binding_0,
resume: __binding_1,
resume_arg: __binding_2,
drop: __binding_3 } => {
TerminatorKind::Yield {
value: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
resume: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
resume_arg: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
drop: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
}
}
TerminatorKind::CoroutineDrop => {
TerminatorKind::CoroutineDrop
}
TerminatorKind::FalseEdge {
real_target: __binding_0, imaginary_target: __binding_1 } =>
{
TerminatorKind::FalseEdge {
real_target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
imaginary_target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
TerminatorKind::FalseUnwind {
real_target: __binding_0, unwind: __binding_1 } => {
TerminatorKind::FalseUnwind {
real_target: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
unwind: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
TerminatorKind::InlineAsm {
asm_macro: __binding_0,
template: __binding_1,
operands: __binding_2,
options: __binding_3,
line_spans: __binding_4,
targets: __binding_5,
unwind: __binding_6 } => {
TerminatorKind::InlineAsm {
asm_macro: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
template: __binding_1,
operands: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
options: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_3,
__folder)?,
line_spans: __binding_4,
targets: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_5,
__folder)?,
unwind: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_6,
__folder)?,
}
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
TerminatorKind::Goto {
target: __binding_0, loop_hint_attrs: __binding_1 } => {
TerminatorKind::Goto {
target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
loop_hint_attrs: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
TerminatorKind::SwitchInt {
discr: __binding_0, targets: __binding_1 } => {
TerminatorKind::SwitchInt {
discr: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
targets: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
TerminatorKind::UnwindResume => {
TerminatorKind::UnwindResume
}
TerminatorKind::UnwindTerminate(__binding_0) => {
TerminatorKind::UnwindTerminate(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
TerminatorKind::Return => { TerminatorKind::Return }
TerminatorKind::Unreachable => {
TerminatorKind::Unreachable
}
TerminatorKind::Drop {
place: __binding_0,
target: __binding_1,
unwind: __binding_2,
replace: __binding_3,
drop: __binding_4 } => {
TerminatorKind::Drop {
place: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
unwind: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
replace: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
drop: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_4,
__folder),
}
}
TerminatorKind::Call {
func: __binding_0,
args: __binding_1,
destination: __binding_2,
target: __binding_3,
unwind: __binding_4,
call_source: __binding_5,
fn_span: __binding_6 } => {
TerminatorKind::Call {
func: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
args: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
destination: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
unwind: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_4,
__folder),
call_source: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_5,
__folder),
fn_span: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_6,
__folder),
}
}
TerminatorKind::TailCall {
func: __binding_0, args: __binding_1, fn_span: __binding_2 }
=> {
TerminatorKind::TailCall {
func: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
args: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
fn_span: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
}
}
TerminatorKind::Assert {
cond: __binding_0,
expected: __binding_1,
msg: __binding_2,
target: __binding_3,
unwind: __binding_4 } => {
TerminatorKind::Assert {
cond: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
expected: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
msg: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
unwind: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_4,
__folder),
}
}
TerminatorKind::Yield {
value: __binding_0,
resume: __binding_1,
resume_arg: __binding_2,
drop: __binding_3 } => {
TerminatorKind::Yield {
value: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
resume: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
resume_arg: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
drop: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
}
}
TerminatorKind::CoroutineDrop => {
TerminatorKind::CoroutineDrop
}
TerminatorKind::FalseEdge {
real_target: __binding_0, imaginary_target: __binding_1 } =>
{
TerminatorKind::FalseEdge {
real_target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
imaginary_target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
TerminatorKind::FalseUnwind {
real_target: __binding_0, unwind: __binding_1 } => {
TerminatorKind::FalseUnwind {
real_target: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
unwind: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
TerminatorKind::InlineAsm {
asm_macro: __binding_0,
template: __binding_1,
operands: __binding_2,
options: __binding_3,
line_spans: __binding_4,
targets: __binding_5,
unwind: __binding_6 } => {
TerminatorKind::InlineAsm {
asm_macro: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
template: __binding_1,
operands: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
options: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_3,
__folder),
line_spans: __binding_4,
targets: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_5,
__folder),
unwind: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_6,
__folder),
}
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for TerminatorKind<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
TerminatorKind::Goto {
target: ref __binding_0, loop_hint_attrs: ref __binding_1 }
=> {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::SwitchInt {
discr: ref __binding_0, targets: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::UnwindResume => {}
TerminatorKind::UnwindTerminate(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::Return => {}
TerminatorKind::Unreachable => {}
TerminatorKind::Drop {
place: ref __binding_0,
target: ref __binding_1,
unwind: ref __binding_2,
replace: ref __binding_3,
drop: ref __binding_4 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_4,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::Call {
func: ref __binding_0,
args: ref __binding_1,
destination: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4,
call_source: ref __binding_5,
fn_span: ref __binding_6 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_4,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_5,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_6,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::TailCall {
func: ref __binding_0,
args: ref __binding_1,
fn_span: ref __binding_2 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::Assert {
cond: ref __binding_0,
expected: ref __binding_1,
msg: ref __binding_2,
target: ref __binding_3,
unwind: ref __binding_4 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_4,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::Yield {
value: ref __binding_0,
resume: ref __binding_1,
resume_arg: ref __binding_2,
drop: ref __binding_3 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::CoroutineDrop => {}
TerminatorKind::FalseEdge {
real_target: ref __binding_0,
imaginary_target: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::FalseUnwind {
real_target: ref __binding_0, unwind: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
TerminatorKind::InlineAsm {
asm_macro: ref __binding_0,
operands: ref __binding_2,
options: ref __binding_3,
targets: ref __binding_5,
unwind: ref __binding_6, .. } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_3,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_5,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_6,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
686pub enum TerminatorKind<'tcx> {
687 Goto { target: BasicBlock, loop_hint_attrs: ThinVec<UnrollAttr> },
689
690 SwitchInt {
699 discr: Operand<'tcx>,
701 targets: SwitchTargets,
702 },
703
704 UnwindResume,
711
712 UnwindTerminate(UnwindTerminateReason),
717
718 Return,
730
731 Unreachable,
735
736 Drop {
769 place: Place<'tcx>,
770 target: BasicBlock,
771 unwind: UnwindAction,
772 replace: bool,
773 drop: Option<BasicBlock>,
775 },
776
777 Call {
791 func: Operand<'tcx>,
793 args: Box<[Spanned<Operand<'tcx>>]>,
800 destination: Place<'tcx>,
802 target: Option<BasicBlock>,
804 unwind: UnwindAction,
806 call_source: CallSource,
808 fn_span: Span,
811 },
812
813 TailCall {
830 func: Operand<'tcx>,
832 args: Box<[Spanned<Operand<'tcx>>]>,
837 fn_span: Span,
841 },
842
843 Assert {
855 cond: Operand<'tcx>,
856 expected: bool,
857 msg: Box<AssertMessage<'tcx>>,
858 target: BasicBlock,
859 unwind: UnwindAction,
860 },
861
862 Yield {
885 value: Operand<'tcx>,
887 resume: BasicBlock,
889 resume_arg: Place<'tcx>,
891 drop: Option<BasicBlock>,
893 },
894
895 CoroutineDrop,
906
907 FalseEdge {
914 real_target: BasicBlock,
916 imaginary_target: BasicBlock,
919 },
920
921 FalseUnwind {
929 real_target: BasicBlock,
931 unwind: UnwindAction,
937 },
938
939 InlineAsm {
942 asm_macro: InlineAsmMacro,
944
945 #[type_foldable(identity)]
947 #[type_visitable(ignore)]
948 template: &'tcx [InlineAsmTemplatePiece],
949
950 operands: Box<[InlineAsmOperand<'tcx>]>,
952
953 options: InlineAsmOptions,
955
956 #[type_foldable(identity)]
959 #[type_visitable(ignore)]
960 line_spans: &'tcx [Span],
961
962 targets: Box<[BasicBlock]>,
966
967 unwind: UnwindAction,
970 },
971}
972
973#[derive(#[automatically_derived]
impl ::core::clone::Clone for BackwardIncompatibleDropReason {
#[inline]
fn clone(&self) -> Self { BackwardIncompatibleDropReason::Edition2024 }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for BackwardIncompatibleDropReason {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Edition2024")
}
}Debug, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for
BackwardIncompatibleDropReason {
fn encode(&self, __encoder: &mut __E) {}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for
BackwardIncompatibleDropReason {
fn decode(__decoder: &mut __D) -> Self {
BackwardIncompatibleDropReason::Edition2024
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
BackwardIncompatibleDropReason {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
BackwardIncompatibleDropReason::Edition2024 => {}
}
}
}
};StableHash, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for BackwardIncompatibleDropReason {
}
#[automatically_derived]
impl ::core::cmp::PartialEq for BackwardIncompatibleDropReason {
#[inline]
fn eq(&self, other: &Self) -> bool { true }
}PartialEq)]
974#[derive(const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for BackwardIncompatibleDropReason {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
BackwardIncompatibleDropReason::Edition2024 => {
BackwardIncompatibleDropReason::Edition2024
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
BackwardIncompatibleDropReason::Edition2024 => {
BackwardIncompatibleDropReason::Edition2024
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for BackwardIncompatibleDropReason {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
BackwardIncompatibleDropReason::Edition2024 => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
975pub enum BackwardIncompatibleDropReason {
976 Edition2024,
977}
978
979#[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) -> Self {
SwitchTargets {
values: ::core::clone::Clone::clone(&self.values),
targets: ::core::clone::Clone::clone(&self.targets),
}
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for SwitchTargets {
fn encode(&self, __encoder: &mut __E) {
let SwitchTargets {
values: ref __binding_0, targets: ref __binding_1 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for SwitchTargets {
fn decode(__decoder: &mut __D) -> Self {
SwitchTargets {
values: ::rustc_serialize::Decodable::decode(__decoder),
targets: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
SwitchTargets {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
SwitchTargets {
values: ref __binding_0, targets: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for SwitchTargets { }
#[automatically_derived]
impl ::core::cmp::PartialEq for SwitchTargets {
#[inline]
fn eq(&self, other: &Self) -> bool {
self.values == other.values && self.targets == other.targets
}
}PartialEq)]
980pub struct SwitchTargets {
981 pub(super) values: SmallVec<[Pu128; 1]>,
984
985 pub(super) targets: SmallVec<[BasicBlock; 2]>,
1006}
1007
1008#[derive(#[automatically_derived]
impl ::core::marker::Copy for UnwindAction { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for UnwindAction { }
#[automatically_derived]
impl ::core::clone::Clone for UnwindAction {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<UnwindTerminateReason>;
let _: ::core::clone::AssertParamIsClone<BasicBlock>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for UnwindAction {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Continue =>
::core::fmt::Formatter::write_str(f, "Continue"),
Self::Unreachable =>
::core::fmt::Formatter::write_str(f, "Unreachable"),
Self::Terminate(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Terminate", &__self_0),
Self::Cleanup(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Cleanup", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for UnwindAction { }
#[automatically_derived]
impl ::core::cmp::PartialEq for UnwindAction {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Terminate(__self_0), Self::Terminate(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Cleanup(__self_0), Self::Cleanup(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for UnwindAction {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<UnwindTerminateReason>;
let _: ::core::cmp::AssertParamIsEq<BasicBlock>;
}
}Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for UnwindAction {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnwindAction::Continue => { 0usize }
UnwindAction::Unreachable => { 1usize }
UnwindAction::Terminate(ref __binding_0) => { 2usize }
UnwindAction::Cleanup(ref __binding_0) => { 3usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
UnwindAction::Continue => {}
UnwindAction::Unreachable => {}
UnwindAction::Terminate(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
UnwindAction::Cleanup(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for UnwindAction {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnwindAction::Continue }
1usize => { UnwindAction::Unreachable }
2usize => {
UnwindAction::Terminate(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
UnwindAction::Cleanup(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnwindAction`, expected 0..4, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for UnwindAction
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
UnwindAction::Continue => {}
UnwindAction::Unreachable => {}
UnwindAction::Terminate(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
UnwindAction::Cleanup(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
1010#[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)]
1011pub enum UnwindAction {
1012 Continue,
1017 Unreachable,
1019 Terminate(UnwindTerminateReason),
1023 Cleanup(BasicBlock),
1025}
1026
1027#[derive(#[automatically_derived]
impl ::core::marker::Copy for UnwindTerminateReason { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for UnwindTerminateReason { }
#[automatically_derived]
impl ::core::clone::Clone for UnwindTerminateReason {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for UnwindTerminateReason {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
UnwindTerminateReason::Abi => "Abi",
UnwindTerminateReason::InCleanup => "InCleanup",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for UnwindTerminateReason { }
#[automatically_derived]
impl ::core::cmp::PartialEq for UnwindTerminateReason {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for UnwindTerminateReason { }Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for UnwindTerminateReason {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnwindTerminateReason::Abi => { 0usize }
UnwindTerminateReason::InCleanup => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for UnwindTerminateReason {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnwindTerminateReason::Abi }
1usize => { UnwindTerminateReason::InCleanup }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnwindTerminateReason`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
UnwindTerminateReason {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
UnwindTerminateReason::Abi => {}
UnwindTerminateReason::InCleanup => {}
}
}
}
};StableHash)]
1029#[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)]
1030pub enum UnwindTerminateReason {
1031 Abi,
1033 InCleanup,
1036}
1037
1038#[derive(#[automatically_derived]
impl<O: ::core::clone::Clone> ::core::clone::Clone for AssertKind<O> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::BoundsCheck { len: __self_0, index: __self_1 } =>
AssertKind::BoundsCheck {
len: ::core::clone::Clone::clone(__self_0),
index: ::core::clone::Clone::clone(__self_1),
},
Self::Overflow(__self_0, __self_1, __self_2) =>
AssertKind::Overflow(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
Self::OverflowNeg(__self_0) =>
AssertKind::OverflowNeg(::core::clone::Clone::clone(__self_0)),
Self::DivisionByZero(__self_0) =>
AssertKind::DivisionByZero(::core::clone::Clone::clone(__self_0)),
Self::RemainderByZero(__self_0) =>
AssertKind::RemainderByZero(::core::clone::Clone::clone(__self_0)),
Self::ResumedAfterReturn(__self_0) =>
AssertKind::ResumedAfterReturn(::core::clone::Clone::clone(__self_0)),
Self::ResumedAfterPanic(__self_0) =>
AssertKind::ResumedAfterPanic(::core::clone::Clone::clone(__self_0)),
Self::ResumedAfterDrop(__self_0) =>
AssertKind::ResumedAfterDrop(::core::clone::Clone::clone(__self_0)),
Self::MisalignedPointerDereference {
required: __self_0, found: __self_1 } =>
AssertKind::MisalignedPointerDereference {
required: ::core::clone::Clone::clone(__self_0),
found: ::core::clone::Clone::clone(__self_1),
},
Self::NullPointerDereference =>
AssertKind::NullPointerDereference,
Self::NullReferenceConstructed =>
AssertKind::NullReferenceConstructed,
Self::InvalidEnumConstruction(__self_0) =>
AssertKind::InvalidEnumConstruction(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<O> ::rustc_data_structures::stable_hash::StableHash for
AssertKind<O> where
O: ::rustc_data_structures::stable_hash::StableHash {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
AssertKind::BoundsCheck {
len: ref __binding_0, index: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
AssertKind::Overflow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
AssertKind::OverflowNeg(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::DivisionByZero(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::RemainderByZero(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::ResumedAfterReturn(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::ResumedAfterPanic(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::ResumedAfterDrop(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AssertKind::MisalignedPointerDereference {
required: ref __binding_0, found: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
AssertKind::NullPointerDereference => {}
AssertKind::NullReferenceConstructed => {}
AssertKind::InvalidEnumConstruction(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]
impl<O: ::core::cmp::PartialEq> ::core::marker::StructuralPartialEq for
AssertKind<O> {
}
#[automatically_derived]
impl<O: ::core::cmp::PartialEq> ::core::cmp::PartialEq for AssertKind<O> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::BoundsCheck { len: __self_0, index: __self_1 },
Self::BoundsCheck { len: __arg1_0, index: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Overflow(__self_0, __self_1, __self_2),
Self::Overflow(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::OverflowNeg(__self_0), Self::OverflowNeg(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::DivisionByZero(__self_0),
Self::DivisionByZero(__arg1_0)) => __self_0 == __arg1_0,
(Self::RemainderByZero(__self_0),
Self::RemainderByZero(__arg1_0)) => __self_0 == __arg1_0,
(Self::ResumedAfterReturn(__self_0),
Self::ResumedAfterReturn(__arg1_0)) => __self_0 == __arg1_0,
(Self::ResumedAfterPanic(__self_0),
Self::ResumedAfterPanic(__arg1_0)) => __self_0 == __arg1_0,
(Self::ResumedAfterDrop(__self_0),
Self::ResumedAfterDrop(__arg1_0)) => __self_0 == __arg1_0,
(Self::MisalignedPointerDereference {
required: __self_0, found: __self_1 },
Self::MisalignedPointerDereference {
required: __arg1_0, found: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::InvalidEnumConstruction(__self_0),
Self::InvalidEnumConstruction(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl<O: ::core::fmt::Debug> ::core::fmt::Debug for AssertKind<O> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::BoundsCheck { len: __self_0, index: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"BoundsCheck", "len", __self_0, "index", &__self_1),
Self::Overflow(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f,
"Overflow", __self_0, __self_1, &__self_2),
Self::OverflowNeg(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"OverflowNeg", &__self_0),
Self::DivisionByZero(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DivisionByZero", &__self_0),
Self::RemainderByZero(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RemainderByZero", &__self_0),
Self::ResumedAfterReturn(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ResumedAfterReturn", &__self_0),
Self::ResumedAfterPanic(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ResumedAfterPanic", &__self_0),
Self::ResumedAfterDrop(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ResumedAfterDrop", &__self_0),
Self::MisalignedPointerDereference {
required: __self_0, found: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"MisalignedPointerDereference", "required", __self_0,
"found", &__self_1),
Self::NullPointerDereference =>
::core::fmt::Formatter::write_str(f,
"NullPointerDereference"),
Self::NullReferenceConstructed =>
::core::fmt::Formatter::write_str(f,
"NullReferenceConstructed"),
Self::InvalidEnumConstruction(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"InvalidEnumConstruction", &__self_0),
}
}
}Debug)]
1040#[derive(const _: () =
{
impl<'tcx, O, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for AssertKind<O> where
O: ::rustc_serialize::Encodable<__E> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AssertKind::BoundsCheck {
len: ref __binding_0, index: ref __binding_1 } => {
0usize
}
AssertKind::Overflow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
1usize
}
AssertKind::OverflowNeg(ref __binding_0) => { 2usize }
AssertKind::DivisionByZero(ref __binding_0) => { 3usize }
AssertKind::RemainderByZero(ref __binding_0) => { 4usize }
AssertKind::ResumedAfterReturn(ref __binding_0) => {
5usize
}
AssertKind::ResumedAfterPanic(ref __binding_0) => { 6usize }
AssertKind::ResumedAfterDrop(ref __binding_0) => { 7usize }
AssertKind::MisalignedPointerDereference {
required: ref __binding_0, found: ref __binding_1 } => {
8usize
}
AssertKind::NullPointerDereference => { 9usize }
AssertKind::NullReferenceConstructed => { 10usize }
AssertKind::InvalidEnumConstruction(ref __binding_0) => {
11usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AssertKind::BoundsCheck {
len: ref __binding_0, index: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
AssertKind::Overflow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
AssertKind::OverflowNeg(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::DivisionByZero(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::RemainderByZero(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::ResumedAfterReturn(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::ResumedAfterPanic(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::ResumedAfterDrop(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssertKind::MisalignedPointerDereference {
required: ref __binding_0, found: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
AssertKind::NullPointerDereference => {}
AssertKind::NullReferenceConstructed => {}
AssertKind::InvalidEnumConstruction(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, O, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for AssertKind<O> where
O: ::rustc_serialize::Decodable<__D> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
AssertKind::BoundsCheck {
len: ::rustc_serialize::Decodable::decode(__decoder),
index: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
AssertKind::Overflow(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
AssertKind::OverflowNeg(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
AssertKind::DivisionByZero(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
AssertKind::RemainderByZero(::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
AssertKind::ResumedAfterReturn(::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
AssertKind::ResumedAfterPanic(::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
AssertKind::ResumedAfterDrop(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
AssertKind::MisalignedPointerDereference {
required: ::rustc_serialize::Decodable::decode(__decoder),
found: ::rustc_serialize::Decodable::decode(__decoder),
}
}
9usize => { AssertKind::NullPointerDereference }
10usize => { AssertKind::NullReferenceConstructed }
11usize => {
AssertKind::InvalidEnumConstruction(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AssertKind`, expected 0..12, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx, O>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for AssertKind<O> where
O: ::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
{
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
AssertKind::BoundsCheck {
len: __binding_0, index: __binding_1 } => {
AssertKind::BoundsCheck {
len: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
index: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
AssertKind::Overflow(__binding_0, __binding_1, __binding_2)
=> {
AssertKind::Overflow(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?)
}
AssertKind::OverflowNeg(__binding_0) => {
AssertKind::OverflowNeg(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::DivisionByZero(__binding_0) => {
AssertKind::DivisionByZero(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::RemainderByZero(__binding_0) => {
AssertKind::RemainderByZero(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::ResumedAfterReturn(__binding_0) => {
AssertKind::ResumedAfterReturn(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::ResumedAfterPanic(__binding_0) => {
AssertKind::ResumedAfterPanic(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::ResumedAfterDrop(__binding_0) => {
AssertKind::ResumedAfterDrop(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
AssertKind::MisalignedPointerDereference {
required: __binding_0, found: __binding_1 } => {
AssertKind::MisalignedPointerDereference {
required: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
found: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
AssertKind::NullPointerDereference => {
AssertKind::NullPointerDereference
}
AssertKind::NullReferenceConstructed => {
AssertKind::NullReferenceConstructed
}
AssertKind::InvalidEnumConstruction(__binding_0) => {
AssertKind::InvalidEnumConstruction(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
AssertKind::BoundsCheck {
len: __binding_0, index: __binding_1 } => {
AssertKind::BoundsCheck {
len: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
index: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
AssertKind::Overflow(__binding_0, __binding_1, __binding_2)
=> {
AssertKind::Overflow(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder))
}
AssertKind::OverflowNeg(__binding_0) => {
AssertKind::OverflowNeg(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::DivisionByZero(__binding_0) => {
AssertKind::DivisionByZero(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::RemainderByZero(__binding_0) => {
AssertKind::RemainderByZero(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::ResumedAfterReturn(__binding_0) => {
AssertKind::ResumedAfterReturn(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::ResumedAfterPanic(__binding_0) => {
AssertKind::ResumedAfterPanic(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::ResumedAfterDrop(__binding_0) => {
AssertKind::ResumedAfterDrop(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
AssertKind::MisalignedPointerDereference {
required: __binding_0, found: __binding_1 } => {
AssertKind::MisalignedPointerDereference {
required: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
found: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
AssertKind::NullPointerDereference => {
AssertKind::NullPointerDereference
}
AssertKind::NullReferenceConstructed => {
AssertKind::NullReferenceConstructed
}
AssertKind::InvalidEnumConstruction(__binding_0) => {
AssertKind::InvalidEnumConstruction(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx, O>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for AssertKind<O> where
O: ::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
{
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
AssertKind::BoundsCheck {
len: ref __binding_0, index: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::Overflow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::OverflowNeg(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::DivisionByZero(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::RemainderByZero(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::ResumedAfterReturn(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::ResumedAfterPanic(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::ResumedAfterDrop(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::MisalignedPointerDereference {
required: ref __binding_0, found: ref __binding_1 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
AssertKind::NullPointerDereference => {}
AssertKind::NullReferenceConstructed => {}
AssertKind::InvalidEnumConstruction(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1041pub enum AssertKind<O> {
1042 BoundsCheck { len: O, index: O },
1043 Overflow(BinOp, O, O),
1044 OverflowNeg(O),
1045 DivisionByZero(O),
1046 RemainderByZero(O),
1047 ResumedAfterReturn(CoroutineKind),
1048 ResumedAfterPanic(CoroutineKind),
1049 ResumedAfterDrop(CoroutineKind),
1050 MisalignedPointerDereference { required: O, found: O },
1051 NullPointerDereference,
1052 NullReferenceConstructed,
1053 InvalidEnumConstruction(O),
1054}
1055
1056#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for InlineAsmOperand<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::In { reg: __self_0, value: __self_1 } =>
InlineAsmOperand::In {
reg: ::core::clone::Clone::clone(__self_0),
value: ::core::clone::Clone::clone(__self_1),
},
Self::Out { reg: __self_0, late: __self_1, place: __self_2 } =>
InlineAsmOperand::Out {
reg: ::core::clone::Clone::clone(__self_0),
late: ::core::clone::Clone::clone(__self_1),
place: ::core::clone::Clone::clone(__self_2),
},
Self::InOut {
reg: __self_0,
late: __self_1,
in_value: __self_2,
out_place: __self_3 } =>
InlineAsmOperand::InOut {
reg: ::core::clone::Clone::clone(__self_0),
late: ::core::clone::Clone::clone(__self_1),
in_value: ::core::clone::Clone::clone(__self_2),
out_place: ::core::clone::Clone::clone(__self_3),
},
Self::Const { value: __self_0 } =>
InlineAsmOperand::Const {
value: ::core::clone::Clone::clone(__self_0),
},
Self::SymFn { value: __self_0 } =>
InlineAsmOperand::SymFn {
value: ::core::clone::Clone::clone(__self_0),
},
Self::SymStatic { def_id: __self_0 } =>
InlineAsmOperand::SymStatic {
def_id: ::core::clone::Clone::clone(__self_0),
},
Self::Label { target_index: __self_0 } =>
InlineAsmOperand::Label {
target_index: ::core::clone::Clone::clone(__self_0),
},
}
}
}Clone, #[automatically_derived]
impl<'tcx> ::core::fmt::Debug for InlineAsmOperand<'tcx> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::In { reg: __self_0, value: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "In",
"reg", __self_0, "value", &__self_1),
Self::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),
Self::InOut {
reg: __self_0,
late: __self_1,
in_value: __self_2,
out_place: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f, "InOut",
"reg", __self_0, "late", __self_1, "in_value", __self_2,
"out_place", &__self_3),
Self::Const { value: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Const",
"value", &__self_0),
Self::SymFn { value: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "SymFn",
"value", &__self_0),
Self::SymStatic { def_id: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"SymStatic", "def_id", &__self_0),
Self::Label { target_index: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Label",
"target_index", &__self_0),
}
}
}Debug, #[automatically_derived]
impl<'tcx> ::core::marker::StructuralPartialEq for InlineAsmOperand<'tcx> { }
#[automatically_derived]
impl<'tcx> ::core::cmp::PartialEq for InlineAsmOperand<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::In { reg: __self_0, value: __self_1 }, Self::In {
reg: __arg1_0, value: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Out { reg: __self_0, late: __self_1, place: __self_2 },
Self::Out { reg: __arg1_0, late: __arg1_1, place: __arg1_2
}) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0 &&
__self_2 == __arg1_2,
(Self::InOut {
reg: __self_0,
late: __self_1,
in_value: __self_2,
out_place: __self_3 }, Self::InOut {
reg: __arg1_0,
late: __arg1_1,
in_value: __arg1_2,
out_place: __arg1_3 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(Self::Const { value: __self_0 }, Self::Const {
value: __arg1_0 }) => __self_0 == __arg1_0,
(Self::SymFn { value: __self_0 }, Self::SymFn {
value: __arg1_0 }) => __self_0 == __arg1_0,
(Self::SymStatic { def_id: __self_0 }, Self::SymStatic {
def_id: __arg1_0 }) => __self_0 == __arg1_0,
(Self::Label { target_index: __self_0 }, Self::Label {
target_index: __arg1_0 }) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for InlineAsmOperand<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, value: ref __binding_1 } => {
0usize
}
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
place: ref __binding_2 } => {
1usize
}
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
in_value: ref __binding_2,
out_place: ref __binding_3 } => {
2usize
}
InlineAsmOperand::Const { value: ref __binding_0 } => {
3usize
}
InlineAsmOperand::SymFn { value: ref __binding_0 } => {
4usize
}
InlineAsmOperand::SymStatic { def_id: ref __binding_0 } => {
5usize
}
InlineAsmOperand::Label { target_index: ref __binding_0 } =>
{
6usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, value: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
place: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
in_value: ref __binding_2,
out_place: ref __binding_3 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
InlineAsmOperand::Const { value: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmOperand::SymFn { value: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmOperand::SymStatic { def_id: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmOperand::Label { target_index: ref __binding_0 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for InlineAsmOperand<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
InlineAsmOperand::In {
reg: ::rustc_serialize::Decodable::decode(__decoder),
value: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
InlineAsmOperand::Out {
reg: ::rustc_serialize::Decodable::decode(__decoder),
late: ::rustc_serialize::Decodable::decode(__decoder),
place: ::rustc_serialize::Decodable::decode(__decoder),
}
}
2usize => {
InlineAsmOperand::InOut {
reg: ::rustc_serialize::Decodable::decode(__decoder),
late: ::rustc_serialize::Decodable::decode(__decoder),
in_value: ::rustc_serialize::Decodable::decode(__decoder),
out_place: ::rustc_serialize::Decodable::decode(__decoder),
}
}
3usize => {
InlineAsmOperand::Const {
value: ::rustc_serialize::Decodable::decode(__decoder),
}
}
4usize => {
InlineAsmOperand::SymFn {
value: ::rustc_serialize::Decodable::decode(__decoder),
}
}
5usize => {
InlineAsmOperand::SymStatic {
def_id: ::rustc_serialize::Decodable::decode(__decoder),
}
}
6usize => {
InlineAsmOperand::Label {
target_index: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `InlineAsmOperand`, expected 0..7, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
InlineAsmOperand<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, value: ref __binding_1 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
place: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
in_value: ref __binding_2,
out_place: ref __binding_3 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::Const { value: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::SymFn { value: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::SymStatic { def_id: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
InlineAsmOperand::Label { target_index: ref __binding_0 } =>
{
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
1057#[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)]
1058pub enum InlineAsmOperand<'tcx> {
1059 In {
1060 reg: InlineAsmRegOrRegClass,
1061 value: Operand<'tcx>,
1062 },
1063 Out {
1064 reg: InlineAsmRegOrRegClass,
1065 late: bool,
1066 place: Option<Place<'tcx>>,
1067 },
1068 InOut {
1069 reg: InlineAsmRegOrRegClass,
1070 late: bool,
1071 in_value: Operand<'tcx>,
1072 out_place: Option<Place<'tcx>>,
1073 },
1074 Const {
1075 value: Box<ConstOperand<'tcx>>,
1076 },
1077 SymFn {
1078 value: Box<ConstOperand<'tcx>>,
1079 },
1080 SymStatic {
1081 def_id: DefId,
1082 },
1083 Label {
1084 target_index: usize,
1086 },
1087}
1088
1089pub type AssertMessage<'tcx> = AssertKind<Operand<'tcx>>;
1091
1092#[derive(#[automatically_derived]
impl<'tcx> ::core::marker::Copy for Place<'tcx> { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl<'tcx> ::core::clone::TrivialClone for Place<'tcx> { }
#[automatically_derived]
impl<'tcx> ::core::clone::Clone for Place<'tcx> {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<Local>;
let _: ::core::clone::AssertParamIsClone<&'tcx List<PlaceElem<'tcx>>>;
*self
}
}Clone, #[automatically_derived]
impl<'tcx> ::core::marker::StructuralPartialEq for Place<'tcx> { }
#[automatically_derived]
impl<'tcx> ::core::cmp::PartialEq for Place<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
self.local == other.local && self.projection == other.projection
}
}PartialEq, #[automatically_derived]
impl<'tcx> ::core::cmp::Eq for Place<'tcx> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Local>;
let _: ::core::cmp::AssertParamIsEq<&'tcx List<PlaceElem<'tcx>>>;
}
}Eq, #[automatically_derived]
impl<'tcx> ::core::hash::Hash for Place<'tcx> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.local, state);
::core::hash::Hash::hash(&self.projection, state)
}
}Hash, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for Place<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let Place { local: ref __binding_0, projection: __binding_1
} = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
};TyEncodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
Place<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
Place { local: ref __binding_0, projection: ref __binding_1
} => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for Place<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
Place { local: __binding_0, projection: __binding_1 } => {
Place {
local: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
projection: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
}
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
Place { local: __binding_0, projection: __binding_1 } => {
Place {
local: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
projection: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
}
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for Place<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
Place { local: ref __binding_0, projection: ref __binding_1
} => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1165pub struct Place<'tcx> {
1166 pub local: Local,
1167
1168 pub projection: &'tcx List<PlaceElem<'tcx>>,
1170}
1171
1172#[derive(#[automatically_derived]
impl<V: ::core::marker::Copy, T: ::core::marker::Copy> ::core::marker::Copy
for ProjectionElem<V, T> {
}Copy, #[automatically_derived]
impl<V: ::core::clone::Clone, T: ::core::clone::Clone> ::core::clone::Clone
for ProjectionElem<V, T> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Deref => ProjectionElem::Deref,
Self::Field(__self_0, __self_1) =>
ProjectionElem::Field(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Index(__self_0) =>
ProjectionElem::Index(::core::clone::Clone::clone(__self_0)),
Self::ConstantIndex {
offset: __self_0, min_length: __self_1, from_end: __self_2 }
=>
ProjectionElem::ConstantIndex {
offset: ::core::clone::Clone::clone(__self_0),
min_length: ::core::clone::Clone::clone(__self_1),
from_end: ::core::clone::Clone::clone(__self_2),
},
Self::Subslice { from: __self_0, to: __self_1, from_end: __self_2
} =>
ProjectionElem::Subslice {
from: ::core::clone::Clone::clone(__self_0),
to: ::core::clone::Clone::clone(__self_1),
from_end: ::core::clone::Clone::clone(__self_2),
},
Self::Downcast(__self_0, __self_1) =>
ProjectionElem::Downcast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::OpaqueCast(__self_0) =>
ProjectionElem::OpaqueCast(::core::clone::Clone::clone(__self_0)),
Self::UnwrapUnsafeBinder(__self_0) =>
ProjectionElem::UnwrapUnsafeBinder(::core::clone::Clone::clone(__self_0)),
Self::PhantomDeref => ProjectionElem::PhantomDeref,
}
}
}Clone, #[automatically_derived]
impl<V: ::core::fmt::Debug, T: ::core::fmt::Debug> ::core::fmt::Debug for
ProjectionElem<V, T> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Deref => ::core::fmt::Formatter::write_str(f, "Deref"),
Self::Field(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Field",
__self_0, &__self_1),
Self::Index(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Index",
&__self_0),
Self::ConstantIndex {
offset: __self_0, min_length: __self_1, from_end: __self_2 }
=>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"ConstantIndex", "offset", __self_0, "min_length", __self_1,
"from_end", &__self_2),
Self::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),
Self::Downcast(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Downcast", __self_0, &__self_1),
Self::OpaqueCast(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"OpaqueCast", &__self_0),
Self::UnwrapUnsafeBinder(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"UnwrapUnsafeBinder", &__self_0),
Self::PhantomDeref =>
::core::fmt::Formatter::write_str(f, "PhantomDeref"),
}
}
}Debug, #[automatically_derived]
impl<V: ::core::cmp::PartialEq, T: ::core::cmp::PartialEq>
::core::marker::StructuralPartialEq for ProjectionElem<V, T> {
}
#[automatically_derived]
impl<V: ::core::cmp::PartialEq, T: ::core::cmp::PartialEq>
::core::cmp::PartialEq for ProjectionElem<V, T> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Field(__self_0, __self_1),
Self::Field(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Index(__self_0), Self::Index(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::ConstantIndex {
offset: __self_0, min_length: __self_1, from_end: __self_2
}, Self::ConstantIndex {
offset: __arg1_0, min_length: __arg1_1, from_end: __arg1_2
}) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::Subslice {
from: __self_0, to: __self_1, from_end: __self_2 },
Self::Subslice {
from: __arg1_0, to: __arg1_1, from_end: __arg1_2 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::Downcast(__self_0, __self_1),
Self::Downcast(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::OpaqueCast(__self_0), Self::OpaqueCast(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::UnwrapUnsafeBinder(__self_0),
Self::UnwrapUnsafeBinder(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl<V: ::core::cmp::Eq, T: ::core::cmp::Eq> ::core::cmp::Eq for
ProjectionElem<V, T> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<FieldIdx>;
let _: ::core::cmp::AssertParamIsEq<T>;
let _: ::core::cmp::AssertParamIsEq<V>;
let _: ::core::cmp::AssertParamIsEq<u64>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Option<Symbol>>;
let _: ::core::cmp::AssertParamIsEq<VariantIdx>;
}
}Eq, #[automatically_derived]
impl<V: ::core::hash::Hash, T: ::core::hash::Hash> ::core::hash::Hash for
ProjectionElem<V, T> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state);
match self {
Self::Field(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Self::Index(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Self::ConstantIndex {
offset: __self_0, min_length: __self_1, from_end: __self_2 }
=> {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
Self::Subslice { from: __self_0, to: __self_1, from_end: __self_2
} => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
Self::Downcast(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Self::OpaqueCast(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Self::UnwrapUnsafeBinder(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
1173#[derive(const _: () =
{
impl<'tcx, V, T, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for ProjectionElem<V, T> where
T: ::rustc_serialize::Encodable<__E>,
V: ::rustc_serialize::Encodable<__E> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ProjectionElem::Deref => { 0usize }
ProjectionElem::Field(ref __binding_0, ref __binding_1) => {
1usize
}
ProjectionElem::Index(ref __binding_0) => { 2usize }
ProjectionElem::ConstantIndex {
offset: ref __binding_0,
min_length: ref __binding_1,
from_end: ref __binding_2 } => {
3usize
}
ProjectionElem::Subslice {
from: ref __binding_0,
to: ref __binding_1,
from_end: ref __binding_2 } => {
4usize
}
ProjectionElem::Downcast(ref __binding_0, ref __binding_1)
=> {
5usize
}
ProjectionElem::OpaqueCast(ref __binding_0) => { 6usize }
ProjectionElem::UnwrapUnsafeBinder(ref __binding_0) => {
7usize
}
ProjectionElem::PhantomDeref => { 8usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ProjectionElem::Deref => {}
ProjectionElem::Field(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ProjectionElem::Index(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ProjectionElem::ConstantIndex {
offset: ref __binding_0,
min_length: ref __binding_1,
from_end: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ProjectionElem::Subslice {
from: ref __binding_0,
to: ref __binding_1,
from_end: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ProjectionElem::Downcast(ref __binding_0, ref __binding_1)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ProjectionElem::OpaqueCast(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ProjectionElem::UnwrapUnsafeBinder(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ProjectionElem::PhantomDeref => {}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, V, T, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for ProjectionElem<V, T> where
T: ::rustc_serialize::Decodable<__D>,
V: ::rustc_serialize::Decodable<__D> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { ProjectionElem::Deref }
1usize => {
ProjectionElem::Field(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
ProjectionElem::Index(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
ProjectionElem::ConstantIndex {
offset: ::rustc_serialize::Decodable::decode(__decoder),
min_length: ::rustc_serialize::Decodable::decode(__decoder),
from_end: ::rustc_serialize::Decodable::decode(__decoder),
}
}
4usize => {
ProjectionElem::Subslice {
from: ::rustc_serialize::Decodable::decode(__decoder),
to: ::rustc_serialize::Decodable::decode(__decoder),
from_end: ::rustc_serialize::Decodable::decode(__decoder),
}
}
5usize => {
ProjectionElem::Downcast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
ProjectionElem::OpaqueCast(::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
ProjectionElem::UnwrapUnsafeBinder(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => { ProjectionElem::PhantomDeref }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ProjectionElem`, expected 0..9, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<V, T> ::rustc_data_structures::stable_hash::StableHash for
ProjectionElem<V, T> where
T: ::rustc_data_structures::stable_hash::StableHash,
V: ::rustc_data_structures::stable_hash::StableHash {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
ProjectionElem::Deref => {}
ProjectionElem::Field(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
ProjectionElem::Index(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
ProjectionElem::ConstantIndex {
offset: ref __binding_0,
min_length: ref __binding_1,
from_end: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
ProjectionElem::Subslice {
from: ref __binding_0,
to: ref __binding_1,
from_end: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
ProjectionElem::Downcast(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
ProjectionElem::OpaqueCast(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
ProjectionElem::UnwrapUnsafeBinder(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
ProjectionElem::PhantomDeref => {}
}
}
}
};StableHash, const _: () =
{
impl<'tcx, V, T>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for ProjectionElem<V, T> where
T: ::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>,
V: ::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
{
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
ProjectionElem::Deref => { ProjectionElem::Deref }
ProjectionElem::Field(__binding_0, __binding_1) => {
ProjectionElem::Field(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
ProjectionElem::Index(__binding_0) => {
ProjectionElem::Index(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
ProjectionElem::ConstantIndex {
offset: __binding_0,
min_length: __binding_1,
from_end: __binding_2 } => {
ProjectionElem::ConstantIndex {
offset: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
min_length: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
from_end: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
}
}
ProjectionElem::Subslice {
from: __binding_0, to: __binding_1, from_end: __binding_2 }
=> {
ProjectionElem::Subslice {
from: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
to: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
from_end: ::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?,
}
}
ProjectionElem::Downcast(__binding_0, __binding_1) => {
ProjectionElem::Downcast(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
ProjectionElem::OpaqueCast(__binding_0) => {
ProjectionElem::OpaqueCast(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
ProjectionElem::UnwrapUnsafeBinder(__binding_0) => {
ProjectionElem::UnwrapUnsafeBinder(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
ProjectionElem::PhantomDeref => {
ProjectionElem::PhantomDeref
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
ProjectionElem::Deref => { ProjectionElem::Deref }
ProjectionElem::Field(__binding_0, __binding_1) => {
ProjectionElem::Field(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
ProjectionElem::Index(__binding_0) => {
ProjectionElem::Index(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
ProjectionElem::ConstantIndex {
offset: __binding_0,
min_length: __binding_1,
from_end: __binding_2 } => {
ProjectionElem::ConstantIndex {
offset: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
min_length: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
from_end: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
}
}
ProjectionElem::Subslice {
from: __binding_0, to: __binding_1, from_end: __binding_2 }
=> {
ProjectionElem::Subslice {
from: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
to: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
from_end: ::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder),
}
}
ProjectionElem::Downcast(__binding_0, __binding_1) => {
ProjectionElem::Downcast(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
ProjectionElem::OpaqueCast(__binding_0) => {
ProjectionElem::OpaqueCast(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
ProjectionElem::UnwrapUnsafeBinder(__binding_0) => {
ProjectionElem::UnwrapUnsafeBinder(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
ProjectionElem::PhantomDeref => {
ProjectionElem::PhantomDeref
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx, V, T>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for ProjectionElem<V, T> where
T: ::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>,
V: ::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
{
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
ProjectionElem::Deref => {}
ProjectionElem::Field(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::Index(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::ConstantIndex {
offset: ref __binding_0,
min_length: ref __binding_1,
from_end: ref __binding_2 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::Subslice {
from: ref __binding_0,
to: ref __binding_1,
from_end: ref __binding_2 } => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::Downcast(ref __binding_0, ref __binding_1)
=> {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::OpaqueCast(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::UnwrapUnsafeBinder(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
ProjectionElem::PhantomDeref => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1174pub enum ProjectionElem<V, T> {
1175 Deref,
1176
1177 Field(FieldIdx, T),
1184
1185 Index(V),
1199
1200 ConstantIndex {
1216 offset: u64,
1219 min_length: u64,
1224 from_end: bool,
1227 },
1228
1229 Subslice {
1237 from: u64,
1238 to: u64,
1239 from_end: bool,
1243 },
1244
1245 Downcast(Option<Symbol>, VariantIdx),
1251
1252 OpaqueCast(T),
1257
1258 UnwrapUnsafeBinder(T),
1261
1262 PhantomDeref,
1281}
1282
1283pub type PlaceElem<'tcx> = ProjectionElem<Local, Ty<'tcx>>;
1286
1287#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for Operand<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Copy(__self_0) =>
Operand::Copy(::core::clone::Clone::clone(__self_0)),
Self::Move(__self_0) =>
Operand::Move(::core::clone::Clone::clone(__self_0)),
Self::Constant(__self_0) =>
Operand::Constant(::core::clone::Clone::clone(__self_0)),
Self::RuntimeChecks(__self_0) =>
Operand::RuntimeChecks(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl<'tcx> ::core::marker::StructuralPartialEq for Operand<'tcx> { }
#[automatically_derived]
impl<'tcx> ::core::cmp::PartialEq for Operand<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Copy(__self_0), Self::Copy(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Move(__self_0), Self::Move(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Constant(__self_0), Self::Constant(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::RuntimeChecks(__self_0), Self::RuntimeChecks(__arg1_0))
=> __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for Operand<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Operand::Copy(ref __binding_0) => { 0usize }
Operand::Move(ref __binding_0) => { 1usize }
Operand::Constant(ref __binding_0) => { 2usize }
Operand::RuntimeChecks(ref __binding_0) => { 3usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Operand::Copy(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Operand::Move(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Operand::Constant(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Operand::RuntimeChecks(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for Operand<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
Operand::Copy(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
Operand::Move(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
Operand::Constant(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
Operand::RuntimeChecks(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Operand`, expected 0..4, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
Operand<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
Operand::Copy(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Operand::Move(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Operand::Constant(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Operand::RuntimeChecks(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for Operand<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
Operand::Copy(__binding_0) => {
Operand::Copy(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Operand::Move(__binding_0) => {
Operand::Move(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Operand::Constant(__binding_0) => {
Operand::Constant(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Operand::RuntimeChecks(__binding_0) => {
Operand::RuntimeChecks(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
Operand::Copy(__binding_0) => {
Operand::Copy(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Operand::Move(__binding_0) => {
Operand::Move(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Operand::Constant(__binding_0) => {
Operand::Constant(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Operand::RuntimeChecks(__binding_0) => {
Operand::RuntimeChecks(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for Operand<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
Operand::Copy(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Operand::Move(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Operand::Constant(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Operand::RuntimeChecks(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1305pub enum Operand<'tcx> {
1306 Copy(Place<'tcx>),
1311
1312 Move(Place<'tcx>),
1330
1331 Constant(Box<ConstOperand<'tcx>>),
1333
1334 RuntimeChecks(RuntimeChecks),
1337}
1338
1339#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl<'tcx> ::core::clone::TrivialClone for ConstOperand<'tcx> { }
#[automatically_derived]
impl<'tcx> ::core::clone::Clone for ConstOperand<'tcx> {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<Span>;
let _:
::core::clone::AssertParamIsClone<Option<UserTypeAnnotationIndex>>;
let _: ::core::clone::AssertParamIsClone<Const<'tcx>>;
*self
}
}Clone, #[automatically_derived]
impl<'tcx> ::core::marker::Copy for ConstOperand<'tcx> { }Copy, #[automatically_derived]
impl<'tcx> ::core::marker::StructuralPartialEq for ConstOperand<'tcx> { }
#[automatically_derived]
impl<'tcx> ::core::cmp::PartialEq for ConstOperand<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
self.span == other.span && self.user_ty == other.user_ty &&
self.const_ == other.const_
}
}PartialEq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for ConstOperand<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let ConstOperand {
span: ref __binding_0,
user_ty: ref __binding_1,
const_: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for ConstOperand<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
ConstOperand {
span: ::rustc_serialize::Decodable::decode(__decoder),
user_ty: ::rustc_serialize::Decodable::decode(__decoder),
const_: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
ConstOperand<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
ConstOperand {
span: ref __binding_0,
user_ty: ref __binding_1,
const_: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
1340#[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)]
1341pub struct ConstOperand<'tcx> {
1342 pub span: Span,
1343
1344 pub user_ty: Option<UserTypeAnnotationIndex>,
1350
1351 pub const_: Const<'tcx>,
1352}
1353
1354#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for Rvalue<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Use(__self_0, __self_1) =>
Rvalue::Use(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Repeat(__self_0, __self_1) =>
Rvalue::Repeat(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Ref(__self_0, __self_1, __self_2) =>
Rvalue::Ref(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
Self::ThreadLocalRef(__self_0) =>
Rvalue::ThreadLocalRef(::core::clone::Clone::clone(__self_0)),
Self::RawPtr(__self_0, __self_1) =>
Rvalue::RawPtr(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Cast(__self_0, __self_1, __self_2) =>
Rvalue::Cast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
Self::BinaryOp(__self_0, __self_1) =>
Rvalue::BinaryOp(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::UnaryOp(__self_0, __self_1) =>
Rvalue::UnaryOp(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Discriminant(__self_0) =>
Rvalue::Discriminant(::core::clone::Clone::clone(__self_0)),
Self::Aggregate(__self_0, __self_1) =>
Rvalue::Aggregate(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::CopyForDeref(__self_0) =>
Rvalue::CopyForDeref(::core::clone::Clone::clone(__self_0)),
Self::WrapUnsafeBinder(__self_0, __self_1) =>
Rvalue::WrapUnsafeBinder(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Reborrow(__self_0, __self_1, __self_2) =>
Rvalue::Reborrow(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
}
}
}Clone, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for Rvalue<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Rvalue::Use(ref __binding_0, ref __binding_1) => { 0usize }
Rvalue::Repeat(ref __binding_0, ref __binding_1) => {
1usize
}
Rvalue::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
2usize
}
Rvalue::ThreadLocalRef(ref __binding_0) => { 3usize }
Rvalue::RawPtr(ref __binding_0, ref __binding_1) => {
4usize
}
Rvalue::Cast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
5usize
}
Rvalue::BinaryOp(ref __binding_0, ref __binding_1) => {
6usize
}
Rvalue::UnaryOp(ref __binding_0, ref __binding_1) => {
7usize
}
Rvalue::Discriminant(ref __binding_0) => { 8usize }
Rvalue::Aggregate(ref __binding_0, ref __binding_1) => {
9usize
}
Rvalue::CopyForDeref(ref __binding_0) => { 10usize }
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> {
11usize
}
Rvalue::Reborrow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
12usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Rvalue::Use(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::Repeat(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
Rvalue::ThreadLocalRef(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Rvalue::RawPtr(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::Cast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
Rvalue::BinaryOp(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::UnaryOp(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::Discriminant(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Rvalue::Aggregate(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::CopyForDeref(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
Rvalue::Reborrow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for Rvalue<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
Rvalue::Use(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
Rvalue::Repeat(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
Rvalue::Ref(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
Rvalue::ThreadLocalRef(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
Rvalue::RawPtr(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
Rvalue::Cast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
Rvalue::BinaryOp(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
Rvalue::UnaryOp(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
Rvalue::Discriminant(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
Rvalue::Aggregate(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
Rvalue::CopyForDeref(::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
Rvalue::WrapUnsafeBinder(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
Rvalue::Reborrow(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Rvalue`, expected 0..13, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
Rvalue<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
Rvalue::Use(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::Repeat(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
Rvalue::ThreadLocalRef(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Rvalue::RawPtr(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::Cast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
Rvalue::BinaryOp(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::UnaryOp(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::Discriminant(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Rvalue::Aggregate(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::CopyForDeref(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
Rvalue::Reborrow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]
impl<'tcx> ::core::marker::StructuralPartialEq for Rvalue<'tcx> { }
#[automatically_derived]
impl<'tcx> ::core::cmp::PartialEq for Rvalue<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Use(__self_0, __self_1), Self::Use(__arg1_0, __arg1_1))
=> __self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Repeat(__self_0, __self_1),
Self::Repeat(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Ref(__self_0, __self_1, __self_2),
Self::Ref(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::ThreadLocalRef(__self_0),
Self::ThreadLocalRef(__arg1_0)) => __self_0 == __arg1_0,
(Self::RawPtr(__self_0, __self_1),
Self::RawPtr(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Cast(__self_0, __self_1, __self_2),
Self::Cast(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(Self::BinaryOp(__self_0, __self_1),
Self::BinaryOp(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::UnaryOp(__self_0, __self_1),
Self::UnaryOp(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Discriminant(__self_0), Self::Discriminant(__arg1_0))
=> __self_0 == __arg1_0,
(Self::Aggregate(__self_0, __self_1),
Self::Aggregate(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::CopyForDeref(__self_0), Self::CopyForDeref(__arg1_0))
=> __self_0 == __arg1_0,
(Self::WrapUnsafeBinder(__self_0, __self_1),
Self::WrapUnsafeBinder(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Reborrow(__self_0, __self_1, __self_2),
Self::Reborrow(__arg1_0, __arg1_1, __arg1_2)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for Rvalue<'tcx> {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
Rvalue::Use(__binding_0, __binding_1) => {
Rvalue::Use(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::Repeat(__binding_0, __binding_1) => {
Rvalue::Repeat(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::Ref(__binding_0, __binding_1, __binding_2) => {
Rvalue::Ref(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?)
}
Rvalue::ThreadLocalRef(__binding_0) => {
Rvalue::ThreadLocalRef(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Rvalue::RawPtr(__binding_0, __binding_1) => {
Rvalue::RawPtr(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::Cast(__binding_0, __binding_1, __binding_2) => {
Rvalue::Cast(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?)
}
Rvalue::BinaryOp(__binding_0, __binding_1) => {
Rvalue::BinaryOp(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::UnaryOp(__binding_0, __binding_1) => {
Rvalue::UnaryOp(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::Discriminant(__binding_0) => {
Rvalue::Discriminant(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Rvalue::Aggregate(__binding_0, __binding_1) => {
Rvalue::Aggregate(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::CopyForDeref(__binding_0) => {
Rvalue::CopyForDeref(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?)
}
Rvalue::WrapUnsafeBinder(__binding_0, __binding_1) => {
Rvalue::WrapUnsafeBinder(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?)
}
Rvalue::Reborrow(__binding_0, __binding_1, __binding_2) => {
Rvalue::Reborrow(::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_0,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_1,
__folder)?,
::rustc_middle::ty::TypeFoldable::try_fold_with(__binding_2,
__folder)?)
}
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
Rvalue::Use(__binding_0, __binding_1) => {
Rvalue::Use(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::Repeat(__binding_0, __binding_1) => {
Rvalue::Repeat(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::Ref(__binding_0, __binding_1, __binding_2) => {
Rvalue::Ref(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder))
}
Rvalue::ThreadLocalRef(__binding_0) => {
Rvalue::ThreadLocalRef(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Rvalue::RawPtr(__binding_0, __binding_1) => {
Rvalue::RawPtr(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::Cast(__binding_0, __binding_1, __binding_2) => {
Rvalue::Cast(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder))
}
Rvalue::BinaryOp(__binding_0, __binding_1) => {
Rvalue::BinaryOp(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::UnaryOp(__binding_0, __binding_1) => {
Rvalue::UnaryOp(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::Discriminant(__binding_0) => {
Rvalue::Discriminant(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Rvalue::Aggregate(__binding_0, __binding_1) => {
Rvalue::Aggregate(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::CopyForDeref(__binding_0) => {
Rvalue::CopyForDeref(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder))
}
Rvalue::WrapUnsafeBinder(__binding_0, __binding_1) => {
Rvalue::WrapUnsafeBinder(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder))
}
Rvalue::Reborrow(__binding_0, __binding_1, __binding_2) => {
Rvalue::Reborrow(::rustc_middle::ty::TypeFoldable::fold_with(__binding_0,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_1,
__folder),
::rustc_middle::ty::TypeFoldable::fold_with(__binding_2,
__folder))
}
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for Rvalue<'tcx> {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
Rvalue::Use(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Repeat(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::ThreadLocalRef(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::RawPtr(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Cast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::BinaryOp(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::UnaryOp(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Discriminant(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Aggregate(ref __binding_0, ref __binding_1) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::CopyForDeref(ref __binding_0) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::WrapUnsafeBinder(ref __binding_0, ref __binding_1)
=> {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
Rvalue::Reborrow(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_0,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_1,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_middle::ty::VisitorResult::branch(::rustc_middle::ty::TypeVisitable::visit_with(__binding_2,
__visitor)) {
::core::ops::ControlFlow::Continue(()) => {}
::core::ops::ControlFlow::Break(r) => {
return ::rustc_middle::ty::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1365pub enum Rvalue<'tcx> {
1366 Use(Operand<'tcx>, WithRetag),
1368
1369 Repeat(Operand<'tcx>, ty::Const<'tcx>),
1373
1374 Ref(Region<'tcx>, BorrowKind, Place<'tcx>),
1382
1383 ThreadLocalRef(DefId),
1395
1396 RawPtr(RawPtrKind, Place<'tcx>),
1404
1405 Cast(CastKind, Operand<'tcx>, Ty<'tcx>),
1411
1412 BinaryOp(BinOp, Box<(Operand<'tcx>, Operand<'tcx>)>),
1427
1428 UnaryOp(UnOp, Operand<'tcx>),
1434
1435 Discriminant(Place<'tcx>),
1446
1447 Aggregate(Box<AggregateKind<'tcx>>, IndexVec<FieldIdx, Operand<'tcx>>),
1456
1457 CopyForDeref(Place<'tcx>),
1468
1469 WrapUnsafeBinder(Operand<'tcx>, Ty<'tcx>),
1471
1472 Reborrow(Ty<'tcx>, Mutability, Place<'tcx>),
1490}
1491
1492#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for CastKind { }
#[automatically_derived]
impl ::core::clone::Clone for CastKind {
#[inline]
fn clone(&self) -> Self {
let _: ::core::clone::AssertParamIsClone<PointerCoercion>;
let _: ::core::clone::AssertParamIsClone<CoercionSource>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for CastKind { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for CastKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::PointerExposeProvenance =>
::core::fmt::Formatter::write_str(f,
"PointerExposeProvenance"),
Self::PointerWithExposedProvenance =>
::core::fmt::Formatter::write_str(f,
"PointerWithExposedProvenance"),
Self::PointerCoercion(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"PointerCoercion", __self_0, &__self_1),
Self::IntToInt =>
::core::fmt::Formatter::write_str(f, "IntToInt"),
Self::FloatToInt =>
::core::fmt::Formatter::write_str(f, "FloatToInt"),
Self::FloatToFloat =>
::core::fmt::Formatter::write_str(f, "FloatToFloat"),
Self::IntToFloat =>
::core::fmt::Formatter::write_str(f, "IntToFloat"),
Self::PtrToPtr =>
::core::fmt::Formatter::write_str(f, "PtrToPtr"),
Self::FnPtrToPtr =>
::core::fmt::Formatter::write_str(f, "FnPtrToPtr"),
Self::Transmute =>
::core::fmt::Formatter::write_str(f, "Transmute"),
Self::BoxDerefTransmute =>
::core::fmt::Formatter::write_str(f, "BoxDerefTransmute"),
Self::Subtype => ::core::fmt::Formatter::write_str(f, "Subtype"),
}
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for CastKind { }
#[automatically_derived]
impl ::core::cmp::PartialEq for CastKind {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::PointerCoercion(__self_0, __self_1),
Self::PointerCoercion(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for CastKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<PointerCoercion>;
let _: ::core::cmp::AssertParamIsEq<CoercionSource>;
}
}Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for CastKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
CastKind::PointerExposeProvenance => { 0usize }
CastKind::PointerWithExposedProvenance => { 1usize }
CastKind::PointerCoercion(ref __binding_0, ref __binding_1)
=> {
2usize
}
CastKind::IntToInt => { 3usize }
CastKind::FloatToInt => { 4usize }
CastKind::FloatToFloat => { 5usize }
CastKind::IntToFloat => { 6usize }
CastKind::PtrToPtr => { 7usize }
CastKind::FnPtrToPtr => { 8usize }
CastKind::Transmute => { 9usize }
CastKind::BoxDerefTransmute => { 10usize }
CastKind::Subtype => { 11usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
CastKind::PointerExposeProvenance => {}
CastKind::PointerWithExposedProvenance => {}
CastKind::PointerCoercion(ref __binding_0, ref __binding_1)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
CastKind::IntToInt => {}
CastKind::FloatToInt => {}
CastKind::FloatToFloat => {}
CastKind::IntToFloat => {}
CastKind::PtrToPtr => {}
CastKind::FnPtrToPtr => {}
CastKind::Transmute => {}
CastKind::BoxDerefTransmute => {}
CastKind::Subtype => {}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for CastKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { CastKind::PointerExposeProvenance }
1usize => { CastKind::PointerWithExposedProvenance }
2usize => {
CastKind::PointerCoercion(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => { CastKind::IntToInt }
4usize => { CastKind::FloatToInt }
5usize => { CastKind::FloatToFloat }
6usize => { CastKind::IntToFloat }
7usize => { CastKind::PtrToPtr }
8usize => { CastKind::FnPtrToPtr }
9usize => { CastKind::Transmute }
10usize => { CastKind::BoxDerefTransmute }
11usize => { CastKind::Subtype }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CastKind`, expected 0..12, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::hash::Hash for CastKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state);
match self {
Self::PointerCoercion(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
_ => {}
}
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for CastKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
CastKind::PointerExposeProvenance => {}
CastKind::PointerWithExposedProvenance => {}
CastKind::PointerCoercion(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
CastKind::IntToInt => {}
CastKind::FloatToInt => {}
CastKind::FloatToFloat => {}
CastKind::IntToFloat => {}
CastKind::PtrToPtr => {}
CastKind::FnPtrToPtr => {}
CastKind::Transmute => {}
CastKind::BoxDerefTransmute => {}
CastKind::Subtype => {}
}
}
}
};StableHash)]
1493pub enum CastKind {
1494 PointerExposeProvenance,
1498 PointerWithExposedProvenance,
1501 PointerCoercion(PointerCoercion, CoercionSource),
1511 IntToInt,
1512 FloatToInt,
1513 FloatToFloat,
1514 IntToFloat,
1515 PtrToPtr,
1516 FnPtrToPtr,
1517 Transmute,
1522 BoxDerefTransmute,
1530
1531 Subtype,
1542}
1543
1544#[derive(#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for CoercionSource { }
#[automatically_derived]
impl ::core::clone::Clone for CoercionSource {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for CoercionSource { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for CoercionSource {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
CoercionSource::AsCast => "AsCast",
CoercionSource::Implicit => "Implicit",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for CoercionSource { }
#[automatically_derived]
impl ::core::cmp::PartialEq for CoercionSource {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for CoercionSource { }Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for CoercionSource {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
CoercionSource::AsCast => { 0usize }
CoercionSource::Implicit => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for CoercionSource {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { CoercionSource::AsCast }
1usize => { CoercionSource::Implicit }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CoercionSource`, expected 0..2, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::hash::Hash for CoercionSource {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
CoercionSource {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
CoercionSource::AsCast => {}
CoercionSource::Implicit => {}
}
}
}
};StableHash)]
1547pub enum CoercionSource {
1548 AsCast,
1550 Implicit,
1552}
1553
1554#[derive(#[automatically_derived]
impl<'tcx> ::core::clone::Clone for AggregateKind<'tcx> {
#[inline]
fn clone(&self) -> Self {
match self {
Self::Array(__self_0) =>
AggregateKind::Array(::core::clone::Clone::clone(__self_0)),
Self::Tuple => AggregateKind::Tuple,
Self::Adt(__self_0, __self_1, __self_2, __self_3, __self_4) =>
AggregateKind::Adt(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2),
::core::clone::Clone::clone(__self_3),
::core::clone::Clone::clone(__self_4)),
Self::Closure(__self_0, __self_1) =>
AggregateKind::Closure(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::Coroutine(__self_0, __self_1) =>
AggregateKind::Coroutine(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::CoroutineClosure(__self_0, __self_1) =>
AggregateKind::CoroutineClosure(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Self::RawPtr(__self_0, __self_1) =>
AggregateKind::RawPtr(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, #[automatically_derived]
impl<'tcx> ::core::fmt::Debug for AggregateKind<'tcx> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Array(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Array",
&__self_0),
Self::Tuple => ::core::fmt::Formatter::write_str(f, "Tuple"),
Self::Adt(__self_0, __self_1, __self_2, __self_3, __self_4) =>
::core::fmt::Formatter::debug_tuple_field5_finish(f, "Adt",
__self_0, __self_1, __self_2, __self_3, &__self_4),
Self::Closure(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Closure", __self_0, &__self_1),
Self::Coroutine(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Coroutine", __self_0, &__self_1),
Self::CoroutineClosure(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"CoroutineClosure", __self_0, &__self_1),
Self::RawPtr(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "RawPtr",
__self_0, &__self_1),
}
}
}Debug, #[automatically_derived]
impl<'tcx> ::core::marker::StructuralPartialEq for AggregateKind<'tcx> { }
#[automatically_derived]
impl<'tcx> ::core::cmp::PartialEq for AggregateKind<'tcx> {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Array(__self_0), Self::Array(__arg1_0)) =>
__self_0 == __arg1_0,
(Self::Adt(__self_0, __self_1, __self_2, __self_3, __self_4),
Self::Adt(__arg1_0, __arg1_1, __arg1_2, __arg1_3, __arg1_4))
=>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4,
(Self::Closure(__self_0, __self_1),
Self::Closure(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::Coroutine(__self_0, __self_1),
Self::Coroutine(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::CoroutineClosure(__self_0, __self_1),
Self::CoroutineClosure(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(Self::RawPtr(__self_0, __self_1),
Self::RawPtr(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl<'tcx> ::core::cmp::Eq for AggregateKind<'tcx> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ty<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<DefId>;
let _: ::core::cmp::AssertParamIsEq<VariantIdx>;
let _: ::core::cmp::AssertParamIsEq<GenericArgsRef<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<Option<UserTypeAnnotationIndex>>;
let _: ::core::cmp::AssertParamIsEq<Option<FieldIdx>>;
let _: ::core::cmp::AssertParamIsEq<GenericArgsRef<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<GenericArgsRef<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<GenericArgsRef<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<Ty<'tcx>>;
let _: ::core::cmp::AssertParamIsEq<Mutability>;
}
}Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for AggregateKind<'tcx> {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AggregateKind::Array(ref __binding_0) => { 0usize }
AggregateKind::Tuple => { 1usize }
AggregateKind::Adt(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3, ref __binding_4) => {
2usize
}
AggregateKind::Closure(ref __binding_0, ref __binding_1) =>
{
3usize
}
AggregateKind::Coroutine(ref __binding_0, ref __binding_1)
=> {
4usize
}
AggregateKind::CoroutineClosure(ref __binding_0,
ref __binding_1) => {
5usize
}
AggregateKind::RawPtr(ref __binding_0, ref __binding_1) => {
6usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AggregateKind::Array(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AggregateKind::Tuple => {}
AggregateKind::Adt(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3, ref __binding_4) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
}
AggregateKind::Closure(ref __binding_0, ref __binding_1) =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
AggregateKind::Coroutine(ref __binding_0, ref __binding_1)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
AggregateKind::CoroutineClosure(ref __binding_0,
ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
AggregateKind::RawPtr(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for AggregateKind<'tcx> {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
AggregateKind::Array(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { AggregateKind::Tuple }
2usize => {
AggregateKind::Adt(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
AggregateKind::Closure(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
AggregateKind::Coroutine(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
AggregateKind::CoroutineClosure(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
AggregateKind::RawPtr(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AggregateKind`, expected 0..7, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx> ::rustc_data_structures::stable_hash::StableHash for
AggregateKind<'tcx> {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
AggregateKind::Array(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
AggregateKind::Tuple => {}
AggregateKind::Adt(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3, ref __binding_4) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
{ __binding_4.stable_hash(__hcx, __hasher); }
}
AggregateKind::Closure(ref __binding_0, ref __binding_1) =>
{
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
AggregateKind::Coroutine(ref __binding_0, ref __binding_1)
=> {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
AggregateKind::CoroutineClosure(ref __binding_0,
ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
AggregateKind::RawPtr(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
1555#[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)]
1556pub enum AggregateKind<'tcx> {
1557 Array(Ty<'tcx>),
1559 Tuple,
1560
1561 Adt(DefId, VariantIdx, GenericArgsRef<'tcx>, Option<UserTypeAnnotationIndex>, Option<FieldIdx>),
1567
1568 Closure(DefId, GenericArgsRef<'tcx>),
1569 Coroutine(DefId, GenericArgsRef<'tcx>),
1570 CoroutineClosure(DefId, GenericArgsRef<'tcx>),
1571
1572 RawPtr(Ty<'tcx>, Mutability),
1586}
1587
1588#[derive(#[automatically_derived]
impl ::core::marker::Copy for RuntimeChecks { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for RuntimeChecks { }
#[automatically_derived]
impl ::core::clone::Clone for RuntimeChecks {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for RuntimeChecks {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RuntimeChecks::UbChecks => "UbChecks",
RuntimeChecks::ContractChecks => "ContractChecks",
RuntimeChecks::OverflowChecks => "OverflowChecks",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for RuntimeChecks { }
#[automatically_derived]
impl ::core::cmp::PartialEq for RuntimeChecks {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for RuntimeChecks { }Eq, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for RuntimeChecks {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RuntimeChecks::UbChecks => { 0usize }
RuntimeChecks::ContractChecks => { 1usize }
RuntimeChecks::OverflowChecks => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for RuntimeChecks {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RuntimeChecks::UbChecks }
1usize => { RuntimeChecks::ContractChecks }
2usize => { RuntimeChecks::OverflowChecks }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RuntimeChecks`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable, #[automatically_derived]
impl ::core::hash::Hash for RuntimeChecks {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
RuntimeChecks {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
RuntimeChecks::UbChecks => {}
RuntimeChecks::ContractChecks => {}
RuntimeChecks::OverflowChecks => {}
}
}
}
};StableHash)]
1589pub enum RuntimeChecks {
1590 UbChecks,
1593 ContractChecks,
1596 OverflowChecks,
1599}
1600
1601impl RuntimeChecks {
1602 pub fn value(self, sess: &rustc_session::Session) -> bool {
1603 match self {
1604 Self::UbChecks => sess.ub_checks(),
1605 Self::ContractChecks => sess.contract_checks(),
1606 Self::OverflowChecks => sess.overflow_checks(),
1607 }
1608 }
1609}
1610
1611#[derive(#[automatically_derived]
impl ::core::marker::Copy for UnOp { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for UnOp { }
#[automatically_derived]
impl ::core::clone::Clone for UnOp {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for UnOp {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
UnOp::Not => "Not",
UnOp::Neg => "Neg",
UnOp::PtrMetadata => "PtrMetadata",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for UnOp { }
#[automatically_derived]
impl ::core::cmp::PartialEq for UnOp {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for UnOp { }Eq, #[automatically_derived]
impl ::core::hash::Hash for UnOp {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash)]
1612#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for UnOp {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
UnOp::Not => {}
UnOp::Neg => {}
UnOp::PtrMetadata => {}
}
}
}
};StableHash, const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for UnOp {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnOp::Not => { 0usize }
UnOp::Neg => { 1usize }
UnOp::PtrMetadata => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for UnOp {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnOp::Not }
1usize => { UnOp::Neg }
2usize => { UnOp::PtrMetadata }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnOp`, expected 0..3, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for UnOp {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
UnOp::Not => { UnOp::Not }
UnOp::Neg => { UnOp::Neg }
UnOp::PtrMetadata => { UnOp::PtrMetadata }
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
UnOp::Not => { UnOp::Not }
UnOp::Neg => { UnOp::Neg }
UnOp::PtrMetadata => { UnOp::PtrMetadata }
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for UnOp {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
UnOp::Not => {}
UnOp::Neg => {}
UnOp::PtrMetadata => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1613pub enum UnOp {
1614 Not,
1616 Neg,
1618 PtrMetadata,
1627}
1628
1629#[derive(#[automatically_derived]
impl ::core::marker::Copy for BinOp { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for BinOp { }
#[automatically_derived]
impl ::core::clone::Clone for BinOp {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for BinOp {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
BinOp::Add => "Add",
BinOp::AddUnchecked => "AddUnchecked",
BinOp::AddWithOverflow => "AddWithOverflow",
BinOp::Sub => "Sub",
BinOp::SubUnchecked => "SubUnchecked",
BinOp::SubWithOverflow => "SubWithOverflow",
BinOp::Mul => "Mul",
BinOp::MulUnchecked => "MulUnchecked",
BinOp::MulWithOverflow => "MulWithOverflow",
BinOp::Div => "Div",
BinOp::Rem => "Rem",
BinOp::BitXor => "BitXor",
BinOp::BitAnd => "BitAnd",
BinOp::BitOr => "BitOr",
BinOp::Shl => "Shl",
BinOp::ShlUnchecked => "ShlUnchecked",
BinOp::Shr => "Shr",
BinOp::ShrUnchecked => "ShrUnchecked",
BinOp::Eq => "Eq",
BinOp::Lt => "Lt",
BinOp::Le => "Le",
BinOp::Ne => "Ne",
BinOp::Ge => "Ge",
BinOp::Gt => "Gt",
BinOp::Cmp => "Cmp",
BinOp::Offset => "Offset",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for BinOp { }
#[automatically_derived]
impl ::core::cmp::PartialEq for BinOp {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for BinOp { }Eq, #[automatically_derived]
impl ::core::hash::Hash for BinOp {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
state)
}
}Hash)]
1630#[derive(const _: () =
{
impl<'tcx, __E: ::rustc_middle::ty::codec::TyEncoder<'tcx>>
::rustc_serialize::Encodable<__E> for BinOp {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BinOp::Add => { 0usize }
BinOp::AddUnchecked => { 1usize }
BinOp::AddWithOverflow => { 2usize }
BinOp::Sub => { 3usize }
BinOp::SubUnchecked => { 4usize }
BinOp::SubWithOverflow => { 5usize }
BinOp::Mul => { 6usize }
BinOp::MulUnchecked => { 7usize }
BinOp::MulWithOverflow => { 8usize }
BinOp::Div => { 9usize }
BinOp::Rem => { 10usize }
BinOp::BitXor => { 11usize }
BinOp::BitAnd => { 12usize }
BinOp::BitOr => { 13usize }
BinOp::Shl => { 14usize }
BinOp::ShlUnchecked => { 15usize }
BinOp::Shr => { 16usize }
BinOp::ShrUnchecked => { 17usize }
BinOp::Eq => { 18usize }
BinOp::Lt => { 19usize }
BinOp::Le => { 20usize }
BinOp::Ne => { 21usize }
BinOp::Ge => { 22usize }
BinOp::Gt => { 23usize }
BinOp::Cmp => { 24usize }
BinOp::Offset => { 25usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};TyEncodable, const _: () =
{
impl<'tcx, __D: ::rustc_middle::ty::codec::TyDecoder<'tcx>>
::rustc_serialize::Decodable<__D> for BinOp {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BinOp::Add }
1usize => { BinOp::AddUnchecked }
2usize => { BinOp::AddWithOverflow }
3usize => { BinOp::Sub }
4usize => { BinOp::SubUnchecked }
5usize => { BinOp::SubWithOverflow }
6usize => { BinOp::Mul }
7usize => { BinOp::MulUnchecked }
8usize => { BinOp::MulWithOverflow }
9usize => { BinOp::Div }
10usize => { BinOp::Rem }
11usize => { BinOp::BitXor }
12usize => { BinOp::BitAnd }
13usize => { BinOp::BitOr }
14usize => { BinOp::Shl }
15usize => { BinOp::ShlUnchecked }
16usize => { BinOp::Shr }
17usize => { BinOp::ShrUnchecked }
18usize => { BinOp::Eq }
19usize => { BinOp::Lt }
20usize => { BinOp::Le }
21usize => { BinOp::Ne }
22usize => { BinOp::Ge }
23usize => { BinOp::Gt }
24usize => { BinOp::Cmp }
25usize => { BinOp::Offset }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BinOp`, expected 0..26, actual {0}",
n));
}
}
}
}
};TyDecodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for BinOp {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
BinOp::Add => {}
BinOp::AddUnchecked => {}
BinOp::AddWithOverflow => {}
BinOp::Sub => {}
BinOp::SubUnchecked => {}
BinOp::SubWithOverflow => {}
BinOp::Mul => {}
BinOp::MulUnchecked => {}
BinOp::MulWithOverflow => {}
BinOp::Div => {}
BinOp::Rem => {}
BinOp::BitXor => {}
BinOp::BitAnd => {}
BinOp::BitOr => {}
BinOp::Shl => {}
BinOp::ShlUnchecked => {}
BinOp::Shr => {}
BinOp::ShrUnchecked => {}
BinOp::Eq => {}
BinOp::Lt => {}
BinOp::Le => {}
BinOp::Ne => {}
BinOp::Ge => {}
BinOp::Gt => {}
BinOp::Cmp => {}
BinOp::Offset => {}
}
}
}
};StableHash, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeFoldable<::rustc_middle::ty::TyCtxt<'tcx>>
for BinOp {
fn try_fold_with<__F: ::rustc_middle::ty::FallibleTypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Result<Self, __F::Error> {
Ok(match self {
BinOp::Add => { BinOp::Add }
BinOp::AddUnchecked => { BinOp::AddUnchecked }
BinOp::AddWithOverflow => { BinOp::AddWithOverflow }
BinOp::Sub => { BinOp::Sub }
BinOp::SubUnchecked => { BinOp::SubUnchecked }
BinOp::SubWithOverflow => { BinOp::SubWithOverflow }
BinOp::Mul => { BinOp::Mul }
BinOp::MulUnchecked => { BinOp::MulUnchecked }
BinOp::MulWithOverflow => { BinOp::MulWithOverflow }
BinOp::Div => { BinOp::Div }
BinOp::Rem => { BinOp::Rem }
BinOp::BitXor => { BinOp::BitXor }
BinOp::BitAnd => { BinOp::BitAnd }
BinOp::BitOr => { BinOp::BitOr }
BinOp::Shl => { BinOp::Shl }
BinOp::ShlUnchecked => { BinOp::ShlUnchecked }
BinOp::Shr => { BinOp::Shr }
BinOp::ShrUnchecked => { BinOp::ShrUnchecked }
BinOp::Eq => { BinOp::Eq }
BinOp::Lt => { BinOp::Lt }
BinOp::Le => { BinOp::Le }
BinOp::Ne => { BinOp::Ne }
BinOp::Ge => { BinOp::Ge }
BinOp::Gt => { BinOp::Gt }
BinOp::Cmp => { BinOp::Cmp }
BinOp::Offset => { BinOp::Offset }
})
}
fn fold_with<__F: ::rustc_middle::ty::TypeFolder<::rustc_middle::ty::TyCtxt<'tcx>>>(self,
__folder: &mut __F) -> Self {
match self {
BinOp::Add => { BinOp::Add }
BinOp::AddUnchecked => { BinOp::AddUnchecked }
BinOp::AddWithOverflow => { BinOp::AddWithOverflow }
BinOp::Sub => { BinOp::Sub }
BinOp::SubUnchecked => { BinOp::SubUnchecked }
BinOp::SubWithOverflow => { BinOp::SubWithOverflow }
BinOp::Mul => { BinOp::Mul }
BinOp::MulUnchecked => { BinOp::MulUnchecked }
BinOp::MulWithOverflow => { BinOp::MulWithOverflow }
BinOp::Div => { BinOp::Div }
BinOp::Rem => { BinOp::Rem }
BinOp::BitXor => { BinOp::BitXor }
BinOp::BitAnd => { BinOp::BitAnd }
BinOp::BitOr => { BinOp::BitOr }
BinOp::Shl => { BinOp::Shl }
BinOp::ShlUnchecked => { BinOp::ShlUnchecked }
BinOp::Shr => { BinOp::Shr }
BinOp::ShrUnchecked => { BinOp::ShrUnchecked }
BinOp::Eq => { BinOp::Eq }
BinOp::Lt => { BinOp::Lt }
BinOp::Le => { BinOp::Le }
BinOp::Ne => { BinOp::Ne }
BinOp::Ge => { BinOp::Ge }
BinOp::Gt => { BinOp::Gt }
BinOp::Cmp => { BinOp::Cmp }
BinOp::Offset => { BinOp::Offset }
}
}
}
};TypeFoldable, const _: () =
{
impl<'tcx>
::rustc_middle::ty::TypeVisitable<::rustc_middle::ty::TyCtxt<'tcx>>
for BinOp {
fn visit_with<__V: ::rustc_middle::ty::TypeVisitor<::rustc_middle::ty::TyCtxt<'tcx>>>(&self,
__visitor: &mut __V) -> __V::Result {
match *self {
BinOp::Add => {}
BinOp::AddUnchecked => {}
BinOp::AddWithOverflow => {}
BinOp::Sub => {}
BinOp::SubUnchecked => {}
BinOp::SubWithOverflow => {}
BinOp::Mul => {}
BinOp::MulUnchecked => {}
BinOp::MulWithOverflow => {}
BinOp::Div => {}
BinOp::Rem => {}
BinOp::BitXor => {}
BinOp::BitAnd => {}
BinOp::BitOr => {}
BinOp::Shl => {}
BinOp::ShlUnchecked => {}
BinOp::Shr => {}
BinOp::ShrUnchecked => {}
BinOp::Eq => {}
BinOp::Lt => {}
BinOp::Le => {}
BinOp::Ne => {}
BinOp::Ge => {}
BinOp::Gt => {}
BinOp::Cmp => {}
BinOp::Offset => {}
}
<__V::Result as ::rustc_middle::ty::VisitorResult>::output()
}
}
};TypeVisitable)]
1631pub enum BinOp {
1632 Add,
1634 AddUnchecked,
1636 AddWithOverflow,
1639 Sub,
1641 SubUnchecked,
1643 SubWithOverflow,
1646 Mul,
1648 MulUnchecked,
1650 MulWithOverflow,
1653 Div,
1660 Rem,
1668 BitXor,
1670 BitAnd,
1672 BitOr,
1674 Shl,
1681 ShlUnchecked,
1683 Shr,
1693 ShrUnchecked,
1695 Eq,
1697 Lt,
1699 Le,
1701 Ne,
1703 Ge,
1705 Gt,
1707 Cmp,
1719 Offset,
1721}
1722
1723#[derive(#[automatically_derived]
impl ::core::marker::Copy for AssignOp { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for AssignOp { }
#[automatically_derived]
impl ::core::clone::Clone for AssignOp {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AssignOp {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
AssignOp::AddAssign => "AddAssign",
AssignOp::SubAssign => "SubAssign",
AssignOp::MulAssign => "MulAssign",
AssignOp::DivAssign => "DivAssign",
AssignOp::RemAssign => "RemAssign",
AssignOp::BitXorAssign => "BitXorAssign",
AssignOp::BitAndAssign => "BitAndAssign",
AssignOp::BitOrAssign => "BitOrAssign",
AssignOp::ShlAssign => "ShlAssign",
AssignOp::ShrAssign => "ShrAssign",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for AssignOp { }
#[automatically_derived]
impl ::core::cmp::PartialEq for AssignOp {
#[inline]
fn eq(&self, other: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other)
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for AssignOp { }Eq, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for AssignOp {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
AssignOp::AddAssign => {}
AssignOp::SubAssign => {}
AssignOp::MulAssign => {}
AssignOp::DivAssign => {}
AssignOp::RemAssign => {}
AssignOp::BitXorAssign => {}
AssignOp::BitAndAssign => {}
AssignOp::BitOrAssign => {}
AssignOp::ShlAssign => {}
AssignOp::ShrAssign => {}
}
}
}
};StableHash)]
1726pub enum AssignOp {
1727 AddAssign,
1728 SubAssign,
1729 MulAssign,
1730 DivAssign,
1731 RemAssign,
1732 BitXorAssign,
1733 BitAndAssign,
1734 BitOrAssign,
1735 ShlAssign,
1736 ShrAssign,
1737}
1738
1739impl From<AssignOp> for BinOp {
1743 fn from(op: AssignOp) -> BinOp {
1744 match op {
1745 AssignOp::AddAssign => BinOp::Add,
1746 AssignOp::SubAssign => BinOp::Sub,
1747 AssignOp::MulAssign => BinOp::Mul,
1748 AssignOp::DivAssign => BinOp::Div,
1749 AssignOp::RemAssign => BinOp::Rem,
1750 AssignOp::BitXorAssign => BinOp::BitXor,
1751 AssignOp::BitAndAssign => BinOp::BitAnd,
1752 AssignOp::BitOrAssign => BinOp::BitOr,
1753 AssignOp::ShlAssign => BinOp::Shl,
1754 AssignOp::ShrAssign => BinOp::Shr,
1755 }
1756 }
1757}
1758
1759#[cfg(target_pointer_width = "64")]
1761mod size_asserts {
1762 use rustc_data_structures::static_assert_size;
1763
1764 use super::*;
1765 const _: [(); 32] = [(); ::std::mem::size_of::<AggregateKind<'_>>()];static_assert_size!(AggregateKind<'_>, 32);
1767 const _: [(); 24] = [(); ::std::mem::size_of::<Operand<'_>>()];static_assert_size!(Operand<'_>, 24);
1768 const _: [(); 16] = [(); ::std::mem::size_of::<Place<'_>>()];static_assert_size!(Place<'_>, 16);
1769 const _: [(); 24] = [(); ::std::mem::size_of::<PlaceElem<'_>>()];static_assert_size!(PlaceElem<'_>, 24);
1770 const _: [(); 40] = [(); ::std::mem::size_of::<Rvalue<'_>>()];static_assert_size!(Rvalue<'_>, 40);
1771 const _: [(); 16] = [(); ::std::mem::size_of::<StatementKind<'_>>()];static_assert_size!(StatementKind<'_>, 16);
1772 const _: [(); 80] = [(); ::std::mem::size_of::<TerminatorKind<'_>>()];static_assert_size!(TerminatorKind<'_>, 80);
1773 }