1use std::borrow::{Borrow, Cow};
22use std::{cmp, fmt};
23
24pub use GenericArgs::*;
25pub use UnsafeSource::*;
26pub use rustc_ast_ir::{FloatTy, IntTy, Movability, Mutability, Pinnedness, UintTy};
27use rustc_data_structures::packed::Pu128;
28use rustc_data_structures::stable_hash::{StableHash, StableHashCtxt, StableHasher};
29use rustc_data_structures::tagged_ptr::Tag;
30use rustc_macros::{Decodable, Encodable, StableHash, Walkable};
31pub use rustc_span::AttrId;
32use rustc_span::def_id::LocalDefId;
33use rustc_span::{
34 ByteSymbol, DUMMY_SP, ErrorGuaranteed, Ident, LocalExpnId, Span, Spanned, Symbol, kw, respan,
35 sym,
36};
37use thin_vec::{ThinVec, thin_vec};
38
39use crate::attr::data_structures::CfgEntry;
40pub use crate::format::*;
41use crate::token::{self, CommentKind, Delimiter};
42use crate::tokenstream::{DelimSpan, LazyAttrTokenStream, TokenStream};
43use crate::util::parser::{ExprPrecedence, Fixity};
44use crate::visit::{AssocCtxt, BoundKind, LifetimeCtxt};
45
46#[derive(#[automatically_derived]
impl ::core::clone::Clone for Label {
#[inline]
fn clone(&self) -> Label {
let _: ::core::clone::AssertParamIsClone<Ident>;
*self
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Label {
fn encode(&self, __encoder: &mut __E) {
match *self {
Label { ident: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Label {
fn decode(__decoder: &mut __D) -> Self {
Label {
ident: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::marker::Copy for Label { }Copy, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Label {
#[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 {
Label { ident: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]
impl ::core::cmp::Eq for Label {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Label {
#[inline]
fn eq(&self, other: &Label) -> bool { self.ident == other.ident }
}PartialEq, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Label where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Label { ident: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Label where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Label { ident: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
57pub struct Label {
58 pub ident: Ident,
59}
60
61impl fmt::Debug for Label {
62 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
63 f.write_fmt(format_args!("label({0:?})", self.ident))write!(f, "label({:?})", self.ident)
64 }
65}
66
67#[derive(#[automatically_derived]
impl ::core::clone::Clone for Lifetime {
#[inline]
fn clone(&self) -> Lifetime {
let _: ::core::clone::AssertParamIsClone<NodeId>;
let _: ::core::clone::AssertParamIsClone<Ident>;
*self
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Lifetime {
fn encode(&self, __encoder: &mut __E) {
match *self {
Lifetime { id: ref __binding_0, ident: ref __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Lifetime {
fn decode(__decoder: &mut __D) -> Self {
Lifetime {
id: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::marker::Copy for Lifetime { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for Lifetime {
#[inline]
fn eq(&self, other: &Lifetime) -> bool {
self.id == other.id && self.ident == other.ident
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Lifetime {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<NodeId>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Lifetime {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.id, state);
::core::hash::Hash::hash(&self.ident, state)
}
}Hash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Lifetime
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Lifetime { id: ref __binding_0, ident: ref __binding_1 } =>
{
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Lifetime where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Lifetime {
id: ref mut __binding_0, ident: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
70pub struct Lifetime {
71 pub id: NodeId,
72 pub ident: Ident,
73}
74
75impl fmt::Debug for Lifetime {
76 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
77 f.write_fmt(format_args!("lifetime({0}: {1})", self.id, self))write!(f, "lifetime({}: {})", self.id, self)
78 }
79}
80
81impl fmt::Display for Lifetime {
82 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
83 f.write_fmt(format_args!("{0}", self.ident.name))write!(f, "{}", self.ident.name)
84 }
85}
86
87#[derive(#[automatically_derived]
impl ::core::clone::Clone for Path {
#[inline]
fn clone(&self) -> Path {
Path {
span: ::core::clone::Clone::clone(&self.span),
segments: ::core::clone::Clone::clone(&self.segments),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Path {
fn encode(&self, __encoder: &mut __E) {
match *self {
Path { span: ref __binding_0, segments: ref __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Path {
fn decode(__decoder: &mut __D) -> Self {
Path {
span: ::rustc_serialize::Decodable::decode(__decoder),
segments: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Path {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Path", "span",
&self.span, "segments", &&self.segments)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Path where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Path { span: ref __binding_0, segments: ref __binding_1 } =>
{
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Path where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Path {
span: ref mut __binding_0, segments: ref mut __binding_1 }
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
94pub struct Path {
95 pub span: Span,
96 pub segments: ThinVec<PathSegment>,
99}
100
101impl PartialEq<Symbol> for Path {
103 #[inline]
104 fn eq(&self, name: &Symbol) -> bool {
105 if let [segment] = self.segments.as_ref()
106 && segment == name
107 {
108 true
109 } else {
110 false
111 }
112 }
113}
114
115impl PartialEq<&[Symbol]> for Path {
117 #[inline]
118 fn eq(&self, names: &&[Symbol]) -> bool {
119 self.segments.iter().eq(*names)
120 }
121}
122
123impl StableHash for Path {
124 fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
125 self.segments.len().stable_hash(hcx, hasher);
126 for segment in &self.segments {
127 segment.ident.stable_hash(hcx, hasher);
128 }
129 }
130}
131
132impl Path {
133 pub fn from_ident(ident: Ident) -> Path {
136 Path { segments: {
let len = [()].len();
let mut vec = ::thin_vec::ThinVec::with_capacity(len);
vec.push(PathSegment::from_ident(ident));
vec
}thin_vec![PathSegment::from_ident(ident)], span: ident.span }
137 }
138
139 pub fn is_global(&self) -> bool {
140 self.segments.first().is_some_and(|segment| segment.ident.name == kw::PathRoot)
141 }
142
143 x;#[tracing::instrument(level = "debug", ret)]
149 pub fn is_potential_trivial_const_arg(&self) -> bool {
150 self.segments.len() == 1 && self.segments.iter().all(|seg| seg.args.is_none())
151 }
152}
153
154pub fn join_path_syms(path: impl IntoIterator<Item = impl Borrow<Symbol>>) -> String {
166 let mut iter = path.into_iter();
171 let len_hint = iter.size_hint().1.unwrap_or(1);
172 let mut s = String::with_capacity(len_hint * 8);
173
174 let first_sym = *iter.next().unwrap().borrow();
175 if first_sym != kw::PathRoot {
176 s.push_str(first_sym.as_str());
177 }
178 for sym in iter {
179 let sym = *sym.borrow();
180 if true {
{
match (&sym, &kw::PathRoot) {
(left_val, right_val) => {
if *left_val == *right_val {
let kind = ::core::panicking::AssertKind::Ne;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
}
};
};debug_assert_ne!(sym, kw::PathRoot);
181 s.push_str("::");
182 s.push_str(sym.as_str());
183 }
184 s
185}
186
187pub fn join_path_idents(path: impl IntoIterator<Item = impl Borrow<Ident>>) -> String {
190 let mut iter = path.into_iter();
191 let len_hint = iter.size_hint().1.unwrap_or(1);
192 let mut s = String::with_capacity(len_hint * 8);
193
194 let first_ident = *iter.next().unwrap().borrow();
195 if first_ident.name != kw::PathRoot {
196 s.push_str(&first_ident.to_string());
197 }
198 for ident in iter {
199 let ident = *ident.borrow();
200 if true {
{
match (&ident.name, &kw::PathRoot) {
(left_val, right_val) => {
if *left_val == *right_val {
let kind = ::core::panicking::AssertKind::Ne;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
}
};
};debug_assert_ne!(ident.name, kw::PathRoot);
201 s.push_str("::");
202 s.push_str(&ident.to_string());
203 }
204 s
205}
206
207#[derive(#[automatically_derived]
impl ::core::clone::Clone for PathSegment {
#[inline]
fn clone(&self) -> PathSegment {
PathSegment {
ident: ::core::clone::Clone::clone(&self.ident),
id: ::core::clone::Clone::clone(&self.id),
args: ::core::clone::Clone::clone(&self.args),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for PathSegment {
fn encode(&self, __encoder: &mut __E) {
match *self {
PathSegment {
ident: ref __binding_0,
id: ref __binding_1,
args: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for PathSegment {
fn decode(__decoder: &mut __D) -> Self {
PathSegment {
ident: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for PathSegment {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "PathSegment",
"ident", &self.ident, "id", &self.id, "args", &&self.args)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for PathSegment
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
PathSegment {
ident: ref __binding_0,
id: ref __binding_1,
args: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for PathSegment where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
PathSegment {
ident: ref mut __binding_0,
id: ref mut __binding_1,
args: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
211pub struct PathSegment {
212 pub ident: Ident,
214
215 pub id: NodeId,
216
217 pub args: Option<Box<GenericArgs>>,
224}
225
226impl PartialEq<Symbol> for PathSegment {
228 #[inline]
229 fn eq(&self, name: &Symbol) -> bool {
230 self.args.is_none() && self.ident.name == *name
231 }
232}
233
234impl PathSegment {
235 pub fn from_ident(ident: Ident) -> Self {
236 PathSegment { ident, id: DUMMY_NODE_ID, args: None }
237 }
238
239 pub fn path_root(span: Span) -> Self {
240 PathSegment::from_ident(Ident::new(kw::PathRoot, span))
241 }
242
243 pub fn span(&self) -> Span {
244 match &self.args {
245 Some(args) => self.ident.span.to(args.span()),
246 None => self.ident.span,
247 }
248 }
249}
250
251#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenericArgs {
#[inline]
fn clone(&self) -> GenericArgs {
match self {
GenericArgs::AngleBracketed(__self_0) =>
GenericArgs::AngleBracketed(::core::clone::Clone::clone(__self_0)),
GenericArgs::Parenthesized(__self_0) =>
GenericArgs::Parenthesized(::core::clone::Clone::clone(__self_0)),
GenericArgs::ParenthesizedElided(__self_0) =>
GenericArgs::ParenthesizedElided(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for GenericArgs {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
GenericArgs::AngleBracketed(ref __binding_0) => { 0usize }
GenericArgs::Parenthesized(ref __binding_0) => { 1usize }
GenericArgs::ParenthesizedElided(ref __binding_0) => {
2usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
GenericArgs::AngleBracketed(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
GenericArgs::Parenthesized(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
GenericArgs::ParenthesizedElided(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for GenericArgs {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
GenericArgs::AngleBracketed(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
GenericArgs::Parenthesized(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
GenericArgs::ParenthesizedElided(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `GenericArgs`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for GenericArgs {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
GenericArgs::AngleBracketed(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"AngleBracketed", &__self_0),
GenericArgs::Parenthesized(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Parenthesized", &__self_0),
GenericArgs::ParenthesizedElided(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ParenthesizedElided", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for GenericArgs
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
GenericArgs::AngleBracketed(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
GenericArgs::Parenthesized(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
GenericArgs::ParenthesizedElided(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for GenericArgs where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
GenericArgs::AngleBracketed(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
GenericArgs::Parenthesized(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
GenericArgs::ParenthesizedElided(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
255pub enum GenericArgs {
256 AngleBracketed(AngleBracketedArgs),
258 Parenthesized(ParenthesizedArgs),
260 ParenthesizedElided(Span),
262}
263
264impl GenericArgs {
265 pub fn is_angle_bracketed(&self) -> bool {
266 #[allow(non_exhaustive_omitted_patterns)] match self {
AngleBracketed(..) => true,
_ => false,
}matches!(self, AngleBracketed(..))
267 }
268
269 pub fn span(&self) -> Span {
270 match self {
271 AngleBracketed(data) => data.span,
272 Parenthesized(data) => data.span,
273 ParenthesizedElided(span) => *span,
274 }
275 }
276}
277
278#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenericArg {
#[inline]
fn clone(&self) -> GenericArg {
match self {
GenericArg::Lifetime(__self_0) =>
GenericArg::Lifetime(::core::clone::Clone::clone(__self_0)),
GenericArg::Type(__self_0) =>
GenericArg::Type(::core::clone::Clone::clone(__self_0)),
GenericArg::Const(__self_0) =>
GenericArg::Const(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for GenericArg {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
GenericArg::Lifetime(ref __binding_0) => { 0usize }
GenericArg::Type(ref __binding_0) => { 1usize }
GenericArg::Const(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
GenericArg::Lifetime(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
GenericArg::Type(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
GenericArg::Const(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for GenericArg {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
GenericArg::Lifetime(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
GenericArg::Type(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
GenericArg::Const(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `GenericArg`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for GenericArg {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
GenericArg::Lifetime(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Lifetime", &__self_0),
GenericArg::Type(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Type",
&__self_0),
GenericArg::Const(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Const",
&__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for GenericArg
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
GenericArg::Lifetime(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (LifetimeCtxt::GenericArg))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
GenericArg::Type(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
GenericArg::Const(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for GenericArg where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
GenericArg::Lifetime(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (LifetimeCtxt::GenericArg))
}
}
GenericArg::Type(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
GenericArg::Const(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
280pub enum GenericArg {
281 Lifetime(#[visitable(extra = LifetimeCtxt::GenericArg)] Lifetime),
283 Type(Box<Ty>),
285 Const(AnonConst),
287}
288
289impl GenericArg {
290 pub fn span(&self) -> Span {
291 match self {
292 GenericArg::Lifetime(lt) => lt.ident.span,
293 GenericArg::Type(ty) => ty.span,
294 GenericArg::Const(ct) => ct.value.span,
295 }
296 }
297}
298
299#[derive(#[automatically_derived]
impl ::core::clone::Clone for AngleBracketedArgs {
#[inline]
fn clone(&self) -> AngleBracketedArgs {
AngleBracketedArgs {
span: ::core::clone::Clone::clone(&self.span),
args: ::core::clone::Clone::clone(&self.args),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AngleBracketedArgs {
fn encode(&self, __encoder: &mut __E) {
match *self {
AngleBracketedArgs {
span: ref __binding_0, args: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AngleBracketedArgs {
fn decode(__decoder: &mut __D) -> Self {
AngleBracketedArgs {
span: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AngleBracketedArgs {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"AngleBracketedArgs", "span", &self.span, "args", &&self.args)
}
}Debug, #[automatically_derived]
impl ::core::default::Default for AngleBracketedArgs {
#[inline]
fn default() -> AngleBracketedArgs {
AngleBracketedArgs {
span: ::core::default::Default::default(),
args: ::core::default::Default::default(),
}
}
}Default, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
AngleBracketedArgs where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AngleBracketedArgs {
span: ref __binding_0, args: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AngleBracketedArgs
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AngleBracketedArgs {
span: ref mut __binding_0, args: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
301pub struct AngleBracketedArgs {
302 pub span: Span,
304 pub args: ThinVec<AngleBracketedArg>,
306}
307
308#[derive(#[automatically_derived]
impl ::core::clone::Clone for AngleBracketedArg {
#[inline]
fn clone(&self) -> AngleBracketedArg {
match self {
AngleBracketedArg::Arg(__self_0) =>
AngleBracketedArg::Arg(::core::clone::Clone::clone(__self_0)),
AngleBracketedArg::Constraint(__self_0) =>
AngleBracketedArg::Constraint(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AngleBracketedArg {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AngleBracketedArg::Arg(ref __binding_0) => { 0usize }
AngleBracketedArg::Constraint(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AngleBracketedArg::Arg(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AngleBracketedArg::Constraint(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AngleBracketedArg {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
AngleBracketedArg::Arg(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
AngleBracketedArg::Constraint(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AngleBracketedArg`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AngleBracketedArg {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AngleBracketedArg::Arg(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Arg",
&__self_0),
AngleBracketedArg::Constraint(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Constraint", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
AngleBracketedArg where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AngleBracketedArg::Arg(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
AngleBracketedArg::Constraint(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AngleBracketedArg
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AngleBracketedArg::Arg(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
AngleBracketedArg::Constraint(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
310pub enum AngleBracketedArg {
311 Arg(GenericArg),
313 Constraint(AssocItemConstraint),
315}
316
317impl AngleBracketedArg {
318 pub fn span(&self) -> Span {
319 match self {
320 AngleBracketedArg::Arg(arg) => arg.span(),
321 AngleBracketedArg::Constraint(constraint) => constraint.span,
322 }
323 }
324}
325
326impl From<AngleBracketedArgs> for Box<GenericArgs> {
327 fn from(val: AngleBracketedArgs) -> Self {
328 Box::new(GenericArgs::AngleBracketed(val))
329 }
330}
331
332impl From<ParenthesizedArgs> for Box<GenericArgs> {
333 fn from(val: ParenthesizedArgs) -> Self {
334 Box::new(GenericArgs::Parenthesized(val))
335 }
336}
337
338#[derive(#[automatically_derived]
impl ::core::clone::Clone for ParenthesizedArgs {
#[inline]
fn clone(&self) -> ParenthesizedArgs {
ParenthesizedArgs {
span: ::core::clone::Clone::clone(&self.span),
inputs: ::core::clone::Clone::clone(&self.inputs),
inputs_span: ::core::clone::Clone::clone(&self.inputs_span),
output: ::core::clone::Clone::clone(&self.output),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ParenthesizedArgs {
fn encode(&self, __encoder: &mut __E) {
match *self {
ParenthesizedArgs {
span: ref __binding_0,
inputs: ref __binding_1,
inputs_span: ref __binding_2,
output: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ParenthesizedArgs {
fn decode(__decoder: &mut __D) -> Self {
ParenthesizedArgs {
span: ::rustc_serialize::Decodable::decode(__decoder),
inputs: ::rustc_serialize::Decodable::decode(__decoder),
inputs_span: ::rustc_serialize::Decodable::decode(__decoder),
output: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ParenthesizedArgs {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f,
"ParenthesizedArgs", "span", &self.span, "inputs", &self.inputs,
"inputs_span", &self.inputs_span, "output", &&self.output)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
ParenthesizedArgs where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ParenthesizedArgs {
span: ref __binding_0,
inputs: ref __binding_1,
inputs_span: ref __binding_2,
output: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ParenthesizedArgs
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ParenthesizedArgs {
span: ref mut __binding_0,
inputs: ref mut __binding_1,
inputs_span: ref mut __binding_2,
output: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
340pub struct ParenthesizedArgs {
341 pub span: Span,
346
347 pub inputs: ThinVec<Box<Ty>>,
349
350 pub inputs_span: Span,
355
356 pub output: FnRetTy,
358}
359
360impl ParenthesizedArgs {
361 pub fn as_angle_bracketed_args(&self) -> AngleBracketedArgs {
362 let args = self
363 .inputs
364 .iter()
365 .cloned()
366 .map(|input| AngleBracketedArg::Arg(GenericArg::Type(input)))
367 .collect();
368 AngleBracketedArgs { span: self.inputs_span, args }
369 }
370}
371
372pub use crate::node_id::{CRATE_NODE_ID, DUMMY_NODE_ID, NodeId};
373
374#[derive(#[automatically_derived]
impl ::core::marker::Copy for TraitBoundModifiers { }Copy, #[automatically_derived]
impl ::core::clone::Clone for TraitBoundModifiers {
#[inline]
fn clone(&self) -> TraitBoundModifiers {
let _: ::core::clone::AssertParamIsClone<BoundConstness>;
let _: ::core::clone::AssertParamIsClone<BoundAsyncness>;
let _: ::core::clone::AssertParamIsClone<BoundPolarity>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TraitBoundModifiers {
#[inline]
fn eq(&self, other: &TraitBoundModifiers) -> bool {
self.constness == other.constness && self.asyncness == other.asyncness
&& self.polarity == other.polarity
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for TraitBoundModifiers {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<BoundConstness>;
let _: ::core::cmp::AssertParamIsEq<BoundAsyncness>;
let _: ::core::cmp::AssertParamIsEq<BoundPolarity>;
}
}Eq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TraitBoundModifiers {
fn encode(&self, __encoder: &mut __E) {
match *self {
TraitBoundModifiers {
constness: ref __binding_0,
asyncness: ref __binding_1,
polarity: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TraitBoundModifiers {
fn decode(__decoder: &mut __D) -> Self {
TraitBoundModifiers {
constness: ::rustc_serialize::Decodable::decode(__decoder),
asyncness: ::rustc_serialize::Decodable::decode(__decoder),
polarity: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TraitBoundModifiers {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"TraitBoundModifiers", "constness", &self.constness, "asyncness",
&self.asyncness, "polarity", &&self.polarity)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
TraitBoundModifiers where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TraitBoundModifiers {
constness: ref __binding_0,
asyncness: ref __binding_1,
polarity: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TraitBoundModifiers
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TraitBoundModifiers {
constness: ref mut __binding_0,
asyncness: ref mut __binding_1,
polarity: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
376pub struct TraitBoundModifiers {
377 pub constness: BoundConstness,
378 pub asyncness: BoundAsyncness,
379 pub polarity: BoundPolarity,
380}
381
382impl TraitBoundModifiers {
383 pub const NONE: Self = Self {
384 constness: BoundConstness::Never,
385 asyncness: BoundAsyncness::Normal,
386 polarity: BoundPolarity::Positive,
387 };
388}
389
390#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenericBound {
#[inline]
fn clone(&self) -> GenericBound {
match self {
GenericBound::Trait(__self_0) =>
GenericBound::Trait(::core::clone::Clone::clone(__self_0)),
GenericBound::Outlives(__self_0) =>
GenericBound::Outlives(::core::clone::Clone::clone(__self_0)),
GenericBound::Use(__self_0, __self_1) =>
GenericBound::Use(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for GenericBound {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
GenericBound::Trait(ref __binding_0) => { 0usize }
GenericBound::Outlives(ref __binding_0) => { 1usize }
GenericBound::Use(ref __binding_0, ref __binding_1) => {
2usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
GenericBound::Trait(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
GenericBound::Outlives(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
GenericBound::Use(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for GenericBound {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
GenericBound::Trait(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
GenericBound::Outlives(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
GenericBound::Use(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `GenericBound`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for GenericBound {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
GenericBound::Trait(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Trait",
&__self_0),
GenericBound::Outlives(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Outlives", &__self_0),
GenericBound::Use(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Use",
__self_0, &__self_1),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for GenericBound
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
GenericBound::Trait(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
GenericBound::Outlives(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (LifetimeCtxt::Bound))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
GenericBound::Use(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for GenericBound where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
GenericBound::Trait(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
GenericBound::Outlives(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (LifetimeCtxt::Bound))
}
}
GenericBound::Use(ref mut __binding_0, ref mut __binding_1)
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
391pub enum GenericBound {
392 Trait(PolyTraitRef),
393 Outlives(#[visitable(extra = LifetimeCtxt::Bound)] Lifetime),
394 Use(ThinVec<PreciseCapturingArg>, Span),
396}
397
398impl GenericBound {
399 pub fn span(&self) -> Span {
400 match self {
401 GenericBound::Trait(t, ..) => t.span,
402 GenericBound::Outlives(l) => l.ident.span,
403 GenericBound::Use(_, span) => *span,
404 }
405 }
406}
407
408pub type GenericBounds = ThinVec<GenericBound>;
409
410#[derive(#[automatically_derived]
impl ::core::hash::Hash for ParamKindOrd {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash, #[automatically_derived]
impl ::core::clone::Clone for ParamKindOrd {
#[inline]
fn clone(&self) -> ParamKindOrd { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ParamKindOrd { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for ParamKindOrd {
#[inline]
fn eq(&self, other: &ParamKindOrd) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ParamKindOrd {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ParamKindOrd {
#[inline]
fn partial_cmp(&self, other: &ParamKindOrd)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for ParamKindOrd {
#[inline]
fn cmp(&self, other: &ParamKindOrd) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord)]
414pub enum ParamKindOrd {
415 Lifetime,
416 TypeOrConst,
417}
418
419impl fmt::Display for ParamKindOrd {
420 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
421 match self {
422 ParamKindOrd::Lifetime => "lifetime".fmt(f),
423 ParamKindOrd::TypeOrConst => "type and const".fmt(f),
424 }
425 }
426}
427
428#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenericParamKind {
#[inline]
fn clone(&self) -> GenericParamKind {
match self {
GenericParamKind::Lifetime => GenericParamKind::Lifetime,
GenericParamKind::Type { default: __self_0 } =>
GenericParamKind::Type {
default: ::core::clone::Clone::clone(__self_0),
},
GenericParamKind::Const {
ty: __self_0, span: __self_1, default: __self_2 } =>
GenericParamKind::Const {
ty: ::core::clone::Clone::clone(__self_0),
span: ::core::clone::Clone::clone(__self_1),
default: ::core::clone::Clone::clone(__self_2),
},
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for GenericParamKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
GenericParamKind::Lifetime => { 0usize }
GenericParamKind::Type { default: ref __binding_0 } => {
1usize
}
GenericParamKind::Const {
ty: ref __binding_0,
span: ref __binding_1,
default: ref __binding_2 } => {
2usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
GenericParamKind::Lifetime => {}
GenericParamKind::Type { default: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
GenericParamKind::Const {
ty: ref __binding_0,
span: ref __binding_1,
default: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for GenericParamKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { GenericParamKind::Lifetime }
1usize => {
GenericParamKind::Type {
default: ::rustc_serialize::Decodable::decode(__decoder),
}
}
2usize => {
GenericParamKind::Const {
ty: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
default: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `GenericParamKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for GenericParamKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
GenericParamKind::Lifetime =>
::core::fmt::Formatter::write_str(f, "Lifetime"),
GenericParamKind::Type { default: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Type",
"default", &__self_0),
GenericParamKind::Const {
ty: __self_0, span: __self_1, default: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f, "Const",
"ty", __self_0, "span", __self_1, "default", &__self_2),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
GenericParamKind where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
GenericParamKind::Lifetime => {}
GenericParamKind::Type { default: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
GenericParamKind::Const {
ty: ref __binding_0,
span: ref __binding_1,
default: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for GenericParamKind
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
GenericParamKind::Lifetime => {}
GenericParamKind::Type { default: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
GenericParamKind::Const {
ty: ref mut __binding_0,
span: ref mut __binding_1,
default: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
429pub enum GenericParamKind {
430 Lifetime,
432 Type {
433 default: Option<Box<Ty>>,
434 },
435 Const {
436 ty: Box<Ty>,
437 span: Span,
439 default: Option<AnonConst>,
441 },
442}
443
444#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenericParam {
#[inline]
fn clone(&self) -> GenericParam {
GenericParam {
id: ::core::clone::Clone::clone(&self.id),
ident: ::core::clone::Clone::clone(&self.ident),
attrs: ::core::clone::Clone::clone(&self.attrs),
bounds: ::core::clone::Clone::clone(&self.bounds),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
kind: ::core::clone::Clone::clone(&self.kind),
colon_span: ::core::clone::Clone::clone(&self.colon_span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for GenericParam {
fn encode(&self, __encoder: &mut __E) {
match *self {
GenericParam {
id: ref __binding_0,
ident: ref __binding_1,
attrs: ref __binding_2,
bounds: ref __binding_3,
is_placeholder: ref __binding_4,
kind: ref __binding_5,
colon_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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for GenericParam {
fn decode(__decoder: &mut __D) -> Self {
GenericParam {
id: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
attrs: ::rustc_serialize::Decodable::decode(__decoder),
bounds: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
colon_span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for GenericParam {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["id", "ident", "attrs", "bounds", "is_placeholder", "kind",
"colon_span"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.id, &self.ident, &self.attrs, &self.bounds,
&self.is_placeholder, &self.kind, &&self.colon_span];
::core::fmt::Formatter::debug_struct_fields_finish(f, "GenericParam",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for GenericParam
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
GenericParam {
id: ref __binding_0,
ident: ref __binding_1,
attrs: ref __binding_2,
bounds: ref __binding_3,
is_placeholder: ref __binding_4,
kind: ref __binding_5,
colon_span: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, (BoundKind::Bound))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for GenericParam where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
GenericParam {
id: ref mut __binding_0,
ident: ref mut __binding_1,
attrs: ref mut __binding_2,
bounds: ref mut __binding_3,
is_placeholder: ref mut __binding_4,
kind: ref mut __binding_5,
colon_span: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, (BoundKind::Bound))
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
}
}
}
}
};Walkable)]
445pub struct GenericParam {
446 pub id: NodeId,
447 pub ident: Ident,
448 pub attrs: AttrVec,
449 #[visitable(extra = BoundKind::Bound)]
450 pub bounds: GenericBounds,
451 pub is_placeholder: bool,
452 pub kind: GenericParamKind,
453 pub colon_span: Option<Span>,
454}
455
456impl GenericParam {
457 pub fn span(&self) -> Span {
458 match &self.kind {
459 GenericParamKind::Lifetime | GenericParamKind::Type { default: None } => {
460 self.ident.span
461 }
462 GenericParamKind::Type { default: Some(ty) } => self.ident.span.to(ty.span),
463 GenericParamKind::Const { span, .. } => *span,
464 }
465 }
466}
467
468#[derive(#[automatically_derived]
impl ::core::clone::Clone for Generics {
#[inline]
fn clone(&self) -> Generics {
Generics {
params: ::core::clone::Clone::clone(&self.params),
where_clause: ::core::clone::Clone::clone(&self.where_clause),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Generics {
fn encode(&self, __encoder: &mut __E) {
match *self {
Generics {
params: ref __binding_0,
where_clause: ref __binding_1,
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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Generics {
fn decode(__decoder: &mut __D) -> Self {
Generics {
params: ::rustc_serialize::Decodable::decode(__decoder),
where_clause: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Generics {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Generics",
"params", &self.params, "where_clause", &self.where_clause,
"span", &&self.span)
}
}Debug, #[automatically_derived]
impl ::core::default::Default for Generics {
#[inline]
fn default() -> Generics {
Generics {
params: ::core::default::Default::default(),
where_clause: ::core::default::Default::default(),
span: ::core::default::Default::default(),
}
}
}Default, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Generics
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Generics {
params: ref __binding_0,
where_clause: ref __binding_1,
span: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Generics where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Generics {
params: ref mut __binding_0,
where_clause: ref mut __binding_1,
span: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
471pub struct Generics {
472 pub params: ThinVec<GenericParam>,
473 pub where_clause: WhereClause,
474 pub span: Span,
475}
476
477#[derive(#[automatically_derived]
impl ::core::clone::Clone for WhereClause {
#[inline]
fn clone(&self) -> WhereClause {
WhereClause {
has_where_token: ::core::clone::Clone::clone(&self.has_where_token),
predicates: ::core::clone::Clone::clone(&self.predicates),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for WhereClause {
fn encode(&self, __encoder: &mut __E) {
match *self {
WhereClause {
has_where_token: ref __binding_0,
predicates: ref __binding_1,
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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for WhereClause {
fn decode(__decoder: &mut __D) -> Self {
WhereClause {
has_where_token: ::rustc_serialize::Decodable::decode(__decoder),
predicates: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for WhereClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "WhereClause",
"has_where_token", &self.has_where_token, "predicates",
&self.predicates, "span", &&self.span)
}
}Debug, #[automatically_derived]
impl ::core::default::Default for WhereClause {
#[inline]
fn default() -> WhereClause {
WhereClause {
has_where_token: ::core::default::Default::default(),
predicates: ::core::default::Default::default(),
span: ::core::default::Default::default(),
}
}
}Default, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for WhereClause
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
WhereClause {
has_where_token: ref __binding_0,
predicates: ref __binding_1,
span: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for WhereClause where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
WhereClause {
has_where_token: ref mut __binding_0,
predicates: ref mut __binding_1,
span: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
479pub struct WhereClause {
480 pub has_where_token: bool,
485 pub predicates: ThinVec<WherePredicate>,
486 pub span: Span,
487}
488
489impl WhereClause {
490 pub fn is_empty(&self) -> bool {
491 !self.has_where_token && self.predicates.is_empty()
492 }
493}
494
495#[derive(#[automatically_derived]
impl ::core::clone::Clone for WherePredicate {
#[inline]
fn clone(&self) -> WherePredicate {
WherePredicate {
attrs: ::core::clone::Clone::clone(&self.attrs),
kind: ::core::clone::Clone::clone(&self.kind),
id: ::core::clone::Clone::clone(&self.id),
span: ::core::clone::Clone::clone(&self.span),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for WherePredicate {
fn encode(&self, __encoder: &mut __E) {
match *self {
WherePredicate {
attrs: ref __binding_0,
kind: ref __binding_1,
id: ref __binding_2,
span: ref __binding_3,
is_placeholder: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for WherePredicate {
fn decode(__decoder: &mut __D) -> Self {
WherePredicate {
attrs: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for WherePredicate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f,
"WherePredicate", "attrs", &self.attrs, "kind", &self.kind, "id",
&self.id, "span", &self.span, "is_placeholder",
&&self.is_placeholder)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
WherePredicate where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
WherePredicate {
attrs: ref __binding_0,
kind: ref __binding_1,
id: ref __binding_2,
span: ref __binding_3,
is_placeholder: ref __binding_4 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for WherePredicate where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
WherePredicate {
attrs: ref mut __binding_0,
kind: ref mut __binding_1,
id: ref mut __binding_2,
span: ref mut __binding_3,
is_placeholder: ref mut __binding_4 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
}
}
}
}
};Walkable)]
497pub struct WherePredicate {
498 pub attrs: AttrVec,
499 pub kind: WherePredicateKind,
500 pub id: NodeId,
501 pub span: Span,
502 pub is_placeholder: bool,
503}
504
505#[derive(#[automatically_derived]
impl ::core::clone::Clone for WherePredicateKind {
#[inline]
fn clone(&self) -> WherePredicateKind {
match self {
WherePredicateKind::BoundPredicate(__self_0) =>
WherePredicateKind::BoundPredicate(::core::clone::Clone::clone(__self_0)),
WherePredicateKind::RegionPredicate(__self_0) =>
WherePredicateKind::RegionPredicate(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for WherePredicateKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
WherePredicateKind::BoundPredicate(ref __binding_0) => {
0usize
}
WherePredicateKind::RegionPredicate(ref __binding_0) => {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
WherePredicateKind::BoundPredicate(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
WherePredicateKind::RegionPredicate(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for WherePredicateKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
WherePredicateKind::BoundPredicate(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
WherePredicateKind::RegionPredicate(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `WherePredicateKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for WherePredicateKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
WherePredicateKind::BoundPredicate(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"BoundPredicate", &__self_0),
WherePredicateKind::RegionPredicate(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RegionPredicate", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
WherePredicateKind where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
WherePredicateKind::BoundPredicate(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
WherePredicateKind::RegionPredicate(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for WherePredicateKind
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
WherePredicateKind::BoundPredicate(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
WherePredicateKind::RegionPredicate(ref mut __binding_0) =>
{
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
507pub enum WherePredicateKind {
508 BoundPredicate(WhereBoundPredicate),
510 RegionPredicate(WhereRegionPredicate),
512}
513
514#[derive(#[automatically_derived]
impl ::core::clone::Clone for WhereBoundPredicate {
#[inline]
fn clone(&self) -> WhereBoundPredicate {
WhereBoundPredicate {
bound_generic_params: ::core::clone::Clone::clone(&self.bound_generic_params),
bounded_ty: ::core::clone::Clone::clone(&self.bounded_ty),
bounds: ::core::clone::Clone::clone(&self.bounds),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for WhereBoundPredicate {
fn encode(&self, __encoder: &mut __E) {
match *self {
WhereBoundPredicate {
bound_generic_params: ref __binding_0,
bounded_ty: ref __binding_1,
bounds: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for WhereBoundPredicate {
fn decode(__decoder: &mut __D) -> Self {
WhereBoundPredicate {
bound_generic_params: ::rustc_serialize::Decodable::decode(__decoder),
bounded_ty: ::rustc_serialize::Decodable::decode(__decoder),
bounds: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for WhereBoundPredicate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"WhereBoundPredicate", "bound_generic_params",
&self.bound_generic_params, "bounded_ty", &self.bounded_ty,
"bounds", &&self.bounds)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
WhereBoundPredicate where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
WhereBoundPredicate {
bound_generic_params: ref __binding_0,
bounded_ty: ref __binding_1,
bounds: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, (BoundKind::Bound))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for WhereBoundPredicate
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
WhereBoundPredicate {
bound_generic_params: ref mut __binding_0,
bounded_ty: ref mut __binding_1,
bounds: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, (BoundKind::Bound))
}
}
}
}
}
};Walkable)]
518pub struct WhereBoundPredicate {
519 pub bound_generic_params: ThinVec<GenericParam>,
521 pub bounded_ty: Box<Ty>,
523 #[visitable(extra = BoundKind::Bound)]
525 pub bounds: GenericBounds,
526}
527
528#[derive(#[automatically_derived]
impl ::core::clone::Clone for WhereRegionPredicate {
#[inline]
fn clone(&self) -> WhereRegionPredicate {
WhereRegionPredicate {
lifetime: ::core::clone::Clone::clone(&self.lifetime),
bounds: ::core::clone::Clone::clone(&self.bounds),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for WhereRegionPredicate {
fn encode(&self, __encoder: &mut __E) {
match *self {
WhereRegionPredicate {
lifetime: ref __binding_0, bounds: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for WhereRegionPredicate {
fn decode(__decoder: &mut __D) -> Self {
WhereRegionPredicate {
lifetime: ::rustc_serialize::Decodable::decode(__decoder),
bounds: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for WhereRegionPredicate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"WhereRegionPredicate", "lifetime", &self.lifetime, "bounds",
&&self.bounds)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
WhereRegionPredicate where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
WhereRegionPredicate {
lifetime: ref __binding_0, bounds: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (LifetimeCtxt::Bound))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, (BoundKind::Bound))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for WhereRegionPredicate
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
WhereRegionPredicate {
lifetime: ref mut __binding_0, bounds: ref mut __binding_1 }
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (LifetimeCtxt::Bound))
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, (BoundKind::Bound))
}
}
}
}
}
};Walkable)]
532pub struct WhereRegionPredicate {
533 #[visitable(extra = LifetimeCtxt::Bound)]
534 pub lifetime: Lifetime,
535 #[visitable(extra = BoundKind::Bound)]
536 pub bounds: GenericBounds,
537}
538
539#[derive(#[automatically_derived]
impl ::core::clone::Clone for WhereEqPredicate {
#[inline]
fn clone(&self) -> WhereEqPredicate {
WhereEqPredicate {
lhs_ty: ::core::clone::Clone::clone(&self.lhs_ty),
rhs_ty: ::core::clone::Clone::clone(&self.rhs_ty),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for WhereEqPredicate {
fn encode(&self, __encoder: &mut __E) {
match *self {
WhereEqPredicate {
lhs_ty: ref __binding_0, rhs_ty: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for WhereEqPredicate {
fn decode(__decoder: &mut __D) -> Self {
WhereEqPredicate {
lhs_ty: ::rustc_serialize::Decodable::decode(__decoder),
rhs_ty: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for WhereEqPredicate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"WhereEqPredicate", "lhs_ty", &self.lhs_ty, "rhs_ty",
&&self.rhs_ty)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
WhereEqPredicate where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
WhereEqPredicate {
lhs_ty: ref __binding_0, rhs_ty: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for WhereEqPredicate
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
WhereEqPredicate {
lhs_ty: ref mut __binding_0, rhs_ty: ref mut __binding_1 }
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
543pub struct WhereEqPredicate {
544 pub lhs_ty: Box<Ty>,
545 pub rhs_ty: Box<Ty>,
546}
547
548#[derive(#[automatically_derived]
impl ::core::clone::Clone for Crate {
#[inline]
fn clone(&self) -> Crate {
Crate {
id: ::core::clone::Clone::clone(&self.id),
attrs: ::core::clone::Clone::clone(&self.attrs),
items: ::core::clone::Clone::clone(&self.items),
spans: ::core::clone::Clone::clone(&self.spans),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Crate {
fn encode(&self, __encoder: &mut __E) {
match *self {
Crate {
id: ref __binding_0,
attrs: ref __binding_1,
items: ref __binding_2,
spans: ref __binding_3,
is_placeholder: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Crate {
fn decode(__decoder: &mut __D) -> Self {
Crate {
id: ::rustc_serialize::Decodable::decode(__decoder),
attrs: ::rustc_serialize::Decodable::decode(__decoder),
items: ::rustc_serialize::Decodable::decode(__decoder),
spans: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Crate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "Crate", "id",
&self.id, "attrs", &self.attrs, "items", &self.items, "spans",
&self.spans, "is_placeholder", &&self.is_placeholder)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Crate where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Crate {
id: ref __binding_0,
attrs: ref __binding_1,
items: ref __binding_2,
spans: ref __binding_3,
is_placeholder: ref __binding_4 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Crate where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Crate {
id: ref mut __binding_0,
attrs: ref mut __binding_1,
items: ref mut __binding_2,
spans: ref mut __binding_3,
is_placeholder: ref mut __binding_4 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
}
}
}
}
};Walkable)]
549pub struct Crate {
550 pub id: NodeId,
553 pub attrs: AttrVec,
554 pub items: ThinVec<Box<Item>>,
555 pub spans: ModSpans,
556 pub is_placeholder: bool,
557}
558
559#[derive(#[automatically_derived]
impl ::core::clone::Clone for MetaItem {
#[inline]
fn clone(&self) -> MetaItem {
MetaItem {
unsafety: ::core::clone::Clone::clone(&self.unsafety),
path: ::core::clone::Clone::clone(&self.path),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MetaItem {
fn encode(&self, __encoder: &mut __E) {
match *self {
MetaItem {
unsafety: ref __binding_0,
path: ref __binding_1,
kind: ref __binding_2,
span: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MetaItem {
fn decode(__decoder: &mut __D) -> Self {
MetaItem {
unsafety: ::rustc_serialize::Decodable::decode(__decoder),
path: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MetaItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "MetaItem",
"unsafety", &self.unsafety, "path", &self.path, "kind",
&self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for MetaItem {
#[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 {
MetaItem {
unsafety: ref __binding_0,
path: ref __binding_1,
kind: ref __binding_2,
span: 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); }
}
}
}
}
};StableHash)]
567pub struct MetaItem {
568 pub unsafety: Safety,
569 pub path: Path,
570 pub kind: MetaItemKind,
571 pub span: Span,
572}
573
574#[derive(#[automatically_derived]
impl ::core::clone::Clone for MetaItemKind {
#[inline]
fn clone(&self) -> MetaItemKind {
match self {
MetaItemKind::Word => MetaItemKind::Word,
MetaItemKind::List(__self_0) =>
MetaItemKind::List(::core::clone::Clone::clone(__self_0)),
MetaItemKind::NameValue(__self_0) =>
MetaItemKind::NameValue(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MetaItemKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MetaItemKind::Word => { 0usize }
MetaItemKind::List(ref __binding_0) => { 1usize }
MetaItemKind::NameValue(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MetaItemKind::Word => {}
MetaItemKind::List(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
MetaItemKind::NameValue(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MetaItemKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { MetaItemKind::Word }
1usize => {
MetaItemKind::List(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
MetaItemKind::NameValue(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MetaItemKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MetaItemKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
MetaItemKind::Word =>
::core::fmt::Formatter::write_str(f, "Word"),
MetaItemKind::List(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "List",
&__self_0),
MetaItemKind::NameValue(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"NameValue", &__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for MetaItemKind
{
#[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 {
MetaItemKind::Word => {}
MetaItemKind::List(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
MetaItemKind::NameValue(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
576pub enum MetaItemKind {
577 Word,
581
582 List(ThinVec<MetaItemInner>),
586
587 NameValue(MetaItemLit),
591}
592
593#[derive(#[automatically_derived]
impl ::core::clone::Clone for MetaItemInner {
#[inline]
fn clone(&self) -> MetaItemInner {
match self {
MetaItemInner::MetaItem(__self_0) =>
MetaItemInner::MetaItem(::core::clone::Clone::clone(__self_0)),
MetaItemInner::Lit(__self_0) =>
MetaItemInner::Lit(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MetaItemInner {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MetaItemInner::MetaItem(ref __binding_0) => { 0usize }
MetaItemInner::Lit(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MetaItemInner::MetaItem(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
MetaItemInner::Lit(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MetaItemInner {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
MetaItemInner::MetaItem(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
MetaItemInner::Lit(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MetaItemInner`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MetaItemInner {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
MetaItemInner::MetaItem(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MetaItem", &__self_0),
MetaItemInner::Lit(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Lit",
&__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
MetaItemInner {
#[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 {
MetaItemInner::MetaItem(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
MetaItemInner::Lit(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
597pub enum MetaItemInner {
598 MetaItem(MetaItem),
600
601 Lit(MetaItemLit),
605}
606
607#[derive(#[automatically_derived]
impl ::core::clone::Clone for Block {
#[inline]
fn clone(&self) -> Block {
Block {
stmts: ::core::clone::Clone::clone(&self.stmts),
id: ::core::clone::Clone::clone(&self.id),
rules: ::core::clone::Clone::clone(&self.rules),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Block {
fn encode(&self, __encoder: &mut __E) {
match *self {
Block {
stmts: ref __binding_0,
id: ref __binding_1,
rules: ref __binding_2,
span: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Block {
fn decode(__decoder: &mut __D) -> Self {
Block {
stmts: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
rules: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Block {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "Block",
"stmts", &self.stmts, "id", &self.id, "rules", &self.rules,
"span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Block where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Block {
stmts: ref __binding_0,
id: ref __binding_1,
rules: ref __binding_2,
span: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Block where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Block {
stmts: ref mut __binding_0,
id: ref mut __binding_1,
rules: ref mut __binding_2,
span: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
611pub struct Block {
612 pub stmts: ThinVec<Stmt>,
614 pub id: NodeId,
615 pub rules: BlockCheckMode,
617 pub span: Span,
618}
619
620#[derive(#[automatically_derived]
impl ::core::clone::Clone for Pat {
#[inline]
fn clone(&self) -> Pat {
Pat {
id: ::core::clone::Clone::clone(&self.id),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Pat {
fn encode(&self, __encoder: &mut __E) {
match *self {
Pat {
id: ref __binding_0,
kind: ref __binding_1,
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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Pat {
fn decode(__decoder: &mut __D) -> Self {
Pat {
id: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Pat {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Pat", "id",
&self.id, "kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Pat where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Pat {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Pat where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Pat {
id: ref mut __binding_0,
kind: ref mut __binding_1,
span: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
624pub struct Pat {
625 pub id: NodeId,
626 pub kind: PatKind,
627 pub span: Span,
628}
629
630impl Pat {
631 pub fn to_ty(&self) -> Option<Box<Ty>> {
634 let kind = match &self.kind {
635 PatKind::Missing => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
636 PatKind::Wild => TyKind::Infer,
638 PatKind::Ident(BindingMode::NONE, ident, None) => {
640 TyKind::Path(None, Path::from_ident(*ident))
641 }
642 PatKind::Path(qself, path) => TyKind::Path(qself.clone(), path.clone()),
643 PatKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
644 PatKind::Ref(pat, pinned, mutbl) => pat.to_ty().map(|ty| match pinned {
646 Pinnedness::Not => TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }),
647 Pinnedness::Pinned => TyKind::PinnedRef(None, MutTy { ty, mutbl: *mutbl }),
648 })?,
649 PatKind::Slice(pats) if let [pat] = pats.as_slice() => {
652 pat.to_ty().map(TyKind::Slice)?
653 }
654 PatKind::Tuple(pats) => {
657 let tys = pats.iter().map(|pat| pat.to_ty()).collect::<Option<ThinVec<_>>>()?;
658 TyKind::Tup(tys)
659 }
660 _ => return None,
661 };
662
663 Some(Box::new(Ty { kind, id: self.id, span: self.span }))
664 }
665
666 pub fn walk<'ast>(&'ast self, it: &mut impl FnMut(&'ast Pat) -> bool) {
670 if !it(self) {
671 return;
672 }
673
674 match &self.kind {
675 PatKind::Ident(_, _, Some(p)) => p.walk(it),
677
678 PatKind::Struct(_, _, fields, _) => fields.iter().for_each(|field| field.pat.walk(it)),
680
681 PatKind::TupleStruct(_, _, s)
683 | PatKind::Tuple(s)
684 | PatKind::Slice(s)
685 | PatKind::Or(s) => s.iter().for_each(|p| p.walk(it)),
686
687 PatKind::Box(s)
689 | PatKind::Deref(s)
690 | PatKind::Ref(s, _, _)
691 | PatKind::Paren(s)
692 | PatKind::Guard(s, _) => s.walk(it),
693
694 PatKind::Missing
696 | PatKind::Wild
697 | PatKind::Rest
698 | PatKind::Never
699 | PatKind::Expr(_)
700 | PatKind::Range(..)
701 | PatKind::Ident(..)
702 | PatKind::Path(..)
703 | PatKind::MacCall(_)
704 | PatKind::Err(_) => {}
705 }
706 }
707
708 pub fn peel_refs(&self) -> &Pat {
710 let mut current = self;
711 while let PatKind::Ref(inner, _, _) = ¤t.kind {
712 current = inner;
713 }
714 current
715 }
716
717 pub fn is_rest(&self) -> bool {
719 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
PatKind::Rest => true,
_ => false,
}matches!(self.kind, PatKind::Rest)
720 }
721
722 pub fn could_be_never_pattern(&self) -> bool {
725 let mut could_be_never_pattern = false;
726 self.walk(&mut |pat| match &pat.kind {
727 PatKind::Never | PatKind::MacCall(_) => {
728 could_be_never_pattern = true;
729 false
730 }
731 PatKind::Or(s) => {
732 could_be_never_pattern = s.iter().all(|p| p.could_be_never_pattern());
733 false
734 }
735 _ => true,
736 });
737 could_be_never_pattern
738 }
739
740 pub fn contains_never_pattern(&self) -> bool {
743 let mut contains_never_pattern = false;
744 self.walk(&mut |pat| {
745 if #[allow(non_exhaustive_omitted_patterns)] match pat.kind {
PatKind::Never => true,
_ => false,
}matches!(pat.kind, PatKind::Never) {
746 contains_never_pattern = true;
747 }
748 true
749 });
750 contains_never_pattern
751 }
752
753 pub fn descr(&self) -> Option<String> {
755 match &self.kind {
756 PatKind::Missing => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
757 PatKind::Wild => Some("_".to_string()),
758 PatKind::Ident(BindingMode::NONE, ident, None) => Some(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}", ident))
})format!("{ident}")),
759 PatKind::Ref(pat, pinned, mutbl) => {
760 pat.descr().map(|d| ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("&{0}{1}",
pinned.prefix_str(*mutbl), d))
})format!("&{}{d}", pinned.prefix_str(*mutbl)))
761 }
762 _ => None,
763 }
764 }
765}
766
767impl From<Box<Pat>> for Pat {
768 fn from(value: Box<Pat>) -> Self {
769 *value
770 }
771}
772
773#[derive(#[automatically_derived]
impl ::core::clone::Clone for PatField {
#[inline]
fn clone(&self) -> PatField {
PatField {
ident: ::core::clone::Clone::clone(&self.ident),
pat: ::core::clone::Clone::clone(&self.pat),
is_shorthand: ::core::clone::Clone::clone(&self.is_shorthand),
attrs: ::core::clone::Clone::clone(&self.attrs),
id: ::core::clone::Clone::clone(&self.id),
span: ::core::clone::Clone::clone(&self.span),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for PatField {
fn encode(&self, __encoder: &mut __E) {
match *self {
PatField {
ident: ref __binding_0,
pat: ref __binding_1,
is_shorthand: ref __binding_2,
attrs: ref __binding_3,
id: ref __binding_4,
span: ref __binding_5,
is_placeholder: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for PatField {
fn decode(__decoder: &mut __D) -> Self {
PatField {
ident: ::rustc_serialize::Decodable::decode(__decoder),
pat: ::rustc_serialize::Decodable::decode(__decoder),
is_shorthand: ::rustc_serialize::Decodable::decode(__decoder),
attrs: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for PatField {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["ident", "pat", "is_shorthand", "attrs", "id", "span",
"is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.ident, &self.pat, &self.is_shorthand, &self.attrs,
&self.id, &self.span, &&self.is_placeholder];
::core::fmt::Formatter::debug_struct_fields_finish(f, "PatField",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for PatField
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
PatField {
ident: ref __binding_0,
pat: ref __binding_1,
is_shorthand: ref __binding_2,
attrs: ref __binding_3,
id: ref __binding_4,
span: ref __binding_5,
is_placeholder: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for PatField where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
PatField {
ident: ref mut __binding_0,
pat: ref mut __binding_1,
is_shorthand: ref mut __binding_2,
attrs: ref mut __binding_3,
id: ref mut __binding_4,
span: ref mut __binding_5,
is_placeholder: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
}
}
}
}
};Walkable)]
779pub struct PatField {
780 pub ident: Ident,
782 pub pat: Box<Pat>,
784 pub is_shorthand: bool,
785 pub attrs: AttrVec,
786 pub id: NodeId,
787 pub span: Span,
788 pub is_placeholder: bool,
789}
790
791#[derive(#[automatically_derived]
impl ::core::clone::Clone for ByRef {
#[inline]
fn clone(&self) -> ByRef {
let _: ::core::clone::AssertParamIsClone<Pinnedness>;
let _: ::core::clone::AssertParamIsClone<Mutability>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ByRef { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for ByRef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ByRef::Yes(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Yes",
__self_0, &__self_1),
ByRef::No => ::core::fmt::Formatter::write_str(f, "No"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ByRef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Pinnedness>;
let _: ::core::cmp::AssertParamIsEq<Mutability>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ByRef {
#[inline]
fn eq(&self, other: &ByRef) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ByRef::Yes(__self_0, __self_1),
ByRef::Yes(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq)]
792#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ByRef {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => { 0usize }
ByRef::No => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ByRef::No => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ByRef {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
ByRef::Yes(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { ByRef::No }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ByRef`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for ByRef {
#[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 {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
ByRef::No => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ByRef where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
ByRef::No => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ByRef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ByRef::Yes(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
ByRef::No => {}
}
}
}
};Walkable)]
793pub enum ByRef {
794 Yes(Pinnedness, Mutability),
795 No,
796}
797
798impl ByRef {
799 #[must_use]
800 pub fn cap_ref_mutability(mut self, mutbl: Mutability) -> Self {
801 if let ByRef::Yes(_, old_mutbl) = &mut self {
802 *old_mutbl = cmp::min(*old_mutbl, mutbl);
803 }
804 self
805 }
806}
807
808#[derive(#[automatically_derived]
impl ::core::clone::Clone for BindingMode {
#[inline]
fn clone(&self) -> BindingMode {
let _: ::core::clone::AssertParamIsClone<ByRef>;
let _: ::core::clone::AssertParamIsClone<Mutability>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for BindingMode { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for BindingMode {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field2_finish(f, "BindingMode",
&self.0, &&self.1)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for BindingMode {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ByRef>;
let _: ::core::cmp::AssertParamIsEq<Mutability>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for BindingMode {
#[inline]
fn eq(&self, other: &BindingMode) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq)]
815#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BindingMode {
fn encode(&self, __encoder: &mut __E) {
match *self {
BindingMode(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for BindingMode {
fn decode(__decoder: &mut __D) -> Self {
BindingMode(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for BindingMode
{
#[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 {
BindingMode(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for BindingMode
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BindingMode(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BindingMode where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BindingMode(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
816pub struct BindingMode(pub ByRef, pub Mutability);
817
818impl BindingMode {
819 pub const NONE: Self = Self(ByRef::No, Mutability::Not);
820 pub const REF: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Not), Mutability::Not);
821 pub const REF_PIN: Self =
822 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Not), Mutability::Not);
823 pub const MUT: Self = Self(ByRef::No, Mutability::Mut);
824 pub const REF_MUT: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Mut), Mutability::Not);
825 pub const REF_PIN_MUT: Self =
826 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Mut), Mutability::Not);
827 pub const MUT_REF: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Not), Mutability::Mut);
828 pub const MUT_REF_PIN: Self =
829 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Not), Mutability::Mut);
830 pub const MUT_REF_MUT: Self =
831 Self(ByRef::Yes(Pinnedness::Not, Mutability::Mut), Mutability::Mut);
832 pub const MUT_REF_PIN_MUT: Self =
833 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Mut), Mutability::Mut);
834
835 pub fn prefix_str(self) -> &'static str {
836 match self {
837 Self::NONE => "",
838 Self::REF => "ref ",
839 Self::REF_PIN => "ref pin const ",
840 Self::MUT => "mut ",
841 Self::REF_MUT => "ref mut ",
842 Self::REF_PIN_MUT => "ref pin mut ",
843 Self::MUT_REF => "mut ref ",
844 Self::MUT_REF_PIN => "mut ref pin ",
845 Self::MUT_REF_MUT => "mut ref mut ",
846 Self::MUT_REF_PIN_MUT => "mut ref pin mut ",
847 }
848 }
849}
850
851#[derive(#[automatically_derived]
impl ::core::clone::Clone for RangeEnd {
#[inline]
fn clone(&self) -> RangeEnd {
let _: ::core::clone::AssertParamIsClone<RangeSyntax>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for RangeEnd { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for RangeEnd {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RangeEnd::Included(ref __binding_0) => { 0usize }
RangeEnd::Excluded => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
RangeEnd::Included(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
RangeEnd::Excluded => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for RangeEnd {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
RangeEnd::Included(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { RangeEnd::Excluded }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RangeEnd`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for RangeEnd {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
RangeEnd::Included(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Included", &__self_0),
RangeEnd::Excluded =>
::core::fmt::Formatter::write_str(f, "Excluded"),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for RangeEnd
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
RangeEnd::Included(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
RangeEnd::Excluded => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for RangeEnd where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
RangeEnd::Included(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
RangeEnd::Excluded => {}
}
}
}
};Walkable)]
852pub enum RangeEnd {
853 Included(RangeSyntax),
855 Excluded,
857}
858
859#[derive(#[automatically_derived]
impl ::core::clone::Clone for RangeSyntax {
#[inline]
fn clone(&self) -> RangeSyntax { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for RangeSyntax { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for RangeSyntax {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RangeSyntax::DotDotDot => { 0usize }
RangeSyntax::DotDotEq => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
RangeSyntax::DotDotDot => {}
RangeSyntax::DotDotEq => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for RangeSyntax {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RangeSyntax::DotDotDot }
1usize => { RangeSyntax::DotDotEq }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RangeSyntax`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for RangeSyntax {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RangeSyntax::DotDotDot => "DotDotDot",
RangeSyntax::DotDotEq => "DotDotEq",
})
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for RangeSyntax
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
RangeSyntax::DotDotDot => {}
RangeSyntax::DotDotEq => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for RangeSyntax where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
RangeSyntax::DotDotDot => {}
RangeSyntax::DotDotEq => {}
}
}
}
};Walkable)]
860pub enum RangeSyntax {
861 DotDotDot,
863 DotDotEq,
865}
866
867#[derive(#[automatically_derived]
impl ::core::clone::Clone for PatKind {
#[inline]
fn clone(&self) -> PatKind {
match self {
PatKind::Missing => PatKind::Missing,
PatKind::Wild => PatKind::Wild,
PatKind::Ident(__self_0, __self_1, __self_2) =>
PatKind::Ident(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
PatKind::Struct(__self_0, __self_1, __self_2, __self_3) =>
PatKind::Struct(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2),
::core::clone::Clone::clone(__self_3)),
PatKind::TupleStruct(__self_0, __self_1, __self_2) =>
PatKind::TupleStruct(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
PatKind::Or(__self_0) =>
PatKind::Or(::core::clone::Clone::clone(__self_0)),
PatKind::Path(__self_0, __self_1) =>
PatKind::Path(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
PatKind::Tuple(__self_0) =>
PatKind::Tuple(::core::clone::Clone::clone(__self_0)),
PatKind::Box(__self_0) =>
PatKind::Box(::core::clone::Clone::clone(__self_0)),
PatKind::Deref(__self_0) =>
PatKind::Deref(::core::clone::Clone::clone(__self_0)),
PatKind::Ref(__self_0, __self_1, __self_2) =>
PatKind::Ref(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
PatKind::Expr(__self_0) =>
PatKind::Expr(::core::clone::Clone::clone(__self_0)),
PatKind::Range(__self_0, __self_1, __self_2) =>
PatKind::Range(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
PatKind::Slice(__self_0) =>
PatKind::Slice(::core::clone::Clone::clone(__self_0)),
PatKind::Rest => PatKind::Rest,
PatKind::Never => PatKind::Never,
PatKind::Guard(__self_0, __self_1) =>
PatKind::Guard(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
PatKind::Paren(__self_0) =>
PatKind::Paren(::core::clone::Clone::clone(__self_0)),
PatKind::MacCall(__self_0) =>
PatKind::MacCall(::core::clone::Clone::clone(__self_0)),
PatKind::Err(__self_0) =>
PatKind::Err(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for PatKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
PatKind::Missing => { 0usize }
PatKind::Wild => { 1usize }
PatKind::Ident(ref __binding_0, ref __binding_1,
ref __binding_2) => {
2usize
}
PatKind::Struct(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
3usize
}
PatKind::TupleStruct(ref __binding_0, ref __binding_1,
ref __binding_2) => {
4usize
}
PatKind::Or(ref __binding_0) => { 5usize }
PatKind::Path(ref __binding_0, ref __binding_1) => {
6usize
}
PatKind::Tuple(ref __binding_0) => { 7usize }
PatKind::Box(ref __binding_0) => { 8usize }
PatKind::Deref(ref __binding_0) => { 9usize }
PatKind::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
10usize
}
PatKind::Expr(ref __binding_0) => { 11usize }
PatKind::Range(ref __binding_0, ref __binding_1,
ref __binding_2) => {
12usize
}
PatKind::Slice(ref __binding_0) => { 13usize }
PatKind::Rest => { 14usize }
PatKind::Never => { 15usize }
PatKind::Guard(ref __binding_0, ref __binding_1) => {
16usize
}
PatKind::Paren(ref __binding_0) => { 17usize }
PatKind::MacCall(ref __binding_0) => { 18usize }
PatKind::Err(ref __binding_0) => { 19usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
PatKind::Missing => {}
PatKind::Wild => {}
PatKind::Ident(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);
}
PatKind::Struct(ref __binding_0, ref __binding_1,
ref __binding_2, 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);
}
PatKind::TupleStruct(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);
}
PatKind::Or(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PatKind::Path(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
PatKind::Tuple(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PatKind::Box(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PatKind::Deref(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PatKind::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);
}
PatKind::Expr(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PatKind::Range(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);
}
PatKind::Slice(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PatKind::Rest => {}
PatKind::Never => {}
PatKind::Guard(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
PatKind::Paren(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PatKind::MacCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PatKind::Err(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for PatKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { PatKind::Missing }
1usize => { PatKind::Wild }
2usize => {
PatKind::Ident(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
PatKind::Struct(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
PatKind::TupleStruct(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
PatKind::Or(::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
PatKind::Path(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
PatKind::Tuple(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
PatKind::Box(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
PatKind::Deref(::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
PatKind::Ref(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
PatKind::Expr(::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
PatKind::Range(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
13usize => {
PatKind::Slice(::rustc_serialize::Decodable::decode(__decoder))
}
14usize => { PatKind::Rest }
15usize => { PatKind::Never }
16usize => {
PatKind::Guard(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
17usize => {
PatKind::Paren(::rustc_serialize::Decodable::decode(__decoder))
}
18usize => {
PatKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
19usize => {
PatKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `PatKind`, expected 0..20, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for PatKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
PatKind::Missing =>
::core::fmt::Formatter::write_str(f, "Missing"),
PatKind::Wild => ::core::fmt::Formatter::write_str(f, "Wild"),
PatKind::Ident(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Ident",
__self_0, __self_1, &__self_2),
PatKind::Struct(__self_0, __self_1, __self_2, __self_3) =>
::core::fmt::Formatter::debug_tuple_field4_finish(f, "Struct",
__self_0, __self_1, __self_2, &__self_3),
PatKind::TupleStruct(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f,
"TupleStruct", __self_0, __self_1, &__self_2),
PatKind::Or(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Or",
&__self_0),
PatKind::Path(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Path",
__self_0, &__self_1),
PatKind::Tuple(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Tuple",
&__self_0),
PatKind::Box(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Box",
&__self_0),
PatKind::Deref(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Deref",
&__self_0),
PatKind::Ref(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Ref",
__self_0, __self_1, &__self_2),
PatKind::Expr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Expr",
&__self_0),
PatKind::Range(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Range",
__self_0, __self_1, &__self_2),
PatKind::Slice(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Slice",
&__self_0),
PatKind::Rest => ::core::fmt::Formatter::write_str(f, "Rest"),
PatKind::Never => ::core::fmt::Formatter::write_str(f, "Never"),
PatKind::Guard(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Guard",
__self_0, &__self_1),
PatKind::Paren(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Paren",
&__self_0),
PatKind::MacCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MacCall", &__self_0),
PatKind::Err(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Err",
&__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for PatKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
PatKind::Missing => {}
PatKind::Wild => {}
PatKind::Ident(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Struct(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::TupleStruct(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Or(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Path(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Tuple(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Box(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Deref(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Expr(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Range(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Slice(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Rest => {}
PatKind::Never => {}
PatKind::Guard(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Paren(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::MacCall(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatKind::Err(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for PatKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
PatKind::Missing => {}
PatKind::Wild => {}
PatKind::Ident(ref mut __binding_0, ref mut __binding_1,
ref mut __binding_2) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
PatKind::Struct(ref mut __binding_0, ref mut __binding_1,
ref mut __binding_2, ref mut __binding_3) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
PatKind::TupleStruct(ref mut __binding_0,
ref mut __binding_1, ref mut __binding_2) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
PatKind::Or(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Path(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
PatKind::Tuple(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Box(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Deref(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Ref(ref mut __binding_0, ref mut __binding_1,
ref mut __binding_2) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
PatKind::Expr(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Range(ref mut __binding_0, ref mut __binding_1,
ref mut __binding_2) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
PatKind::Slice(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Rest => {}
PatKind::Never => {}
PatKind::Guard(ref mut __binding_0, ref mut __binding_1) =>
{
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
PatKind::Paren(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::MacCall(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Err(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
871pub enum PatKind {
872 Missing,
874
875 Wild,
877
878 Ident(BindingMode, Ident, Option<Box<Pat>>),
883
884 Struct(Option<Box<QSelf>>, Path, ThinVec<PatField>, PatFieldsRest),
886
887 TupleStruct(Option<Box<QSelf>>, Path, ThinVec<Pat>),
889
890 Or(ThinVec<Pat>),
893
894 Path(Option<Box<QSelf>>, Path),
899
900 Tuple(ThinVec<Pat>),
902
903 Box(Box<Pat>),
905
906 Deref(Box<Pat>),
908
909 Ref(Box<Pat>, Pinnedness, Mutability),
911
912 Expr(Box<Expr>),
914
915 Range(Option<Box<Expr>>, Option<Box<Expr>>, Spanned<RangeEnd>),
917
918 Slice(ThinVec<Pat>),
920
921 Rest,
934
935 Never,
937
938 Guard(Box<Pat>, Box<Guard>),
940
941 Paren(Box<Pat>),
943
944 MacCall(Box<MacCall>),
946
947 Err(ErrorGuaranteed),
949}
950
951#[derive(#[automatically_derived]
impl ::core::clone::Clone for PatFieldsRest {
#[inline]
fn clone(&self) -> PatFieldsRest {
let _: ::core::clone::AssertParamIsClone<Span>;
let _: ::core::clone::AssertParamIsClone<ErrorGuaranteed>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for PatFieldsRest { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for PatFieldsRest {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
PatFieldsRest::Rest(ref __binding_0) => { 0usize }
PatFieldsRest::Recovered(ref __binding_0) => { 1usize }
PatFieldsRest::None => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
PatFieldsRest::Rest(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PatFieldsRest::Recovered(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PatFieldsRest::None => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for PatFieldsRest {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
PatFieldsRest::Rest(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
PatFieldsRest::Recovered(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => { PatFieldsRest::None }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `PatFieldsRest`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for PatFieldsRest {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
PatFieldsRest::Rest(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Rest",
&__self_0),
PatFieldsRest::Recovered(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Recovered", &__self_0),
PatFieldsRest::None =>
::core::fmt::Formatter::write_str(f, "None"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for PatFieldsRest {
#[inline]
fn eq(&self, other: &PatFieldsRest) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(PatFieldsRest::Rest(__self_0), PatFieldsRest::Rest(__arg1_0))
=> __self_0 == __arg1_0,
(PatFieldsRest::Recovered(__self_0),
PatFieldsRest::Recovered(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
PatFieldsRest where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
PatFieldsRest::Rest(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatFieldsRest::Recovered(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PatFieldsRest::None => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for PatFieldsRest where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
PatFieldsRest::Rest(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatFieldsRest::Recovered(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatFieldsRest::None => {}
}
}
}
};Walkable)]
953pub enum PatFieldsRest {
954 Rest(Span),
956 Recovered(ErrorGuaranteed),
958 None,
960}
961
962#[derive(#[automatically_derived]
impl ::core::clone::Clone for BorrowKind {
#[inline]
fn clone(&self) -> BorrowKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for BorrowKind { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for BorrowKind {
#[inline]
fn eq(&self, other: &BorrowKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for BorrowKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::fmt::Debug for BorrowKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
BorrowKind::Ref => "Ref",
BorrowKind::Raw => "Raw",
BorrowKind::Pin => "Pin",
})
}
}Debug)]
965#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BorrowKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BorrowKind::Ref => { 0usize }
BorrowKind::Raw => { 1usize }
BorrowKind::Pin => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
BorrowKind::Ref => {}
BorrowKind::Raw => {}
BorrowKind::Pin => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for BorrowKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BorrowKind::Ref }
1usize => { BorrowKind::Raw }
2usize => { BorrowKind::Pin }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BorrowKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, 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::Ref => {}
BorrowKind::Raw => {}
BorrowKind::Pin => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for BorrowKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BorrowKind::Ref => {}
BorrowKind::Raw => {}
BorrowKind::Pin => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BorrowKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BorrowKind::Ref => {}
BorrowKind::Raw => {}
BorrowKind::Pin => {}
}
}
}
};Walkable)]
966pub enum BorrowKind {
967 Ref,
971 Raw,
975 Pin,
979}
980
981#[derive(#[automatically_derived]
impl ::core::clone::Clone for BinOpKind {
#[inline]
fn clone(&self) -> BinOpKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for BinOpKind { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for BinOpKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
const __NAMES: &str =
"AddSubMulDivRemAndOrBitXorBitAndBitOrShlShrEqLtLeNeGeGt";
const __OFFSET: [usize; 19] =
[0usize, 3usize, 6usize, 9usize, 12usize, 15usize, 18usize,
20usize, 26usize, 32usize, 37usize, 40usize, 43usize,
45usize, 47usize, 49usize, 51usize, 53usize, 55usize];
let __d = ::core::intrinsics::discriminant_value(self) as usize;
::core::fmt::Formatter::debug_c_like_enum_write_str(f, __NAMES,
&__OFFSET, __d)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for BinOpKind {
#[inline]
fn eq(&self, other: &BinOpKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BinOpKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BinOpKind::Add => { 0usize }
BinOpKind::Sub => { 1usize }
BinOpKind::Mul => { 2usize }
BinOpKind::Div => { 3usize }
BinOpKind::Rem => { 4usize }
BinOpKind::And => { 5usize }
BinOpKind::Or => { 6usize }
BinOpKind::BitXor => { 7usize }
BinOpKind::BitAnd => { 8usize }
BinOpKind::BitOr => { 9usize }
BinOpKind::Shl => { 10usize }
BinOpKind::Shr => { 11usize }
BinOpKind::Eq => { 12usize }
BinOpKind::Lt => { 13usize }
BinOpKind::Le => { 14usize }
BinOpKind::Ne => { 15usize }
BinOpKind::Ge => { 16usize }
BinOpKind::Gt => { 17usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
BinOpKind::Add => {}
BinOpKind::Sub => {}
BinOpKind::Mul => {}
BinOpKind::Div => {}
BinOpKind::Rem => {}
BinOpKind::And => {}
BinOpKind::Or => {}
BinOpKind::BitXor => {}
BinOpKind::BitAnd => {}
BinOpKind::BitOr => {}
BinOpKind::Shl => {}
BinOpKind::Shr => {}
BinOpKind::Eq => {}
BinOpKind::Lt => {}
BinOpKind::Le => {}
BinOpKind::Ne => {}
BinOpKind::Ge => {}
BinOpKind::Gt => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for BinOpKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BinOpKind::Add }
1usize => { BinOpKind::Sub }
2usize => { BinOpKind::Mul }
3usize => { BinOpKind::Div }
4usize => { BinOpKind::Rem }
5usize => { BinOpKind::And }
6usize => { BinOpKind::Or }
7usize => { BinOpKind::BitXor }
8usize => { BinOpKind::BitAnd }
9usize => { BinOpKind::BitOr }
10usize => { BinOpKind::Shl }
11usize => { BinOpKind::Shr }
12usize => { BinOpKind::Eq }
13usize => { BinOpKind::Lt }
14usize => { BinOpKind::Le }
15usize => { BinOpKind::Ne }
16usize => { BinOpKind::Ge }
17usize => { BinOpKind::Gt }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BinOpKind`, expected 0..18, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for BinOpKind {
#[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 {
BinOpKind::Add => {}
BinOpKind::Sub => {}
BinOpKind::Mul => {}
BinOpKind::Div => {}
BinOpKind::Rem => {}
BinOpKind::And => {}
BinOpKind::Or => {}
BinOpKind::BitXor => {}
BinOpKind::BitAnd => {}
BinOpKind::BitOr => {}
BinOpKind::Shl => {}
BinOpKind::Shr => {}
BinOpKind::Eq => {}
BinOpKind::Lt => {}
BinOpKind::Le => {}
BinOpKind::Ne => {}
BinOpKind::Ge => {}
BinOpKind::Gt => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for BinOpKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BinOpKind::Add => {}
BinOpKind::Sub => {}
BinOpKind::Mul => {}
BinOpKind::Div => {}
BinOpKind::Rem => {}
BinOpKind::And => {}
BinOpKind::Or => {}
BinOpKind::BitXor => {}
BinOpKind::BitAnd => {}
BinOpKind::BitOr => {}
BinOpKind::Shl => {}
BinOpKind::Shr => {}
BinOpKind::Eq => {}
BinOpKind::Lt => {}
BinOpKind::Le => {}
BinOpKind::Ne => {}
BinOpKind::Ge => {}
BinOpKind::Gt => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BinOpKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BinOpKind::Add => {}
BinOpKind::Sub => {}
BinOpKind::Mul => {}
BinOpKind::Div => {}
BinOpKind::Rem => {}
BinOpKind::And => {}
BinOpKind::Or => {}
BinOpKind::BitXor => {}
BinOpKind::BitAnd => {}
BinOpKind::BitOr => {}
BinOpKind::Shl => {}
BinOpKind::Shr => {}
BinOpKind::Eq => {}
BinOpKind::Lt => {}
BinOpKind::Le => {}
BinOpKind::Ne => {}
BinOpKind::Ge => {}
BinOpKind::Gt => {}
}
}
}
};Walkable)]
982pub enum BinOpKind {
983 Add,
985 Sub,
987 Mul,
989 Div,
991 Rem,
993 And,
995 Or,
997 BitXor,
999 BitAnd,
1001 BitOr,
1003 Shl,
1005 Shr,
1007 Eq,
1009 Lt,
1011 Le,
1013 Ne,
1015 Ge,
1017 Gt,
1019}
1020
1021impl BinOpKind {
1022 pub fn as_str(&self) -> &'static str {
1023 use BinOpKind::*;
1024 match self {
1025 Add => "+",
1026 Sub => "-",
1027 Mul => "*",
1028 Div => "/",
1029 Rem => "%",
1030 And => "&&",
1031 Or => "||",
1032 BitXor => "^",
1033 BitAnd => "&",
1034 BitOr => "|",
1035 Shl => "<<",
1036 Shr => ">>",
1037 Eq => "==",
1038 Lt => "<",
1039 Le => "<=",
1040 Ne => "!=",
1041 Ge => ">=",
1042 Gt => ">",
1043 }
1044 }
1045
1046 pub fn is_lazy(&self) -> bool {
1047 #[allow(non_exhaustive_omitted_patterns)] match self {
BinOpKind::And | BinOpKind::Or => true,
_ => false,
}matches!(self, BinOpKind::And | BinOpKind::Or)
1048 }
1049
1050 pub fn precedence(&self) -> ExprPrecedence {
1051 use BinOpKind::*;
1052 match *self {
1053 Mul | Div | Rem => ExprPrecedence::Product,
1054 Add | Sub => ExprPrecedence::Sum,
1055 Shl | Shr => ExprPrecedence::Shift,
1056 BitAnd => ExprPrecedence::BitAnd,
1057 BitXor => ExprPrecedence::BitXor,
1058 BitOr => ExprPrecedence::BitOr,
1059 Lt | Gt | Le | Ge | Eq | Ne => ExprPrecedence::Compare,
1060 And => ExprPrecedence::LAnd,
1061 Or => ExprPrecedence::LOr,
1062 }
1063 }
1064
1065 pub fn fixity(&self) -> Fixity {
1066 use BinOpKind::*;
1067 match self {
1068 Eq | Ne | Lt | Le | Gt | Ge => Fixity::None,
1069 Add | Sub | Mul | Div | Rem | And | Or | BitXor | BitAnd | BitOr | Shl | Shr => {
1070 Fixity::Left
1071 }
1072 }
1073 }
1074
1075 pub fn is_comparison(self) -> bool {
1076 use BinOpKind::*;
1077 match self {
1078 Eq | Ne | Lt | Le | Gt | Ge => true,
1079 Add | Sub | Mul | Div | Rem | And | Or | BitXor | BitAnd | BitOr | Shl | Shr => false,
1080 }
1081 }
1082
1083 pub fn is_by_value(self) -> bool {
1085 !self.is_comparison()
1086 }
1087}
1088
1089pub type BinOp = Spanned<BinOpKind>;
1090
1091impl From<AssignOpKind> for BinOpKind {
1095 fn from(op: AssignOpKind) -> BinOpKind {
1096 match op {
1097 AssignOpKind::AddAssign => BinOpKind::Add,
1098 AssignOpKind::SubAssign => BinOpKind::Sub,
1099 AssignOpKind::MulAssign => BinOpKind::Mul,
1100 AssignOpKind::DivAssign => BinOpKind::Div,
1101 AssignOpKind::RemAssign => BinOpKind::Rem,
1102 AssignOpKind::BitXorAssign => BinOpKind::BitXor,
1103 AssignOpKind::BitAndAssign => BinOpKind::BitAnd,
1104 AssignOpKind::BitOrAssign => BinOpKind::BitOr,
1105 AssignOpKind::ShlAssign => BinOpKind::Shl,
1106 AssignOpKind::ShrAssign => BinOpKind::Shr,
1107 }
1108 }
1109}
1110
1111#[derive(#[automatically_derived]
impl ::core::clone::Clone for AssignOpKind {
#[inline]
fn clone(&self) -> AssignOpKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for AssignOpKind { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for AssignOpKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
const __NAMES: &str =
"AddAssignSubAssignMulAssignDivAssignRemAssignBitXorAssignBitAndAssignBitOrAssignShlAssignShrAssign";
const __OFFSET: [usize; 11] =
[0usize, 9usize, 18usize, 27usize, 36usize, 45usize, 57usize,
69usize, 80usize, 89usize, 98usize];
let __d = ::core::intrinsics::discriminant_value(self) as usize;
::core::fmt::Formatter::debug_c_like_enum_write_str(f, __NAMES,
&__OFFSET, __d)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for AssignOpKind {
#[inline]
fn eq(&self, other: &AssignOpKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AssignOpKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AssignOpKind::AddAssign => { 0usize }
AssignOpKind::SubAssign => { 1usize }
AssignOpKind::MulAssign => { 2usize }
AssignOpKind::DivAssign => { 3usize }
AssignOpKind::RemAssign => { 4usize }
AssignOpKind::BitXorAssign => { 5usize }
AssignOpKind::BitAndAssign => { 6usize }
AssignOpKind::BitOrAssign => { 7usize }
AssignOpKind::ShlAssign => { 8usize }
AssignOpKind::ShrAssign => { 9usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AssignOpKind::AddAssign => {}
AssignOpKind::SubAssign => {}
AssignOpKind::MulAssign => {}
AssignOpKind::DivAssign => {}
AssignOpKind::RemAssign => {}
AssignOpKind::BitXorAssign => {}
AssignOpKind::BitAndAssign => {}
AssignOpKind::BitOrAssign => {}
AssignOpKind::ShlAssign => {}
AssignOpKind::ShrAssign => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AssignOpKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { AssignOpKind::AddAssign }
1usize => { AssignOpKind::SubAssign }
2usize => { AssignOpKind::MulAssign }
3usize => { AssignOpKind::DivAssign }
4usize => { AssignOpKind::RemAssign }
5usize => { AssignOpKind::BitXorAssign }
6usize => { AssignOpKind::BitAndAssign }
7usize => { AssignOpKind::BitOrAssign }
8usize => { AssignOpKind::ShlAssign }
9usize => { AssignOpKind::ShrAssign }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AssignOpKind`, expected 0..10, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for AssignOpKind
{
#[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 {
AssignOpKind::AddAssign => {}
AssignOpKind::SubAssign => {}
AssignOpKind::MulAssign => {}
AssignOpKind::DivAssign => {}
AssignOpKind::RemAssign => {}
AssignOpKind::BitXorAssign => {}
AssignOpKind::BitAndAssign => {}
AssignOpKind::BitOrAssign => {}
AssignOpKind::ShlAssign => {}
AssignOpKind::ShrAssign => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AssignOpKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AssignOpKind::AddAssign => {}
AssignOpKind::SubAssign => {}
AssignOpKind::MulAssign => {}
AssignOpKind::DivAssign => {}
AssignOpKind::RemAssign => {}
AssignOpKind::BitXorAssign => {}
AssignOpKind::BitAndAssign => {}
AssignOpKind::BitOrAssign => {}
AssignOpKind::ShlAssign => {}
AssignOpKind::ShrAssign => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AssignOpKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AssignOpKind::AddAssign => {}
AssignOpKind::SubAssign => {}
AssignOpKind::MulAssign => {}
AssignOpKind::DivAssign => {}
AssignOpKind::RemAssign => {}
AssignOpKind::BitXorAssign => {}
AssignOpKind::BitAndAssign => {}
AssignOpKind::BitOrAssign => {}
AssignOpKind::ShlAssign => {}
AssignOpKind::ShrAssign => {}
}
}
}
};Walkable)]
1112pub enum AssignOpKind {
1113 AddAssign,
1115 SubAssign,
1117 MulAssign,
1119 DivAssign,
1121 RemAssign,
1123 BitXorAssign,
1125 BitAndAssign,
1127 BitOrAssign,
1129 ShlAssign,
1131 ShrAssign,
1133}
1134
1135impl AssignOpKind {
1136 pub fn as_str(&self) -> &'static str {
1137 use AssignOpKind::*;
1138 match self {
1139 AddAssign => "+=",
1140 SubAssign => "-=",
1141 MulAssign => "*=",
1142 DivAssign => "/=",
1143 RemAssign => "%=",
1144 BitXorAssign => "^=",
1145 BitAndAssign => "&=",
1146 BitOrAssign => "|=",
1147 ShlAssign => "<<=",
1148 ShrAssign => ">>=",
1149 }
1150 }
1151
1152 pub fn is_by_value(self) -> bool {
1154 true
1155 }
1156}
1157
1158pub type AssignOp = Spanned<AssignOpKind>;
1159
1160#[derive(#[automatically_derived]
impl ::core::clone::Clone for UnOp {
#[inline]
fn clone(&self) -> UnOp { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for UnOp { }Copy, #[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::Deref => "Deref",
UnOp::Not => "Not",
UnOp::Neg => "Neg",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for UnOp {
#[inline]
fn eq(&self, other: &UnOp) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for UnOp {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnOp::Deref => { 0usize }
UnOp::Not => { 1usize }
UnOp::Neg => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
UnOp::Deref => {}
UnOp::Not => {}
UnOp::Neg => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for UnOp {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnOp::Deref }
1usize => { UnOp::Not }
2usize => { UnOp::Neg }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnOp`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, 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::Deref => {}
UnOp::Not => {}
UnOp::Neg => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for UnOp where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
UnOp::Deref => {}
UnOp::Not => {}
UnOp::Neg => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for UnOp where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
UnOp::Deref => {}
UnOp::Not => {}
UnOp::Neg => {}
}
}
}
};Walkable)]
1164pub enum UnOp {
1165 Deref,
1167 Not,
1169 Neg,
1171}
1172
1173impl UnOp {
1174 pub fn as_str(&self) -> &'static str {
1175 match self {
1176 UnOp::Deref => "*",
1177 UnOp::Not => "!",
1178 UnOp::Neg => "-",
1179 }
1180 }
1181
1182 pub fn is_by_value(self) -> bool {
1184 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::Neg | Self::Not => true,
_ => false,
}matches!(self, Self::Neg | Self::Not)
1185 }
1186}
1187
1188#[derive(#[automatically_derived]
impl ::core::clone::Clone for Stmt {
#[inline]
fn clone(&self) -> Stmt {
Stmt {
id: ::core::clone::Clone::clone(&self.id),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Stmt {
fn encode(&self, __encoder: &mut __E) {
match *self {
Stmt {
id: ref __binding_0,
kind: ref __binding_1,
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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Stmt {
fn decode(__decoder: &mut __D) -> Self {
Stmt {
id: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Stmt {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Stmt", "id",
&self.id, "kind", &self.kind, "span", &&self.span)
}
}Debug)]
1194pub struct Stmt {
1195 pub id: NodeId,
1196 pub kind: StmtKind,
1197 pub span: Span,
1198}
1199
1200impl Stmt {
1201 pub fn has_trailing_semicolon(&self) -> bool {
1202 match &self.kind {
1203 StmtKind::Semi(_) => true,
1204 StmtKind::MacCall(mac) => #[allow(non_exhaustive_omitted_patterns)] match mac.style {
MacStmtStyle::Semicolon => true,
_ => false,
}matches!(mac.style, MacStmtStyle::Semicolon),
1205 _ => false,
1206 }
1207 }
1208
1209 pub fn add_trailing_semicolon(mut self) -> Self {
1217 self.kind = match self.kind {
1218 StmtKind::Expr(expr) => StmtKind::Semi(expr),
1219 StmtKind::MacCall(mut mac) => {
1220 mac.style = MacStmtStyle::Semicolon;
1221 StmtKind::MacCall(mac)
1222 }
1223 kind => kind,
1224 };
1225
1226 self
1227 }
1228
1229 pub fn is_item(&self) -> bool {
1230 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
StmtKind::Item(_) => true,
_ => false,
}matches!(self.kind, StmtKind::Item(_))
1231 }
1232
1233 pub fn is_expr(&self) -> bool {
1234 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
StmtKind::Expr(_) => true,
_ => false,
}matches!(self.kind, StmtKind::Expr(_))
1235 }
1236}
1237
1238#[derive(#[automatically_derived]
impl ::core::clone::Clone for StmtKind {
#[inline]
fn clone(&self) -> StmtKind {
match self {
StmtKind::Let(__self_0) =>
StmtKind::Let(::core::clone::Clone::clone(__self_0)),
StmtKind::Item(__self_0) =>
StmtKind::Item(::core::clone::Clone::clone(__self_0)),
StmtKind::Expr(__self_0) =>
StmtKind::Expr(::core::clone::Clone::clone(__self_0)),
StmtKind::Semi(__self_0) =>
StmtKind::Semi(::core::clone::Clone::clone(__self_0)),
StmtKind::Empty => StmtKind::Empty,
StmtKind::MacCall(__self_0) =>
StmtKind::MacCall(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for StmtKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
StmtKind::Let(ref __binding_0) => { 0usize }
StmtKind::Item(ref __binding_0) => { 1usize }
StmtKind::Expr(ref __binding_0) => { 2usize }
StmtKind::Semi(ref __binding_0) => { 3usize }
StmtKind::Empty => { 4usize }
StmtKind::MacCall(ref __binding_0) => { 5usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
StmtKind::Let(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StmtKind::Item(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StmtKind::Expr(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StmtKind::Semi(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StmtKind::Empty => {}
StmtKind::MacCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for StmtKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
StmtKind::Let(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
StmtKind::Item(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
StmtKind::Expr(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
StmtKind::Semi(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => { StmtKind::Empty }
5usize => {
StmtKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `StmtKind`, expected 0..6, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for StmtKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
StmtKind::Let(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Let",
&__self_0),
StmtKind::Item(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Item",
&__self_0),
StmtKind::Expr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Expr",
&__self_0),
StmtKind::Semi(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Semi",
&__self_0),
StmtKind::Empty => ::core::fmt::Formatter::write_str(f, "Empty"),
StmtKind::MacCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MacCall", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for StmtKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
StmtKind::Let(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
StmtKind::Item(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
StmtKind::Expr(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
StmtKind::Semi(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
StmtKind::Empty => {}
StmtKind::MacCall(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for StmtKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
StmtKind::Let(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
StmtKind::Item(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
StmtKind::Expr(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
StmtKind::Semi(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
StmtKind::Empty => {}
StmtKind::MacCall(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
1240pub enum StmtKind {
1241 Let(Box<Local>),
1243 Item(Box<Item>),
1245 Expr(Box<Expr>),
1247 Semi(Box<Expr>),
1249 Empty,
1251 MacCall(Box<MacCallStmt>),
1253}
1254
1255impl StmtKind {
1256 pub fn descr(&self) -> &'static str {
1257 match self {
1258 StmtKind::Let(_) => "local",
1259 StmtKind::Item(_) => "item",
1260 StmtKind::Expr(_) => "expression",
1261 StmtKind::Semi(_) => "statement",
1262 StmtKind::Empty => "semicolon",
1263 StmtKind::MacCall(_) => "macro call",
1264 }
1265 }
1266}
1267
1268#[derive(#[automatically_derived]
impl ::core::clone::Clone for MacCallStmt {
#[inline]
fn clone(&self) -> MacCallStmt {
MacCallStmt {
mac: ::core::clone::Clone::clone(&self.mac),
style: ::core::clone::Clone::clone(&self.style),
attrs: ::core::clone::Clone::clone(&self.attrs),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MacCallStmt {
fn encode(&self, __encoder: &mut __E) {
match *self {
MacCallStmt {
mac: ref __binding_0,
style: ref __binding_1,
attrs: ref __binding_2,
tokens: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MacCallStmt {
fn decode(__decoder: &mut __D) -> Self {
MacCallStmt {
mac: ::rustc_serialize::Decodable::decode(__decoder),
style: ::rustc_serialize::Decodable::decode(__decoder),
attrs: ::rustc_serialize::Decodable::decode(__decoder),
tokens: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MacCallStmt {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "MacCallStmt",
"mac", &self.mac, "style", &self.style, "attrs", &self.attrs,
"tokens", &&self.tokens)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for MacCallStmt
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MacCallStmt {
mac: ref __binding_0,
style: ref __binding_1,
attrs: ref __binding_2,
tokens: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for MacCallStmt where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MacCallStmt {
mac: ref mut __binding_0,
style: ref mut __binding_1,
attrs: ref mut __binding_2,
tokens: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
1269pub struct MacCallStmt {
1270 pub mac: Box<MacCall>,
1271 pub style: MacStmtStyle,
1272 pub attrs: AttrVec,
1273 pub tokens: Option<LazyAttrTokenStream>,
1274}
1275
1276#[derive(#[automatically_derived]
impl ::core::clone::Clone for MacStmtStyle {
#[inline]
fn clone(&self) -> MacStmtStyle { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for MacStmtStyle { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for MacStmtStyle {
#[inline]
fn eq(&self, other: &MacStmtStyle) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MacStmtStyle {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MacStmtStyle::Semicolon => { 0usize }
MacStmtStyle::Braces => { 1usize }
MacStmtStyle::NoBraces => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MacStmtStyle::Semicolon => {}
MacStmtStyle::Braces => {}
MacStmtStyle::NoBraces => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MacStmtStyle {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { MacStmtStyle::Semicolon }
1usize => { MacStmtStyle::Braces }
2usize => { MacStmtStyle::NoBraces }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MacStmtStyle`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MacStmtStyle {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
MacStmtStyle::Semicolon => "Semicolon",
MacStmtStyle::Braces => "Braces",
MacStmtStyle::NoBraces => "NoBraces",
})
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for MacStmtStyle
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MacStmtStyle::Semicolon => {}
MacStmtStyle::Braces => {}
MacStmtStyle::NoBraces => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for MacStmtStyle where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MacStmtStyle::Semicolon => {}
MacStmtStyle::Braces => {}
MacStmtStyle::NoBraces => {}
}
}
}
};Walkable)]
1277pub enum MacStmtStyle {
1278 Semicolon,
1281 Braces,
1283 NoBraces,
1287}
1288
1289#[derive(#[automatically_derived]
impl ::core::clone::Clone for Local {
#[inline]
fn clone(&self) -> Local {
Local {
id: ::core::clone::Clone::clone(&self.id),
super_: ::core::clone::Clone::clone(&self.super_),
pat: ::core::clone::Clone::clone(&self.pat),
ty: ::core::clone::Clone::clone(&self.ty),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
colon_sp: ::core::clone::Clone::clone(&self.colon_sp),
attrs: ::core::clone::Clone::clone(&self.attrs),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Local {
fn encode(&self, __encoder: &mut __E) {
match *self {
Local {
id: ref __binding_0,
super_: ref __binding_1,
pat: ref __binding_2,
ty: ref __binding_3,
kind: ref __binding_4,
span: ref __binding_5,
colon_sp: ref __binding_6,
attrs: ref __binding_7,
tokens: ref __binding_8 } => {
::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);
::rustc_serialize::Encodable::<__E>::encode(__binding_7,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_8,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Local {
fn decode(__decoder: &mut __D) -> Self {
Local {
id: ::rustc_serialize::Decodable::decode(__decoder),
super_: ::rustc_serialize::Decodable::decode(__decoder),
pat: ::rustc_serialize::Decodable::decode(__decoder),
ty: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
colon_sp: ::rustc_serialize::Decodable::decode(__decoder),
attrs: ::rustc_serialize::Decodable::decode(__decoder),
tokens: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Local {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["id", "super_", "pat", "ty", "kind", "span", "colon_sp",
"attrs", "tokens"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.id, &self.super_, &self.pat, &self.ty, &self.kind,
&self.span, &self.colon_sp, &self.attrs, &&self.tokens];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Local", names,
values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Local where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Local {
id: ref __binding_0,
super_: ref __binding_1,
pat: ref __binding_2,
ty: ref __binding_3,
kind: ref __binding_4,
span: ref __binding_5,
colon_sp: ref __binding_6,
attrs: ref __binding_7,
tokens: ref __binding_8 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_7,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_8,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Local where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Local {
id: ref mut __binding_0,
super_: ref mut __binding_1,
pat: ref mut __binding_2,
ty: ref mut __binding_3,
kind: ref mut __binding_4,
span: ref mut __binding_5,
colon_sp: ref mut __binding_6,
attrs: ref mut __binding_7,
tokens: ref mut __binding_8 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_7,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_8,
__visitor, ())
}
}
}
}
}
};Walkable)]
1291pub struct Local {
1292 pub id: NodeId,
1293 pub super_: Option<Span>,
1294 pub pat: Box<Pat>,
1295 pub ty: Option<Box<Ty>>,
1296 pub kind: LocalKind,
1297 pub span: Span,
1298 pub colon_sp: Option<Span>,
1299 pub attrs: AttrVec,
1300 pub tokens: Option<LazyAttrTokenStream>,
1301}
1302
1303#[derive(#[automatically_derived]
impl ::core::clone::Clone for LocalKind {
#[inline]
fn clone(&self) -> LocalKind {
match self {
LocalKind::Decl => LocalKind::Decl,
LocalKind::Init(__self_0) =>
LocalKind::Init(::core::clone::Clone::clone(__self_0)),
LocalKind::InitElse(__self_0, __self_1) =>
LocalKind::InitElse(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for LocalKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
LocalKind::Decl => { 0usize }
LocalKind::Init(ref __binding_0) => { 1usize }
LocalKind::InitElse(ref __binding_0, ref __binding_1) => {
2usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
LocalKind::Decl => {}
LocalKind::Init(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
LocalKind::InitElse(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for LocalKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { LocalKind::Decl }
1usize => {
LocalKind::Init(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
LocalKind::InitElse(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `LocalKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for LocalKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
LocalKind::Decl => ::core::fmt::Formatter::write_str(f, "Decl"),
LocalKind::Init(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Init",
&__self_0),
LocalKind::InitElse(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"InitElse", __self_0, &__self_1),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for LocalKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
LocalKind::Decl => {}
LocalKind::Init(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
LocalKind::InitElse(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for LocalKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
LocalKind::Decl => {}
LocalKind::Init(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
LocalKind::InitElse(ref mut __binding_0,
ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
1304pub enum LocalKind {
1305 Decl,
1308 Init(Box<Expr>),
1311 InitElse(Box<Expr>, Box<Block>),
1314}
1315
1316impl LocalKind {
1317 pub fn init(&self) -> Option<&Expr> {
1318 match self {
1319 Self::Decl => None,
1320 Self::Init(i) | Self::InitElse(i, _) => Some(i),
1321 }
1322 }
1323
1324 pub fn init_else_opt(&self) -> Option<(&Expr, Option<&Block>)> {
1325 match self {
1326 Self::Decl => None,
1327 Self::Init(init) => Some((init, None)),
1328 Self::InitElse(init, els) => Some((init, Some(els))),
1329 }
1330 }
1331}
1332
1333#[derive(#[automatically_derived]
impl ::core::clone::Clone for Arm {
#[inline]
fn clone(&self) -> Arm {
Arm {
attrs: ::core::clone::Clone::clone(&self.attrs),
pat: ::core::clone::Clone::clone(&self.pat),
guard: ::core::clone::Clone::clone(&self.guard),
body: ::core::clone::Clone::clone(&self.body),
span: ::core::clone::Clone::clone(&self.span),
id: ::core::clone::Clone::clone(&self.id),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Arm {
fn encode(&self, __encoder: &mut __E) {
match *self {
Arm {
attrs: ref __binding_0,
pat: ref __binding_1,
guard: ref __binding_2,
body: ref __binding_3,
span: ref __binding_4,
id: ref __binding_5,
is_placeholder: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Arm {
fn decode(__decoder: &mut __D) -> Self {
Arm {
attrs: ::rustc_serialize::Decodable::decode(__decoder),
pat: ::rustc_serialize::Decodable::decode(__decoder),
guard: ::rustc_serialize::Decodable::decode(__decoder),
body: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Arm {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["attrs", "pat", "guard", "body", "span", "id",
"is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.attrs, &self.pat, &self.guard, &self.body, &self.span,
&self.id, &&self.is_placeholder];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Arm", names,
values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Arm where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Arm {
attrs: ref __binding_0,
pat: ref __binding_1,
guard: ref __binding_2,
body: ref __binding_3,
span: ref __binding_4,
id: ref __binding_5,
is_placeholder: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Arm where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Arm {
attrs: ref mut __binding_0,
pat: ref mut __binding_1,
guard: ref mut __binding_2,
body: ref mut __binding_3,
span: ref mut __binding_4,
id: ref mut __binding_5,
is_placeholder: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
}
}
}
}
};Walkable)]
1344pub struct Arm {
1345 pub attrs: AttrVec,
1346 pub pat: Box<Pat>,
1348 pub guard: Option<Box<Guard>>,
1350 pub body: Option<Box<Expr>>,
1352 pub span: Span,
1353 pub id: NodeId,
1354 pub is_placeholder: bool,
1355}
1356
1357#[derive(#[automatically_derived]
impl ::core::clone::Clone for ExprField {
#[inline]
fn clone(&self) -> ExprField {
ExprField {
attrs: ::core::clone::Clone::clone(&self.attrs),
id: ::core::clone::Clone::clone(&self.id),
span: ::core::clone::Clone::clone(&self.span),
ident: ::core::clone::Clone::clone(&self.ident),
expr: ::core::clone::Clone::clone(&self.expr),
is_shorthand: ::core::clone::Clone::clone(&self.is_shorthand),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ExprField {
fn encode(&self, __encoder: &mut __E) {
match *self {
ExprField {
attrs: ref __binding_0,
id: ref __binding_1,
span: ref __binding_2,
ident: ref __binding_3,
expr: ref __binding_4,
is_shorthand: ref __binding_5,
is_placeholder: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ExprField {
fn decode(__decoder: &mut __D) -> Self {
ExprField {
attrs: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
expr: ::rustc_serialize::Decodable::decode(__decoder),
is_shorthand: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ExprField {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["attrs", "id", "span", "ident", "expr", "is_shorthand",
"is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.attrs, &self.id, &self.span, &self.ident, &self.expr,
&self.is_shorthand, &&self.is_placeholder];
::core::fmt::Formatter::debug_struct_fields_finish(f, "ExprField",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ExprField
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ExprField {
attrs: ref __binding_0,
id: ref __binding_1,
span: ref __binding_2,
ident: ref __binding_3,
expr: ref __binding_4,
is_shorthand: ref __binding_5,
is_placeholder: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ExprField where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ExprField {
attrs: ref mut __binding_0,
id: ref mut __binding_1,
span: ref mut __binding_2,
ident: ref mut __binding_3,
expr: ref mut __binding_4,
is_shorthand: ref mut __binding_5,
is_placeholder: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
}
}
}
}
};Walkable)]
1359pub struct ExprField {
1360 pub attrs: AttrVec,
1361 pub id: NodeId,
1362 pub span: Span,
1363 pub ident: Ident,
1364 pub expr: Box<Expr>,
1365 pub is_shorthand: bool,
1366 pub is_placeholder: bool,
1367}
1368
1369#[derive(#[automatically_derived]
impl ::core::clone::Clone for BlockCheckMode {
#[inline]
fn clone(&self) -> BlockCheckMode {
let _: ::core::clone::AssertParamIsClone<UnsafeSource>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for BlockCheckMode {
#[inline]
fn eq(&self, other: &BlockCheckMode) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(BlockCheckMode::Unsafe(__self_0),
BlockCheckMode::Unsafe(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BlockCheckMode {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BlockCheckMode::Default => { 0usize }
BlockCheckMode::Unsafe(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
BlockCheckMode::Default => {}
BlockCheckMode::Unsafe(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for BlockCheckMode {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BlockCheckMode::Default }
1usize => {
BlockCheckMode::Unsafe(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BlockCheckMode`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for BlockCheckMode {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
BlockCheckMode::Default =>
::core::fmt::Formatter::write_str(f, "Default"),
BlockCheckMode::Unsafe(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Unsafe",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for BlockCheckMode { }Copy, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
BlockCheckMode where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BlockCheckMode::Default => {}
BlockCheckMode::Unsafe(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BlockCheckMode where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BlockCheckMode::Default => {}
BlockCheckMode::Unsafe(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
1370pub enum BlockCheckMode {
1371 Default,
1372 Unsafe(UnsafeSource),
1373}
1374
1375#[derive(#[automatically_derived]
impl ::core::clone::Clone for UnsafeSource {
#[inline]
fn clone(&self) -> UnsafeSource { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for UnsafeSource {
#[inline]
fn eq(&self, other: &UnsafeSource) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for UnsafeSource {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnsafeSource::CompilerGenerated => { 0usize }
UnsafeSource::UserProvided => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
UnsafeSource::CompilerGenerated => {}
UnsafeSource::UserProvided => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for UnsafeSource {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnsafeSource::CompilerGenerated }
1usize => { UnsafeSource::UserProvided }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnsafeSource`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for UnsafeSource {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
UnsafeSource::CompilerGenerated => "CompilerGenerated",
UnsafeSource::UserProvided => "UserProvided",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for UnsafeSource { }Copy, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for UnsafeSource
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
UnsafeSource::CompilerGenerated => {}
UnsafeSource::UserProvided => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for UnsafeSource where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
UnsafeSource::CompilerGenerated => {}
UnsafeSource::UserProvided => {}
}
}
}
};Walkable)]
1376pub enum UnsafeSource {
1377 CompilerGenerated,
1378 UserProvided,
1379}
1380
1381#[derive(#[automatically_derived]
impl ::core::clone::Clone for AnonConst {
#[inline]
fn clone(&self) -> AnonConst {
AnonConst {
id: ::core::clone::Clone::clone(&self.id),
value: ::core::clone::Clone::clone(&self.value),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AnonConst {
fn encode(&self, __encoder: &mut __E) {
match *self {
AnonConst { id: ref __binding_0, value: ref __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AnonConst {
fn decode(__decoder: &mut __D) -> Self {
AnonConst {
id: ::rustc_serialize::Decodable::decode(__decoder),
value: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AnonConst {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "AnonConst",
"id", &self.id, "value", &&self.value)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AnonConst
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AnonConst { id: ref __binding_0, value: ref __binding_1 } =>
{
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AnonConst where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AnonConst {
id: ref mut __binding_0, value: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
1389pub struct AnonConst {
1390 pub id: NodeId,
1391 pub value: Box<Expr>,
1392}
1393
1394#[derive(#[automatically_derived]
impl ::core::clone::Clone for Expr {
#[inline]
fn clone(&self) -> Expr {
Expr {
id: ::core::clone::Clone::clone(&self.id),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
attrs: ::core::clone::Clone::clone(&self.attrs),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Expr {
fn encode(&self, __encoder: &mut __E) {
match *self {
Expr {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2,
attrs: ref __binding_3,
tokens: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Expr {
fn decode(__decoder: &mut __D) -> Self {
Expr {
id: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
attrs: ::rustc_serialize::Decodable::decode(__decoder),
tokens: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Expr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "Expr", "id",
&self.id, "kind", &self.kind, "span", &self.span, "attrs",
&self.attrs, "tokens", &&self.tokens)
}
}Debug)]
1396pub struct Expr {
1397 pub id: NodeId,
1398 pub kind: ExprKind,
1399 pub span: Span,
1400 pub attrs: AttrVec,
1401 pub tokens: Option<LazyAttrTokenStream>,
1402}
1403
1404impl Expr {
1405 pub fn is_potential_trivial_const_arg(&self) -> bool {
1417 let this = self.maybe_unwrap_block();
1418 if let ExprKind::Path(None, path) = &this.kind
1419 && path.is_potential_trivial_const_arg()
1420 {
1421 true
1422 } else {
1423 false
1424 }
1425 }
1426
1427 pub fn maybe_unwrap_block(&self) -> &Expr {
1429 if let ExprKind::Block(block, None) = &self.kind
1430 && let [stmt] = block.stmts.as_slice()
1431 && let StmtKind::Expr(expr) = &stmt.kind
1432 {
1433 expr
1434 } else {
1435 self
1436 }
1437 }
1438
1439 pub fn optionally_braced_mac_call(
1445 &self,
1446 already_stripped_block: bool,
1447 ) -> Option<(bool, NodeId)> {
1448 match &self.kind {
1449 ExprKind::Block(block, None)
1450 if let [stmt] = &*block.stmts
1451 && !already_stripped_block =>
1452 {
1453 match &stmt.kind {
1454 StmtKind::MacCall(_) => Some((true, stmt.id)),
1455 StmtKind::Expr(expr) if let ExprKind::MacCall(_) = &expr.kind => {
1456 Some((true, expr.id))
1457 }
1458 _ => None,
1459 }
1460 }
1461 ExprKind::MacCall(_) => Some((already_stripped_block, self.id)),
1462 _ => None,
1463 }
1464 }
1465
1466 pub fn to_bound(&self) -> Option<GenericBound> {
1467 match &self.kind {
1468 ExprKind::Path(None, path) => Some(GenericBound::Trait(PolyTraitRef::new(
1469 ThinVec::new(),
1470 path.clone(),
1471 TraitBoundModifiers::NONE,
1472 self.span,
1473 Parens::No,
1474 ))),
1475 _ => None,
1476 }
1477 }
1478
1479 pub fn peel_parens(&self) -> &Expr {
1480 let mut expr = self;
1481 while let ExprKind::Paren(inner) = &expr.kind {
1482 expr = inner;
1483 }
1484 expr
1485 }
1486
1487 pub fn peel_parens_and_refs(&self) -> &Expr {
1488 let mut expr = self;
1489 while let ExprKind::Paren(inner) | ExprKind::AddrOf(BorrowKind::Ref, _, inner) = &expr.kind
1490 {
1491 expr = inner;
1492 }
1493 expr
1494 }
1495
1496 pub fn to_ty(&self) -> Option<Box<Ty>> {
1498 let kind = match &self.kind {
1499 ExprKind::Path(qself, path) => TyKind::Path(qself.clone(), path.clone()),
1501 ExprKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
1502
1503 ExprKind::Paren(expr) => expr.to_ty().map(TyKind::Paren)?,
1504
1505 ExprKind::AddrOf(BorrowKind::Ref, mutbl, expr) => {
1506 expr.to_ty().map(|ty| TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }))?
1507 }
1508
1509 ExprKind::Repeat(expr, expr_len) => {
1510 expr.to_ty().map(|ty| TyKind::Array(ty, expr_len.clone()))?
1511 }
1512
1513 ExprKind::Array(exprs) if let [expr] = exprs.as_slice() => {
1514 expr.to_ty().map(TyKind::Slice)?
1515 }
1516
1517 ExprKind::Tup(exprs) => {
1518 let tys = exprs.iter().map(|expr| expr.to_ty()).collect::<Option<ThinVec<_>>>()?;
1519 TyKind::Tup(tys)
1520 }
1521
1522 ExprKind::Binary(binop, lhs, rhs) if binop.node == BinOpKind::Add => {
1526 let (Some(lhs), Some(rhs)) = (lhs.to_bound(), rhs.to_bound()) else {
1527 return None;
1528 };
1529 TyKind::TraitObject({
let len = [(), ()].len();
let mut vec = ::thin_vec::ThinVec::with_capacity(len);
vec.push(lhs);
vec.push(rhs);
vec
}thin_vec![lhs, rhs], TraitObjectSyntax::None)
1530 }
1531
1532 ExprKind::Underscore => TyKind::Infer,
1533
1534 _ => return None,
1536 };
1537
1538 Some(Box::new(Ty { kind, id: self.id, span: self.span }))
1539 }
1540
1541 pub fn precedence(&self) -> ExprPrecedence {
1542 fn prefix_attrs_precedence(attrs: &AttrVec) -> ExprPrecedence {
1543 for attr in attrs {
1544 if let AttrStyle::Outer = attr.style {
1545 return ExprPrecedence::Prefix;
1546 }
1547 }
1548 ExprPrecedence::Unambiguous
1549 }
1550
1551 match &self.kind {
1552 ExprKind::Closure(closure) => match closure.fn_decl.output {
1553 FnRetTy::Default(_) => ExprPrecedence::Jump,
1554 FnRetTy::Ty(_) => prefix_attrs_precedence(&self.attrs),
1555 },
1556
1557 ExprKind::Break(_ , value)
1558 | ExprKind::Ret(value)
1559 | ExprKind::Yield(YieldKind::Prefix(value))
1560 | ExprKind::Yeet(value) => match value {
1561 Some(_) => ExprPrecedence::Jump,
1562 None => prefix_attrs_precedence(&self.attrs),
1563 },
1564
1565 ExprKind::Become(_) => ExprPrecedence::Jump,
1566
1567 ExprKind::Range(..) => ExprPrecedence::Range,
1572
1573 ExprKind::Binary(op, ..) => op.node.precedence(),
1575 ExprKind::Cast(..) => ExprPrecedence::Cast,
1576
1577 ExprKind::Assign(..) | ExprKind::AssignOp(..) => ExprPrecedence::Assign,
1578
1579 ExprKind::AddrOf(..) => ExprPrecedence::Prefix,
1581
1582 ExprKind::Let(..) | ExprKind::Move(..) | ExprKind::Unary(..) => ExprPrecedence::Prefix,
1587
1588 ExprKind::Array(_)
1590 | ExprKind::Await(..)
1591 | ExprKind::Use(..)
1592 | ExprKind::Block(..)
1593 | ExprKind::Call(..)
1594 | ExprKind::ConstBlock(_)
1595 | ExprKind::Continue(..)
1596 | ExprKind::Field(..)
1597 | ExprKind::ForLoop { .. }
1598 | ExprKind::FormatArgs(..)
1599 | ExprKind::Gen(..)
1600 | ExprKind::If(..)
1601 | ExprKind::IncludedBytes(..)
1602 | ExprKind::Index(..)
1603 | ExprKind::InlineAsm(..)
1604 | ExprKind::Lit(_)
1605 | ExprKind::Loop(..)
1606 | ExprKind::MacCall(..)
1607 | ExprKind::Match(..)
1608 | ExprKind::MethodCall(..)
1609 | ExprKind::OffsetOf(..)
1610 | ExprKind::Paren(..)
1611 | ExprKind::Path(..)
1612 | ExprKind::Repeat(..)
1613 | ExprKind::Struct(..)
1614 | ExprKind::Try(..)
1615 | ExprKind::TryBlock(..)
1616 | ExprKind::Tup(_)
1617 | ExprKind::Type(..)
1618 | ExprKind::Underscore
1619 | ExprKind::UnsafeBinderCast(..)
1620 | ExprKind::While(..)
1621 | ExprKind::Yield(YieldKind::Postfix(..))
1622 | ExprKind::DirectConstArg(..)
1623 | ExprKind::Err(_)
1624 | ExprKind::Dummy => prefix_attrs_precedence(&self.attrs),
1625 }
1626 }
1627
1628 pub fn is_approximately_pattern(&self) -> bool {
1630 #[allow(non_exhaustive_omitted_patterns)] match &self.peel_parens().kind {
ExprKind::Array(_) | ExprKind::Call(_, _) | ExprKind::Tup(_) |
ExprKind::Lit(_) | ExprKind::Range(_, _, _) | ExprKind::Underscore |
ExprKind::Path(_, _) | ExprKind::Struct(_) => true,
_ => false,
}matches!(
1631 &self.peel_parens().kind,
1632 ExprKind::Array(_)
1633 | ExprKind::Call(_, _)
1634 | ExprKind::Tup(_)
1635 | ExprKind::Lit(_)
1636 | ExprKind::Range(_, _, _)
1637 | ExprKind::Underscore
1638 | ExprKind::Path(_, _)
1639 | ExprKind::Struct(_)
1640 )
1641 }
1642
1643 pub fn dummy() -> Expr {
1647 Expr {
1648 id: DUMMY_NODE_ID,
1649 kind: ExprKind::Dummy,
1650 span: DUMMY_SP,
1651 attrs: ThinVec::new(),
1652 tokens: None,
1653 }
1654 }
1655}
1656
1657impl From<Box<Expr>> for Expr {
1658 fn from(value: Box<Expr>) -> Self {
1659 *value
1660 }
1661}
1662
1663#[derive(#[automatically_derived]
impl ::core::clone::Clone for ForLoop {
#[inline]
fn clone(&self) -> ForLoop {
ForLoop {
pat: ::core::clone::Clone::clone(&self.pat),
iter: ::core::clone::Clone::clone(&self.iter),
body: ::core::clone::Clone::clone(&self.body),
label: ::core::clone::Clone::clone(&self.label),
kind: ::core::clone::Clone::clone(&self.kind),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ForLoop {
fn encode(&self, __encoder: &mut __E) {
match *self {
ForLoop {
pat: ref __binding_0,
iter: ref __binding_1,
body: ref __binding_2,
label: ref __binding_3,
kind: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ForLoop {
fn decode(__decoder: &mut __D) -> Self {
ForLoop {
pat: ::rustc_serialize::Decodable::decode(__decoder),
iter: ::rustc_serialize::Decodable::decode(__decoder),
body: ::rustc_serialize::Decodable::decode(__decoder),
label: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ForLoop {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "ForLoop",
"pat", &self.pat, "iter", &self.iter, "body", &self.body, "label",
&self.label, "kind", &&self.kind)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ForLoop
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ForLoop {
pat: ref __binding_0,
iter: ref __binding_1,
body: ref __binding_2,
label: ref __binding_3,
kind: ref __binding_4 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ForLoop where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ForLoop {
pat: ref mut __binding_0,
iter: ref mut __binding_1,
body: ref mut __binding_2,
label: ref mut __binding_3,
kind: ref mut __binding_4 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
}
}
}
}
};Walkable)]
1664pub struct ForLoop {
1665 pub pat: Box<Pat>,
1666 pub iter: Box<Expr>,
1667 pub body: Box<Block>,
1668 pub label: Option<Label>,
1669 pub kind: ForLoopKind,
1670}
1671
1672#[derive(#[automatically_derived]
impl ::core::clone::Clone for Closure {
#[inline]
fn clone(&self) -> Closure {
Closure {
binder: ::core::clone::Clone::clone(&self.binder),
capture_clause: ::core::clone::Clone::clone(&self.capture_clause),
constness: ::core::clone::Clone::clone(&self.constness),
coroutine_kind: ::core::clone::Clone::clone(&self.coroutine_kind),
movability: ::core::clone::Clone::clone(&self.movability),
fn_decl: ::core::clone::Clone::clone(&self.fn_decl),
body: ::core::clone::Clone::clone(&self.body),
fn_decl_span: ::core::clone::Clone::clone(&self.fn_decl_span),
fn_arg_span: ::core::clone::Clone::clone(&self.fn_arg_span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Closure {
fn encode(&self, __encoder: &mut __E) {
match *self {
Closure {
binder: ref __binding_0,
capture_clause: ref __binding_1,
constness: ref __binding_2,
coroutine_kind: ref __binding_3,
movability: ref __binding_4,
fn_decl: ref __binding_5,
body: ref __binding_6,
fn_decl_span: ref __binding_7,
fn_arg_span: ref __binding_8 } => {
::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);
::rustc_serialize::Encodable::<__E>::encode(__binding_7,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_8,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Closure {
fn decode(__decoder: &mut __D) -> Self {
Closure {
binder: ::rustc_serialize::Decodable::decode(__decoder),
capture_clause: ::rustc_serialize::Decodable::decode(__decoder),
constness: ::rustc_serialize::Decodable::decode(__decoder),
coroutine_kind: ::rustc_serialize::Decodable::decode(__decoder),
movability: ::rustc_serialize::Decodable::decode(__decoder),
fn_decl: ::rustc_serialize::Decodable::decode(__decoder),
body: ::rustc_serialize::Decodable::decode(__decoder),
fn_decl_span: ::rustc_serialize::Decodable::decode(__decoder),
fn_arg_span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Closure {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["binder", "capture_clause", "constness", "coroutine_kind",
"movability", "fn_decl", "body", "fn_decl_span",
"fn_arg_span"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.binder, &self.capture_clause, &self.constness,
&self.coroutine_kind, &self.movability, &self.fn_decl,
&self.body, &self.fn_decl_span, &&self.fn_arg_span];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Closure",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Closure
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Closure {
binder: ref __binding_0,
capture_clause: ref __binding_1,
constness: ref __binding_2,
coroutine_kind: ref __binding_3,
movability: ref __binding_4,
fn_decl: ref __binding_5,
body: ref __binding_6,
fn_decl_span: ref __binding_7,
fn_arg_span: ref __binding_8 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_7,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_8,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Closure where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Closure {
binder: ref mut __binding_0,
capture_clause: ref mut __binding_1,
constness: ref mut __binding_2,
coroutine_kind: ref mut __binding_3,
movability: ref mut __binding_4,
fn_decl: ref mut __binding_5,
body: ref mut __binding_6,
fn_decl_span: ref mut __binding_7,
fn_arg_span: ref mut __binding_8 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_7,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_8,
__visitor, ())
}
}
}
}
}
};Walkable)]
1673pub struct Closure {
1674 pub binder: ClosureBinder,
1675 pub capture_clause: CaptureBy,
1676 pub constness: Const,
1677 pub coroutine_kind: Option<CoroutineKind>,
1678 pub movability: Movability,
1679 pub fn_decl: Box<FnDecl>,
1680 pub body: Box<Expr>,
1681 pub fn_decl_span: Span,
1683 pub fn_arg_span: Span,
1685}
1686
1687#[derive(#[automatically_derived]
impl ::core::marker::Copy for RangeLimits { }Copy, #[automatically_derived]
impl ::core::clone::Clone for RangeLimits {
#[inline]
fn clone(&self) -> RangeLimits { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for RangeLimits {
#[inline]
fn eq(&self, other: &RangeLimits) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for RangeLimits {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RangeLimits::HalfOpen => { 0usize }
RangeLimits::Closed => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
RangeLimits::HalfOpen => {}
RangeLimits::Closed => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for RangeLimits {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RangeLimits::HalfOpen }
1usize => { RangeLimits::Closed }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RangeLimits`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for RangeLimits {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RangeLimits::HalfOpen => "HalfOpen",
RangeLimits::Closed => "Closed",
})
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for RangeLimits
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
RangeLimits::HalfOpen => {}
RangeLimits::Closed => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for RangeLimits where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
RangeLimits::HalfOpen => {}
RangeLimits::Closed => {}
}
}
}
};Walkable)]
1689pub enum RangeLimits {
1690 HalfOpen,
1692 Closed,
1694}
1695
1696impl RangeLimits {
1697 pub fn as_str(&self) -> &'static str {
1698 match self {
1699 RangeLimits::HalfOpen => "..",
1700 RangeLimits::Closed => "..=",
1701 }
1702 }
1703}
1704
1705#[derive(#[automatically_derived]
impl ::core::clone::Clone for MethodCall {
#[inline]
fn clone(&self) -> MethodCall {
MethodCall {
seg: ::core::clone::Clone::clone(&self.seg),
receiver: ::core::clone::Clone::clone(&self.receiver),
args: ::core::clone::Clone::clone(&self.args),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MethodCall {
fn encode(&self, __encoder: &mut __E) {
match *self {
MethodCall {
seg: ref __binding_0,
receiver: ref __binding_1,
args: ref __binding_2,
span: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MethodCall {
fn decode(__decoder: &mut __D) -> Self {
MethodCall {
seg: ::rustc_serialize::Decodable::decode(__decoder),
receiver: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MethodCall {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "MethodCall",
"seg", &self.seg, "receiver", &self.receiver, "args", &self.args,
"span", &&self.span)
}
}Debug)]
1707pub struct MethodCall {
1708 pub seg: PathSegment,
1710 pub receiver: Box<Expr>,
1712 pub args: ThinVec<Box<Expr>>,
1714 pub span: Span,
1717}
1718
1719#[derive(#[automatically_derived]
impl ::core::clone::Clone for StructRest {
#[inline]
fn clone(&self) -> StructRest {
match self {
StructRest::Base(__self_0) =>
StructRest::Base(::core::clone::Clone::clone(__self_0)),
StructRest::Rest(__self_0) =>
StructRest::Rest(::core::clone::Clone::clone(__self_0)),
StructRest::None => StructRest::None,
StructRest::NoneWithError(__self_0) =>
StructRest::NoneWithError(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for StructRest {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
StructRest::Base(ref __binding_0) => { 0usize }
StructRest::Rest(ref __binding_0) => { 1usize }
StructRest::None => { 2usize }
StructRest::NoneWithError(ref __binding_0) => { 3usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
StructRest::Base(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StructRest::Rest(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StructRest::None => {}
StructRest::NoneWithError(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for StructRest {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
StructRest::Base(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
StructRest::Rest(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => { StructRest::None }
3usize => {
StructRest::NoneWithError(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `StructRest`, expected 0..4, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for StructRest {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
StructRest::Base(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Base",
&__self_0),
StructRest::Rest(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Rest",
&__self_0),
StructRest::None => ::core::fmt::Formatter::write_str(f, "None"),
StructRest::NoneWithError(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"NoneWithError", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for StructRest
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
StructRest::Base(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
StructRest::Rest(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
StructRest::None => {}
StructRest::NoneWithError(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for StructRest where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
StructRest::Base(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
StructRest::Rest(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
StructRest::None => {}
StructRest::NoneWithError(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
1720pub enum StructRest {
1721 Base(Box<Expr>),
1723 Rest(Span),
1725 None,
1727 NoneWithError(ErrorGuaranteed),
1733}
1734
1735#[derive(#[automatically_derived]
impl ::core::clone::Clone for StructExpr {
#[inline]
fn clone(&self) -> StructExpr {
StructExpr {
qself: ::core::clone::Clone::clone(&self.qself),
path: ::core::clone::Clone::clone(&self.path),
fields: ::core::clone::Clone::clone(&self.fields),
rest: ::core::clone::Clone::clone(&self.rest),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for StructExpr {
fn encode(&self, __encoder: &mut __E) {
match *self {
StructExpr {
qself: ref __binding_0,
path: ref __binding_1,
fields: ref __binding_2,
rest: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for StructExpr {
fn decode(__decoder: &mut __D) -> Self {
StructExpr {
qself: ::rustc_serialize::Decodable::decode(__decoder),
path: ::rustc_serialize::Decodable::decode(__decoder),
fields: ::rustc_serialize::Decodable::decode(__decoder),
rest: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for StructExpr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "StructExpr",
"qself", &self.qself, "path", &self.path, "fields", &self.fields,
"rest", &&self.rest)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for StructExpr
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
StructExpr {
qself: ref __binding_0,
path: ref __binding_1,
fields: ref __binding_2,
rest: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for StructExpr where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
StructExpr {
qself: ref mut __binding_0,
path: ref mut __binding_1,
fields: ref mut __binding_2,
rest: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
1736pub struct StructExpr {
1737 pub qself: Option<Box<QSelf>>,
1738 pub path: Path,
1739 pub fields: ThinVec<ExprField>,
1740 pub rest: StructRest,
1741}
1742
1743#[derive(#[automatically_derived]
impl ::core::clone::Clone for ExprKind {
#[inline]
fn clone(&self) -> ExprKind {
match self {
ExprKind::Array(__self_0) =>
ExprKind::Array(::core::clone::Clone::clone(__self_0)),
ExprKind::ConstBlock(__self_0) =>
ExprKind::ConstBlock(::core::clone::Clone::clone(__self_0)),
ExprKind::Call(__self_0, __self_1) =>
ExprKind::Call(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::MethodCall(__self_0) =>
ExprKind::MethodCall(::core::clone::Clone::clone(__self_0)),
ExprKind::Tup(__self_0) =>
ExprKind::Tup(::core::clone::Clone::clone(__self_0)),
ExprKind::Binary(__self_0, __self_1, __self_2) =>
ExprKind::Binary(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Unary(__self_0, __self_1) =>
ExprKind::Unary(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Move(__self_0, __self_1) =>
ExprKind::Move(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Lit(__self_0) =>
ExprKind::Lit(::core::clone::Clone::clone(__self_0)),
ExprKind::Cast(__self_0, __self_1) =>
ExprKind::Cast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Type(__self_0, __self_1) =>
ExprKind::Type(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Let(__self_0, __self_1, __self_2, __self_3) =>
ExprKind::Let(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2),
::core::clone::Clone::clone(__self_3)),
ExprKind::If(__self_0, __self_1, __self_2) =>
ExprKind::If(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::While(__self_0, __self_1, __self_2) =>
ExprKind::While(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::ForLoop(__self_0) =>
ExprKind::ForLoop(::core::clone::Clone::clone(__self_0)),
ExprKind::Loop(__self_0, __self_1, __self_2) =>
ExprKind::Loop(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Match(__self_0, __self_1, __self_2) =>
ExprKind::Match(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Closure(__self_0) =>
ExprKind::Closure(::core::clone::Clone::clone(__self_0)),
ExprKind::Block(__self_0, __self_1) =>
ExprKind::Block(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Gen(__self_0, __self_1, __self_2, __self_3) =>
ExprKind::Gen(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2),
::core::clone::Clone::clone(__self_3)),
ExprKind::Await(__self_0, __self_1) =>
ExprKind::Await(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Use(__self_0, __self_1) =>
ExprKind::Use(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::TryBlock(__self_0, __self_1) =>
ExprKind::TryBlock(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Assign(__self_0, __self_1, __self_2) =>
ExprKind::Assign(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::AssignOp(__self_0, __self_1, __self_2) =>
ExprKind::AssignOp(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Field(__self_0, __self_1) =>
ExprKind::Field(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Index(__self_0, __self_1, __self_2) =>
ExprKind::Index(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Range(__self_0, __self_1, __self_2) =>
ExprKind::Range(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Underscore => ExprKind::Underscore,
ExprKind::Path(__self_0, __self_1) =>
ExprKind::Path(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::AddrOf(__self_0, __self_1, __self_2) =>
ExprKind::AddrOf(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Break(__self_0, __self_1) =>
ExprKind::Break(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Continue(__self_0) =>
ExprKind::Continue(::core::clone::Clone::clone(__self_0)),
ExprKind::Ret(__self_0) =>
ExprKind::Ret(::core::clone::Clone::clone(__self_0)),
ExprKind::InlineAsm(__self_0) =>
ExprKind::InlineAsm(::core::clone::Clone::clone(__self_0)),
ExprKind::OffsetOf(__self_0, __self_1) =>
ExprKind::OffsetOf(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::MacCall(__self_0) =>
ExprKind::MacCall(::core::clone::Clone::clone(__self_0)),
ExprKind::Struct(__self_0) =>
ExprKind::Struct(::core::clone::Clone::clone(__self_0)),
ExprKind::Repeat(__self_0, __self_1) =>
ExprKind::Repeat(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Paren(__self_0) =>
ExprKind::Paren(::core::clone::Clone::clone(__self_0)),
ExprKind::Try(__self_0) =>
ExprKind::Try(::core::clone::Clone::clone(__self_0)),
ExprKind::Yield(__self_0) =>
ExprKind::Yield(::core::clone::Clone::clone(__self_0)),
ExprKind::Yeet(__self_0) =>
ExprKind::Yeet(::core::clone::Clone::clone(__self_0)),
ExprKind::Become(__self_0) =>
ExprKind::Become(::core::clone::Clone::clone(__self_0)),
ExprKind::IncludedBytes(__self_0) =>
ExprKind::IncludedBytes(::core::clone::Clone::clone(__self_0)),
ExprKind::FormatArgs(__self_0) =>
ExprKind::FormatArgs(::core::clone::Clone::clone(__self_0)),
ExprKind::UnsafeBinderCast(__self_0, __self_1, __self_2) =>
ExprKind::UnsafeBinderCast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::DirectConstArg(__self_0) =>
ExprKind::DirectConstArg(::core::clone::Clone::clone(__self_0)),
ExprKind::Err(__self_0) =>
ExprKind::Err(::core::clone::Clone::clone(__self_0)),
ExprKind::Dummy => ExprKind::Dummy,
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ExprKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ExprKind::Array(ref __binding_0) => { 0usize }
ExprKind::ConstBlock(ref __binding_0) => { 1usize }
ExprKind::Call(ref __binding_0, ref __binding_1) => {
2usize
}
ExprKind::MethodCall(ref __binding_0) => { 3usize }
ExprKind::Tup(ref __binding_0) => { 4usize }
ExprKind::Binary(ref __binding_0, ref __binding_1,
ref __binding_2) => {
5usize
}
ExprKind::Unary(ref __binding_0, ref __binding_1) => {
6usize
}
ExprKind::Move(ref __binding_0, ref __binding_1) => {
7usize
}
ExprKind::Lit(ref __binding_0) => { 8usize }
ExprKind::Cast(ref __binding_0, ref __binding_1) => {
9usize
}
ExprKind::Type(ref __binding_0, ref __binding_1) => {
10usize
}
ExprKind::Let(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
11usize
}
ExprKind::If(ref __binding_0, ref __binding_1,
ref __binding_2) => {
12usize
}
ExprKind::While(ref __binding_0, ref __binding_1,
ref __binding_2) => {
13usize
}
ExprKind::ForLoop(ref __binding_0) => { 14usize }
ExprKind::Loop(ref __binding_0, ref __binding_1,
ref __binding_2) => {
15usize
}
ExprKind::Match(ref __binding_0, ref __binding_1,
ref __binding_2) => {
16usize
}
ExprKind::Closure(ref __binding_0) => { 17usize }
ExprKind::Block(ref __binding_0, ref __binding_1) => {
18usize
}
ExprKind::Gen(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
19usize
}
ExprKind::Await(ref __binding_0, ref __binding_1) => {
20usize
}
ExprKind::Use(ref __binding_0, ref __binding_1) => {
21usize
}
ExprKind::TryBlock(ref __binding_0, ref __binding_1) => {
22usize
}
ExprKind::Assign(ref __binding_0, ref __binding_1,
ref __binding_2) => {
23usize
}
ExprKind::AssignOp(ref __binding_0, ref __binding_1,
ref __binding_2) => {
24usize
}
ExprKind::Field(ref __binding_0, ref __binding_1) => {
25usize
}
ExprKind::Index(ref __binding_0, ref __binding_1,
ref __binding_2) => {
26usize
}
ExprKind::Range(ref __binding_0, ref __binding_1,
ref __binding_2) => {
27usize
}
ExprKind::Underscore => { 28usize }
ExprKind::Path(ref __binding_0, ref __binding_1) => {
29usize
}
ExprKind::AddrOf(ref __binding_0, ref __binding_1,
ref __binding_2) => {
30usize
}
ExprKind::Break(ref __binding_0, ref __binding_1) => {
31usize
}
ExprKind::Continue(ref __binding_0) => { 32usize }
ExprKind::Ret(ref __binding_0) => { 33usize }
ExprKind::InlineAsm(ref __binding_0) => { 34usize }
ExprKind::OffsetOf(ref __binding_0, ref __binding_1) => {
35usize
}
ExprKind::MacCall(ref __binding_0) => { 36usize }
ExprKind::Struct(ref __binding_0) => { 37usize }
ExprKind::Repeat(ref __binding_0, ref __binding_1) => {
38usize
}
ExprKind::Paren(ref __binding_0) => { 39usize }
ExprKind::Try(ref __binding_0) => { 40usize }
ExprKind::Yield(ref __binding_0) => { 41usize }
ExprKind::Yeet(ref __binding_0) => { 42usize }
ExprKind::Become(ref __binding_0) => { 43usize }
ExprKind::IncludedBytes(ref __binding_0) => { 44usize }
ExprKind::FormatArgs(ref __binding_0) => { 45usize }
ExprKind::UnsafeBinderCast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
46usize
}
ExprKind::DirectConstArg(ref __binding_0) => { 47usize }
ExprKind::Err(ref __binding_0) => { 48usize }
ExprKind::Dummy => { 49usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ExprKind::Array(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::ConstBlock(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Call(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::MethodCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Tup(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Binary(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);
}
ExprKind::Unary(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Move(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Lit(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Cast(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Type(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Let(ref __binding_0, ref __binding_1,
ref __binding_2, 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);
}
ExprKind::If(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);
}
ExprKind::While(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);
}
ExprKind::ForLoop(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Loop(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);
}
ExprKind::Match(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);
}
ExprKind::Closure(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Block(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Gen(ref __binding_0, ref __binding_1,
ref __binding_2, 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);
}
ExprKind::Await(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Use(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::TryBlock(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Assign(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);
}
ExprKind::AssignOp(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);
}
ExprKind::Field(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Index(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);
}
ExprKind::Range(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);
}
ExprKind::Underscore => {}
ExprKind::Path(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::AddrOf(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);
}
ExprKind::Break(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Continue(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Ret(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::InlineAsm(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::OffsetOf(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::MacCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Struct(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Repeat(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Paren(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Try(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Yield(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Yeet(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Become(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::IncludedBytes(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::FormatArgs(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::UnsafeBinderCast(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);
}
ExprKind::DirectConstArg(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Err(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Dummy => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ExprKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
ExprKind::Array(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
ExprKind::ConstBlock(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
ExprKind::Call(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
ExprKind::MethodCall(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
ExprKind::Tup(::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
ExprKind::Binary(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
ExprKind::Unary(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
ExprKind::Move(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
ExprKind::Lit(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
ExprKind::Cast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
ExprKind::Type(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
ExprKind::Let(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
ExprKind::If(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
13usize => {
ExprKind::While(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
14usize => {
ExprKind::ForLoop(::rustc_serialize::Decodable::decode(__decoder))
}
15usize => {
ExprKind::Loop(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
16usize => {
ExprKind::Match(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
17usize => {
ExprKind::Closure(::rustc_serialize::Decodable::decode(__decoder))
}
18usize => {
ExprKind::Block(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
19usize => {
ExprKind::Gen(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
20usize => {
ExprKind::Await(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
21usize => {
ExprKind::Use(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
22usize => {
ExprKind::TryBlock(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
23usize => {
ExprKind::Assign(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
24usize => {
ExprKind::AssignOp(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
25usize => {
ExprKind::Field(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
26usize => {
ExprKind::Index(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
27usize => {
ExprKind::Range(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
28usize => { ExprKind::Underscore }
29usize => {
ExprKind::Path(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
30usize => {
ExprKind::AddrOf(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
31usize => {
ExprKind::Break(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
32usize => {
ExprKind::Continue(::rustc_serialize::Decodable::decode(__decoder))
}
33usize => {
ExprKind::Ret(::rustc_serialize::Decodable::decode(__decoder))
}
34usize => {
ExprKind::InlineAsm(::rustc_serialize::Decodable::decode(__decoder))
}
35usize => {
ExprKind::OffsetOf(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
36usize => {
ExprKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
37usize => {
ExprKind::Struct(::rustc_serialize::Decodable::decode(__decoder))
}
38usize => {
ExprKind::Repeat(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
39usize => {
ExprKind::Paren(::rustc_serialize::Decodable::decode(__decoder))
}
40usize => {
ExprKind::Try(::rustc_serialize::Decodable::decode(__decoder))
}
41usize => {
ExprKind::Yield(::rustc_serialize::Decodable::decode(__decoder))
}
42usize => {
ExprKind::Yeet(::rustc_serialize::Decodable::decode(__decoder))
}
43usize => {
ExprKind::Become(::rustc_serialize::Decodable::decode(__decoder))
}
44usize => {
ExprKind::IncludedBytes(::rustc_serialize::Decodable::decode(__decoder))
}
45usize => {
ExprKind::FormatArgs(::rustc_serialize::Decodable::decode(__decoder))
}
46usize => {
ExprKind::UnsafeBinderCast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
47usize => {
ExprKind::DirectConstArg(::rustc_serialize::Decodable::decode(__decoder))
}
48usize => {
ExprKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
49usize => { ExprKind::Dummy }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ExprKind`, expected 0..50, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ExprKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ExprKind::Array(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Array",
&__self_0),
ExprKind::ConstBlock(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ConstBlock", &__self_0),
ExprKind::Call(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Call",
__self_0, &__self_1),
ExprKind::MethodCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MethodCall", &__self_0),
ExprKind::Tup(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Tup",
&__self_0),
ExprKind::Binary(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Binary",
__self_0, __self_1, &__self_2),
ExprKind::Unary(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Unary",
__self_0, &__self_1),
ExprKind::Move(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Move",
__self_0, &__self_1),
ExprKind::Lit(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Lit",
&__self_0),
ExprKind::Cast(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Cast",
__self_0, &__self_1),
ExprKind::Type(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Type",
__self_0, &__self_1),
ExprKind::Let(__self_0, __self_1, __self_2, __self_3) =>
::core::fmt::Formatter::debug_tuple_field4_finish(f, "Let",
__self_0, __self_1, __self_2, &__self_3),
ExprKind::If(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "If",
__self_0, __self_1, &__self_2),
ExprKind::While(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "While",
__self_0, __self_1, &__self_2),
ExprKind::ForLoop(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ForLoop", &__self_0),
ExprKind::Loop(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Loop",
__self_0, __self_1, &__self_2),
ExprKind::Match(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Match",
__self_0, __self_1, &__self_2),
ExprKind::Closure(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Closure", &__self_0),
ExprKind::Block(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Block",
__self_0, &__self_1),
ExprKind::Gen(__self_0, __self_1, __self_2, __self_3) =>
::core::fmt::Formatter::debug_tuple_field4_finish(f, "Gen",
__self_0, __self_1, __self_2, &__self_3),
ExprKind::Await(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Await",
__self_0, &__self_1),
ExprKind::Use(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Use",
__self_0, &__self_1),
ExprKind::TryBlock(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"TryBlock", __self_0, &__self_1),
ExprKind::Assign(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Assign",
__self_0, __self_1, &__self_2),
ExprKind::AssignOp(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f,
"AssignOp", __self_0, __self_1, &__self_2),
ExprKind::Field(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Field",
__self_0, &__self_1),
ExprKind::Index(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Index",
__self_0, __self_1, &__self_2),
ExprKind::Range(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Range",
__self_0, __self_1, &__self_2),
ExprKind::Underscore =>
::core::fmt::Formatter::write_str(f, "Underscore"),
ExprKind::Path(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Path",
__self_0, &__self_1),
ExprKind::AddrOf(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "AddrOf",
__self_0, __self_1, &__self_2),
ExprKind::Break(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Break",
__self_0, &__self_1),
ExprKind::Continue(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Continue", &__self_0),
ExprKind::Ret(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Ret",
&__self_0),
ExprKind::InlineAsm(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"InlineAsm", &__self_0),
ExprKind::OffsetOf(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"OffsetOf", __self_0, &__self_1),
ExprKind::MacCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MacCall", &__self_0),
ExprKind::Struct(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Struct",
&__self_0),
ExprKind::Repeat(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Repeat",
__self_0, &__self_1),
ExprKind::Paren(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Paren",
&__self_0),
ExprKind::Try(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Try",
&__self_0),
ExprKind::Yield(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Yield",
&__self_0),
ExprKind::Yeet(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Yeet",
&__self_0),
ExprKind::Become(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Become",
&__self_0),
ExprKind::IncludedBytes(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"IncludedBytes", &__self_0),
ExprKind::FormatArgs(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"FormatArgs", &__self_0),
ExprKind::UnsafeBinderCast(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f,
"UnsafeBinderCast", __self_0, __self_1, &__self_2),
ExprKind::DirectConstArg(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DirectConstArg", &__self_0),
ExprKind::Err(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Err",
&__self_0),
ExprKind::Dummy => ::core::fmt::Formatter::write_str(f, "Dummy"),
}
}
}Debug)]
1745pub enum ExprKind {
1746 Array(ThinVec<Box<Expr>>),
1748 ConstBlock(AnonConst),
1750 Call(Box<Expr>, ThinVec<Box<Expr>>),
1757 MethodCall(Box<MethodCall>),
1759 Tup(ThinVec<Box<Expr>>),
1761 Binary(BinOp, Box<Expr>, Box<Expr>),
1763 Unary(UnOp, Box<Expr>),
1765 Move(Box<Expr>, Span),
1767 Lit(token::Lit),
1769 Cast(Box<Expr>, Box<Ty>),
1771 Type(Box<Expr>, Box<Ty>),
1776 Let(Box<Pat>, Box<Expr>, Span, Recovered),
1781 If(Box<Expr>, Box<Block>, Option<Box<Expr>>),
1788 While(Box<Expr>, Box<Block>, Option<Label>),
1792 ForLoop(Box<ForLoop>),
1798 Loop(Box<Block>, Option<Label>, Span),
1802 Match(Box<Expr>, ThinVec<Arm>, MatchKind),
1804 Closure(Box<Closure>),
1806 Block(Box<Block>, Option<Label>),
1808 Gen(CaptureBy, Box<Block>, GenBlockKind, Span),
1814 Await(Box<Expr>, Span),
1816 Use(Box<Expr>, Span),
1818
1819 TryBlock(Box<Block>, Option<Box<Ty>>),
1827
1828 Assign(Box<Expr>, Box<Expr>, Span),
1831 AssignOp(AssignOp, Box<Expr>, Box<Expr>),
1835 Field(Box<Expr>, Ident),
1837 Index(Box<Expr>, Box<Expr>, Span),
1840 Range(Option<Box<Expr>>, Option<Box<Expr>>, RangeLimits),
1842 Underscore,
1844
1845 Path(Option<Box<QSelf>>, Path),
1850
1851 AddrOf(BorrowKind, Mutability, Box<Expr>),
1853 Break(Option<Label>, Option<Box<Expr>>),
1855 Continue(Option<Label>),
1857 Ret(Option<Box<Expr>>),
1859
1860 InlineAsm(Box<InlineAsm>),
1862
1863 OffsetOf(Box<Ty>, ThinVec<Ident>),
1868
1869 MacCall(Box<MacCall>),
1871
1872 Struct(Box<StructExpr>),
1876
1877 Repeat(Box<Expr>, AnonConst),
1882
1883 Paren(Box<Expr>),
1885
1886 Try(Box<Expr>),
1888
1889 Yield(YieldKind),
1891
1892 Yeet(Option<Box<Expr>>),
1895
1896 Become(Box<Expr>),
1900
1901 IncludedBytes(ByteSymbol),
1913
1914 FormatArgs(Box<FormatArgs>),
1916
1917 UnsafeBinderCast(UnsafeBinderCastKind, Box<Expr>, Option<Box<Ty>>),
1918
1919 DirectConstArg(Box<Expr>),
1921
1922 Err(ErrorGuaranteed),
1924
1925 Dummy,
1927}
1928
1929#[derive(#[automatically_derived]
impl ::core::clone::Clone for ForLoopKind {
#[inline]
fn clone(&self) -> ForLoopKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ForLoopKind { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ForLoopKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ForLoopKind::For => { 0usize }
ForLoopKind::ForAwait => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ForLoopKind::For => {}
ForLoopKind::ForAwait => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ForLoopKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { ForLoopKind::For }
1usize => { ForLoopKind::ForAwait }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ForLoopKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ForLoopKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
ForLoopKind::For => "For",
ForLoopKind::ForAwait => "ForAwait",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for ForLoopKind {
#[inline]
fn eq(&self, other: &ForLoopKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ForLoopKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ForLoopKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ForLoopKind::For => {}
ForLoopKind::ForAwait => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ForLoopKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ForLoopKind::For => {}
ForLoopKind::ForAwait => {}
}
}
}
};Walkable)]
1931pub enum ForLoopKind {
1932 For,
1933 ForAwait,
1934}
1935
1936#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenBlockKind {
#[inline]
fn clone(&self) -> GenBlockKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for GenBlockKind { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for GenBlockKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
GenBlockKind::Async => { 0usize }
GenBlockKind::Gen => { 1usize }
GenBlockKind::AsyncGen => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
GenBlockKind::Async => {}
GenBlockKind::Gen => {}
GenBlockKind::AsyncGen => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for GenBlockKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { GenBlockKind::Async }
1usize => { GenBlockKind::Gen }
2usize => { GenBlockKind::AsyncGen }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `GenBlockKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for GenBlockKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
GenBlockKind::Async => "Async",
GenBlockKind::Gen => "Gen",
GenBlockKind::AsyncGen => "AsyncGen",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for GenBlockKind {
#[inline]
fn eq(&self, other: &GenBlockKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for GenBlockKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for GenBlockKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
GenBlockKind::Async => {}
GenBlockKind::Gen => {}
GenBlockKind::AsyncGen => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for GenBlockKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
GenBlockKind::Async => {}
GenBlockKind::Gen => {}
GenBlockKind::AsyncGen => {}
}
}
}
};Walkable)]
1938pub enum GenBlockKind {
1939 Async,
1940 Gen,
1941 AsyncGen,
1942}
1943
1944impl fmt::Display for GenBlockKind {
1945 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1946 self.modifier().fmt(f)
1947 }
1948}
1949
1950impl GenBlockKind {
1951 pub fn modifier(&self) -> &'static str {
1952 match self {
1953 GenBlockKind::Async => "async",
1954 GenBlockKind::Gen => "gen",
1955 GenBlockKind::AsyncGen => "async gen",
1956 }
1957 }
1958}
1959
1960#[derive(#[automatically_derived]
impl ::core::marker::Copy for UnsafeBinderCastKind { }Copy, #[automatically_derived]
impl ::core::clone::Clone for UnsafeBinderCastKind {
#[inline]
fn clone(&self) -> UnsafeBinderCastKind { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for UnsafeBinderCastKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
UnsafeBinderCastKind::Wrap => "Wrap",
UnsafeBinderCastKind::Unwrap => "Unwrap",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for UnsafeBinderCastKind {
#[inline]
fn eq(&self, other: &UnsafeBinderCastKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for UnsafeBinderCastKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for UnsafeBinderCastKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1962#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for UnsafeBinderCastKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnsafeBinderCastKind::Wrap => { 0usize }
UnsafeBinderCastKind::Unwrap => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
UnsafeBinderCastKind::Wrap => {}
UnsafeBinderCastKind::Unwrap => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for UnsafeBinderCastKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnsafeBinderCastKind::Wrap }
1usize => { UnsafeBinderCastKind::Unwrap }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnsafeBinderCastKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
UnsafeBinderCastKind {
#[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 {
UnsafeBinderCastKind::Wrap => {}
UnsafeBinderCastKind::Unwrap => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
UnsafeBinderCastKind where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
UnsafeBinderCastKind::Wrap => {}
UnsafeBinderCastKind::Unwrap => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for UnsafeBinderCastKind
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
UnsafeBinderCastKind::Wrap => {}
UnsafeBinderCastKind::Unwrap => {}
}
}
}
};Walkable)]
1963pub enum UnsafeBinderCastKind {
1964 Wrap,
1966 Unwrap,
1968}
1969
1970#[derive(#[automatically_derived]
impl ::core::clone::Clone for QSelf {
#[inline]
fn clone(&self) -> QSelf {
QSelf {
ty: ::core::clone::Clone::clone(&self.ty),
path_span: ::core::clone::Clone::clone(&self.path_span),
position: ::core::clone::Clone::clone(&self.position),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for QSelf {
fn encode(&self, __encoder: &mut __E) {
match *self {
QSelf {
ty: ref __binding_0,
path_span: ref __binding_1,
position: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for QSelf {
fn decode(__decoder: &mut __D) -> Self {
QSelf {
ty: ::rustc_serialize::Decodable::decode(__decoder),
path_span: ::rustc_serialize::Decodable::decode(__decoder),
position: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for QSelf {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "QSelf", "ty",
&self.ty, "path_span", &self.path_span, "position",
&&self.position)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for QSelf where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
QSelf {
ty: ref __binding_0,
path_span: ref __binding_1,
position: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for QSelf where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
QSelf {
ty: ref mut __binding_0,
path_span: ref mut __binding_1,
position: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
1986pub struct QSelf {
1987 pub ty: Box<Ty>,
1988
1989 pub path_span: Span,
1993 pub position: usize,
1994}
1995
1996#[derive(#[automatically_derived]
impl ::core::clone::Clone for CaptureBy {
#[inline]
fn clone(&self) -> CaptureBy {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for CaptureBy { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for CaptureBy {
#[inline]
fn eq(&self, other: &CaptureBy) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(CaptureBy::Value { move_kw: __self_0 }, CaptureBy::Value {
move_kw: __arg1_0 }) => __self_0 == __arg1_0,
(CaptureBy::Use { use_kw: __self_0 }, CaptureBy::Use {
use_kw: __arg1_0 }) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for CaptureBy {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
CaptureBy::Value { move_kw: ref __binding_0 } => { 0usize }
CaptureBy::Ref => { 1usize }
CaptureBy::Use { use_kw: ref __binding_0 } => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
CaptureBy::Value { move_kw: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
CaptureBy::Ref => {}
CaptureBy::Use { use_kw: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for CaptureBy {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
CaptureBy::Value {
move_kw: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => { CaptureBy::Ref }
2usize => {
CaptureBy::Use {
use_kw: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CaptureBy`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for CaptureBy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
CaptureBy::Value { move_kw: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Value",
"move_kw", &__self_0),
CaptureBy::Ref => ::core::fmt::Formatter::write_str(f, "Ref"),
CaptureBy::Use { use_kw: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Use",
"use_kw", &__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for CaptureBy {
#[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 {
CaptureBy::Value { move_kw: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
CaptureBy::Ref => {}
CaptureBy::Use { use_kw: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for CaptureBy
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
CaptureBy::Value { move_kw: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
CaptureBy::Ref => {}
CaptureBy::Use { use_kw: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for CaptureBy where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
CaptureBy::Value { move_kw: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
CaptureBy::Ref => {}
CaptureBy::Use { use_kw: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
1998pub enum CaptureBy {
1999 Value {
2001 move_kw: Span,
2003 },
2004 Ref,
2006 Use {
2012 use_kw: Span,
2014 },
2015}
2016
2017#[derive(#[automatically_derived]
impl ::core::clone::Clone for ClosureBinder {
#[inline]
fn clone(&self) -> ClosureBinder {
match self {
ClosureBinder::NotPresent => ClosureBinder::NotPresent,
ClosureBinder::For { span: __self_0, generic_params: __self_1 } =>
ClosureBinder::For {
span: ::core::clone::Clone::clone(__self_0),
generic_params: ::core::clone::Clone::clone(__self_1),
},
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ClosureBinder {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ClosureBinder::NotPresent => { 0usize }
ClosureBinder::For {
span: ref __binding_0, generic_params: ref __binding_1 } =>
{
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ClosureBinder::NotPresent => {}
ClosureBinder::For {
span: ref __binding_0, generic_params: ref __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ClosureBinder {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { ClosureBinder::NotPresent }
1usize => {
ClosureBinder::For {
span: ::rustc_serialize::Decodable::decode(__decoder),
generic_params: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ClosureBinder`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ClosureBinder {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ClosureBinder::NotPresent =>
::core::fmt::Formatter::write_str(f, "NotPresent"),
ClosureBinder::For { span: __self_0, generic_params: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "For",
"span", __self_0, "generic_params", &__self_1),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
ClosureBinder where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ClosureBinder::NotPresent => {}
ClosureBinder::For {
span: ref __binding_0, generic_params: ref __binding_1 } =>
{
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ClosureBinder where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ClosureBinder::NotPresent => {}
ClosureBinder::For {
span: ref mut __binding_0,
generic_params: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
2019pub enum ClosureBinder {
2020 NotPresent,
2022 For {
2024 span: Span,
2031
2032 generic_params: ThinVec<GenericParam>,
2039 },
2040}
2041
2042#[derive(#[automatically_derived]
impl ::core::clone::Clone for MacCall {
#[inline]
fn clone(&self) -> MacCall {
MacCall {
path: ::core::clone::Clone::clone(&self.path),
args: ::core::clone::Clone::clone(&self.args),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MacCall {
fn encode(&self, __encoder: &mut __E) {
match *self {
MacCall { path: ref __binding_0, args: ref __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MacCall {
fn decode(__decoder: &mut __D) -> Self {
MacCall {
path: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MacCall {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "MacCall",
"path", &self.path, "args", &&self.args)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for MacCall
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MacCall { path: ref __binding_0, args: ref __binding_1 } =>
{
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for MacCall where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MacCall {
path: ref mut __binding_0, args: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
2045pub struct MacCall {
2046 pub path: Path,
2047 pub args: Box<DelimArgs>,
2048}
2049
2050impl MacCall {
2051 pub fn span(&self) -> Span {
2052 self.path.span.to(self.args.dspan.entire())
2053 }
2054}
2055
2056#[derive(#[automatically_derived]
impl ::core::clone::Clone for AttrArgs {
#[inline]
fn clone(&self) -> AttrArgs {
match self {
AttrArgs::Empty => AttrArgs::Empty,
AttrArgs::Delimited(__self_0) =>
AttrArgs::Delimited(::core::clone::Clone::clone(__self_0)),
AttrArgs::Eq { eq_span: __self_0, expr: __self_1 } =>
AttrArgs::Eq {
eq_span: ::core::clone::Clone::clone(__self_0),
expr: ::core::clone::Clone::clone(__self_1),
},
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AttrArgs {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AttrArgs::Empty => { 0usize }
AttrArgs::Delimited(ref __binding_0) => { 1usize }
AttrArgs::Eq {
eq_span: ref __binding_0, expr: ref __binding_1 } => {
2usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AttrArgs::Empty => {}
AttrArgs::Delimited(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AttrArgs::Eq {
eq_span: ref __binding_0, expr: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AttrArgs {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { AttrArgs::Empty }
1usize => {
AttrArgs::Delimited(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
AttrArgs::Eq {
eq_span: ::rustc_serialize::Decodable::decode(__decoder),
expr: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AttrArgs`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AttrArgs {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AttrArgs::Empty => ::core::fmt::Formatter::write_str(f, "Empty"),
AttrArgs::Delimited(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Delimited", &__self_0),
AttrArgs::Eq { eq_span: __self_0, expr: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Eq",
"eq_span", __self_0, "expr", &__self_1),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AttrArgs
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AttrArgs::Empty => {}
AttrArgs::Delimited(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
AttrArgs::Eq {
eq_span: ref __binding_0, expr: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AttrArgs where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AttrArgs::Empty => {}
AttrArgs::Delimited(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
AttrArgs::Eq {
eq_span: ref mut __binding_0, expr: ref mut __binding_1 } =>
{
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
2058pub enum AttrArgs {
2059 Empty,
2061 Delimited(DelimArgs),
2063 Eq {
2065 eq_span: Span,
2067 expr: Box<Expr>,
2068 },
2069}
2070
2071impl AttrArgs {
2072 pub fn span(&self) -> Option<Span> {
2073 match self {
2074 AttrArgs::Empty => None,
2075 AttrArgs::Delimited(args) => Some(args.dspan.entire()),
2076 AttrArgs::Eq { eq_span, expr } => Some(eq_span.to(expr.span)),
2077 }
2078 }
2079
2080 pub fn inner_tokens(&self) -> TokenStream {
2083 match self {
2084 AttrArgs::Empty => TokenStream::default(),
2085 AttrArgs::Delimited(args) => args.tokens.clone(),
2086 AttrArgs::Eq { expr, .. } => TokenStream::from_ast(expr),
2087 }
2088 }
2089}
2090
2091#[derive(#[automatically_derived]
impl ::core::clone::Clone for DelimArgs {
#[inline]
fn clone(&self) -> DelimArgs {
DelimArgs {
dspan: ::core::clone::Clone::clone(&self.dspan),
delim: ::core::clone::Clone::clone(&self.delim),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for DelimArgs {
fn encode(&self, __encoder: &mut __E) {
match *self {
DelimArgs {
dspan: ref __binding_0,
delim: ref __binding_1,
tokens: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for DelimArgs {
fn decode(__decoder: &mut __D) -> Self {
DelimArgs {
dspan: ::rustc_serialize::Decodable::decode(__decoder),
delim: ::rustc_serialize::Decodable::decode(__decoder),
tokens: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for DelimArgs {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "DelimArgs",
"dspan", &self.dspan, "delim", &self.delim, "tokens",
&&self.tokens)
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for DelimArgs {
#[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 {
DelimArgs {
dspan: ref __binding_0,
delim: ref __binding_1,
tokens: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for DelimArgs
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
DelimArgs {
dspan: ref __binding_0,
delim: ref __binding_1,
tokens: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for DelimArgs where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
DelimArgs {
dspan: ref mut __binding_0,
delim: ref mut __binding_1,
tokens: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2093pub struct DelimArgs {
2094 pub dspan: DelimSpan,
2095 pub delim: Delimiter, pub tokens: TokenStream,
2097}
2098
2099impl DelimArgs {
2100 pub fn need_semicolon(&self) -> bool {
2103 !#[allow(non_exhaustive_omitted_patterns)] match self {
DelimArgs { delim: Delimiter::Brace, .. } => true,
_ => false,
}matches!(self, DelimArgs { delim: Delimiter::Brace, .. })
2104 }
2105}
2106
2107#[derive(#[automatically_derived]
impl ::core::clone::Clone for MacroDef {
#[inline]
fn clone(&self) -> MacroDef {
MacroDef {
body: ::core::clone::Clone::clone(&self.body),
macro_rules: ::core::clone::Clone::clone(&self.macro_rules),
eii_declaration: ::core::clone::Clone::clone(&self.eii_declaration),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MacroDef {
fn encode(&self, __encoder: &mut __E) {
match *self {
MacroDef {
body: ref __binding_0,
macro_rules: ref __binding_1,
eii_declaration: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MacroDef {
fn decode(__decoder: &mut __D) -> Self {
MacroDef {
body: ::rustc_serialize::Decodable::decode(__decoder),
macro_rules: ::rustc_serialize::Decodable::decode(__decoder),
eii_declaration: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MacroDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "MacroDef",
"body", &self.body, "macro_rules", &self.macro_rules,
"eii_declaration", &&self.eii_declaration)
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for MacroDef {
#[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 {
MacroDef {
body: ref __binding_0,
macro_rules: ref __binding_1,
eii_declaration: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for MacroDef
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MacroDef {
body: ref __binding_0,
macro_rules: ref __binding_1,
eii_declaration: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for MacroDef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MacroDef {
body: ref mut __binding_0,
macro_rules: ref mut __binding_1,
eii_declaration: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2109pub struct MacroDef {
2110 pub body: Box<DelimArgs>,
2111 pub macro_rules: bool,
2113
2114 pub eii_declaration: Option<EiiDecl>,
2120}
2121
2122#[derive(#[automatically_derived]
impl ::core::clone::Clone for EiiDecl {
#[inline]
fn clone(&self) -> EiiDecl {
EiiDecl {
foreign_item: ::core::clone::Clone::clone(&self.foreign_item),
impl_unsafe: ::core::clone::Clone::clone(&self.impl_unsafe),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for EiiDecl {
fn encode(&self, __encoder: &mut __E) {
match *self {
EiiDecl {
foreign_item: ref __binding_0, impl_unsafe: ref __binding_1
} => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for EiiDecl {
fn decode(__decoder: &mut __D) -> Self {
EiiDecl {
foreign_item: ::rustc_serialize::Decodable::decode(__decoder),
impl_unsafe: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for EiiDecl {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "EiiDecl",
"foreign_item", &self.foreign_item, "impl_unsafe",
&&self.impl_unsafe)
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for EiiDecl {
#[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 {
EiiDecl {
foreign_item: ref __binding_0, impl_unsafe: ref __binding_1
} => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for EiiDecl
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
EiiDecl {
foreign_item: ref __binding_0, impl_unsafe: ref __binding_1
} => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for EiiDecl where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
EiiDecl {
foreign_item: ref mut __binding_0,
impl_unsafe: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
2123pub struct EiiDecl {
2124 pub foreign_item: Path,
2126 pub impl_unsafe: bool,
2127}
2128
2129#[derive(#[automatically_derived]
impl ::core::clone::Clone for StrStyle {
#[inline]
fn clone(&self) -> StrStyle {
let _: ::core::clone::AssertParamIsClone<u8>;
*self
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for StrStyle {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
StrStyle::Cooked => { 0usize }
StrStyle::Raw(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
StrStyle::Cooked => {}
StrStyle::Raw(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for StrStyle {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { StrStyle::Cooked }
1usize => {
StrStyle::Raw(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `StrStyle`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for StrStyle {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
StrStyle::Cooked =>
::core::fmt::Formatter::write_str(f, "Cooked"),
StrStyle::Raw(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Raw",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for StrStyle { }Copy, #[automatically_derived]
impl ::core::hash::Hash for StrStyle {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
StrStyle::Raw(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, #[automatically_derived]
impl ::core::cmp::Eq for StrStyle {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u8>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for StrStyle {
#[inline]
fn eq(&self, other: &StrStyle) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(StrStyle::Raw(__self_0), StrStyle::Raw(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq)]
2130#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for StrStyle {
#[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 {
StrStyle::Cooked => {}
StrStyle::Raw(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for StrStyle
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
StrStyle::Cooked => {}
StrStyle::Raw(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for StrStyle where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
StrStyle::Cooked => {}
StrStyle::Raw(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
2131pub enum StrStyle {
2132 Cooked,
2134 Raw(u8),
2138}
2139
2140#[derive(#[automatically_derived]
impl ::core::clone::Clone for MatchKind {
#[inline]
fn clone(&self) -> MatchKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for MatchKind { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MatchKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MatchKind::Prefix => { 0usize }
MatchKind::Postfix => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MatchKind::Prefix => {}
MatchKind::Postfix => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MatchKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { MatchKind::Prefix }
1usize => { MatchKind::Postfix }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MatchKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MatchKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
MatchKind::Prefix => "Prefix",
MatchKind::Postfix => "Postfix",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for MatchKind {
#[inline]
fn eq(&self, other: &MatchKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for MatchKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MatchKind::Prefix => {}
MatchKind::Postfix => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for MatchKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MatchKind::Prefix => {}
MatchKind::Postfix => {}
}
}
}
};Walkable)]
2142pub enum MatchKind {
2143 Prefix,
2145 Postfix,
2147}
2148
2149#[derive(#[automatically_derived]
impl ::core::clone::Clone for YieldKind {
#[inline]
fn clone(&self) -> YieldKind {
match self {
YieldKind::Prefix(__self_0) =>
YieldKind::Prefix(::core::clone::Clone::clone(__self_0)),
YieldKind::Postfix(__self_0) =>
YieldKind::Postfix(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for YieldKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
YieldKind::Prefix(ref __binding_0) => { 0usize }
YieldKind::Postfix(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
YieldKind::Prefix(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
YieldKind::Postfix(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for YieldKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
YieldKind::Prefix(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
YieldKind::Postfix(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `YieldKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for YieldKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
YieldKind::Prefix(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Prefix",
&__self_0),
YieldKind::Postfix(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Postfix", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for YieldKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
YieldKind::Prefix(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
YieldKind::Postfix(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for YieldKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
YieldKind::Prefix(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
YieldKind::Postfix(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
2151pub enum YieldKind {
2152 Prefix(Option<Box<Expr>>),
2154 Postfix(Box<Expr>),
2156}
2157
2158impl YieldKind {
2159 pub const fn expr(&self) -> Option<&Box<Expr>> {
2163 match self {
2164 YieldKind::Prefix(expr) => expr.as_ref(),
2165 YieldKind::Postfix(expr) => Some(expr),
2166 }
2167 }
2168
2169 pub const fn expr_mut(&mut self) -> Option<&mut Box<Expr>> {
2171 match self {
2172 YieldKind::Prefix(expr) => expr.as_mut(),
2173 YieldKind::Postfix(expr) => Some(expr),
2174 }
2175 }
2176
2177 pub const fn same_kind(&self, other: &Self) -> bool {
2179 match (self, other) {
2180 (YieldKind::Prefix(_), YieldKind::Prefix(_)) => true,
2181 (YieldKind::Postfix(_), YieldKind::Postfix(_)) => true,
2182 _ => false,
2183 }
2184 }
2185}
2186
2187#[derive(#[automatically_derived]
impl ::core::clone::Clone for MetaItemLit {
#[inline]
fn clone(&self) -> MetaItemLit {
let _: ::core::clone::AssertParamIsClone<Symbol>;
let _: ::core::clone::AssertParamIsClone<Option<Symbol>>;
let _: ::core::clone::AssertParamIsClone<LitKind>;
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for MetaItemLit { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MetaItemLit {
fn encode(&self, __encoder: &mut __E) {
match *self {
MetaItemLit {
symbol: ref __binding_0,
suffix: ref __binding_1,
kind: ref __binding_2,
span: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MetaItemLit {
fn decode(__decoder: &mut __D) -> Self {
MetaItemLit {
symbol: ::rustc_serialize::Decodable::decode(__decoder),
suffix: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MetaItemLit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "MetaItemLit",
"symbol", &self.symbol, "suffix", &self.suffix, "kind",
&self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for MetaItemLit
{
#[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 {
MetaItemLit {
symbol: ref __binding_0,
suffix: ref __binding_1,
kind: ref __binding_2,
span: 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); }
}
}
}
}
};StableHash)]
2189pub struct MetaItemLit {
2190 pub symbol: Symbol,
2192 pub suffix: Option<Symbol>,
2194 pub kind: LitKind,
2197 pub span: Span,
2198}
2199
2200#[derive(#[automatically_derived]
impl ::core::clone::Clone for StrLit {
#[inline]
fn clone(&self) -> StrLit {
let _: ::core::clone::AssertParamIsClone<Symbol>;
let _: ::core::clone::AssertParamIsClone<Option<Symbol>>;
let _: ::core::clone::AssertParamIsClone<StrStyle>;
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for StrLit { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for StrLit {
fn encode(&self, __encoder: &mut __E) {
match *self {
StrLit {
symbol: ref __binding_0,
suffix: ref __binding_1,
symbol_unescaped: ref __binding_2,
style: ref __binding_3,
span: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for StrLit {
fn decode(__decoder: &mut __D) -> Self {
StrLit {
symbol: ::rustc_serialize::Decodable::decode(__decoder),
suffix: ::rustc_serialize::Decodable::decode(__decoder),
symbol_unescaped: ::rustc_serialize::Decodable::decode(__decoder),
style: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for StrLit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "StrLit",
"symbol", &self.symbol, "suffix", &self.suffix,
"symbol_unescaped", &self.symbol_unescaped, "style", &self.style,
"span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for StrLit where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
StrLit {
symbol: ref __binding_0,
suffix: ref __binding_1,
symbol_unescaped: ref __binding_2,
style: ref __binding_3,
span: ref __binding_4 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for StrLit where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
StrLit {
symbol: ref mut __binding_0,
suffix: ref mut __binding_1,
symbol_unescaped: ref mut __binding_2,
style: ref mut __binding_3,
span: ref mut __binding_4 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
}
}
}
}
};Walkable)]
2202pub struct StrLit {
2203 pub symbol: Symbol,
2205 pub suffix: Option<Symbol>,
2207 pub symbol_unescaped: Symbol,
2209 pub style: StrStyle,
2210 pub span: Span,
2211}
2212
2213impl StrLit {
2214 pub fn as_token_lit(&self) -> token::Lit {
2215 let token_kind = match self.style {
2216 StrStyle::Cooked => token::Str,
2217 StrStyle::Raw(n) => token::StrRaw(n),
2218 };
2219 token::Lit::new(token_kind, self.symbol, self.suffix)
2220 }
2221}
2222
2223#[derive(#[automatically_derived]
impl ::core::clone::Clone for LitIntType {
#[inline]
fn clone(&self) -> LitIntType {
let _: ::core::clone::AssertParamIsClone<IntTy>;
let _: ::core::clone::AssertParamIsClone<UintTy>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for LitIntType { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for LitIntType {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
LitIntType::Signed(ref __binding_0) => { 0usize }
LitIntType::Unsigned(ref __binding_0) => { 1usize }
LitIntType::Unsuffixed => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
LitIntType::Signed(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
LitIntType::Unsigned(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
LitIntType::Unsuffixed => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for LitIntType {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
LitIntType::Signed(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
LitIntType::Unsigned(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => { LitIntType::Unsuffixed }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `LitIntType`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for LitIntType {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
LitIntType::Signed(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Signed",
&__self_0),
LitIntType::Unsigned(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Unsigned", &__self_0),
LitIntType::Unsuffixed =>
::core::fmt::Formatter::write_str(f, "Unsuffixed"),
}
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for LitIntType {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
LitIntType::Signed(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
LitIntType::Unsigned(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, #[automatically_derived]
impl ::core::cmp::Eq for LitIntType {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<IntTy>;
let _: ::core::cmp::AssertParamIsEq<UintTy>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for LitIntType {
#[inline]
fn eq(&self, other: &LitIntType) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(LitIntType::Signed(__self_0), LitIntType::Signed(__arg1_0))
=> __self_0 == __arg1_0,
(LitIntType::Unsigned(__self_0),
LitIntType::Unsigned(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq)]
2225#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for LitIntType {
#[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 {
LitIntType::Signed(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitIntType::Unsigned(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitIntType::Unsuffixed => {}
}
}
}
};StableHash)]
2226pub enum LitIntType {
2227 Signed(IntTy),
2229 Unsigned(UintTy),
2231 Unsuffixed,
2233}
2234
2235#[derive(#[automatically_derived]
impl ::core::clone::Clone for LitFloatType {
#[inline]
fn clone(&self) -> LitFloatType {
let _: ::core::clone::AssertParamIsClone<FloatTy>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for LitFloatType { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for LitFloatType {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
LitFloatType::Suffixed(ref __binding_0) => { 0usize }
LitFloatType::Unsuffixed => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
LitFloatType::Suffixed(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
LitFloatType::Unsuffixed => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for LitFloatType {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
LitFloatType::Suffixed(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { LitFloatType::Unsuffixed }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `LitFloatType`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for LitFloatType {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
LitFloatType::Suffixed(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Suffixed", &__self_0),
LitFloatType::Unsuffixed =>
::core::fmt::Formatter::write_str(f, "Unsuffixed"),
}
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for LitFloatType {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
LitFloatType::Suffixed(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, #[automatically_derived]
impl ::core::cmp::Eq for LitFloatType {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<FloatTy>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for LitFloatType {
#[inline]
fn eq(&self, other: &LitFloatType) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(LitFloatType::Suffixed(__self_0),
LitFloatType::Suffixed(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq)]
2237#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for LitFloatType
{
#[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 {
LitFloatType::Suffixed(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitFloatType::Unsuffixed => {}
}
}
}
};StableHash)]
2238pub enum LitFloatType {
2239 Suffixed(FloatTy),
2241 Unsuffixed,
2243}
2244
2245#[derive(#[automatically_derived]
impl ::core::clone::Clone for LitKind {
#[inline]
fn clone(&self) -> LitKind {
let _: ::core::clone::AssertParamIsClone<Symbol>;
let _: ::core::clone::AssertParamIsClone<StrStyle>;
let _: ::core::clone::AssertParamIsClone<ByteSymbol>;
let _: ::core::clone::AssertParamIsClone<u8>;
let _: ::core::clone::AssertParamIsClone<char>;
let _: ::core::clone::AssertParamIsClone<Pu128>;
let _: ::core::clone::AssertParamIsClone<LitIntType>;
let _: ::core::clone::AssertParamIsClone<LitFloatType>;
let _: ::core::clone::AssertParamIsClone<bool>;
let _: ::core::clone::AssertParamIsClone<ErrorGuaranteed>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for LitKind { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for LitKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
LitKind::Str(ref __binding_0, ref __binding_1) => { 0usize }
LitKind::ByteStr(ref __binding_0, ref __binding_1) => {
1usize
}
LitKind::CStr(ref __binding_0, ref __binding_1) => {
2usize
}
LitKind::Byte(ref __binding_0) => { 3usize }
LitKind::Char(ref __binding_0) => { 4usize }
LitKind::Int(ref __binding_0, ref __binding_1) => { 5usize }
LitKind::Float(ref __binding_0, ref __binding_1) => {
6usize
}
LitKind::Bool(ref __binding_0) => { 7usize }
LitKind::Err(ref __binding_0) => { 8usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
LitKind::Str(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
LitKind::ByteStr(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
LitKind::CStr(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
LitKind::Byte(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
LitKind::Char(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
LitKind::Int(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
LitKind::Float(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
LitKind::Bool(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
LitKind::Err(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for LitKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
LitKind::Str(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
LitKind::ByteStr(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
LitKind::CStr(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
LitKind::Byte(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
LitKind::Char(::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
LitKind::Int(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
LitKind::Float(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
LitKind::Bool(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
LitKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `LitKind`, expected 0..9, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for LitKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
LitKind::Str(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Str",
__self_0, &__self_1),
LitKind::ByteStr(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"ByteStr", __self_0, &__self_1),
LitKind::CStr(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "CStr",
__self_0, &__self_1),
LitKind::Byte(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Byte",
&__self_0),
LitKind::Char(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Char",
&__self_0),
LitKind::Int(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Int",
__self_0, &__self_1),
LitKind::Float(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Float",
__self_0, &__self_1),
LitKind::Bool(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Bool",
&__self_0),
LitKind::Err(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Err",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for LitKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
LitKind::Str(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
LitKind::ByteStr(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
LitKind::CStr(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
LitKind::Byte(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
LitKind::Char(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
LitKind::Int(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
LitKind::Float(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
LitKind::Bool(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
LitKind::Err(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, #[automatically_derived]
impl ::core::cmp::Eq for LitKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Symbol>;
let _: ::core::cmp::AssertParamIsEq<StrStyle>;
let _: ::core::cmp::AssertParamIsEq<ByteSymbol>;
let _: ::core::cmp::AssertParamIsEq<u8>;
let _: ::core::cmp::AssertParamIsEq<char>;
let _: ::core::cmp::AssertParamIsEq<Pu128>;
let _: ::core::cmp::AssertParamIsEq<LitIntType>;
let _: ::core::cmp::AssertParamIsEq<LitFloatType>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<ErrorGuaranteed>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for LitKind {
#[inline]
fn eq(&self, other: &LitKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(LitKind::Str(__self_0, __self_1),
LitKind::Str(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(LitKind::ByteStr(__self_0, __self_1),
LitKind::ByteStr(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(LitKind::CStr(__self_0, __self_1),
LitKind::CStr(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(LitKind::Byte(__self_0), LitKind::Byte(__arg1_0)) =>
__self_0 == __arg1_0,
(LitKind::Char(__self_0), LitKind::Char(__arg1_0)) =>
__self_0 == __arg1_0,
(LitKind::Int(__self_0, __self_1),
LitKind::Int(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(LitKind::Float(__self_0, __self_1),
LitKind::Float(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(LitKind::Bool(__self_0), LitKind::Bool(__arg1_0)) =>
__self_0 == __arg1_0,
(LitKind::Err(__self_0), LitKind::Err(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for LitKind {
#[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 {
LitKind::Str(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
LitKind::ByteStr(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
LitKind::CStr(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
LitKind::Byte(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitKind::Char(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitKind::Int(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
LitKind::Float(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
LitKind::Bool(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitKind::Err(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
2252pub enum LitKind {
2253 Str(Symbol, StrStyle),
2256 ByteStr(ByteSymbol, StrStyle),
2259 CStr(ByteSymbol, StrStyle),
2263 Byte(u8),
2265 Char(char),
2267 Int(Pu128, LitIntType),
2269 Float(Symbol, LitFloatType),
2273 Bool(bool),
2275 Err(ErrorGuaranteed),
2277}
2278
2279impl LitKind {
2280 pub fn str(&self) -> Option<Symbol> {
2281 match *self {
2282 LitKind::Str(s, _) => Some(s),
2283 _ => None,
2284 }
2285 }
2286
2287 pub fn is_str(&self) -> bool {
2289 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::Str(..) => true,
_ => false,
}matches!(self, LitKind::Str(..))
2290 }
2291
2292 pub fn is_bytestr(&self) -> bool {
2294 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::ByteStr(..) => true,
_ => false,
}matches!(self, LitKind::ByteStr(..))
2295 }
2296
2297 pub fn is_numeric(&self) -> bool {
2299 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::Int(..) | LitKind::Float(..) => true,
_ => false,
}matches!(self, LitKind::Int(..) | LitKind::Float(..))
2300 }
2301
2302 pub fn is_unsuffixed(&self) -> bool {
2305 !self.is_suffixed()
2306 }
2307
2308 pub fn is_suffixed(&self) -> bool {
2310 match *self {
2311 LitKind::Int(_, LitIntType::Signed(..) | LitIntType::Unsigned(..))
2313 | LitKind::Float(_, LitFloatType::Suffixed(..)) => true,
2314 LitKind::Str(..)
2316 | LitKind::ByteStr(..)
2317 | LitKind::CStr(..)
2318 | LitKind::Byte(..)
2319 | LitKind::Char(..)
2320 | LitKind::Int(_, LitIntType::Unsuffixed)
2321 | LitKind::Float(_, LitFloatType::Unsuffixed)
2322 | LitKind::Bool(..)
2323 | LitKind::Err(_) => false,
2324 }
2325 }
2326}
2327
2328#[derive(#[automatically_derived]
impl ::core::clone::Clone for MutTy {
#[inline]
fn clone(&self) -> MutTy {
MutTy {
ty: ::core::clone::Clone::clone(&self.ty),
mutbl: ::core::clone::Clone::clone(&self.mutbl),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MutTy {
fn encode(&self, __encoder: &mut __E) {
match *self {
MutTy { ty: ref __binding_0, mutbl: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MutTy {
fn decode(__decoder: &mut __D) -> Self {
MutTy {
ty: ::rustc_serialize::Decodable::decode(__decoder),
mutbl: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MutTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "MutTy", "ty",
&self.ty, "mutbl", &&self.mutbl)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for MutTy where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MutTy { ty: ref __binding_0, mutbl: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for MutTy where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MutTy { ty: ref mut __binding_0, mutbl: ref mut __binding_1
} => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
2331pub struct MutTy {
2332 pub ty: Box<Ty>,
2333 pub mutbl: Mutability,
2334}
2335
2336#[derive(#[automatically_derived]
impl ::core::clone::Clone for FnSig {
#[inline]
fn clone(&self) -> FnSig {
FnSig {
header: ::core::clone::Clone::clone(&self.header),
decl: ::core::clone::Clone::clone(&self.decl),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for FnSig {
fn encode(&self, __encoder: &mut __E) {
match *self {
FnSig {
header: ref __binding_0,
decl: ref __binding_1,
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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for FnSig {
fn decode(__decoder: &mut __D) -> Self {
FnSig {
header: ::rustc_serialize::Decodable::decode(__decoder),
decl: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for FnSig {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "FnSig",
"header", &self.header, "decl", &self.decl, "span", &&self.span)
}
}Debug)]
2339pub struct FnSig {
2340 pub header: FnHeader,
2341 pub decl: Box<FnDecl>,
2342 pub span: Span,
2343}
2344
2345impl FnSig {
2346 pub fn header_span(&self) -> Span {
2348 self.header.span().unwrap_or(self.span.shrink_to_lo())
2349 }
2350
2351 pub fn safety_span(&self) -> Span {
2353 match self.header.safety {
2354 Safety::Unsafe(span) | Safety::Safe(span) => span,
2355 Safety::Default => {
2356 if let Some(extern_span) = self.header.ext.span() {
2358 return extern_span.shrink_to_lo();
2359 }
2360
2361 self.header_span().shrink_to_hi()
2363 }
2364 }
2365 }
2366
2367 pub fn extern_span(&self) -> Span {
2369 self.header.ext.span().unwrap_or(self.safety_span().shrink_to_hi())
2370 }
2371
2372 pub fn as_borrowed(&self) -> BorrowedFnSig<'_> {
2373 BorrowedFnSig { header: self.header, decl: &self.decl, span: self.span }
2374 }
2375}
2376
2377#[derive(#[automatically_derived]
impl<'a> ::core::clone::Clone for BorrowedFnSig<'a> {
#[inline]
fn clone(&self) -> BorrowedFnSig<'a> {
BorrowedFnSig {
header: ::core::clone::Clone::clone(&self.header),
decl: ::core::clone::Clone::clone(&self.decl),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, #[automatically_derived]
impl<'a> ::core::fmt::Debug for BorrowedFnSig<'a> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "BorrowedFnSig",
"header", &self.header, "decl", &self.decl, "span", &&self.span)
}
}Debug)]
2380pub struct BorrowedFnSig<'a> {
2381 pub header: FnHeader,
2382 pub decl: &'a FnDecl,
2383 pub span: Span,
2384}
2385
2386#[derive(#[automatically_derived]
impl ::core::clone::Clone for AssocItemConstraint {
#[inline]
fn clone(&self) -> AssocItemConstraint {
AssocItemConstraint {
id: ::core::clone::Clone::clone(&self.id),
ident: ::core::clone::Clone::clone(&self.ident),
gen_args: ::core::clone::Clone::clone(&self.gen_args),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AssocItemConstraint {
fn encode(&self, __encoder: &mut __E) {
match *self {
AssocItemConstraint {
id: ref __binding_0,
ident: ref __binding_1,
gen_args: ref __binding_2,
kind: ref __binding_3,
span: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AssocItemConstraint {
fn decode(__decoder: &mut __D) -> Self {
AssocItemConstraint {
id: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
gen_args: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AssocItemConstraint {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f,
"AssocItemConstraint", "id", &self.id, "ident", &self.ident,
"gen_args", &self.gen_args, "kind", &self.kind, "span",
&&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
AssocItemConstraint where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AssocItemConstraint {
id: ref __binding_0,
ident: ref __binding_1,
gen_args: ref __binding_2,
kind: ref __binding_3,
span: ref __binding_4 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AssocItemConstraint
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AssocItemConstraint {
id: ref mut __binding_0,
ident: ref mut __binding_1,
gen_args: ref mut __binding_2,
kind: ref mut __binding_3,
span: ref mut __binding_4 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
}
}
}
}
};Walkable)]
2397pub struct AssocItemConstraint {
2398 pub id: NodeId,
2399 pub ident: Ident,
2400 pub gen_args: Option<GenericArgs>,
2401 pub kind: AssocItemConstraintKind,
2402 pub span: Span,
2403}
2404
2405#[derive(#[automatically_derived]
impl ::core::clone::Clone for Term {
#[inline]
fn clone(&self) -> Term {
match self {
Term::Ty(__self_0) =>
Term::Ty(::core::clone::Clone::clone(__self_0)),
Term::Const(__self_0) =>
Term::Const(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Term {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Term::Ty(ref __binding_0) => { 0usize }
Term::Const(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Term::Ty(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Term::Const(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Term {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
Term::Ty(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
Term::Const(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Term`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Term {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Term::Ty(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Ty",
&__self_0),
Term::Const(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Const",
&__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Term where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Term::Ty(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
Term::Const(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Term where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Term::Ty(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
Term::Const(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
2406pub enum Term {
2407 Ty(Box<Ty>),
2408 Const(AnonConst),
2409}
2410
2411impl From<Box<Ty>> for Term {
2412 fn from(v: Box<Ty>) -> Self {
2413 Term::Ty(v)
2414 }
2415}
2416
2417impl From<AnonConst> for Term {
2418 fn from(v: AnonConst) -> Self {
2419 Term::Const(v)
2420 }
2421}
2422
2423#[derive(#[automatically_derived]
impl ::core::clone::Clone for AssocItemConstraintKind {
#[inline]
fn clone(&self) -> AssocItemConstraintKind {
match self {
AssocItemConstraintKind::Equality { term: __self_0 } =>
AssocItemConstraintKind::Equality {
term: ::core::clone::Clone::clone(__self_0),
},
AssocItemConstraintKind::Bound { bounds: __self_0 } =>
AssocItemConstraintKind::Bound {
bounds: ::core::clone::Clone::clone(__self_0),
},
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AssocItemConstraintKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AssocItemConstraintKind::Equality { term: ref __binding_0 }
=> {
0usize
}
AssocItemConstraintKind::Bound { bounds: ref __binding_0 }
=> {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AssocItemConstraintKind::Equality { term: ref __binding_0 }
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssocItemConstraintKind::Bound { bounds: ref __binding_0 }
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AssocItemConstraintKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
AssocItemConstraintKind::Equality {
term: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
AssocItemConstraintKind::Bound {
bounds: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AssocItemConstraintKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AssocItemConstraintKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AssocItemConstraintKind::Equality { term: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Equality", "term", &__self_0),
AssocItemConstraintKind::Bound { bounds: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Bound",
"bounds", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
AssocItemConstraintKind where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AssocItemConstraintKind::Equality { term: ref __binding_0 }
=> {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
AssocItemConstraintKind::Bound { bounds: ref __binding_0 }
=> {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (BoundKind::Bound))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for
AssocItemConstraintKind where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AssocItemConstraintKind::Equality {
term: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
AssocItemConstraintKind::Bound { bounds: ref mut __binding_0
} => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (BoundKind::Bound))
}
}
}
}
}
};Walkable)]
2425pub enum AssocItemConstraintKind {
2426 Equality { term: Term },
2433 Bound {
2435 #[visitable(extra = BoundKind::Bound)]
2436 bounds: GenericBounds,
2437 },
2438}
2439
2440#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Ty {
fn encode(&self, __encoder: &mut __E) {
match *self {
Ty {
id: ref __binding_0,
kind: ref __binding_1,
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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Ty {
fn decode(__decoder: &mut __D) -> Self {
Ty {
id: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Ty {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Ty", "id",
&self.id, "kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Ty where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Ty {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Ty where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Ty {
id: ref mut __binding_0,
kind: ref mut __binding_1,
span: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2441pub struct Ty {
2442 pub id: NodeId,
2443 pub kind: TyKind,
2444 pub span: Span,
2445}
2446
2447impl Clone for Ty {
2448 fn clone(&self) -> Self {
2449 Self { id: self.id, kind: self.kind.clone(), span: self.span }
2450 }
2451}
2452
2453impl From<Box<Ty>> for Ty {
2454 fn from(value: Box<Ty>) -> Self {
2455 *value
2456 }
2457}
2458
2459impl Ty {
2460 pub fn peel_refs(&self) -> &Self {
2461 let mut final_ty = self;
2462 while let TyKind::Ref(_, MutTy { ty, .. }) | TyKind::Ptr(MutTy { ty, .. }) = &final_ty.kind
2463 {
2464 final_ty = ty;
2465 }
2466 final_ty
2467 }
2468
2469 pub fn is_maybe_parenthesised_infer(&self) -> bool {
2470 match &self.kind {
2471 TyKind::Infer => true,
2472 TyKind::Paren(inner) => inner.is_maybe_parenthesised_infer(),
2473 _ => false,
2474 }
2475 }
2476}
2477
2478#[derive(#[automatically_derived]
impl ::core::clone::Clone for FnPtrTy {
#[inline]
fn clone(&self) -> FnPtrTy {
FnPtrTy {
safety: ::core::clone::Clone::clone(&self.safety),
ext: ::core::clone::Clone::clone(&self.ext),
generic_params: ::core::clone::Clone::clone(&self.generic_params),
decl: ::core::clone::Clone::clone(&self.decl),
decl_span: ::core::clone::Clone::clone(&self.decl_span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for FnPtrTy {
fn encode(&self, __encoder: &mut __E) {
match *self {
FnPtrTy {
safety: ref __binding_0,
ext: ref __binding_1,
generic_params: ref __binding_2,
decl: ref __binding_3,
decl_span: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for FnPtrTy {
fn decode(__decoder: &mut __D) -> Self {
FnPtrTy {
safety: ::rustc_serialize::Decodable::decode(__decoder),
ext: ::rustc_serialize::Decodable::decode(__decoder),
generic_params: ::rustc_serialize::Decodable::decode(__decoder),
decl: ::rustc_serialize::Decodable::decode(__decoder),
decl_span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for FnPtrTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "FnPtrTy",
"safety", &self.safety, "ext", &self.ext, "generic_params",
&self.generic_params, "decl", &self.decl, "decl_span",
&&self.decl_span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for FnPtrTy
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
FnPtrTy {
safety: ref __binding_0,
ext: ref __binding_1,
generic_params: ref __binding_2,
decl: ref __binding_3,
decl_span: ref __binding_4 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for FnPtrTy where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
FnPtrTy {
safety: ref mut __binding_0,
ext: ref mut __binding_1,
generic_params: ref mut __binding_2,
decl: ref mut __binding_3,
decl_span: ref mut __binding_4 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
}
}
}
}
};Walkable)]
2479pub struct FnPtrTy {
2480 pub safety: Safety,
2481 pub ext: Extern,
2482 pub generic_params: ThinVec<GenericParam>,
2483 pub decl: Box<FnDecl>,
2484 pub decl_span: Span,
2487}
2488
2489impl FnPtrTy {
2490 pub fn header(&self) -> FnHeader {
2491 FnHeader { constness: Const::No, coroutine_kind: None, safety: self.safety, ext: self.ext }
2492 }
2493
2494 pub fn as_borrowed_fn_sig<'a>(&'a self) -> BorrowedFnSig<'a> {
2495 BorrowedFnSig { header: self.header(), decl: &self.decl, span: self.decl_span }
2496 }
2497}
2498
2499#[derive(#[automatically_derived]
impl ::core::clone::Clone for UnsafeBinderTy {
#[inline]
fn clone(&self) -> UnsafeBinderTy {
UnsafeBinderTy {
generic_params: ::core::clone::Clone::clone(&self.generic_params),
inner_ty: ::core::clone::Clone::clone(&self.inner_ty),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for UnsafeBinderTy {
fn encode(&self, __encoder: &mut __E) {
match *self {
UnsafeBinderTy {
generic_params: ref __binding_0, inner_ty: ref __binding_1 }
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for UnsafeBinderTy {
fn decode(__decoder: &mut __D) -> Self {
UnsafeBinderTy {
generic_params: ::rustc_serialize::Decodable::decode(__decoder),
inner_ty: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for UnsafeBinderTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"UnsafeBinderTy", "generic_params", &self.generic_params,
"inner_ty", &&self.inner_ty)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
UnsafeBinderTy where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
UnsafeBinderTy {
generic_params: ref __binding_0, inner_ty: ref __binding_1 }
=> {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for UnsafeBinderTy where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
UnsafeBinderTy {
generic_params: ref mut __binding_0,
inner_ty: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
2500pub struct UnsafeBinderTy {
2501 pub generic_params: ThinVec<GenericParam>,
2502 pub inner_ty: Box<Ty>,
2503}
2504
2505#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyKind {
#[inline]
fn clone(&self) -> TyKind {
match self {
TyKind::Slice(__self_0) =>
TyKind::Slice(::core::clone::Clone::clone(__self_0)),
TyKind::Array(__self_0, __self_1) =>
TyKind::Array(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::Ptr(__self_0) =>
TyKind::Ptr(::core::clone::Clone::clone(__self_0)),
TyKind::Ref(__self_0, __self_1) =>
TyKind::Ref(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::PinnedRef(__self_0, __self_1) =>
TyKind::PinnedRef(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::FnPtr(__self_0) =>
TyKind::FnPtr(::core::clone::Clone::clone(__self_0)),
TyKind::UnsafeBinder(__self_0) =>
TyKind::UnsafeBinder(::core::clone::Clone::clone(__self_0)),
TyKind::Never => TyKind::Never,
TyKind::Tup(__self_0) =>
TyKind::Tup(::core::clone::Clone::clone(__self_0)),
TyKind::Path(__self_0, __self_1) =>
TyKind::Path(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::TraitObject(__self_0, __self_1) =>
TyKind::TraitObject(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::ImplTrait(__self_0, __self_1) =>
TyKind::ImplTrait(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::Paren(__self_0) =>
TyKind::Paren(::core::clone::Clone::clone(__self_0)),
TyKind::Infer => TyKind::Infer,
TyKind::ImplicitSelf => TyKind::ImplicitSelf,
TyKind::MacCall(__self_0) =>
TyKind::MacCall(::core::clone::Clone::clone(__self_0)),
TyKind::CVarArgs => TyKind::CVarArgs,
TyKind::Pat(__self_0, __self_1) =>
TyKind::Pat(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::FieldOf(__self_0, __self_1, __self_2) =>
TyKind::FieldOf(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
TyKind::View(__self_0, __self_1) =>
TyKind::View(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::DirectConstArg(__self_0) =>
TyKind::DirectConstArg(::core::clone::Clone::clone(__self_0)),
TyKind::Dummy => TyKind::Dummy,
TyKind::Err(__self_0) =>
TyKind::Err(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TyKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
TyKind::Slice(ref __binding_0) => { 0usize }
TyKind::Array(ref __binding_0, ref __binding_1) => {
1usize
}
TyKind::Ptr(ref __binding_0) => { 2usize }
TyKind::Ref(ref __binding_0, ref __binding_1) => { 3usize }
TyKind::PinnedRef(ref __binding_0, ref __binding_1) => {
4usize
}
TyKind::FnPtr(ref __binding_0) => { 5usize }
TyKind::UnsafeBinder(ref __binding_0) => { 6usize }
TyKind::Never => { 7usize }
TyKind::Tup(ref __binding_0) => { 8usize }
TyKind::Path(ref __binding_0, ref __binding_1) => { 9usize }
TyKind::TraitObject(ref __binding_0, ref __binding_1) => {
10usize
}
TyKind::ImplTrait(ref __binding_0, ref __binding_1) => {
11usize
}
TyKind::Paren(ref __binding_0) => { 12usize }
TyKind::Infer => { 13usize }
TyKind::ImplicitSelf => { 14usize }
TyKind::MacCall(ref __binding_0) => { 15usize }
TyKind::CVarArgs => { 16usize }
TyKind::Pat(ref __binding_0, ref __binding_1) => { 17usize }
TyKind::FieldOf(ref __binding_0, ref __binding_1,
ref __binding_2) => {
18usize
}
TyKind::View(ref __binding_0, ref __binding_1) => {
19usize
}
TyKind::DirectConstArg(ref __binding_0) => { 20usize }
TyKind::Dummy => { 21usize }
TyKind::Err(ref __binding_0) => { 22usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
TyKind::Slice(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Array(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::Ptr(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Ref(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::PinnedRef(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::FnPtr(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::UnsafeBinder(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Never => {}
TyKind::Tup(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Path(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::TraitObject(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::ImplTrait(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::Paren(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Infer => {}
TyKind::ImplicitSelf => {}
TyKind::MacCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::CVarArgs => {}
TyKind::Pat(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::FieldOf(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);
}
TyKind::View(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::DirectConstArg(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Dummy => {}
TyKind::Err(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TyKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
TyKind::Slice(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
TyKind::Array(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
TyKind::Ptr(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
TyKind::Ref(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
TyKind::PinnedRef(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
TyKind::FnPtr(::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
TyKind::UnsafeBinder(::rustc_serialize::Decodable::decode(__decoder))
}
7usize => { TyKind::Never }
8usize => {
TyKind::Tup(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
TyKind::Path(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
TyKind::TraitObject(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
TyKind::ImplTrait(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
TyKind::Paren(::rustc_serialize::Decodable::decode(__decoder))
}
13usize => { TyKind::Infer }
14usize => { TyKind::ImplicitSelf }
15usize => {
TyKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
16usize => { TyKind::CVarArgs }
17usize => {
TyKind::Pat(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
18usize => {
TyKind::FieldOf(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
19usize => {
TyKind::View(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
20usize => {
TyKind::DirectConstArg(::rustc_serialize::Decodable::decode(__decoder))
}
21usize => { TyKind::Dummy }
22usize => {
TyKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `TyKind`, expected 0..23, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TyKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TyKind::Slice(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Slice",
&__self_0),
TyKind::Array(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Array",
__self_0, &__self_1),
TyKind::Ptr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Ptr",
&__self_0),
TyKind::Ref(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Ref",
__self_0, &__self_1),
TyKind::PinnedRef(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"PinnedRef", __self_0, &__self_1),
TyKind::FnPtr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "FnPtr",
&__self_0),
TyKind::UnsafeBinder(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"UnsafeBinder", &__self_0),
TyKind::Never => ::core::fmt::Formatter::write_str(f, "Never"),
TyKind::Tup(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Tup",
&__self_0),
TyKind::Path(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Path",
__self_0, &__self_1),
TyKind::TraitObject(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"TraitObject", __self_0, &__self_1),
TyKind::ImplTrait(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"ImplTrait", __self_0, &__self_1),
TyKind::Paren(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Paren",
&__self_0),
TyKind::Infer => ::core::fmt::Formatter::write_str(f, "Infer"),
TyKind::ImplicitSelf =>
::core::fmt::Formatter::write_str(f, "ImplicitSelf"),
TyKind::MacCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MacCall", &__self_0),
TyKind::CVarArgs =>
::core::fmt::Formatter::write_str(f, "CVarArgs"),
TyKind::Pat(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Pat",
__self_0, &__self_1),
TyKind::FieldOf(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f,
"FieldOf", __self_0, __self_1, &__self_2),
TyKind::View(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "View",
__self_0, &__self_1),
TyKind::DirectConstArg(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DirectConstArg", &__self_0),
TyKind::Dummy => ::core::fmt::Formatter::write_str(f, "Dummy"),
TyKind::Err(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Err",
&__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for TyKind where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TyKind::Slice(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Array(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Ptr(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Ref(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (LifetimeCtxt::Ref))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::PinnedRef(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (LifetimeCtxt::Ref))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::FnPtr(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::UnsafeBinder(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Never => {}
TyKind::Tup(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Path(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::TraitObject(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (BoundKind::TraitObject))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::ImplTrait(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, (BoundKind::Impl))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Paren(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Infer => {}
TyKind::ImplicitSelf => {}
TyKind::MacCall(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::CVarArgs => {}
TyKind::Pat(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::FieldOf(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::View(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{}
}
TyKind::DirectConstArg(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Dummy => {}
TyKind::Err(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TyKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TyKind::Slice(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Array(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::Ptr(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Ref(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (LifetimeCtxt::Ref))
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::PinnedRef(ref mut __binding_0, ref mut __binding_1)
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (LifetimeCtxt::Ref))
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::FnPtr(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::UnsafeBinder(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Never => {}
TyKind::Tup(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Path(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::TraitObject(ref mut __binding_0,
ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (BoundKind::TraitObject))
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::ImplTrait(ref mut __binding_0, ref mut __binding_1)
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, (BoundKind::Impl))
}
}
TyKind::Paren(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Infer => {}
TyKind::ImplicitSelf => {}
TyKind::MacCall(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::CVarArgs => {}
TyKind::Pat(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::FieldOf(ref mut __binding_0, ref mut __binding_1,
ref mut __binding_2) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
TyKind::View(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{}
}
TyKind::DirectConstArg(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Dummy => {}
TyKind::Err(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
2509pub enum TyKind {
2510 Slice(Box<Ty>),
2512 Array(Box<Ty>, AnonConst),
2514 Ptr(MutTy),
2516 Ref(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
2518 PinnedRef(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
2522 FnPtr(Box<FnPtrTy>),
2524 UnsafeBinder(Box<UnsafeBinderTy>),
2526 Never,
2528 Tup(ThinVec<Box<Ty>>),
2530 Path(Option<Box<QSelf>>, Path),
2535 TraitObject(#[visitable(extra = BoundKind::TraitObject)] GenericBounds, TraitObjectSyntax),
2538 ImplTrait(NodeId, #[visitable(extra = BoundKind::Impl)] GenericBounds),
2545 Paren(Box<Ty>),
2547 Infer,
2550 ImplicitSelf,
2552 MacCall(Box<MacCall>),
2554 CVarArgs,
2556 Pat(Box<Ty>, Box<TyPat>),
2559 FieldOf(Box<Ty>, Option<Ident>, Ident),
2564 View(Box<Ty>, #[visitable(ignore)] ThinVec<Ident>),
2566 DirectConstArg(Box<Expr>),
2568 Dummy,
2570 Err(ErrorGuaranteed),
2572}
2573
2574impl TyKind {
2575 pub fn is_implicit_self(&self) -> bool {
2576 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::ImplicitSelf => true,
_ => false,
}matches!(self, TyKind::ImplicitSelf)
2577 }
2578
2579 pub fn is_unit(&self) -> bool {
2580 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::Tup(tys) if tys.is_empty() => true,
_ => false,
}matches!(self, TyKind::Tup(tys) if tys.is_empty())
2581 }
2582
2583 pub fn is_simple_path(&self) -> Option<Symbol> {
2584 if let TyKind::Path(None, Path { segments, .. }) = &self
2585 && let [segment] = &segments[..]
2586 && segment.args.is_none()
2587 {
2588 Some(segment.ident.name)
2589 } else {
2590 None
2591 }
2592 }
2593
2594 pub fn maybe_scalar(&self) -> bool {
2602 let Some(ty_sym) = self.is_simple_path() else {
2603 return self.is_unit();
2605 };
2606 #[allow(non_exhaustive_omitted_patterns)] match ty_sym {
sym::i8 | sym::i16 | sym::i32 | sym::i64 | sym::i128 | sym::u8 | sym::u16
| sym::u32 | sym::u64 | sym::u128 | sym::f16 | sym::f32 | sym::f64 |
sym::f128 | sym::char | sym::bool => true,
_ => false,
}matches!(
2607 ty_sym,
2608 sym::i8
2609 | sym::i16
2610 | sym::i32
2611 | sym::i64
2612 | sym::i128
2613 | sym::u8
2614 | sym::u16
2615 | sym::u32
2616 | sym::u64
2617 | sym::u128
2618 | sym::f16
2619 | sym::f32
2620 | sym::f64
2621 | sym::f128
2622 | sym::char
2623 | sym::bool
2624 )
2625 }
2626}
2627
2628#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyPat {
#[inline]
fn clone(&self) -> TyPat {
TyPat {
id: ::core::clone::Clone::clone(&self.id),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TyPat {
fn encode(&self, __encoder: &mut __E) {
match *self {
TyPat {
id: ref __binding_0,
kind: ref __binding_1,
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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TyPat {
fn decode(__decoder: &mut __D) -> Self {
TyPat {
id: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TyPat {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "TyPat", "id",
&self.id, "kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for TyPat where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TyPat {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TyPat where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TyPat {
id: ref mut __binding_0,
kind: ref mut __binding_1,
span: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2630pub struct TyPat {
2631 pub id: NodeId,
2632 pub kind: TyPatKind,
2633 pub span: Span,
2634}
2635
2636#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyPatKind {
#[inline]
fn clone(&self) -> TyPatKind {
match self {
TyPatKind::Range(__self_0, __self_1, __self_2) =>
TyPatKind::Range(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
TyPatKind::NotNull => TyPatKind::NotNull,
TyPatKind::Or(__self_0) =>
TyPatKind::Or(::core::clone::Clone::clone(__self_0)),
TyPatKind::Err(__self_0) =>
TyPatKind::Err(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TyPatKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
TyPatKind::Range(ref __binding_0, ref __binding_1,
ref __binding_2) => {
0usize
}
TyPatKind::NotNull => { 1usize }
TyPatKind::Or(ref __binding_0) => { 2usize }
TyPatKind::Err(ref __binding_0) => { 3usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
TyPatKind::Range(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);
}
TyPatKind::NotNull => {}
TyPatKind::Or(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyPatKind::Err(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TyPatKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
TyPatKind::Range(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { TyPatKind::NotNull }
2usize => {
TyPatKind::Or(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
TyPatKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `TyPatKind`, expected 0..4, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TyPatKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TyPatKind::Range(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Range",
__self_0, __self_1, &__self_2),
TyPatKind::NotNull =>
::core::fmt::Formatter::write_str(f, "NotNull"),
TyPatKind::Or(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Or",
&__self_0),
TyPatKind::Err(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Err",
&__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for TyPatKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TyPatKind::Range(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyPatKind::NotNull => {}
TyPatKind::Or(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyPatKind::Err(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TyPatKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TyPatKind::Range(ref mut __binding_0, ref mut __binding_1,
ref mut __binding_2) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
TyPatKind::NotNull => {}
TyPatKind::Or(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyPatKind::Err(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
2640pub enum TyPatKind {
2641 Range(Option<Box<AnonConst>>, Option<Box<AnonConst>>, Spanned<RangeEnd>),
2643
2644 NotNull,
2646
2647 Or(ThinVec<TyPat>),
2648
2649 Err(ErrorGuaranteed),
2651}
2652
2653#[derive(#[automatically_derived]
impl ::core::clone::Clone for TraitObjectSyntax {
#[inline]
fn clone(&self) -> TraitObjectSyntax { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TraitObjectSyntax { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for TraitObjectSyntax {
#[inline]
fn eq(&self, other: &TraitObjectSyntax) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TraitObjectSyntax {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
TraitObjectSyntax::Dyn => { 0usize }
TraitObjectSyntax::None => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
TraitObjectSyntax::Dyn => {}
TraitObjectSyntax::None => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TraitObjectSyntax {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { TraitObjectSyntax::Dyn }
1usize => { TraitObjectSyntax::None }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `TraitObjectSyntax`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TraitObjectSyntax {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TraitObjectSyntax::Dyn => "Dyn",
TraitObjectSyntax::None => "None",
})
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
TraitObjectSyntax {
#[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 {
TraitObjectSyntax::Dyn => {}
TraitObjectSyntax::None => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
TraitObjectSyntax where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TraitObjectSyntax::Dyn => {}
TraitObjectSyntax::None => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TraitObjectSyntax
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TraitObjectSyntax::Dyn => {}
TraitObjectSyntax::None => {}
}
}
}
};Walkable)]
2655#[repr(u8)]
2656pub enum TraitObjectSyntax {
2657 Dyn = 0,
2659 None = 1,
2660}
2661
2662unsafe impl Tag for TraitObjectSyntax {
2666 const BITS: u32 = 2;
2667
2668 fn into_usize(self) -> usize {
2669 self as u8 as usize
2670 }
2671
2672 unsafe fn from_usize(tag: usize) -> Self {
2673 match tag {
2674 0 => TraitObjectSyntax::Dyn,
2675 1 => TraitObjectSyntax::None,
2676 _ => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
2677 }
2678 }
2679}
2680
2681#[derive(#[automatically_derived]
impl ::core::clone::Clone for PreciseCapturingArg {
#[inline]
fn clone(&self) -> PreciseCapturingArg {
match self {
PreciseCapturingArg::Lifetime(__self_0) =>
PreciseCapturingArg::Lifetime(::core::clone::Clone::clone(__self_0)),
PreciseCapturingArg::Arg(__self_0, __self_1) =>
PreciseCapturingArg::Arg(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for PreciseCapturingArg {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
PreciseCapturingArg::Lifetime(ref __binding_0) => { 0usize }
PreciseCapturingArg::Arg(ref __binding_0, ref __binding_1)
=> {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
PreciseCapturingArg::Lifetime(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
PreciseCapturingArg::Arg(ref __binding_0, ref __binding_1)
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for PreciseCapturingArg {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
PreciseCapturingArg::Lifetime(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
PreciseCapturingArg::Arg(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `PreciseCapturingArg`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for PreciseCapturingArg {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
PreciseCapturingArg::Lifetime(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Lifetime", &__self_0),
PreciseCapturingArg::Arg(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Arg",
__self_0, &__self_1),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
PreciseCapturingArg where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
PreciseCapturingArg::Lifetime(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (LifetimeCtxt::GenericArg))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
PreciseCapturingArg::Arg(ref __binding_0, ref __binding_1)
=> {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for PreciseCapturingArg
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
PreciseCapturingArg::Lifetime(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (LifetimeCtxt::GenericArg))
}
}
PreciseCapturingArg::Arg(ref mut __binding_0,
ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
2682pub enum PreciseCapturingArg {
2683 Lifetime(#[visitable(extra = LifetimeCtxt::GenericArg)] Lifetime),
2685 Arg(Path, NodeId),
2687}
2688
2689#[derive(#[automatically_derived]
impl ::core::clone::Clone for InlineAsmRegOrRegClass {
#[inline]
fn clone(&self) -> InlineAsmRegOrRegClass {
let _: ::core::clone::AssertParamIsClone<Symbol>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for InlineAsmRegOrRegClass { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for InlineAsmRegOrRegClass {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
InlineAsmRegOrRegClass::Reg(ref __binding_0) => { 0usize }
InlineAsmRegOrRegClass::RegClass(ref __binding_0) => {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
InlineAsmRegOrRegClass::Reg(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmRegOrRegClass::RegClass(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for InlineAsmRegOrRegClass {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
InlineAsmRegOrRegClass::Reg(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
InlineAsmRegOrRegClass::RegClass(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `InlineAsmRegOrRegClass`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for InlineAsmRegOrRegClass {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
InlineAsmRegOrRegClass::Reg(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Reg",
&__self_0),
InlineAsmRegOrRegClass::RegClass(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RegClass", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
InlineAsmRegOrRegClass where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
InlineAsmRegOrRegClass::Reg(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmRegOrRegClass::RegClass(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for
InlineAsmRegOrRegClass where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
InlineAsmRegOrRegClass::Reg(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
InlineAsmRegOrRegClass::RegClass(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
2693pub enum InlineAsmRegOrRegClass {
2694 Reg(Symbol),
2695 RegClass(Symbol),
2696}
2697
2698#[derive(#[automatically_derived]
impl ::core::clone::Clone for InlineAsmOptions {
#[inline]
fn clone(&self) -> InlineAsmOptions {
let _: ::core::clone::AssertParamIsClone<u16>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for InlineAsmOptions { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for InlineAsmOptions {
#[inline]
fn eq(&self, other: &InlineAsmOptions) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for InlineAsmOptions {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u16>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for InlineAsmOptions {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for InlineAsmOptions {
fn encode(&self, __encoder: &mut __E) {
match *self {
InlineAsmOptions(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for InlineAsmOptions {
fn decode(__decoder: &mut __D) -> Self {
InlineAsmOptions(::rustc_serialize::Decodable::decode(__decoder))
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
InlineAsmOptions {
#[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 {
InlineAsmOptions(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
2699pub struct InlineAsmOptions(u16);
2700impl InlineAsmOptions {
#[allow(deprecated, non_upper_case_globals,)]
pub const PURE: Self = Self::from_bits_retain(1 << 0);
#[allow(deprecated, non_upper_case_globals,)]
pub const NOMEM: Self = Self::from_bits_retain(1 << 1);
#[allow(deprecated, non_upper_case_globals,)]
pub const READONLY: Self = Self::from_bits_retain(1 << 2);
#[allow(deprecated, non_upper_case_globals,)]
pub const PRESERVES_FLAGS: Self = Self::from_bits_retain(1 << 3);
#[allow(deprecated, non_upper_case_globals,)]
pub const NORETURN: Self = Self::from_bits_retain(1 << 4);
#[allow(deprecated, non_upper_case_globals,)]
pub const NOSTACK: Self = Self::from_bits_retain(1 << 5);
#[allow(deprecated, non_upper_case_globals,)]
pub const ATT_SYNTAX: Self = Self::from_bits_retain(1 << 6);
#[allow(deprecated, non_upper_case_globals,)]
pub const RAW: Self = Self::from_bits_retain(1 << 7);
#[allow(deprecated, non_upper_case_globals,)]
pub const MAY_UNWIND: Self = Self::from_bits_retain(1 << 8);
}
impl ::bitflags::Flags for InlineAsmOptions {
const FLAGS: &'static [::bitflags::Flag<InlineAsmOptions>] =
&[{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("PURE", InlineAsmOptions::PURE)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("NOMEM", InlineAsmOptions::NOMEM)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("READONLY",
InlineAsmOptions::READONLY)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("PRESERVES_FLAGS",
InlineAsmOptions::PRESERVES_FLAGS)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("NORETURN",
InlineAsmOptions::NORETURN)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("NOSTACK", InlineAsmOptions::NOSTACK)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("ATT_SYNTAX",
InlineAsmOptions::ATT_SYNTAX)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("RAW", InlineAsmOptions::RAW)
},
{
#[allow(deprecated, non_upper_case_globals,)]
::bitflags::Flag::new("MAY_UNWIND",
InlineAsmOptions::MAY_UNWIND)
}];
type Bits = u16;
fn bits(&self) -> u16 { InlineAsmOptions::bits(self) }
fn from_bits_retain(bits: u16) -> InlineAsmOptions {
InlineAsmOptions::from_bits_retain(bits)
}
}
#[allow(dead_code, deprecated, unused_doc_comments, unused_attributes,
unused_mut, unused_imports, non_upper_case_globals, clippy ::
assign_op_pattern, clippy :: iter_without_into_iter,)]
const _: () =
{
#[allow(dead_code, deprecated, unused_attributes)]
impl InlineAsmOptions {
#[inline]
pub const fn empty() -> Self {
Self(<u16 as ::bitflags::Bits>::EMPTY)
}
#[inline]
pub const fn all() -> Self {
let mut truncated = <u16 as ::bitflags::Bits>::EMPTY;
let mut i = 0;
{
{
let flag =
<InlineAsmOptions as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<InlineAsmOptions as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<InlineAsmOptions as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<InlineAsmOptions as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<InlineAsmOptions as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<InlineAsmOptions as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<InlineAsmOptions as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<InlineAsmOptions as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
{
{
let flag =
<InlineAsmOptions as
::bitflags::Flags>::FLAGS[i].value().bits();
truncated = truncated | flag;
i += 1;
}
};
let _ = i;
Self(truncated)
}
#[inline]
pub const fn bits(&self) -> u16 { self.0 }
#[inline]
pub const fn from_bits(bits: u16)
-> ::bitflags::__private::core::option::Option<Self> {
let truncated = Self::from_bits_truncate(bits).0;
if truncated == bits {
::bitflags::__private::core::option::Option::Some(Self(bits))
} else { ::bitflags::__private::core::option::Option::None }
}
#[inline]
pub const fn from_bits_truncate(bits: u16) -> Self {
Self(bits & Self::all().0)
}
#[inline]
pub const fn from_bits_retain(bits: u16) -> Self { Self(bits) }
#[inline]
pub fn from_name(name: &str)
-> ::bitflags::__private::core::option::Option<Self> {
{
if name == "PURE" {
return ::bitflags::__private::core::option::Option::Some(Self(InlineAsmOptions::PURE.bits()));
}
};
;
{
if name == "NOMEM" {
return ::bitflags::__private::core::option::Option::Some(Self(InlineAsmOptions::NOMEM.bits()));
}
};
;
{
if name == "READONLY" {
return ::bitflags::__private::core::option::Option::Some(Self(InlineAsmOptions::READONLY.bits()));
}
};
;
{
if name == "PRESERVES_FLAGS" {
return ::bitflags::__private::core::option::Option::Some(Self(InlineAsmOptions::PRESERVES_FLAGS.bits()));
}
};
;
{
if name == "NORETURN" {
return ::bitflags::__private::core::option::Option::Some(Self(InlineAsmOptions::NORETURN.bits()));
}
};
;
{
if name == "NOSTACK" {
return ::bitflags::__private::core::option::Option::Some(Self(InlineAsmOptions::NOSTACK.bits()));
}
};
;
{
if name == "ATT_SYNTAX" {
return ::bitflags::__private::core::option::Option::Some(Self(InlineAsmOptions::ATT_SYNTAX.bits()));
}
};
;
{
if name == "RAW" {
return ::bitflags::__private::core::option::Option::Some(Self(InlineAsmOptions::RAW.bits()));
}
};
;
{
if name == "MAY_UNWIND" {
return ::bitflags::__private::core::option::Option::Some(Self(InlineAsmOptions::MAY_UNWIND.bits()));
}
};
;
let _ = name;
::bitflags::__private::core::option::Option::None
}
#[inline]
pub const fn is_empty(&self) -> bool {
self.0 == <u16 as ::bitflags::Bits>::EMPTY
}
#[inline]
pub const fn is_all(&self) -> bool {
Self::all().0 | self.0 == self.0
}
#[inline]
pub const fn intersects(&self, other: Self) -> bool {
self.0 & other.0 != <u16 as ::bitflags::Bits>::EMPTY
}
#[inline]
pub const fn contains(&self, other: Self) -> bool {
self.0 & other.0 == other.0
}
#[inline]
pub fn insert(&mut self, other: Self) {
*self = Self(self.0).union(other);
}
#[inline]
pub fn remove(&mut self, other: Self) {
*self = Self(self.0).difference(other);
}
#[inline]
pub fn toggle(&mut self, other: Self) {
*self = Self(self.0).symmetric_difference(other);
}
#[inline]
pub fn set(&mut self, other: Self, value: bool) {
if value { self.insert(other); } else { self.remove(other); }
}
#[inline]
#[must_use]
pub const fn intersection(self, other: Self) -> Self {
Self(self.0 & other.0)
}
#[inline]
#[must_use]
pub const fn union(self, other: Self) -> Self {
Self(self.0 | other.0)
}
#[inline]
#[must_use]
pub const fn difference(self, other: Self) -> Self {
Self(self.0 & !other.0)
}
#[inline]
#[must_use]
pub const fn symmetric_difference(self, other: Self) -> Self {
Self(self.0 ^ other.0)
}
#[inline]
#[must_use]
pub const fn complement(self) -> Self {
Self::from_bits_truncate(!self.0)
}
}
impl ::bitflags::__private::core::fmt::Binary for InlineAsmOptions {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Binary::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::Octal for InlineAsmOptions {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::Octal::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::LowerHex for InlineAsmOptions {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::LowerHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::fmt::UpperHex for InlineAsmOptions {
fn fmt(&self, f: &mut ::bitflags::__private::core::fmt::Formatter)
-> ::bitflags::__private::core::fmt::Result {
let inner = self.0;
::bitflags::__private::core::fmt::UpperHex::fmt(&inner, f)
}
}
impl ::bitflags::__private::core::ops::BitOr for InlineAsmOptions {
type Output = Self;
#[inline]
fn bitor(self, other: InlineAsmOptions) -> Self {
self.union(other)
}
}
impl ::bitflags::__private::core::ops::BitOrAssign for
InlineAsmOptions {
#[inline]
fn bitor_assign(&mut self, other: Self) { self.insert(other); }
}
impl ::bitflags::__private::core::ops::BitXor for InlineAsmOptions {
type Output = Self;
#[inline]
fn bitxor(self, other: Self) -> Self {
self.symmetric_difference(other)
}
}
impl ::bitflags::__private::core::ops::BitXorAssign for
InlineAsmOptions {
#[inline]
fn bitxor_assign(&mut self, other: Self) { self.toggle(other); }
}
impl ::bitflags::__private::core::ops::BitAnd for InlineAsmOptions {
type Output = Self;
#[inline]
fn bitand(self, other: Self) -> Self { self.intersection(other) }
}
impl ::bitflags::__private::core::ops::BitAndAssign for
InlineAsmOptions {
#[inline]
fn bitand_assign(&mut self, other: Self) {
*self =
Self::from_bits_retain(self.bits()).intersection(other);
}
}
impl ::bitflags::__private::core::ops::Sub for InlineAsmOptions {
type Output = Self;
#[inline]
fn sub(self, other: Self) -> Self { self.difference(other) }
}
impl ::bitflags::__private::core::ops::SubAssign for InlineAsmOptions
{
#[inline]
fn sub_assign(&mut self, other: Self) { self.remove(other); }
}
impl ::bitflags::__private::core::ops::Not for InlineAsmOptions {
type Output = Self;
#[inline]
fn not(self) -> Self { self.complement() }
}
impl ::bitflags::__private::core::iter::Extend<InlineAsmOptions> for
InlineAsmOptions {
fn extend<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(&mut self, iterator: T) {
for item in iterator { self.insert(item) }
}
}
impl ::bitflags::__private::core::iter::FromIterator<InlineAsmOptions>
for InlineAsmOptions {
fn from_iter<T: ::bitflags::__private::core::iter::IntoIterator<Item
= Self>>(iterator: T) -> Self {
use ::bitflags::__private::core::iter::Extend;
let mut result = Self::empty();
result.extend(iterator);
result
}
}
impl InlineAsmOptions {
#[inline]
pub const fn iter(&self)
-> ::bitflags::iter::Iter<InlineAsmOptions> {
::bitflags::iter::Iter::__private_const_new(<InlineAsmOptions
as ::bitflags::Flags>::FLAGS,
InlineAsmOptions::from_bits_retain(self.bits()),
InlineAsmOptions::from_bits_retain(self.bits()))
}
#[inline]
pub const fn iter_names(&self)
-> ::bitflags::iter::IterNames<InlineAsmOptions> {
::bitflags::iter::IterNames::__private_const_new(<InlineAsmOptions
as ::bitflags::Flags>::FLAGS,
InlineAsmOptions::from_bits_retain(self.bits()),
InlineAsmOptions::from_bits_retain(self.bits()))
}
}
impl ::bitflags::__private::core::iter::IntoIterator for
InlineAsmOptions {
type Item = InlineAsmOptions;
type IntoIter = ::bitflags::iter::Iter<InlineAsmOptions>;
fn into_iter(self) -> Self::IntoIter { self.iter() }
}
};bitflags::bitflags! {
2701 impl InlineAsmOptions: u16 {
2702 const PURE = 1 << 0;
2703 const NOMEM = 1 << 1;
2704 const READONLY = 1 << 2;
2705 const PRESERVES_FLAGS = 1 << 3;
2706 const NORETURN = 1 << 4;
2707 const NOSTACK = 1 << 5;
2708 const ATT_SYNTAX = 1 << 6;
2709 const RAW = 1 << 7;
2710 const MAY_UNWIND = 1 << 8;
2711 }
2712}
2713
2714impl InlineAsmOptions {
2715 pub const COUNT: usize = Self::all().bits().count_ones() as usize;
2716
2717 pub const GLOBAL_OPTIONS: Self = Self::ATT_SYNTAX.union(Self::RAW);
2718 pub const NAKED_OPTIONS: Self = Self::ATT_SYNTAX.union(Self::RAW);
2719
2720 pub fn human_readable_names(&self) -> Vec<&'static str> {
2721 let mut options = ::alloc::vec::Vec::new()vec![];
2722
2723 if self.contains(InlineAsmOptions::PURE) {
2724 options.push("pure");
2725 }
2726 if self.contains(InlineAsmOptions::NOMEM) {
2727 options.push("nomem");
2728 }
2729 if self.contains(InlineAsmOptions::READONLY) {
2730 options.push("readonly");
2731 }
2732 if self.contains(InlineAsmOptions::PRESERVES_FLAGS) {
2733 options.push("preserves_flags");
2734 }
2735 if self.contains(InlineAsmOptions::NORETURN) {
2736 options.push("noreturn");
2737 }
2738 if self.contains(InlineAsmOptions::NOSTACK) {
2739 options.push("nostack");
2740 }
2741 if self.contains(InlineAsmOptions::ATT_SYNTAX) {
2742 options.push("att_syntax");
2743 }
2744 if self.contains(InlineAsmOptions::RAW) {
2745 options.push("raw");
2746 }
2747 if self.contains(InlineAsmOptions::MAY_UNWIND) {
2748 options.push("may_unwind");
2749 }
2750
2751 options
2752 }
2753}
2754
2755impl std::fmt::Debug for InlineAsmOptions {
2756 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2757 bitflags::parser::to_writer(self, f)
2758 }
2759}
2760
2761#[derive(#[automatically_derived]
impl ::core::clone::Clone for InlineAsmTemplatePiece {
#[inline]
fn clone(&self) -> InlineAsmTemplatePiece {
match self {
InlineAsmTemplatePiece::String(__self_0) =>
InlineAsmTemplatePiece::String(::core::clone::Clone::clone(__self_0)),
InlineAsmTemplatePiece::Placeholder {
operand_idx: __self_0, modifier: __self_1, span: __self_2 } =>
InlineAsmTemplatePiece::Placeholder {
operand_idx: ::core::clone::Clone::clone(__self_0),
modifier: ::core::clone::Clone::clone(__self_1),
span: ::core::clone::Clone::clone(__self_2),
},
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for InlineAsmTemplatePiece {
#[inline]
fn eq(&self, other: &InlineAsmTemplatePiece) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(InlineAsmTemplatePiece::String(__self_0),
InlineAsmTemplatePiece::String(__arg1_0)) =>
__self_0 == __arg1_0,
(InlineAsmTemplatePiece::Placeholder {
operand_idx: __self_0, modifier: __self_1, span: __self_2 },
InlineAsmTemplatePiece::Placeholder {
operand_idx: __arg1_0, modifier: __arg1_1, span: __arg1_2 })
=>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for InlineAsmTemplatePiece {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
InlineAsmTemplatePiece::String(ref __binding_0) => {
0usize
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref __binding_0,
modifier: ref __binding_1,
span: ref __binding_2 } => {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
InlineAsmTemplatePiece::String(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref __binding_0,
modifier: ref __binding_1,
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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for InlineAsmTemplatePiece {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
InlineAsmTemplatePiece::String(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
InlineAsmTemplatePiece::Placeholder {
operand_idx: ::rustc_serialize::Decodable::decode(__decoder),
modifier: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `InlineAsmTemplatePiece`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for InlineAsmTemplatePiece {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
InlineAsmTemplatePiece::String(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "String",
&__self_0),
InlineAsmTemplatePiece::Placeholder {
operand_idx: __self_0, modifier: __self_1, span: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"Placeholder", "operand_idx", __self_0, "modifier",
__self_1, "span", &__self_2),
}
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for InlineAsmTemplatePiece {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
InlineAsmTemplatePiece::String(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
InlineAsmTemplatePiece::Placeholder {
operand_idx: __self_0, modifier: __self_1, span: __self_2 } =>
{
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
}
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
InlineAsmTemplatePiece {
#[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 {
InlineAsmTemplatePiece::String(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref __binding_0,
modifier: ref __binding_1,
span: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
InlineAsmTemplatePiece where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
InlineAsmTemplatePiece::String(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref __binding_0,
modifier: ref __binding_1,
span: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for
InlineAsmTemplatePiece where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
InlineAsmTemplatePiece::String(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref mut __binding_0,
modifier: ref mut __binding_1,
span: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2762pub enum InlineAsmTemplatePiece {
2763 String(Cow<'static, str>),
2764 Placeholder { operand_idx: usize, modifier: Option<char>, span: Span },
2765}
2766
2767impl fmt::Display for InlineAsmTemplatePiece {
2768 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2769 match self {
2770 Self::String(s) => {
2771 for c in s.chars() {
2772 match c {
2773 '{' => f.write_str("{{")?,
2774 '}' => f.write_str("}}")?,
2775 _ => c.fmt(f)?,
2776 }
2777 }
2778 Ok(())
2779 }
2780 Self::Placeholder { operand_idx, modifier: Some(modifier), .. } => {
2781 f.write_fmt(format_args!("{{{0}:{1}}}", operand_idx, modifier))write!(f, "{{{operand_idx}:{modifier}}}")
2782 }
2783 Self::Placeholder { operand_idx, modifier: None, .. } => {
2784 f.write_fmt(format_args!("{{{0}}}", operand_idx))write!(f, "{{{operand_idx}}}")
2785 }
2786 }
2787 }
2788}
2789
2790impl InlineAsmTemplatePiece {
2791 pub fn to_string(s: &[Self]) -> String {
2793 use fmt::Write;
2794 let mut out = String::new();
2795 for p in s.iter() {
2796 let _ = out.write_fmt(format_args!("{0}", p))write!(out, "{p}");
2797 }
2798 out
2799 }
2800}
2801
2802#[derive(#[automatically_derived]
impl ::core::clone::Clone for InlineAsmSym {
#[inline]
fn clone(&self) -> InlineAsmSym {
InlineAsmSym {
id: ::core::clone::Clone::clone(&self.id),
qself: ::core::clone::Clone::clone(&self.qself),
path: ::core::clone::Clone::clone(&self.path),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for InlineAsmSym {
fn encode(&self, __encoder: &mut __E) {
match *self {
InlineAsmSym {
id: ref __binding_0,
qself: ref __binding_1,
path: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for InlineAsmSym {
fn decode(__decoder: &mut __D) -> Self {
InlineAsmSym {
id: ::rustc_serialize::Decodable::decode(__decoder),
qself: ::rustc_serialize::Decodable::decode(__decoder),
path: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for InlineAsmSym {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "InlineAsmSym",
"id", &self.id, "qself", &self.qself, "path", &&self.path)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for InlineAsmSym
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
InlineAsmSym {
id: ref __binding_0,
qself: ref __binding_1,
path: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for InlineAsmSym where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
InlineAsmSym {
id: ref mut __binding_0,
qself: ref mut __binding_1,
path: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2810pub struct InlineAsmSym {
2811 pub id: NodeId,
2812 pub qself: Option<Box<QSelf>>,
2813 pub path: Path,
2814}
2815
2816#[derive(#[automatically_derived]
impl ::core::clone::Clone for InlineAsmOperand {
#[inline]
fn clone(&self) -> InlineAsmOperand {
match self {
InlineAsmOperand::In { reg: __self_0, expr: __self_1 } =>
InlineAsmOperand::In {
reg: ::core::clone::Clone::clone(__self_0),
expr: ::core::clone::Clone::clone(__self_1),
},
InlineAsmOperand::Out {
reg: __self_0, late: __self_1, expr: __self_2 } =>
InlineAsmOperand::Out {
reg: ::core::clone::Clone::clone(__self_0),
late: ::core::clone::Clone::clone(__self_1),
expr: ::core::clone::Clone::clone(__self_2),
},
InlineAsmOperand::InOut {
reg: __self_0, late: __self_1, expr: __self_2 } =>
InlineAsmOperand::InOut {
reg: ::core::clone::Clone::clone(__self_0),
late: ::core::clone::Clone::clone(__self_1),
expr: ::core::clone::Clone::clone(__self_2),
},
InlineAsmOperand::SplitInOut {
reg: __self_0,
late: __self_1,
in_expr: __self_2,
out_expr: __self_3 } =>
InlineAsmOperand::SplitInOut {
reg: ::core::clone::Clone::clone(__self_0),
late: ::core::clone::Clone::clone(__self_1),
in_expr: ::core::clone::Clone::clone(__self_2),
out_expr: ::core::clone::Clone::clone(__self_3),
},
InlineAsmOperand::Const { anon_const: __self_0 } =>
InlineAsmOperand::Const {
anon_const: ::core::clone::Clone::clone(__self_0),
},
InlineAsmOperand::Sym { sym: __self_0 } =>
InlineAsmOperand::Sym {
sym: ::core::clone::Clone::clone(__self_0),
},
InlineAsmOperand::Label { block: __self_0 } =>
InlineAsmOperand::Label {
block: ::core::clone::Clone::clone(__self_0),
},
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for InlineAsmOperand {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, expr: ref __binding_1 } => {
0usize
}
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
expr: ref __binding_2 } => {
1usize
}
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
expr: ref __binding_2 } => {
2usize
}
InlineAsmOperand::SplitInOut {
reg: ref __binding_0,
late: ref __binding_1,
in_expr: ref __binding_2,
out_expr: ref __binding_3 } => {
3usize
}
InlineAsmOperand::Const { anon_const: ref __binding_0 } => {
4usize
}
InlineAsmOperand::Sym { sym: ref __binding_0 } => { 5usize }
InlineAsmOperand::Label { block: ref __binding_0 } => {
6usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, expr: 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,
expr: 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,
expr: 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::SplitInOut {
reg: ref __binding_0,
late: ref __binding_1,
in_expr: ref __binding_2,
out_expr: 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 { anon_const: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmOperand::Sym { sym: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmOperand::Label { block: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for InlineAsmOperand {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
InlineAsmOperand::In {
reg: ::rustc_serialize::Decodable::decode(__decoder),
expr: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
InlineAsmOperand::Out {
reg: ::rustc_serialize::Decodable::decode(__decoder),
late: ::rustc_serialize::Decodable::decode(__decoder),
expr: ::rustc_serialize::Decodable::decode(__decoder),
}
}
2usize => {
InlineAsmOperand::InOut {
reg: ::rustc_serialize::Decodable::decode(__decoder),
late: ::rustc_serialize::Decodable::decode(__decoder),
expr: ::rustc_serialize::Decodable::decode(__decoder),
}
}
3usize => {
InlineAsmOperand::SplitInOut {
reg: ::rustc_serialize::Decodable::decode(__decoder),
late: ::rustc_serialize::Decodable::decode(__decoder),
in_expr: ::rustc_serialize::Decodable::decode(__decoder),
out_expr: ::rustc_serialize::Decodable::decode(__decoder),
}
}
4usize => {
InlineAsmOperand::Const {
anon_const: ::rustc_serialize::Decodable::decode(__decoder),
}
}
5usize => {
InlineAsmOperand::Sym {
sym: ::rustc_serialize::Decodable::decode(__decoder),
}
}
6usize => {
InlineAsmOperand::Label {
block: ::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));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for InlineAsmOperand {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
InlineAsmOperand::In { reg: __self_0, expr: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "In",
"reg", __self_0, "expr", &__self_1),
InlineAsmOperand::Out {
reg: __self_0, late: __self_1, expr: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f, "Out",
"reg", __self_0, "late", __self_1, "expr", &__self_2),
InlineAsmOperand::InOut {
reg: __self_0, late: __self_1, expr: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f, "InOut",
"reg", __self_0, "late", __self_1, "expr", &__self_2),
InlineAsmOperand::SplitInOut {
reg: __self_0,
late: __self_1,
in_expr: __self_2,
out_expr: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f,
"SplitInOut", "reg", __self_0, "late", __self_1, "in_expr",
__self_2, "out_expr", &__self_3),
InlineAsmOperand::Const { anon_const: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Const",
"anon_const", &__self_0),
InlineAsmOperand::Sym { sym: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Sym",
"sym", &__self_0),
InlineAsmOperand::Label { block: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Label",
"block", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
InlineAsmOperand where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
InlineAsmOperand::In {
reg: ref __binding_0, expr: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::Out {
reg: ref __binding_0,
late: ref __binding_1,
expr: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::InOut {
reg: ref __binding_0,
late: ref __binding_1,
expr: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::SplitInOut {
reg: ref __binding_0,
late: ref __binding_1,
in_expr: ref __binding_2,
out_expr: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::Const { anon_const: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::Sym { sym: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmOperand::Label { block: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for InlineAsmOperand
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
InlineAsmOperand::In {
reg: ref mut __binding_0, expr: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
InlineAsmOperand::Out {
reg: ref mut __binding_0,
late: ref mut __binding_1,
expr: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
InlineAsmOperand::InOut {
reg: ref mut __binding_0,
late: ref mut __binding_1,
expr: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
InlineAsmOperand::SplitInOut {
reg: ref mut __binding_0,
late: ref mut __binding_1,
in_expr: ref mut __binding_2,
out_expr: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
InlineAsmOperand::Const { anon_const: ref mut __binding_0 }
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
InlineAsmOperand::Sym { sym: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
InlineAsmOperand::Label { block: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
2820pub enum InlineAsmOperand {
2821 In {
2822 reg: InlineAsmRegOrRegClass,
2823 expr: Box<Expr>,
2824 },
2825 Out {
2826 reg: InlineAsmRegOrRegClass,
2827 late: bool,
2828 expr: Option<Box<Expr>>,
2829 },
2830 InOut {
2831 reg: InlineAsmRegOrRegClass,
2832 late: bool,
2833 expr: Box<Expr>,
2834 },
2835 SplitInOut {
2836 reg: InlineAsmRegOrRegClass,
2837 late: bool,
2838 in_expr: Box<Expr>,
2839 out_expr: Option<Box<Expr>>,
2840 },
2841 Const {
2842 anon_const: AnonConst,
2843 },
2844 Sym {
2845 sym: InlineAsmSym,
2846 },
2847 Label {
2848 block: Box<Block>,
2849 },
2850}
2851
2852impl InlineAsmOperand {
2853 pub fn reg(&self) -> Option<&InlineAsmRegOrRegClass> {
2854 match self {
2855 Self::In { reg, .. }
2856 | Self::Out { reg, .. }
2857 | Self::InOut { reg, .. }
2858 | Self::SplitInOut { reg, .. } => Some(reg),
2859 Self::Const { .. } | Self::Sym { .. } | Self::Label { .. } => None,
2860 }
2861 }
2862}
2863
2864#[derive(#[automatically_derived]
impl ::core::clone::Clone for AsmMacro {
#[inline]
fn clone(&self) -> AsmMacro { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for AsmMacro { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AsmMacro {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AsmMacro::Asm => { 0usize }
AsmMacro::GlobalAsm => { 1usize }
AsmMacro::NakedAsm => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AsmMacro::Asm => {}
AsmMacro::GlobalAsm => {}
AsmMacro::NakedAsm => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AsmMacro {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { AsmMacro::Asm }
1usize => { AsmMacro::GlobalAsm }
2usize => { AsmMacro::NakedAsm }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AsmMacro`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AsmMacro {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
AsmMacro::Asm => "Asm",
AsmMacro::GlobalAsm => "GlobalAsm",
AsmMacro::NakedAsm => "NakedAsm",
})
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for AsmMacro {
#[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 {
AsmMacro::Asm => {}
AsmMacro::GlobalAsm => {}
AsmMacro::NakedAsm => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AsmMacro
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AsmMacro::Asm => {}
AsmMacro::GlobalAsm => {}
AsmMacro::NakedAsm => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AsmMacro where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AsmMacro::Asm => {}
AsmMacro::GlobalAsm => {}
AsmMacro::NakedAsm => {}
}
}
}
};Walkable, #[automatically_derived]
impl ::core::cmp::PartialEq for AsmMacro {
#[inline]
fn eq(&self, other: &AsmMacro) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for AsmMacro {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq)]
2865pub enum AsmMacro {
2866 Asm,
2868 GlobalAsm,
2870 NakedAsm,
2872}
2873
2874impl AsmMacro {
2875 pub const fn macro_name(self) -> &'static str {
2876 match self {
2877 AsmMacro::Asm => "asm",
2878 AsmMacro::GlobalAsm => "global_asm",
2879 AsmMacro::NakedAsm => "naked_asm",
2880 }
2881 }
2882
2883 pub const fn is_supported_option(self, option: InlineAsmOptions) -> bool {
2884 match self {
2885 AsmMacro::Asm => true,
2886 AsmMacro::GlobalAsm => InlineAsmOptions::GLOBAL_OPTIONS.contains(option),
2887 AsmMacro::NakedAsm => InlineAsmOptions::NAKED_OPTIONS.contains(option),
2888 }
2889 }
2890
2891 pub const fn diverges(self, options: InlineAsmOptions) -> bool {
2892 match self {
2893 AsmMacro::Asm => options.contains(InlineAsmOptions::NORETURN),
2894 AsmMacro::GlobalAsm => true,
2895 AsmMacro::NakedAsm => true,
2896 }
2897 }
2898}
2899
2900#[derive(#[automatically_derived]
impl ::core::clone::Clone for InlineAsm {
#[inline]
fn clone(&self) -> InlineAsm {
InlineAsm {
asm_macro: ::core::clone::Clone::clone(&self.asm_macro),
template: ::core::clone::Clone::clone(&self.template),
template_strs: ::core::clone::Clone::clone(&self.template_strs),
operands: ::core::clone::Clone::clone(&self.operands),
clobber_abis: ::core::clone::Clone::clone(&self.clobber_abis),
options: ::core::clone::Clone::clone(&self.options),
line_spans: ::core::clone::Clone::clone(&self.line_spans),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for InlineAsm {
fn encode(&self, __encoder: &mut __E) {
match *self {
InlineAsm {
asm_macro: ref __binding_0,
template: ref __binding_1,
template_strs: ref __binding_2,
operands: ref __binding_3,
clobber_abis: ref __binding_4,
options: ref __binding_5,
line_spans: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for InlineAsm {
fn decode(__decoder: &mut __D) -> Self {
InlineAsm {
asm_macro: ::rustc_serialize::Decodable::decode(__decoder),
template: ::rustc_serialize::Decodable::decode(__decoder),
template_strs: ::rustc_serialize::Decodable::decode(__decoder),
operands: ::rustc_serialize::Decodable::decode(__decoder),
clobber_abis: ::rustc_serialize::Decodable::decode(__decoder),
options: ::rustc_serialize::Decodable::decode(__decoder),
line_spans: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for InlineAsm {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["asm_macro", "template", "template_strs", "operands",
"clobber_abis", "options", "line_spans"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.asm_macro, &self.template, &self.template_strs,
&self.operands, &self.clobber_abis, &self.options,
&&self.line_spans];
::core::fmt::Formatter::debug_struct_fields_finish(f, "InlineAsm",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for InlineAsm
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
InlineAsm {
asm_macro: ref __binding_0,
template: ref __binding_1,
template_strs: ref __binding_2,
operands: ref __binding_3,
clobber_abis: ref __binding_4,
options: ref __binding_5,
line_spans: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for InlineAsm where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
InlineAsm {
asm_macro: ref mut __binding_0,
template: ref mut __binding_1,
template_strs: ref mut __binding_2,
operands: ref mut __binding_3,
clobber_abis: ref mut __binding_4,
options: ref mut __binding_5,
line_spans: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
}
}
}
}
};Walkable)]
2904pub struct InlineAsm {
2905 pub asm_macro: AsmMacro,
2906 pub template: Vec<InlineAsmTemplatePiece>,
2907 pub template_strs: Box<[(Symbol, Option<Symbol>, Span)]>,
2908 pub operands: Vec<(InlineAsmOperand, Span)>,
2909 pub clobber_abis: Vec<(Symbol, Span)>,
2910 #[visitable(ignore)]
2911 pub options: InlineAsmOptions,
2912 pub line_spans: Vec<Span>,
2913}
2914
2915#[derive(#[automatically_derived]
impl ::core::clone::Clone for Param {
#[inline]
fn clone(&self) -> Param {
Param {
attrs: ::core::clone::Clone::clone(&self.attrs),
ty: ::core::clone::Clone::clone(&self.ty),
pat: ::core::clone::Clone::clone(&self.pat),
id: ::core::clone::Clone::clone(&self.id),
span: ::core::clone::Clone::clone(&self.span),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Param {
fn encode(&self, __encoder: &mut __E) {
match *self {
Param {
attrs: ref __binding_0,
ty: ref __binding_1,
pat: ref __binding_2,
id: ref __binding_3,
span: ref __binding_4,
is_placeholder: ref __binding_5 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Param {
fn decode(__decoder: &mut __D) -> Self {
Param {
attrs: ::rustc_serialize::Decodable::decode(__decoder),
ty: ::rustc_serialize::Decodable::decode(__decoder),
pat: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Param {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["attrs", "ty", "pat", "id", "span", "is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.attrs, &self.ty, &self.pat, &self.id, &self.span,
&&self.is_placeholder];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Param", names,
values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Param where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Param {
attrs: ref __binding_0,
ty: ref __binding_1,
pat: ref __binding_2,
id: ref __binding_3,
span: ref __binding_4,
is_placeholder: ref __binding_5 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Param where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Param {
attrs: ref mut __binding_0,
ty: ref mut __binding_1,
pat: ref mut __binding_2,
id: ref mut __binding_3,
span: ref mut __binding_4,
is_placeholder: ref mut __binding_5 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
}
}
}
}
};Walkable)]
2919pub struct Param {
2920 pub attrs: AttrVec,
2921 pub ty: Box<Ty>,
2922 pub pat: Box<Pat>,
2923 pub id: NodeId,
2924 pub span: Span,
2925 pub is_placeholder: bool,
2926}
2927
2928#[derive(#[automatically_derived]
impl ::core::clone::Clone for SelfKind {
#[inline]
fn clone(&self) -> SelfKind {
match self {
SelfKind::Value(__self_0) =>
SelfKind::Value(::core::clone::Clone::clone(__self_0)),
SelfKind::Region(__self_0, __self_1) =>
SelfKind::Region(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
SelfKind::Pinned(__self_0, __self_1) =>
SelfKind::Pinned(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
SelfKind::Explicit(__self_0, __self_1) =>
SelfKind::Explicit(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for SelfKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
SelfKind::Value(ref __binding_0) => { 0usize }
SelfKind::Region(ref __binding_0, ref __binding_1) => {
1usize
}
SelfKind::Pinned(ref __binding_0, ref __binding_1) => {
2usize
}
SelfKind::Explicit(ref __binding_0, ref __binding_1) => {
3usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
SelfKind::Value(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
SelfKind::Region(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
SelfKind::Pinned(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
SelfKind::Explicit(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for SelfKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
SelfKind::Value(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
SelfKind::Region(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
SelfKind::Pinned(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
SelfKind::Explicit(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `SelfKind`, expected 0..4, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for SelfKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
SelfKind::Value(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Value",
&__self_0),
SelfKind::Region(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Region",
__self_0, &__self_1),
SelfKind::Pinned(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Pinned",
__self_0, &__self_1),
SelfKind::Explicit(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Explicit", __self_0, &__self_1),
}
}
}Debug)]
2932pub enum SelfKind {
2933 Value(Mutability),
2935 Region(Option<Lifetime>, Mutability),
2937 Pinned(Option<Lifetime>, Mutability),
2939 Explicit(Box<Ty>, Mutability),
2941}
2942
2943impl SelfKind {
2944 pub fn to_ref_suggestion(&self) -> String {
2945 match self {
2946 SelfKind::Region(None, mutbl) => mutbl.ref_prefix_str().to_string(),
2947 SelfKind::Region(Some(lt), mutbl) => ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("&{1} {0}", mutbl.prefix_str(), lt))
})format!("&{lt} {}", mutbl.prefix_str()),
2948 SelfKind::Pinned(None, mutbl) => ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("&pin {0}", mutbl.ptr_str()))
})format!("&pin {}", mutbl.ptr_str()),
2949 SelfKind::Pinned(Some(lt), mutbl) => ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("&{1} pin {0}", mutbl.ptr_str(),
lt))
})format!("&{lt} pin {}", mutbl.ptr_str()),
2950 SelfKind::Value(_) | SelfKind::Explicit(_, _) => {
2951 {
::core::panicking::panic_fmt(format_args!("internal error: entered unreachable code: {0}",
format_args!("if we had an explicit self, we wouldn\'t be here")));
}unreachable!("if we had an explicit self, we wouldn't be here")
2952 }
2953 }
2954 }
2955}
2956
2957pub type ExplicitSelf = Spanned<SelfKind>;
2958
2959impl Param {
2960 pub fn to_self(&self) -> Option<ExplicitSelf> {
2962 if let PatKind::Ident(BindingMode(ByRef::No, mutbl), ident, _) = self.pat.kind {
2963 if ident.name == kw::SelfLower {
2964 return match self.ty.kind {
2965 TyKind::ImplicitSelf => Some(respan(self.pat.span, SelfKind::Value(mutbl))),
2966 TyKind::Ref(lt, MutTy { ref ty, mutbl }) if ty.kind.is_implicit_self() => {
2967 Some(respan(self.pat.span, SelfKind::Region(lt, mutbl)))
2968 }
2969 TyKind::PinnedRef(lt, MutTy { ref ty, mutbl })
2970 if ty.kind.is_implicit_self() =>
2971 {
2972 Some(respan(self.pat.span, SelfKind::Pinned(lt, mutbl)))
2973 }
2974 _ => Some(respan(
2975 self.pat.span.to(self.ty.span),
2976 SelfKind::Explicit(self.ty.clone(), mutbl),
2977 )),
2978 };
2979 }
2980 }
2981 None
2982 }
2983
2984 pub fn is_self(&self) -> bool {
2986 if let PatKind::Ident(_, ident, _) = self.pat.kind {
2987 ident.name == kw::SelfLower
2988 } else {
2989 false
2990 }
2991 }
2992
2993 pub fn from_self(attrs: AttrVec, eself: ExplicitSelf, eself_ident: Ident) -> Param {
2995 let span = eself.span.to(eself_ident.span);
2996 let infer_ty =
2997 Box::new(Ty { id: DUMMY_NODE_ID, kind: TyKind::ImplicitSelf, span: eself_ident.span });
2998 let (mutbl, ty) = match eself.node {
2999 SelfKind::Explicit(ty, mutbl) => (mutbl, ty),
3000 SelfKind::Value(mutbl) => (mutbl, infer_ty),
3001 SelfKind::Region(lt, mutbl) => (
3002 Mutability::Not,
3003 Box::new(Ty {
3004 id: DUMMY_NODE_ID,
3005 kind: TyKind::Ref(lt, MutTy { ty: infer_ty, mutbl }),
3006 span,
3007 }),
3008 ),
3009 SelfKind::Pinned(lt, mutbl) => (
3010 Mutability::Not,
3011 Box::new(Ty {
3012 id: DUMMY_NODE_ID,
3013 kind: TyKind::PinnedRef(lt, MutTy { ty: infer_ty, mutbl }),
3014 span,
3015 }),
3016 ),
3017 };
3018 Param {
3019 attrs,
3020 pat: Box::new(Pat {
3021 id: DUMMY_NODE_ID,
3022 kind: PatKind::Ident(BindingMode(ByRef::No, mutbl), eself_ident, None),
3023 span,
3024 }),
3025 span,
3026 ty,
3027 id: DUMMY_NODE_ID,
3028 is_placeholder: false,
3029 }
3030 }
3031}
3032
3033#[derive(#[automatically_derived]
impl ::core::clone::Clone for FnDecl {
#[inline]
fn clone(&self) -> FnDecl {
FnDecl {
inputs: ::core::clone::Clone::clone(&self.inputs),
output: ::core::clone::Clone::clone(&self.output),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for FnDecl {
fn encode(&self, __encoder: &mut __E) {
match *self {
FnDecl { inputs: ref __binding_0, output: ref __binding_1 }
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for FnDecl {
fn decode(__decoder: &mut __D) -> Self {
FnDecl {
inputs: ::rustc_serialize::Decodable::decode(__decoder),
output: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for FnDecl {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "FnDecl",
"inputs", &self.inputs, "output", &&self.output)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for FnDecl where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
FnDecl { inputs: ref __binding_0, output: ref __binding_1 }
=> {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for FnDecl where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
FnDecl {
inputs: ref mut __binding_0, output: ref mut __binding_1 }
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3040pub struct FnDecl {
3041 pub inputs: ThinVec<Param>,
3042 pub output: FnRetTy,
3043}
3044
3045impl FnDecl {
3046 pub fn has_self(&self) -> bool {
3047 self.inputs.get(0).is_some_and(Param::is_self)
3048 }
3049
3050 pub fn c_variadic(&self) -> bool {
3051 self.inputs.last().is_some_and(|arg| #[allow(non_exhaustive_omitted_patterns)] match arg.ty.kind {
TyKind::CVarArgs => true,
_ => false,
}matches!(arg.ty.kind, TyKind::CVarArgs))
3052 }
3053
3054 pub const NO_SPLATTED_ARG_INDEX: u8 = u8::MAX;
3059
3060 pub const MAX_VALID_SPLATTED_ARG_INDEX: u8 = Self::NO_SPLATTED_ARG_INDEX - 1;
3062
3063 pub fn splatted(&self) -> Option<u8> {
3065 self.inputs.iter().enumerate().find_map(|(index, arg)| {
3066 if index >= usize::from(Self::NO_SPLATTED_ARG_INDEX) {
3067 None
3070 } else {
3071 arg.attrs
3072 .iter()
3073 .any(|attr| attr.has_name(sym::rustc_splat))
3074 .then_some(u8::try_from(index).unwrap())
3075 }
3076 })
3077 }
3078}
3079
3080#[derive(#[automatically_derived]
impl ::core::marker::Copy for IsAuto { }Copy, #[automatically_derived]
impl ::core::clone::Clone for IsAuto {
#[inline]
fn clone(&self) -> IsAuto { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for IsAuto {
#[inline]
fn eq(&self, other: &IsAuto) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for IsAuto {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
IsAuto::Yes => { 0usize }
IsAuto::No => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self { IsAuto::Yes => {} IsAuto::No => {} }
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for IsAuto {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { IsAuto::Yes }
1usize => { IsAuto::No }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `IsAuto`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for IsAuto {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self { IsAuto::Yes => "Yes", IsAuto::No => "No", })
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for IsAuto {
#[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 { IsAuto::Yes => {} IsAuto::No => {} }
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for IsAuto where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self { IsAuto::Yes => {} IsAuto::No => {} }
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for IsAuto where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self { IsAuto::Yes => {} IsAuto::No => {} }
}
}
};Walkable)]
3082pub enum IsAuto {
3083 Yes,
3084 No,
3085}
3086
3087#[derive(#[automatically_derived]
impl ::core::marker::Copy for Safety { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Safety {
#[inline]
fn clone(&self) -> Safety {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Safety {
#[inline]
fn eq(&self, other: &Safety) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Safety::Unsafe(__self_0), Safety::Unsafe(__arg1_0)) =>
__self_0 == __arg1_0,
(Safety::Safe(__self_0), Safety::Safe(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Safety {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Span>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Safety {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
Safety::Unsafe(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Safety::Safe(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Safety {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Safety::Unsafe(ref __binding_0) => { 0usize }
Safety::Safe(ref __binding_0) => { 1usize }
Safety::Default => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Safety::Unsafe(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Safety::Safe(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Safety::Default => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Safety {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
Safety::Unsafe(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
Safety::Safe(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => { Safety::Default }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Safety`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Safety {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Safety::Unsafe(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Unsafe",
&__self_0),
Safety::Safe(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Safe",
&__self_0),
Safety::Default =>
::core::fmt::Formatter::write_str(f, "Default"),
}
}
}Debug)]
3089#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Safety {
#[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 {
Safety::Unsafe(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Safety::Safe(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Safety::Default => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Safety where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Safety::Unsafe(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
Safety::Safe(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
Safety::Default => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Safety where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Safety::Unsafe(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
Safety::Safe(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
Safety::Default => {}
}
}
}
};Walkable)]
3090pub enum Safety {
3091 Unsafe(Span),
3093 Safe(Span),
3095 Default,
3098}
3099
3100#[derive(#[automatically_derived]
impl ::core::marker::Copy for CoroutineKind { }Copy, #[automatically_derived]
impl ::core::clone::Clone for CoroutineKind {
#[inline]
fn clone(&self) -> CoroutineKind {
let _: ::core::clone::AssertParamIsClone<Span>;
let _: ::core::clone::AssertParamIsClone<NodeId>;
*self
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for CoroutineKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
CoroutineKind::Async {
span: ref __binding_0,
closure_id: ref __binding_1,
return_impl_trait_id: ref __binding_2 } => {
0usize
}
CoroutineKind::Gen {
span: ref __binding_0,
closure_id: ref __binding_1,
return_impl_trait_id: ref __binding_2 } => {
1usize
}
CoroutineKind::AsyncGen {
span: ref __binding_0,
closure_id: ref __binding_1,
return_impl_trait_id: ref __binding_2 } => {
2usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
CoroutineKind::Async {
span: ref __binding_0,
closure_id: ref __binding_1,
return_impl_trait_id: 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);
}
CoroutineKind::Gen {
span: ref __binding_0,
closure_id: ref __binding_1,
return_impl_trait_id: 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);
}
CoroutineKind::AsyncGen {
span: ref __binding_0,
closure_id: ref __binding_1,
return_impl_trait_id: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for CoroutineKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
CoroutineKind::Async {
span: ::rustc_serialize::Decodable::decode(__decoder),
closure_id: ::rustc_serialize::Decodable::decode(__decoder),
return_impl_trait_id: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
CoroutineKind::Gen {
span: ::rustc_serialize::Decodable::decode(__decoder),
closure_id: ::rustc_serialize::Decodable::decode(__decoder),
return_impl_trait_id: ::rustc_serialize::Decodable::decode(__decoder),
}
}
2usize => {
CoroutineKind::AsyncGen {
span: ::rustc_serialize::Decodable::decode(__decoder),
closure_id: ::rustc_serialize::Decodable::decode(__decoder),
return_impl_trait_id: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CoroutineKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for CoroutineKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
CoroutineKind::Async {
span: __self_0,
closure_id: __self_1,
return_impl_trait_id: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f, "Async",
"span", __self_0, "closure_id", __self_1,
"return_impl_trait_id", &__self_2),
CoroutineKind::Gen {
span: __self_0,
closure_id: __self_1,
return_impl_trait_id: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f, "Gen",
"span", __self_0, "closure_id", __self_1,
"return_impl_trait_id", &__self_2),
CoroutineKind::AsyncGen {
span: __self_0,
closure_id: __self_1,
return_impl_trait_id: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"AsyncGen", "span", __self_0, "closure_id", __self_1,
"return_impl_trait_id", &__self_2),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
CoroutineKind where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
CoroutineKind::Async {
span: ref __binding_0,
closure_id: ref __binding_1,
return_impl_trait_id: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
CoroutineKind::Gen {
span: ref __binding_0,
closure_id: ref __binding_1,
return_impl_trait_id: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
CoroutineKind::AsyncGen {
span: ref __binding_0,
closure_id: ref __binding_1,
return_impl_trait_id: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for CoroutineKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
CoroutineKind::Async {
span: ref mut __binding_0,
closure_id: ref mut __binding_1,
return_impl_trait_id: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
CoroutineKind::Gen {
span: ref mut __binding_0,
closure_id: ref mut __binding_1,
return_impl_trait_id: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
CoroutineKind::AsyncGen {
span: ref mut __binding_0,
closure_id: ref mut __binding_1,
return_impl_trait_id: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
3106pub enum CoroutineKind {
3107 Async { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3109 Gen { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3111 AsyncGen { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3113}
3114
3115impl CoroutineKind {
3116 pub fn span(self) -> Span {
3117 match self {
3118 CoroutineKind::Async { span, .. } => span,
3119 CoroutineKind::Gen { span, .. } => span,
3120 CoroutineKind::AsyncGen { span, .. } => span,
3121 }
3122 }
3123
3124 pub fn as_str(self) -> &'static str {
3125 match self {
3126 CoroutineKind::Async { .. } => "async",
3127 CoroutineKind::Gen { .. } => "gen",
3128 CoroutineKind::AsyncGen { .. } => "async gen",
3129 }
3130 }
3131
3132 pub fn closure_id(self) -> NodeId {
3133 match self {
3134 CoroutineKind::Async { closure_id, .. }
3135 | CoroutineKind::Gen { closure_id, .. }
3136 | CoroutineKind::AsyncGen { closure_id, .. } => closure_id,
3137 }
3138 }
3139
3140 pub fn return_id(self) -> (NodeId, Span) {
3143 match self {
3144 CoroutineKind::Async { return_impl_trait_id, span, .. }
3145 | CoroutineKind::Gen { return_impl_trait_id, span, .. }
3146 | CoroutineKind::AsyncGen { return_impl_trait_id, span, .. } => {
3147 (return_impl_trait_id, span)
3148 }
3149 }
3150 }
3151}
3152
3153#[derive(#[automatically_derived]
impl ::core::marker::Copy for Const { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Const {
#[inline]
fn clone(&self) -> Const {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Const {
#[inline]
fn eq(&self, other: &Const) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Const::Yes(__self_0), Const::Yes(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Const {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Span>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Const {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
Const::Yes(__self_0) => ::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Const {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Const::Yes(ref __binding_0) => { 0usize }
Const::No => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Const::Yes(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Const::No => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Const {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
Const::Yes(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { Const::No }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Const`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Const {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Const::Yes(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Yes",
&__self_0),
Const::No => ::core::fmt::Formatter::write_str(f, "No"),
}
}
}Debug)]
3154#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Const {
#[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 {
Const::Yes(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Const::No => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Const where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Const::Yes(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
Const::No => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Const where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Const::Yes(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
Const::No => {}
}
}
}
};Walkable)]
3155pub enum Const {
3156 Yes(Span),
3157 No,
3158}
3159
3160#[derive(#[automatically_derived]
impl ::core::marker::Copy for Defaultness { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Defaultness {
#[inline]
fn clone(&self) -> Defaultness {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Defaultness {
#[inline]
fn eq(&self, other: &Defaultness) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Defaultness::Default(__self_0),
Defaultness::Default(__arg1_0)) => __self_0 == __arg1_0,
(Defaultness::Final(__self_0), Defaultness::Final(__arg1_0))
=> __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Defaultness {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Defaultness::Implicit => { 0usize }
Defaultness::Default(ref __binding_0) => { 1usize }
Defaultness::Final(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Defaultness::Implicit => {}
Defaultness::Default(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Defaultness::Final(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Defaultness {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { Defaultness::Implicit }
1usize => {
Defaultness::Default(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
Defaultness::Final(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Defaultness`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Defaultness {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Defaultness::Implicit =>
::core::fmt::Formatter::write_str(f, "Implicit"),
Defaultness::Default(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Default", &__self_0),
Defaultness::Final(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Final",
&__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Defaultness
{
#[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 {
Defaultness::Implicit => {}
Defaultness::Default(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Defaultness::Final(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Defaultness
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Defaultness::Implicit => {}
Defaultness::Default(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
Defaultness::Final(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Defaultness where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Defaultness::Implicit => {}
Defaultness::Default(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
Defaultness::Final(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3163pub enum Defaultness {
3164 Implicit,
3170 Default(Span),
3172 Final(Span),
3174}
3175
3176#[derive(#[automatically_derived]
impl ::core::marker::Copy for ImplPolarity { }Copy, #[automatically_derived]
impl ::core::clone::Clone for ImplPolarity {
#[inline]
fn clone(&self) -> ImplPolarity {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ImplPolarity {
#[inline]
fn eq(&self, other: &ImplPolarity) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ImplPolarity::Negative(__self_0),
ImplPolarity::Negative(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ImplPolarity {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ImplPolarity::Positive => { 0usize }
ImplPolarity::Negative(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ImplPolarity::Positive => {}
ImplPolarity::Negative(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ImplPolarity {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { ImplPolarity::Positive }
1usize => {
ImplPolarity::Negative(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ImplPolarity`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for ImplPolarity
{
#[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 {
ImplPolarity::Positive => {}
ImplPolarity::Negative(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ImplPolarity
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ImplPolarity::Positive => {}
ImplPolarity::Negative(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ImplPolarity where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ImplPolarity::Positive => {}
ImplPolarity::Negative(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3177pub enum ImplPolarity {
3178 Positive,
3180 Negative(Span),
3182}
3183
3184impl fmt::Debug for ImplPolarity {
3185 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
3186 match *self {
3187 ImplPolarity::Positive => "positive".fmt(f),
3188 ImplPolarity::Negative(_) => "negative".fmt(f),
3189 }
3190 }
3191}
3192
3193#[derive(#[automatically_derived]
impl ::core::marker::Copy for BoundPolarity { }Copy, #[automatically_derived]
impl ::core::clone::Clone for BoundPolarity {
#[inline]
fn clone(&self) -> BoundPolarity {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for BoundPolarity {
#[inline]
fn eq(&self, other: &BoundPolarity) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(BoundPolarity::Negative(__self_0),
BoundPolarity::Negative(__arg1_0)) => __self_0 == __arg1_0,
(BoundPolarity::Maybe(__self_0),
BoundPolarity::Maybe(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for BoundPolarity {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Span>;
}
}Eq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BoundPolarity {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BoundPolarity::Positive => { 0usize }
BoundPolarity::Negative(ref __binding_0) => { 1usize }
BoundPolarity::Maybe(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
BoundPolarity::Positive => {}
BoundPolarity::Negative(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
BoundPolarity::Maybe(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for BoundPolarity {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BoundPolarity::Positive }
1usize => {
BoundPolarity::Negative(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
BoundPolarity::Maybe(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BoundPolarity`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for BoundPolarity {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
BoundPolarity::Positive =>
::core::fmt::Formatter::write_str(f, "Positive"),
BoundPolarity::Negative(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Negative", &__self_0),
BoundPolarity::Maybe(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Maybe",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for BoundPolarity {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
BoundPolarity::Negative(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
BoundPolarity::Maybe(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
3195#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
BoundPolarity {
#[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 {
BoundPolarity::Positive => {}
BoundPolarity::Negative(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
BoundPolarity::Maybe(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
BoundPolarity where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BoundPolarity::Positive => {}
BoundPolarity::Negative(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
BoundPolarity::Maybe(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BoundPolarity where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BoundPolarity::Positive => {}
BoundPolarity::Negative(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
BoundPolarity::Maybe(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3196pub enum BoundPolarity {
3197 Positive,
3199 Negative(Span),
3201 Maybe(Span),
3203}
3204
3205impl BoundPolarity {
3206 pub fn as_str(self) -> &'static str {
3207 match self {
3208 Self::Positive => "",
3209 Self::Negative(_) => "!",
3210 Self::Maybe(_) => "?",
3211 }
3212 }
3213}
3214
3215#[derive(#[automatically_derived]
impl ::core::marker::Copy for BoundConstness { }Copy, #[automatically_derived]
impl ::core::clone::Clone for BoundConstness {
#[inline]
fn clone(&self) -> BoundConstness {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for BoundConstness {
#[inline]
fn eq(&self, other: &BoundConstness) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(BoundConstness::Always(__self_0),
BoundConstness::Always(__arg1_0)) => __self_0 == __arg1_0,
(BoundConstness::Maybe(__self_0),
BoundConstness::Maybe(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for BoundConstness {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Span>;
}
}Eq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BoundConstness {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BoundConstness::Never => { 0usize }
BoundConstness::Always(ref __binding_0) => { 1usize }
BoundConstness::Maybe(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
BoundConstness::Never => {}
BoundConstness::Always(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
BoundConstness::Maybe(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for BoundConstness {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BoundConstness::Never }
1usize => {
BoundConstness::Always(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
BoundConstness::Maybe(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BoundConstness`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for BoundConstness {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
BoundConstness::Never =>
::core::fmt::Formatter::write_str(f, "Never"),
BoundConstness::Always(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Always",
&__self_0),
BoundConstness::Maybe(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Maybe",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for BoundConstness {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
BoundConstness::Always(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
BoundConstness::Maybe(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
3217#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
BoundConstness {
#[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 {
BoundConstness::Never => {}
BoundConstness::Always(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
BoundConstness::Maybe(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
BoundConstness where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BoundConstness::Never => {}
BoundConstness::Always(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
BoundConstness::Maybe(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BoundConstness where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BoundConstness::Never => {}
BoundConstness::Always(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
BoundConstness::Maybe(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3218pub enum BoundConstness {
3219 Never,
3221 Always(Span),
3223 Maybe(Span),
3225}
3226
3227impl BoundConstness {
3228 pub fn as_str(self) -> &'static str {
3229 match self {
3230 Self::Never => "",
3231 Self::Always(_) => "const",
3232 Self::Maybe(_) => "[const]",
3233 }
3234 }
3235}
3236
3237#[derive(#[automatically_derived]
impl ::core::marker::Copy for BoundAsyncness { }Copy, #[automatically_derived]
impl ::core::clone::Clone for BoundAsyncness {
#[inline]
fn clone(&self) -> BoundAsyncness {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for BoundAsyncness {
#[inline]
fn eq(&self, other: &BoundAsyncness) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(BoundAsyncness::Async(__self_0),
BoundAsyncness::Async(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for BoundAsyncness {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Span>;
}
}Eq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BoundAsyncness {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BoundAsyncness::Normal => { 0usize }
BoundAsyncness::Async(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
BoundAsyncness::Normal => {}
BoundAsyncness::Async(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for BoundAsyncness {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BoundAsyncness::Normal }
1usize => {
BoundAsyncness::Async(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BoundAsyncness`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for BoundAsyncness {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
BoundAsyncness::Normal =>
::core::fmt::Formatter::write_str(f, "Normal"),
BoundAsyncness::Async(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Async",
&__self_0),
}
}
}Debug)]
3239#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
BoundAsyncness {
#[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 {
BoundAsyncness::Normal => {}
BoundAsyncness::Async(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
BoundAsyncness where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BoundAsyncness::Normal => {}
BoundAsyncness::Async(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BoundAsyncness where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BoundAsyncness::Normal => {}
BoundAsyncness::Async(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3240pub enum BoundAsyncness {
3241 Normal,
3243 Async(Span),
3245}
3246
3247impl BoundAsyncness {
3248 pub fn as_str(self) -> &'static str {
3249 match self {
3250 Self::Normal => "",
3251 Self::Async(_) => "async",
3252 }
3253 }
3254}
3255
3256#[derive(#[automatically_derived]
impl ::core::clone::Clone for FnRetTy {
#[inline]
fn clone(&self) -> FnRetTy {
match self {
FnRetTy::Default(__self_0) =>
FnRetTy::Default(::core::clone::Clone::clone(__self_0)),
FnRetTy::Ty(__self_0) =>
FnRetTy::Ty(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for FnRetTy {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
FnRetTy::Default(ref __binding_0) => { 0usize }
FnRetTy::Ty(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
FnRetTy::Default(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
FnRetTy::Ty(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for FnRetTy {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
FnRetTy::Default(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
FnRetTy::Ty(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `FnRetTy`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for FnRetTy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
FnRetTy::Default(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Default", &__self_0),
FnRetTy::Ty(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Ty",
&__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for FnRetTy
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
FnRetTy::Default(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
FnRetTy::Ty(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for FnRetTy where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
FnRetTy::Default(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
FnRetTy::Ty(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3257pub enum FnRetTy {
3258 Default(Span),
3263 Ty(Box<Ty>),
3265}
3266
3267impl FnRetTy {
3268 pub fn span(&self) -> Span {
3269 match self {
3270 &FnRetTy::Default(span) => span,
3271 FnRetTy::Ty(ty) => ty.span,
3272 }
3273 }
3274}
3275
3276#[derive(#[automatically_derived]
impl ::core::clone::Clone for Inline {
#[inline]
fn clone(&self) -> Inline {
let _: ::core::clone::AssertParamIsClone<Result<(), ErrorGuaranteed>>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Inline { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for Inline {
#[inline]
fn eq(&self, other: &Inline) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Inline::No { had_parse_error: __self_0 }, Inline::No {
had_parse_error: __arg1_0 }) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Inline {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Inline::Yes => { 0usize }
Inline::No { had_parse_error: ref __binding_0 } => {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Inline::Yes => {}
Inline::No { had_parse_error: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Inline {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { Inline::Yes }
1usize => {
Inline::No {
had_parse_error: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Inline`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Inline {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Inline::Yes => ::core::fmt::Formatter::write_str(f, "Yes"),
Inline::No { had_parse_error: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "No",
"had_parse_error", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Inline where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Inline::Yes => {}
Inline::No { had_parse_error: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Inline where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Inline::Yes => {}
Inline::No { had_parse_error: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3277pub enum Inline {
3278 Yes,
3279 No { had_parse_error: Result<(), ErrorGuaranteed> },
3280}
3281
3282#[derive(#[automatically_derived]
impl ::core::clone::Clone for ModKind {
#[inline]
fn clone(&self) -> ModKind {
match self {
ModKind::Loaded(__self_0, __self_1, __self_2) =>
ModKind::Loaded(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ModKind::Unloaded => ModKind::Unloaded,
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ModKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ModKind::Loaded(ref __binding_0, ref __binding_1,
ref __binding_2) => {
0usize
}
ModKind::Unloaded => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ModKind::Loaded(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);
}
ModKind::Unloaded => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ModKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
ModKind::Loaded(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { ModKind::Unloaded }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ModKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ModKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ModKind::Loaded(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Loaded",
__self_0, __self_1, &__self_2),
ModKind::Unloaded =>
::core::fmt::Formatter::write_str(f, "Unloaded"),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ModKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ModKind::Loaded(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
ModKind::Unloaded => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ModKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ModKind::Loaded(ref mut __binding_0, ref mut __binding_1,
ref mut __binding_2) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
ModKind::Unloaded => {}
}
}
}
};Walkable)]
3284pub enum ModKind {
3285 Loaded(ThinVec<Box<Item>>, Inline, ModSpans),
3290 Unloaded,
3292}
3293
3294#[derive(#[automatically_derived]
impl ::core::marker::Copy for ModSpans { }Copy, #[automatically_derived]
impl ::core::clone::Clone for ModSpans {
#[inline]
fn clone(&self) -> ModSpans {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ModSpans {
fn encode(&self, __encoder: &mut __E) {
match *self {
ModSpans {
inner_span: ref __binding_0,
inject_use_span: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ModSpans {
fn decode(__decoder: &mut __D) -> Self {
ModSpans {
inner_span: ::rustc_serialize::Decodable::decode(__decoder),
inject_use_span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ModSpans {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "ModSpans",
"inner_span", &self.inner_span, "inject_use_span",
&&self.inject_use_span)
}
}Debug, #[automatically_derived]
impl ::core::default::Default for ModSpans {
#[inline]
fn default() -> ModSpans {
ModSpans {
inner_span: ::core::default::Default::default(),
inject_use_span: ::core::default::Default::default(),
}
}
}Default, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ModSpans
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ModSpans {
inner_span: ref __binding_0,
inject_use_span: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ModSpans where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ModSpans {
inner_span: ref mut __binding_0,
inject_use_span: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3295pub struct ModSpans {
3296 pub inner_span: Span,
3299 pub inject_use_span: Span,
3300}
3301
3302#[derive(#[automatically_derived]
impl ::core::clone::Clone for ForeignMod {
#[inline]
fn clone(&self) -> ForeignMod {
ForeignMod {
extern_span: ::core::clone::Clone::clone(&self.extern_span),
safety: ::core::clone::Clone::clone(&self.safety),
abi: ::core::clone::Clone::clone(&self.abi),
items: ::core::clone::Clone::clone(&self.items),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ForeignMod {
fn encode(&self, __encoder: &mut __E) {
match *self {
ForeignMod {
extern_span: ref __binding_0,
safety: ref __binding_1,
abi: ref __binding_2,
items: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ForeignMod {
fn decode(__decoder: &mut __D) -> Self {
ForeignMod {
extern_span: ::rustc_serialize::Decodable::decode(__decoder),
safety: ::rustc_serialize::Decodable::decode(__decoder),
abi: ::rustc_serialize::Decodable::decode(__decoder),
items: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ForeignMod {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "ForeignMod",
"extern_span", &self.extern_span, "safety", &self.safety, "abi",
&self.abi, "items", &&self.items)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ForeignMod
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ForeignMod {
extern_span: ref __binding_0,
safety: ref __binding_1,
abi: ref __binding_2,
items: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ForeignMod where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ForeignMod {
extern_span: ref mut __binding_0,
safety: ref mut __binding_1,
abi: ref mut __binding_2,
items: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
3306pub struct ForeignMod {
3307 pub extern_span: Span,
3309 pub safety: Safety,
3312 pub abi: Option<StrLit>,
3313 pub items: ThinVec<Box<ForeignItem>>,
3314}
3315
3316#[derive(#[automatically_derived]
impl ::core::clone::Clone for EnumDef {
#[inline]
fn clone(&self) -> EnumDef {
EnumDef { variants: ::core::clone::Clone::clone(&self.variants) }
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for EnumDef {
fn encode(&self, __encoder: &mut __E) {
match *self {
EnumDef { variants: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for EnumDef {
fn decode(__decoder: &mut __D) -> Self {
EnumDef {
variants: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for EnumDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "EnumDef",
"variants", &&self.variants)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for EnumDef
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
EnumDef { variants: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for EnumDef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
EnumDef { variants: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3317pub struct EnumDef {
3318 pub variants: ThinVec<Variant>,
3319}
3320
3321#[derive(#[automatically_derived]
impl ::core::clone::Clone for Variant {
#[inline]
fn clone(&self) -> Variant {
Variant {
attrs: ::core::clone::Clone::clone(&self.attrs),
id: ::core::clone::Clone::clone(&self.id),
span: ::core::clone::Clone::clone(&self.span),
vis: ::core::clone::Clone::clone(&self.vis),
ident: ::core::clone::Clone::clone(&self.ident),
data: ::core::clone::Clone::clone(&self.data),
disr_expr: ::core::clone::Clone::clone(&self.disr_expr),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Variant {
fn encode(&self, __encoder: &mut __E) {
match *self {
Variant {
attrs: ref __binding_0,
id: ref __binding_1,
span: ref __binding_2,
vis: ref __binding_3,
ident: ref __binding_4,
data: ref __binding_5,
disr_expr: ref __binding_6,
is_placeholder: ref __binding_7 } => {
::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);
::rustc_serialize::Encodable::<__E>::encode(__binding_7,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Variant {
fn decode(__decoder: &mut __D) -> Self {
Variant {
attrs: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
vis: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
data: ::rustc_serialize::Decodable::decode(__decoder),
disr_expr: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Variant {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["attrs", "id", "span", "vis", "ident", "data", "disr_expr",
"is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.attrs, &self.id, &self.span, &self.vis, &self.ident,
&self.data, &self.disr_expr, &&self.is_placeholder];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Variant",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Variant
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Variant {
attrs: ref __binding_0,
id: ref __binding_1,
span: ref __binding_2,
vis: ref __binding_3,
ident: ref __binding_4,
data: ref __binding_5,
disr_expr: ref __binding_6,
is_placeholder: ref __binding_7 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_7,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Variant where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Variant {
attrs: ref mut __binding_0,
id: ref mut __binding_1,
span: ref mut __binding_2,
vis: ref mut __binding_3,
ident: ref mut __binding_4,
data: ref mut __binding_5,
disr_expr: ref mut __binding_6,
is_placeholder: ref mut __binding_7 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_7,
__visitor, ())
}
}
}
}
}
};Walkable)]
3323pub struct Variant {
3324 pub attrs: AttrVec,
3326 pub id: NodeId,
3328 pub span: Span,
3330 pub vis: Visibility,
3332 pub ident: Ident,
3334
3335 pub data: VariantData,
3337 pub disr_expr: Option<AnonConst>,
3339 pub is_placeholder: bool,
3341}
3342
3343#[derive(#[automatically_derived]
impl ::core::clone::Clone for UseTreeKind {
#[inline]
fn clone(&self) -> UseTreeKind {
match self {
UseTreeKind::Simple(__self_0) =>
UseTreeKind::Simple(::core::clone::Clone::clone(__self_0)),
UseTreeKind::Nested { items: __self_0, span: __self_1 } =>
UseTreeKind::Nested {
items: ::core::clone::Clone::clone(__self_0),
span: ::core::clone::Clone::clone(__self_1),
},
UseTreeKind::Glob(__self_0) =>
UseTreeKind::Glob(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for UseTreeKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UseTreeKind::Simple(ref __binding_0) => { 0usize }
UseTreeKind::Nested {
items: ref __binding_0, span: ref __binding_1 } => {
1usize
}
UseTreeKind::Glob(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
UseTreeKind::Simple(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
UseTreeKind::Nested {
items: ref __binding_0, span: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
UseTreeKind::Glob(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for UseTreeKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
UseTreeKind::Simple(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
UseTreeKind::Nested {
items: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
2usize => {
UseTreeKind::Glob(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UseTreeKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for UseTreeKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
UseTreeKind::Simple(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Simple",
&__self_0),
UseTreeKind::Nested { items: __self_0, span: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Nested", "items", __self_0, "span", &__self_1),
UseTreeKind::Glob(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Glob",
&__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for UseTreeKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
UseTreeKind::Simple(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
UseTreeKind::Nested {
items: ref __binding_0, span: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
UseTreeKind::Glob(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for UseTreeKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
UseTreeKind::Simple(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
UseTreeKind::Nested {
items: ref mut __binding_0, span: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
UseTreeKind::Glob(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3345pub enum UseTreeKind {
3346 Simple(Option<Ident>),
3348 Nested { items: ThinVec<(UseTree, NodeId)>, span: Span },
3357 Glob(Span),
3359}
3360
3361#[derive(#[automatically_derived]
impl ::core::clone::Clone for UseTree {
#[inline]
fn clone(&self) -> UseTree {
UseTree {
prefix: ::core::clone::Clone::clone(&self.prefix),
kind: ::core::clone::Clone::clone(&self.kind),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for UseTree {
fn encode(&self, __encoder: &mut __E) {
match *self {
UseTree { prefix: ref __binding_0, kind: ref __binding_1 }
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for UseTree {
fn decode(__decoder: &mut __D) -> Self {
UseTree {
prefix: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for UseTree {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "UseTree",
"prefix", &self.prefix, "kind", &&self.kind)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for UseTree
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
UseTree { prefix: ref __binding_0, kind: ref __binding_1 }
=> {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for UseTree where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
UseTree {
prefix: ref mut __binding_0, kind: ref mut __binding_1 } =>
{
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3364pub struct UseTree {
3365 pub prefix: Path,
3366 pub kind: UseTreeKind,
3367}
3368
3369impl UseTree {
3370 pub fn ident(&self) -> Ident {
3373 match self.kind {
3374 UseTreeKind::Simple(Some(rename)) => rename,
3375 UseTreeKind::Simple(None) => {
3376 self.prefix.segments.last().expect("empty prefix in a simple import").ident
3377 }
3378 _ => {
::core::panicking::panic_fmt(format_args!("`UseTree::ident` can only be used on a simple import"));
}panic!("`UseTree::ident` can only be used on a simple import"),
3379 }
3380 }
3381
3382 pub fn span(&self) -> Span {
3386 self.prefix.span.to(self.hi_span())
3387 }
3388
3389 pub fn hi_span(&self) -> Span {
3395 match self.kind {
3396 UseTreeKind::Simple(None) => self.prefix.span,
3397 UseTreeKind::Simple(Some(name)) => name.span,
3398 UseTreeKind::Nested { span, .. } => span,
3399 UseTreeKind::Glob(span) => span,
3400 }
3401 }
3402}
3403
3404#[derive(#[automatically_derived]
impl ::core::clone::Clone for AttrStyle {
#[inline]
fn clone(&self) -> AttrStyle { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for AttrStyle {
#[inline]
fn eq(&self, other: &AttrStyle) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for AttrStyle {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for AttrStyle {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash, #[automatically_derived]
impl ::core::fmt::Debug for AttrStyle {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
AttrStyle::Outer => "Outer",
AttrStyle::Inner => "Inner",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for AttrStyle { }Copy)]
3408#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AttrStyle {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AttrStyle::Outer => { 0usize }
AttrStyle::Inner => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self { AttrStyle::Outer => {} AttrStyle::Inner => {} }
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AttrStyle {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { AttrStyle::Outer }
1usize => { AttrStyle::Inner }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AttrStyle`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for AttrStyle {
#[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 { AttrStyle::Outer => {} AttrStyle::Inner => {} }
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AttrStyle
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self { AttrStyle::Outer => {} AttrStyle::Inner => {} }
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AttrStyle where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self { AttrStyle::Outer => {} AttrStyle::Inner => {} }
}
}
};Walkable)]
3409pub enum AttrStyle {
3410 Outer,
3411 Inner,
3412}
3413
3414impl AttrStyle {
3415 pub fn line_doc_comment_prefix(self) -> &'static str {
3416 match self {
3417 AttrStyle::Outer => "///",
3418 AttrStyle::Inner => "//!",
3419 }
3420 }
3421}
3422
3423pub type AttrVec = ThinVec<Attribute>;
3425
3426#[derive(#[automatically_derived]
impl ::core::clone::Clone for Attribute {
#[inline]
fn clone(&self) -> Attribute {
Attribute {
kind: ::core::clone::Clone::clone(&self.kind),
id: ::core::clone::Clone::clone(&self.id),
style: ::core::clone::Clone::clone(&self.style),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Attribute {
fn encode(&self, __encoder: &mut __E) {
match *self {
Attribute {
kind: ref __binding_0,
id: ref __binding_1,
style: ref __binding_2,
span: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Attribute {
fn decode(__decoder: &mut __D) -> Self {
Attribute {
kind: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
style: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Attribute {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "Attribute",
"kind", &self.kind, "id", &self.id, "style", &self.style, "span",
&&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Attribute
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Attribute {
kind: ref __binding_0,
id: ref __binding_1,
style: ref __binding_2,
span: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Attribute where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Attribute {
kind: ref mut __binding_0,
id: ref mut __binding_1,
style: ref mut __binding_2,
span: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
3428pub struct Attribute {
3429 pub kind: AttrKind,
3430 pub id: AttrId,
3431 pub style: AttrStyle,
3434
3435 pub span: Span,
3458}
3459
3460#[derive(#[automatically_derived]
impl ::core::clone::Clone for AttrKind {
#[inline]
fn clone(&self) -> AttrKind {
match self {
AttrKind::Normal(__self_0) =>
AttrKind::Normal(::core::clone::Clone::clone(__self_0)),
AttrKind::Synthetic(__self_0) =>
AttrKind::Synthetic(::core::clone::Clone::clone(__self_0)),
AttrKind::DocComment(__self_0, __self_1) =>
AttrKind::DocComment(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AttrKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AttrKind::Normal(ref __binding_0) => { 0usize }
AttrKind::Synthetic(ref __binding_0) => { 1usize }
AttrKind::DocComment(ref __binding_0, ref __binding_1) => {
2usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AttrKind::Normal(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AttrKind::Synthetic(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AttrKind::DocComment(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AttrKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
AttrKind::Normal(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
AttrKind::Synthetic(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
AttrKind::DocComment(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AttrKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AttrKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AttrKind::Normal(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Normal",
&__self_0),
AttrKind::Synthetic(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Synthetic", &__self_0),
AttrKind::DocComment(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"DocComment", __self_0, &__self_1),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AttrKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AttrKind::Normal(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
AttrKind::Synthetic(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
AttrKind::DocComment(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AttrKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AttrKind::Normal(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
AttrKind::Synthetic(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
AttrKind::DocComment(ref mut __binding_0,
ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3461pub enum AttrKind {
3462 Normal(Box<NormalAttr>),
3464
3465 Synthetic(Box<SyntheticAttr>),
3467
3468 DocComment(CommentKind, Symbol),
3472}
3473
3474#[derive(#[automatically_derived]
impl ::core::clone::Clone for NormalAttr {
#[inline]
fn clone(&self) -> NormalAttr {
NormalAttr {
item: ::core::clone::Clone::clone(&self.item),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for NormalAttr {
fn encode(&self, __encoder: &mut __E) {
match *self {
NormalAttr { item: ref __binding_0, tokens: ref __binding_1
} => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for NormalAttr {
fn decode(__decoder: &mut __D) -> Self {
NormalAttr {
item: ::rustc_serialize::Decodable::decode(__decoder),
tokens: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for NormalAttr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "NormalAttr",
"item", &self.item, "tokens", &&self.tokens)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for NormalAttr
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
NormalAttr { item: ref __binding_0, tokens: ref __binding_1
} => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for NormalAttr where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
NormalAttr {
item: ref mut __binding_0, tokens: ref mut __binding_1 } =>
{
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3475pub struct NormalAttr {
3476 pub item: AttrItem,
3477 pub tokens: Option<LazyAttrTokenStream>,
3480}
3481
3482impl NormalAttr {
3483 pub fn from_ident(ident: Ident) -> Self {
3484 Self {
3485 item: AttrItem {
3486 unsafety: Safety::Default,
3487 path: Path::from_ident(ident),
3488 args: AttrArgs::Empty,
3489 span: ident.span,
3490 },
3491 tokens: None,
3492 }
3493 }
3494}
3495
3496#[derive(#[automatically_derived]
impl ::core::clone::Clone for AttrItem {
#[inline]
fn clone(&self) -> AttrItem {
AttrItem {
unsafety: ::core::clone::Clone::clone(&self.unsafety),
path: ::core::clone::Clone::clone(&self.path),
args: ::core::clone::Clone::clone(&self.args),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AttrItem {
fn encode(&self, __encoder: &mut __E) {
match *self {
AttrItem {
unsafety: ref __binding_0,
path: ref __binding_1,
args: ref __binding_2,
span: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AttrItem {
fn decode(__decoder: &mut __D) -> Self {
AttrItem {
unsafety: ::rustc_serialize::Decodable::decode(__decoder),
path: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AttrItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "AttrItem",
"unsafety", &self.unsafety, "path", &self.path, "args",
&self.args, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AttrItem
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AttrItem {
unsafety: ref __binding_0,
path: ref __binding_1,
args: ref __binding_2,
span: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AttrItem where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AttrItem {
unsafety: ref mut __binding_0,
path: ref mut __binding_1,
args: ref mut __binding_2,
span: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
3497pub struct AttrItem {
3498 pub unsafety: Safety,
3499 pub path: Path,
3500 pub args: AttrArgs,
3501 pub span: Span,
3510}
3511
3512#[derive(#[automatically_derived]
impl ::core::clone::Clone for SyntheticAttr {
#[inline]
fn clone(&self) -> SyntheticAttr {
match self {
SyntheticAttr::CfgTrace(__self_0) =>
SyntheticAttr::CfgTrace(::core::clone::Clone::clone(__self_0)),
SyntheticAttr::CfgAttrTrace(__self_0) =>
SyntheticAttr::CfgAttrTrace(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for SyntheticAttr {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
SyntheticAttr::CfgTrace(ref __binding_0) => { 0usize }
SyntheticAttr::CfgAttrTrace(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
SyntheticAttr::CfgTrace(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
SyntheticAttr::CfgAttrTrace(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for SyntheticAttr {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
SyntheticAttr::CfgTrace(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
SyntheticAttr::CfgAttrTrace(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `SyntheticAttr`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for SyntheticAttr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
SyntheticAttr::CfgTrace(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"CfgTrace", &__self_0),
SyntheticAttr::CfgAttrTrace(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"CfgAttrTrace", &__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
SyntheticAttr {
#[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 {
SyntheticAttr::CfgTrace(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
SyntheticAttr::CfgAttrTrace(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
3519pub enum SyntheticAttr {
3520 CfgTrace(CfgEntry),
3529
3530 CfgAttrTrace(CfgEntry),
3538}
3539
3540impl AttrItem {
3541 pub fn is_valid_for_outer_style(&self) -> bool {
3542 self.path == sym::cfg_attr
3543 || self.path == sym::cfg
3544 || self.path == sym::forbid
3545 || self.path == sym::warn
3546 || self.path == sym::allow
3547 || self.path == sym::deny
3548 || self.path == sym::expect
3549 }
3550}
3551
3552#[derive(#[automatically_derived]
impl ::core::clone::Clone for TraitRef {
#[inline]
fn clone(&self) -> TraitRef {
TraitRef {
path: ::core::clone::Clone::clone(&self.path),
ref_id: ::core::clone::Clone::clone(&self.ref_id),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TraitRef {
fn encode(&self, __encoder: &mut __E) {
match *self {
TraitRef { path: ref __binding_0, ref_id: ref __binding_1 }
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TraitRef {
fn decode(__decoder: &mut __D) -> Self {
TraitRef {
path: ::rustc_serialize::Decodable::decode(__decoder),
ref_id: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TraitRef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "TraitRef",
"path", &self.path, "ref_id", &&self.ref_id)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for TraitRef
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TraitRef { path: ref __binding_0, ref_id: ref __binding_1 }
=> {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TraitRef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TraitRef {
path: ref mut __binding_0, ref_id: ref mut __binding_1 } =>
{
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3559pub struct TraitRef {
3560 pub path: Path,
3561 pub ref_id: NodeId,
3562}
3563
3564#[derive(#[automatically_derived]
impl ::core::clone::Clone for Parens {
#[inline]
fn clone(&self) -> Parens {
match self { Parens::Yes => Parens::Yes, Parens::No => Parens::No, }
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Parens {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Parens::Yes => { 0usize }
Parens::No => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self { Parens::Yes => {} Parens::No => {} }
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Parens {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { Parens::Yes }
1usize => { Parens::No }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Parens`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Parens {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self { Parens::Yes => "Yes", Parens::No => "No", })
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Parens where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self { Parens::Yes => {} Parens::No => {} }
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Parens where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self { Parens::Yes => {} Parens::No => {} }
}
}
};Walkable)]
3566pub enum Parens {
3567 Yes,
3568 No,
3569}
3570
3571#[derive(#[automatically_derived]
impl ::core::clone::Clone for PolyTraitRef {
#[inline]
fn clone(&self) -> PolyTraitRef {
PolyTraitRef {
bound_generic_params: ::core::clone::Clone::clone(&self.bound_generic_params),
modifiers: ::core::clone::Clone::clone(&self.modifiers),
trait_ref: ::core::clone::Clone::clone(&self.trait_ref),
span: ::core::clone::Clone::clone(&self.span),
parens: ::core::clone::Clone::clone(&self.parens),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for PolyTraitRef {
fn encode(&self, __encoder: &mut __E) {
match *self {
PolyTraitRef {
bound_generic_params: ref __binding_0,
modifiers: ref __binding_1,
trait_ref: ref __binding_2,
span: ref __binding_3,
parens: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for PolyTraitRef {
fn decode(__decoder: &mut __D) -> Self {
PolyTraitRef {
bound_generic_params: ::rustc_serialize::Decodable::decode(__decoder),
modifiers: ::rustc_serialize::Decodable::decode(__decoder),
trait_ref: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
parens: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for PolyTraitRef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "PolyTraitRef",
"bound_generic_params", &self.bound_generic_params, "modifiers",
&self.modifiers, "trait_ref", &self.trait_ref, "span", &self.span,
"parens", &&self.parens)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for PolyTraitRef
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
PolyTraitRef {
bound_generic_params: ref __binding_0,
modifiers: ref __binding_1,
trait_ref: ref __binding_2,
span: ref __binding_3,
parens: ref __binding_4 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for PolyTraitRef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
PolyTraitRef {
bound_generic_params: ref mut __binding_0,
modifiers: ref mut __binding_1,
trait_ref: ref mut __binding_2,
span: ref mut __binding_3,
parens: ref mut __binding_4 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
}
}
}
}
};Walkable)]
3572pub struct PolyTraitRef {
3573 pub bound_generic_params: ThinVec<GenericParam>,
3575
3576 pub modifiers: TraitBoundModifiers,
3578
3579 pub trait_ref: TraitRef,
3581
3582 pub span: Span,
3583
3584 pub parens: Parens,
3587}
3588
3589impl PolyTraitRef {
3590 pub fn new(
3591 generic_params: ThinVec<GenericParam>,
3592 path: Path,
3593 modifiers: TraitBoundModifiers,
3594 span: Span,
3595 parens: Parens,
3596 ) -> Self {
3597 PolyTraitRef {
3598 bound_generic_params: generic_params,
3599 modifiers,
3600 trait_ref: TraitRef { path, ref_id: DUMMY_NODE_ID },
3601 span,
3602 parens,
3603 }
3604 }
3605}
3606
3607#[derive(#[automatically_derived]
impl ::core::clone::Clone for Visibility {
#[inline]
fn clone(&self) -> Visibility {
Visibility {
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Visibility {
fn encode(&self, __encoder: &mut __E) {
match *self {
Visibility { kind: ref __binding_0, span: ref __binding_1 }
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Visibility {
fn decode(__decoder: &mut __D) -> Self {
Visibility {
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Visibility {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Visibility",
"kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Visibility
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Visibility { kind: ref __binding_0, span: ref __binding_1 }
=> {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Visibility where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Visibility {
kind: ref mut __binding_0, span: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3608pub struct Visibility {
3609 pub kind: VisibilityKind,
3610 pub span: Span,
3611}
3612
3613#[derive(#[automatically_derived]
impl ::core::clone::Clone for VisibilityKind {
#[inline]
fn clone(&self) -> VisibilityKind {
match self {
VisibilityKind::Public => VisibilityKind::Public,
VisibilityKind::Restricted {
path: __self_0, id: __self_1, shorthand: __self_2 } =>
VisibilityKind::Restricted {
path: ::core::clone::Clone::clone(__self_0),
id: ::core::clone::Clone::clone(__self_1),
shorthand: ::core::clone::Clone::clone(__self_2),
},
VisibilityKind::Inherited => VisibilityKind::Inherited,
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for VisibilityKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
VisibilityKind::Public => { 0usize }
VisibilityKind::Restricted {
path: ref __binding_0,
id: ref __binding_1,
shorthand: ref __binding_2 } => {
1usize
}
VisibilityKind::Inherited => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
VisibilityKind::Public => {}
VisibilityKind::Restricted {
path: ref __binding_0,
id: ref __binding_1,
shorthand: 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);
}
VisibilityKind::Inherited => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for VisibilityKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { VisibilityKind::Public }
1usize => {
VisibilityKind::Restricted {
path: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
shorthand: ::rustc_serialize::Decodable::decode(__decoder),
}
}
2usize => { VisibilityKind::Inherited }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `VisibilityKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for VisibilityKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
VisibilityKind::Public =>
::core::fmt::Formatter::write_str(f, "Public"),
VisibilityKind::Restricted {
path: __self_0, id: __self_1, shorthand: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"Restricted", "path", __self_0, "id", __self_1, "shorthand",
&__self_2),
VisibilityKind::Inherited =>
::core::fmt::Formatter::write_str(f, "Inherited"),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
VisibilityKind where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
VisibilityKind::Public => {}
VisibilityKind::Restricted {
path: ref __binding_0,
id: ref __binding_1,
shorthand: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
VisibilityKind::Inherited => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for VisibilityKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
VisibilityKind::Public => {}
VisibilityKind::Restricted {
path: ref mut __binding_0,
id: ref mut __binding_1,
shorthand: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
VisibilityKind::Inherited => {}
}
}
}
};Walkable)]
3614pub enum VisibilityKind {
3615 Public,
3616 Restricted { path: Box<Path>, id: NodeId, shorthand: bool },
3617 Inherited,
3618}
3619
3620impl VisibilityKind {
3621 pub fn is_pub(&self) -> bool {
3622 #[allow(non_exhaustive_omitted_patterns)] match self {
VisibilityKind::Public => true,
_ => false,
}matches!(self, VisibilityKind::Public)
3623 }
3624}
3625
3626#[derive(#[automatically_derived]
impl ::core::clone::Clone for ImplRestriction {
#[inline]
fn clone(&self) -> ImplRestriction {
ImplRestriction {
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ImplRestriction {
fn encode(&self, __encoder: &mut __E) {
match *self {
ImplRestriction {
kind: ref __binding_0, span: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ImplRestriction {
fn decode(__decoder: &mut __D) -> Self {
ImplRestriction {
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ImplRestriction {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"ImplRestriction", "kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
ImplRestriction where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ImplRestriction {
kind: ref __binding_0, span: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ImplRestriction where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ImplRestriction {
kind: ref mut __binding_0, span: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3627pub struct ImplRestriction {
3628 pub kind: RestrictionKind,
3629 pub span: Span,
3630}
3631
3632#[derive(#[automatically_derived]
impl ::core::clone::Clone for MutRestriction {
#[inline]
fn clone(&self) -> MutRestriction {
MutRestriction {
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MutRestriction {
fn encode(&self, __encoder: &mut __E) {
match *self {
MutRestriction {
kind: ref __binding_0, span: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MutRestriction {
fn decode(__decoder: &mut __D) -> Self {
MutRestriction {
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MutRestriction {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"MutRestriction", "kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
MutRestriction where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MutRestriction {
kind: ref __binding_0, span: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for MutRestriction where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MutRestriction {
kind: ref mut __binding_0, span: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3633pub struct MutRestriction {
3634 pub kind: RestrictionKind,
3635 pub span: Span,
3641}
3642
3643#[derive(#[automatically_derived]
impl ::core::clone::Clone for RestrictionKind {
#[inline]
fn clone(&self) -> RestrictionKind {
match self {
RestrictionKind::Unrestricted => RestrictionKind::Unrestricted,
RestrictionKind::Restricted {
path: __self_0, id: __self_1, shorthand: __self_2 } =>
RestrictionKind::Restricted {
path: ::core::clone::Clone::clone(__self_0),
id: ::core::clone::Clone::clone(__self_1),
shorthand: ::core::clone::Clone::clone(__self_2),
},
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for RestrictionKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RestrictionKind::Unrestricted => { 0usize }
RestrictionKind::Restricted {
path: ref __binding_0,
id: ref __binding_1,
shorthand: ref __binding_2 } => {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
RestrictionKind::Unrestricted => {}
RestrictionKind::Restricted {
path: ref __binding_0,
id: ref __binding_1,
shorthand: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for RestrictionKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RestrictionKind::Unrestricted }
1usize => {
RestrictionKind::Restricted {
path: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
shorthand: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RestrictionKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for RestrictionKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
RestrictionKind::Unrestricted =>
::core::fmt::Formatter::write_str(f, "Unrestricted"),
RestrictionKind::Restricted {
path: __self_0, id: __self_1, shorthand: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"Restricted", "path", __self_0, "id", __self_1, "shorthand",
&__self_2),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
RestrictionKind where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
RestrictionKind::Unrestricted => {}
RestrictionKind::Restricted {
path: ref __binding_0,
id: ref __binding_1,
shorthand: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for RestrictionKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
RestrictionKind::Unrestricted => {}
RestrictionKind::Restricted {
path: ref mut __binding_0,
id: ref mut __binding_1,
shorthand: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
3644pub enum RestrictionKind {
3645 Unrestricted,
3646 Restricted { path: Box<Path>, id: NodeId, shorthand: bool },
3647}
3648
3649#[derive(#[automatically_derived]
impl ::core::clone::Clone for FieldDef {
#[inline]
fn clone(&self) -> FieldDef {
FieldDef {
attrs: ::core::clone::Clone::clone(&self.attrs),
id: ::core::clone::Clone::clone(&self.id),
span: ::core::clone::Clone::clone(&self.span),
vis: ::core::clone::Clone::clone(&self.vis),
extras: ::core::clone::Clone::clone(&self.extras),
ident: ::core::clone::Clone::clone(&self.ident),
ty: ::core::clone::Clone::clone(&self.ty),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for FieldDef {
fn encode(&self, __encoder: &mut __E) {
match *self {
FieldDef {
attrs: ref __binding_0,
id: ref __binding_1,
span: ref __binding_2,
vis: ref __binding_3,
extras: ref __binding_4,
ident: ref __binding_5,
ty: ref __binding_6,
is_placeholder: ref __binding_7 } => {
::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);
::rustc_serialize::Encodable::<__E>::encode(__binding_7,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for FieldDef {
fn decode(__decoder: &mut __D) -> Self {
FieldDef {
attrs: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
vis: ::rustc_serialize::Decodable::decode(__decoder),
extras: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
ty: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for FieldDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["attrs", "id", "span", "vis", "extras", "ident", "ty",
"is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.attrs, &self.id, &self.span, &self.vis, &self.extras,
&self.ident, &self.ty, &&self.is_placeholder];
::core::fmt::Formatter::debug_struct_fields_finish(f, "FieldDef",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for FieldDef
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
FieldDef {
attrs: ref __binding_0,
id: ref __binding_1,
span: ref __binding_2,
vis: ref __binding_3,
extras: ref __binding_4,
ident: ref __binding_5,
ty: ref __binding_6,
is_placeholder: ref __binding_7 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_7,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for FieldDef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
FieldDef {
attrs: ref mut __binding_0,
id: ref mut __binding_1,
span: ref mut __binding_2,
vis: ref mut __binding_3,
extras: ref mut __binding_4,
ident: ref mut __binding_5,
ty: ref mut __binding_6,
is_placeholder: ref mut __binding_7 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_7,
__visitor, ())
}
}
}
}
}
};Walkable)]
3653pub struct FieldDef {
3654 pub attrs: AttrVec,
3655 pub id: NodeId,
3656 pub span: Span,
3657 pub vis: Visibility,
3658 pub extras: Option<Box<FieldDefExtras>>,
3659 pub ident: Option<Ident>,
3660
3661 pub ty: Box<Ty>,
3662 pub is_placeholder: bool,
3663}
3664
3665#[derive(#[automatically_derived]
impl ::core::clone::Clone for FieldDefExtras {
#[inline]
fn clone(&self) -> FieldDefExtras {
FieldDefExtras {
safety: ::core::clone::Clone::clone(&self.safety),
mut_restriction: ::core::clone::Clone::clone(&self.mut_restriction),
default: ::core::clone::Clone::clone(&self.default),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for FieldDefExtras {
fn encode(&self, __encoder: &mut __E) {
match *self {
FieldDefExtras {
safety: ref __binding_0,
mut_restriction: ref __binding_1,
default: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for FieldDefExtras {
fn decode(__decoder: &mut __D) -> Self {
FieldDefExtras {
safety: ::rustc_serialize::Decodable::decode(__decoder),
mut_restriction: ::rustc_serialize::Decodable::decode(__decoder),
default: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for FieldDefExtras {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"FieldDefExtras", "safety", &self.safety, "mut_restriction",
&self.mut_restriction, "default", &&self.default)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
FieldDefExtras where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
FieldDefExtras {
safety: ref __binding_0,
mut_restriction: ref __binding_1,
default: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for FieldDefExtras where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
FieldDefExtras {
safety: ref mut __binding_0,
mut_restriction: ref mut __binding_1,
default: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
3669pub struct FieldDefExtras {
3670 pub safety: Safety,
3671 pub mut_restriction: MutRestriction,
3672 pub default: Option<AnonConst>,
3673}
3674
3675impl FieldDef {
3676 pub fn mut_restriction(&self) -> &MutRestriction {
3677 static DEFAULT: MutRestriction =
3678 MutRestriction { kind: RestrictionKind::Unrestricted, span: DUMMY_SP };
3679
3680 self.extras.as_ref().map_or(&DEFAULT, |extras| &extras.mut_restriction)
3681 }
3682
3683 pub fn default_value(&self) -> Option<&AnonConst> {
3684 self.extras.as_ref().and_then(|e| e.default.as_ref())
3685 }
3686
3687 pub fn safety(&self) -> Safety {
3688 self.extras.as_ref().map_or(Safety::Default, |extras| extras.safety)
3689 }
3690}
3691#[derive(#[automatically_derived]
impl ::core::marker::Copy for Recovered { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Recovered {
#[inline]
fn clone(&self) -> Recovered {
let _: ::core::clone::AssertParamIsClone<ErrorGuaranteed>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Recovered {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Recovered::No => ::core::fmt::Formatter::write_str(f, "No"),
Recovered::Yes(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Yes",
&__self_0),
}
}
}Debug, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Recovered {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Recovered::No => { 0usize }
Recovered::Yes(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Recovered::No => {}
Recovered::Yes(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Recovered {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { Recovered::No }
1usize => {
Recovered::Yes(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Recovered`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Recovered {
#[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 {
Recovered::No => {}
Recovered::Yes(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Recovered
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Recovered::No => {}
Recovered::Yes(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Recovered where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Recovered::No => {}
Recovered::Yes(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3693pub enum Recovered {
3694 No,
3695 Yes(ErrorGuaranteed),
3696}
3697
3698#[derive(#[automatically_derived]
impl ::core::clone::Clone for VariantData {
#[inline]
fn clone(&self) -> VariantData {
match self {
VariantData::Struct { fields: __self_0, recovered: __self_1 } =>
VariantData::Struct {
fields: ::core::clone::Clone::clone(__self_0),
recovered: ::core::clone::Clone::clone(__self_1),
},
VariantData::Tuple(__self_0, __self_1) =>
VariantData::Tuple(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
VariantData::Unit(__self_0) =>
VariantData::Unit(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for VariantData {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
VariantData::Struct {
fields: ref __binding_0, recovered: ref __binding_1 } => {
0usize
}
VariantData::Tuple(ref __binding_0, ref __binding_1) => {
1usize
}
VariantData::Unit(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
VariantData::Struct {
fields: ref __binding_0, recovered: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
VariantData::Tuple(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
VariantData::Unit(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for VariantData {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
VariantData::Struct {
fields: ::rustc_serialize::Decodable::decode(__decoder),
recovered: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
VariantData::Tuple(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
VariantData::Unit(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `VariantData`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for VariantData {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
VariantData::Struct { fields: __self_0, recovered: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Struct", "fields", __self_0, "recovered", &__self_1),
VariantData::Tuple(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Tuple",
__self_0, &__self_1),
VariantData::Unit(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Unit",
&__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for VariantData
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
VariantData::Struct {
fields: ref __binding_0, recovered: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
VariantData::Tuple(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
VariantData::Unit(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for VariantData where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
VariantData::Struct {
fields: ref mut __binding_0, recovered: ref mut __binding_1
} => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
VariantData::Tuple(ref mut __binding_0, ref mut __binding_1)
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
VariantData::Unit(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3700pub enum VariantData {
3701 Struct { fields: ThinVec<FieldDef>, recovered: Recovered },
3705 Tuple(ThinVec<FieldDef>, NodeId),
3709 Unit(NodeId),
3713}
3714
3715impl VariantData {
3716 pub fn fields(&self) -> &[FieldDef] {
3718 match self {
3719 VariantData::Struct { fields, .. } | VariantData::Tuple(fields, _) => fields,
3720 _ => &[],
3721 }
3722 }
3723
3724 pub fn ctor_node_id(&self) -> Option<NodeId> {
3726 match *self {
3727 VariantData::Struct { .. } => None,
3728 VariantData::Tuple(_, id) | VariantData::Unit(id) => Some(id),
3729 }
3730 }
3731}
3732
3733#[derive(#[automatically_derived]
impl<K: ::core::clone::Clone> ::core::clone::Clone for Item<K> {
#[inline]
fn clone(&self) -> Item<K> {
Item {
attrs: ::core::clone::Clone::clone(&self.attrs),
id: ::core::clone::Clone::clone(&self.id),
span: ::core::clone::Clone::clone(&self.span),
vis: ::core::clone::Clone::clone(&self.vis),
kind: ::core::clone::Clone::clone(&self.kind),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}Clone, const _: () =
{
impl<K, __E: ::rustc_span::SpanEncoder>
::rustc_serialize::Encodable<__E> for Item<K> where
K: ::rustc_serialize::Encodable<__E> {
fn encode(&self, __encoder: &mut __E) {
match *self {
Item {
attrs: ref __binding_0,
id: ref __binding_1,
span: ref __binding_2,
vis: ref __binding_3,
kind: ref __binding_4,
tokens: ref __binding_5 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<K, __D: ::rustc_span::SpanDecoder>
::rustc_serialize::Decodable<__D> for Item<K> where
K: ::rustc_serialize::Decodable<__D> {
fn decode(__decoder: &mut __D) -> Self {
Item {
attrs: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
vis: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
tokens: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl<K: ::core::fmt::Debug> ::core::fmt::Debug for Item<K> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["attrs", "id", "span", "vis", "kind", "tokens"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.attrs, &self.id, &self.span, &self.vis, &self.kind,
&&self.tokens];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Item", names,
values)
}
}Debug)]
3735pub struct Item<K = ItemKind> {
3736 pub attrs: AttrVec,
3737 pub id: NodeId,
3738 pub span: Span,
3739 pub vis: Visibility,
3740
3741 pub kind: K,
3742
3743 pub tokens: Option<LazyAttrTokenStream>,
3751}
3752
3753impl Item {
3754 pub fn span_with_attributes(&self) -> Span {
3756 self.attrs.iter().fold(self.span, |acc, attr| acc.to(attr.span))
3757 }
3758
3759 pub fn opt_generics(&self) -> Option<&Generics> {
3760 match &self.kind {
3761 ItemKind::ExternCrate(..)
3762 | ItemKind::ConstBlock(_)
3763 | ItemKind::Use(_)
3764 | ItemKind::Mod(..)
3765 | ItemKind::ForeignMod(_)
3766 | ItemKind::GlobalAsm(_)
3767 | ItemKind::MacCall(_)
3768 | ItemKind::Delegation(_)
3769 | ItemKind::DelegationMac(_)
3770 | ItemKind::MacroDef(..) => None,
3771 ItemKind::Static(_) => None,
3772 ItemKind::Const(i) => Some(&i.generics),
3773 ItemKind::Fn(i) => Some(&i.generics),
3774 ItemKind::TyAlias(i) => Some(&i.generics),
3775 ItemKind::TraitAlias(i) => Some(&i.generics),
3776
3777 ItemKind::Enum(_, generics, _)
3778 | ItemKind::Struct(_, generics, _)
3779 | ItemKind::Union(_, generics, _) => Some(&generics),
3780 ItemKind::Trait(i) => Some(&i.generics),
3781 ItemKind::Impl(i) => Some(&i.generics),
3782 }
3783 }
3784}
3785
3786impl Item<AssocItemKind> {
3787 pub fn opt_generics(&self) -> Option<&Generics> {
3788 match &self.kind {
3789 AssocItemKind::Fn(fun) => Some(&fun.generics),
3790 AssocItemKind::Const(ct) => Some(&ct.generics),
3791 AssocItemKind::Type(ty) => Some(&ty.generics),
3792 AssocItemKind::Delegation(..)
3793 | AssocItemKind::MacCall(_)
3794 | AssocItemKind::DelegationMac(_) => None,
3795 }
3796 }
3797}
3798
3799#[derive(#[automatically_derived]
impl ::core::clone::Clone for Extern {
#[inline]
fn clone(&self) -> Extern {
let _: ::core::clone::AssertParamIsClone<Span>;
let _: ::core::clone::AssertParamIsClone<StrLit>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Extern { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Extern {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Extern::None => { 0usize }
Extern::Implicit(ref __binding_0) => { 1usize }
Extern::Explicit(ref __binding_0, ref __binding_1) => {
2usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Extern::None => {}
Extern::Implicit(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Extern::Explicit(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Extern {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { Extern::None }
1usize => {
Extern::Implicit(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
Extern::Explicit(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Extern`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Extern {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Extern::None => ::core::fmt::Formatter::write_str(f, "None"),
Extern::Implicit(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Implicit", &__self_0),
Extern::Explicit(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Explicit", __self_0, &__self_1),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Extern where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Extern::None => {}
Extern::Implicit(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
Extern::Explicit(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Extern where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Extern::None => {}
Extern::Implicit(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
Extern::Explicit(ref mut __binding_0, ref mut __binding_1)
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3801pub enum Extern {
3802 None,
3806 Implicit(Span),
3812 Explicit(StrLit, Span),
3816}
3817
3818impl Extern {
3819 pub fn from_abi(abi: Option<StrLit>, span: Span) -> Extern {
3820 match abi {
3821 Some(name) => Extern::Explicit(name, span),
3822 None => Extern::Implicit(span),
3823 }
3824 }
3825
3826 pub fn span(self) -> Option<Span> {
3827 match self {
3828 Extern::None => None,
3829 Extern::Implicit(span) | Extern::Explicit(_, span) => Some(span),
3830 }
3831 }
3832}
3833
3834#[derive(#[automatically_derived]
impl ::core::clone::Clone for FnHeader {
#[inline]
fn clone(&self) -> FnHeader {
let _: ::core::clone::AssertParamIsClone<Const>;
let _: ::core::clone::AssertParamIsClone<Option<CoroutineKind>>;
let _: ::core::clone::AssertParamIsClone<Safety>;
let _: ::core::clone::AssertParamIsClone<Extern>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for FnHeader { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for FnHeader {
fn encode(&self, __encoder: &mut __E) {
match *self {
FnHeader {
constness: ref __binding_0,
coroutine_kind: ref __binding_1,
safety: ref __binding_2,
ext: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for FnHeader {
fn decode(__decoder: &mut __D) -> Self {
FnHeader {
constness: ::rustc_serialize::Decodable::decode(__decoder),
coroutine_kind: ::rustc_serialize::Decodable::decode(__decoder),
safety: ::rustc_serialize::Decodable::decode(__decoder),
ext: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for FnHeader {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "FnHeader",
"constness", &self.constness, "coroutine_kind",
&self.coroutine_kind, "safety", &self.safety, "ext", &&self.ext)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for FnHeader
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
FnHeader {
constness: ref __binding_0,
coroutine_kind: ref __binding_1,
safety: ref __binding_2,
ext: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for FnHeader where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
FnHeader {
constness: ref mut __binding_0,
coroutine_kind: ref mut __binding_1,
safety: ref mut __binding_2,
ext: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
3839pub struct FnHeader {
3840 pub constness: Const,
3842 pub coroutine_kind: Option<CoroutineKind>,
3844 pub safety: Safety,
3846 pub ext: Extern,
3848}
3849
3850impl FnHeader {
3851 pub fn has_qualifiers(&self) -> bool {
3853 let Self { safety, coroutine_kind, constness, ext } = self;
3854 #[allow(non_exhaustive_omitted_patterns)] match safety {
Safety::Unsafe(_) => true,
_ => false,
}matches!(safety, Safety::Unsafe(_))
3855 || coroutine_kind.is_some()
3856 || #[allow(non_exhaustive_omitted_patterns)] match constness {
Const::Yes(_) => true,
_ => false,
}matches!(constness, Const::Yes(_))
3857 || !#[allow(non_exhaustive_omitted_patterns)] match ext {
Extern::None => true,
_ => false,
}matches!(ext, Extern::None)
3858 }
3859
3860 pub fn span(&self) -> Option<Span> {
3861 let mut spans = smallvec::SmallVec::<[Span; 4]>::new();
3862
3863 match self.ext {
3864 Extern::Implicit(span) | Extern::Explicit(_, span) => spans.push(span),
3865 Extern::None => {}
3866 }
3867
3868 match self.safety {
3869 Safety::Unsafe(span) | Safety::Safe(span) => spans.push(span),
3870 Safety::Default => {}
3871 };
3872
3873 if let Some(coroutine_kind) = self.coroutine_kind {
3874 spans.push(coroutine_kind.span());
3875 }
3876
3877 if let Const::Yes(span) = self.constness {
3878 spans.push(span)
3879 }
3880
3881 spans.into_iter().reduce(Span::to)
3882 }
3883}
3884
3885impl Default for FnHeader {
3886 fn default() -> FnHeader {
3887 FnHeader {
3888 safety: Safety::Default,
3889 coroutine_kind: None,
3890 constness: Const::No,
3891 ext: Extern::None,
3892 }
3893 }
3894}
3895
3896#[derive(#[automatically_derived]
impl ::core::clone::Clone for TraitAlias {
#[inline]
fn clone(&self) -> TraitAlias {
TraitAlias {
constness: ::core::clone::Clone::clone(&self.constness),
ident: ::core::clone::Clone::clone(&self.ident),
generics: ::core::clone::Clone::clone(&self.generics),
bounds: ::core::clone::Clone::clone(&self.bounds),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TraitAlias {
fn encode(&self, __encoder: &mut __E) {
match *self {
TraitAlias {
constness: ref __binding_0,
ident: ref __binding_1,
generics: ref __binding_2,
bounds: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TraitAlias {
fn decode(__decoder: &mut __D) -> Self {
TraitAlias {
constness: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
generics: ::rustc_serialize::Decodable::decode(__decoder),
bounds: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TraitAlias {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "TraitAlias",
"constness", &self.constness, "ident", &self.ident, "generics",
&self.generics, "bounds", &&self.bounds)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for TraitAlias
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TraitAlias {
constness: ref __binding_0,
ident: ref __binding_1,
generics: ref __binding_2,
bounds: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, (BoundKind::Bound))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TraitAlias where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TraitAlias {
constness: ref mut __binding_0,
ident: ref mut __binding_1,
generics: ref mut __binding_2,
bounds: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, (BoundKind::Bound))
}
}
}
}
}
};Walkable)]
3897pub struct TraitAlias {
3898 pub constness: Const,
3899 pub ident: Ident,
3900 pub generics: Generics,
3901 #[visitable(extra = BoundKind::Bound)]
3902 pub bounds: GenericBounds,
3903}
3904
3905#[derive(#[automatically_derived]
impl ::core::clone::Clone for Trait {
#[inline]
fn clone(&self) -> Trait {
Trait {
impl_restriction: ::core::clone::Clone::clone(&self.impl_restriction),
constness: ::core::clone::Clone::clone(&self.constness),
safety: ::core::clone::Clone::clone(&self.safety),
is_auto: ::core::clone::Clone::clone(&self.is_auto),
ident: ::core::clone::Clone::clone(&self.ident),
generics: ::core::clone::Clone::clone(&self.generics),
bounds: ::core::clone::Clone::clone(&self.bounds),
items: ::core::clone::Clone::clone(&self.items),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Trait {
fn encode(&self, __encoder: &mut __E) {
match *self {
Trait {
impl_restriction: ref __binding_0,
constness: ref __binding_1,
safety: ref __binding_2,
is_auto: ref __binding_3,
ident: ref __binding_4,
generics: ref __binding_5,
bounds: ref __binding_6,
items: ref __binding_7 } => {
::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);
::rustc_serialize::Encodable::<__E>::encode(__binding_7,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Trait {
fn decode(__decoder: &mut __D) -> Self {
Trait {
impl_restriction: ::rustc_serialize::Decodable::decode(__decoder),
constness: ::rustc_serialize::Decodable::decode(__decoder),
safety: ::rustc_serialize::Decodable::decode(__decoder),
is_auto: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
generics: ::rustc_serialize::Decodable::decode(__decoder),
bounds: ::rustc_serialize::Decodable::decode(__decoder),
items: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Trait {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["impl_restriction", "constness", "safety", "is_auto", "ident",
"generics", "bounds", "items"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.impl_restriction, &self.constness, &self.safety,
&self.is_auto, &self.ident, &self.generics, &self.bounds,
&&self.items];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Trait", names,
values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Trait where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Trait {
impl_restriction: ref __binding_0,
constness: ref __binding_1,
safety: ref __binding_2,
is_auto: ref __binding_3,
ident: ref __binding_4,
generics: ref __binding_5,
bounds: ref __binding_6,
items: ref __binding_7 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, (BoundKind::SuperTraits))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_7,
__visitor, (AssocCtxt::Trait))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Trait where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Trait {
impl_restriction: ref mut __binding_0,
constness: ref mut __binding_1,
safety: ref mut __binding_2,
is_auto: ref mut __binding_3,
ident: ref mut __binding_4,
generics: ref mut __binding_5,
bounds: ref mut __binding_6,
items: ref mut __binding_7 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, (BoundKind::SuperTraits))
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_7,
__visitor, (AssocCtxt::Trait))
}
}
}
}
}
};Walkable)]
3906pub struct Trait {
3907 pub impl_restriction: ImplRestriction,
3908 pub constness: Const,
3909 pub safety: Safety,
3910 pub is_auto: IsAuto,
3911 pub ident: Ident,
3912 pub generics: Generics,
3913 #[visitable(extra = BoundKind::SuperTraits)]
3914 pub bounds: GenericBounds,
3915 #[visitable(extra = AssocCtxt::Trait)]
3916 pub items: ThinVec<Box<AssocItem>>,
3917}
3918
3919#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyAlias {
#[inline]
fn clone(&self) -> TyAlias {
TyAlias {
defaultness: ::core::clone::Clone::clone(&self.defaultness),
ident: ::core::clone::Clone::clone(&self.ident),
generics: ::core::clone::Clone::clone(&self.generics),
after_where_clause: ::core::clone::Clone::clone(&self.after_where_clause),
bounds: ::core::clone::Clone::clone(&self.bounds),
ty: ::core::clone::Clone::clone(&self.ty),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TyAlias {
fn encode(&self, __encoder: &mut __E) {
match *self {
TyAlias {
defaultness: ref __binding_0,
ident: ref __binding_1,
generics: ref __binding_2,
after_where_clause: ref __binding_3,
bounds: ref __binding_4,
ty: ref __binding_5 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TyAlias {
fn decode(__decoder: &mut __D) -> Self {
TyAlias {
defaultness: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
generics: ::rustc_serialize::Decodable::decode(__decoder),
after_where_clause: ::rustc_serialize::Decodable::decode(__decoder),
bounds: ::rustc_serialize::Decodable::decode(__decoder),
ty: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TyAlias {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["defaultness", "ident", "generics", "after_where_clause",
"bounds", "ty"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.defaultness, &self.ident, &self.generics,
&self.after_where_clause, &self.bounds, &&self.ty];
::core::fmt::Formatter::debug_struct_fields_finish(f, "TyAlias",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for TyAlias
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TyAlias {
defaultness: ref __binding_0,
ident: ref __binding_1,
generics: ref __binding_2,
after_where_clause: ref __binding_3,
bounds: ref __binding_4,
ty: ref __binding_5 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, (BoundKind::Bound))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TyAlias where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TyAlias {
defaultness: ref mut __binding_0,
ident: ref mut __binding_1,
generics: ref mut __binding_2,
after_where_clause: ref mut __binding_3,
bounds: ref mut __binding_4,
ty: ref mut __binding_5 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, (BoundKind::Bound))
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
}
}
}
}
};Walkable)]
3920pub struct TyAlias {
3921 pub defaultness: Defaultness,
3922 pub ident: Ident,
3923 pub generics: Generics,
3924 pub after_where_clause: WhereClause,
3939 #[visitable(extra = BoundKind::Bound)]
3940 pub bounds: GenericBounds,
3941 pub ty: Option<Box<Ty>>,
3942}
3943
3944#[derive(#[automatically_derived]
impl ::core::clone::Clone for Impl {
#[inline]
fn clone(&self) -> Impl {
Impl {
generics: ::core::clone::Clone::clone(&self.generics),
constness: ::core::clone::Clone::clone(&self.constness),
of_trait: ::core::clone::Clone::clone(&self.of_trait),
self_ty: ::core::clone::Clone::clone(&self.self_ty),
items: ::core::clone::Clone::clone(&self.items),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Impl {
fn encode(&self, __encoder: &mut __E) {
match *self {
Impl {
generics: ref __binding_0,
constness: ref __binding_1,
of_trait: ref __binding_2,
self_ty: ref __binding_3,
items: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Impl {
fn decode(__decoder: &mut __D) -> Self {
Impl {
generics: ::rustc_serialize::Decodable::decode(__decoder),
constness: ::rustc_serialize::Decodable::decode(__decoder),
of_trait: ::rustc_serialize::Decodable::decode(__decoder),
self_ty: ::rustc_serialize::Decodable::decode(__decoder),
items: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Impl {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "Impl",
"generics", &self.generics, "constness", &self.constness,
"of_trait", &self.of_trait, "self_ty", &self.self_ty, "items",
&&self.items)
}
}Debug)]
3945pub struct Impl {
3946 pub generics: Generics,
3947 pub constness: Const,
3948 pub of_trait: Option<Box<TraitImplHeader>>,
3949 pub self_ty: Box<Ty>,
3950 pub items: ThinVec<Box<AssocItem>>,
3951}
3952
3953#[derive(#[automatically_derived]
impl ::core::clone::Clone for TraitImplHeader {
#[inline]
fn clone(&self) -> TraitImplHeader {
TraitImplHeader {
defaultness: ::core::clone::Clone::clone(&self.defaultness),
safety: ::core::clone::Clone::clone(&self.safety),
polarity: ::core::clone::Clone::clone(&self.polarity),
trait_ref: ::core::clone::Clone::clone(&self.trait_ref),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TraitImplHeader {
fn encode(&self, __encoder: &mut __E) {
match *self {
TraitImplHeader {
defaultness: ref __binding_0,
safety: ref __binding_1,
polarity: ref __binding_2,
trait_ref: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TraitImplHeader {
fn decode(__decoder: &mut __D) -> Self {
TraitImplHeader {
defaultness: ::rustc_serialize::Decodable::decode(__decoder),
safety: ::rustc_serialize::Decodable::decode(__decoder),
polarity: ::rustc_serialize::Decodable::decode(__decoder),
trait_ref: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TraitImplHeader {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f,
"TraitImplHeader", "defaultness", &self.defaultness, "safety",
&self.safety, "polarity", &self.polarity, "trait_ref",
&&self.trait_ref)
}
}Debug)]
3954pub struct TraitImplHeader {
3955 pub defaultness: Defaultness,
3956 pub safety: Safety,
3957 pub polarity: ImplPolarity,
3958 pub trait_ref: TraitRef,
3959}
3960
3961#[derive(#[automatically_derived]
impl ::core::clone::Clone for FnContract {
#[inline]
fn clone(&self) -> FnContract {
FnContract {
declarations: ::core::clone::Clone::clone(&self.declarations),
requires: ::core::clone::Clone::clone(&self.requires),
ensures: ::core::clone::Clone::clone(&self.ensures),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for FnContract {
fn encode(&self, __encoder: &mut __E) {
match *self {
FnContract {
declarations: ref __binding_0,
requires: ref __binding_1,
ensures: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for FnContract {
fn decode(__decoder: &mut __D) -> Self {
FnContract {
declarations: ::rustc_serialize::Decodable::decode(__decoder),
requires: ::rustc_serialize::Decodable::decode(__decoder),
ensures: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for FnContract {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "FnContract",
"declarations", &self.declarations, "requires", &self.requires,
"ensures", &&self.ensures)
}
}Debug, #[automatically_derived]
impl ::core::default::Default for FnContract {
#[inline]
fn default() -> FnContract {
FnContract {
declarations: ::core::default::Default::default(),
requires: ::core::default::Default::default(),
ensures: ::core::default::Default::default(),
}
}
}Default, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for FnContract
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
FnContract {
declarations: ref __binding_0,
requires: ref __binding_1,
ensures: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for FnContract where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
FnContract {
declarations: ref mut __binding_0,
requires: ref mut __binding_1,
ensures: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
3962pub struct FnContract {
3963 pub declarations: ThinVec<Stmt>,
3966 pub requires: Option<Box<Expr>>,
3967 pub ensures: Option<Box<Expr>>,
3968}
3969
3970#[derive(#[automatically_derived]
impl ::core::clone::Clone for Fn {
#[inline]
fn clone(&self) -> Fn {
Fn {
defaultness: ::core::clone::Clone::clone(&self.defaultness),
ident: ::core::clone::Clone::clone(&self.ident),
generics: ::core::clone::Clone::clone(&self.generics),
sig: ::core::clone::Clone::clone(&self.sig),
contract: ::core::clone::Clone::clone(&self.contract),
define_opaque: ::core::clone::Clone::clone(&self.define_opaque),
body: ::core::clone::Clone::clone(&self.body),
eii_impl: ::core::clone::Clone::clone(&self.eii_impl),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Fn {
fn encode(&self, __encoder: &mut __E) {
match *self {
Fn {
defaultness: ref __binding_0,
ident: ref __binding_1,
generics: ref __binding_2,
sig: ref __binding_3,
contract: ref __binding_4,
define_opaque: ref __binding_5,
body: ref __binding_6,
eii_impl: ref __binding_7 } => {
::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);
::rustc_serialize::Encodable::<__E>::encode(__binding_7,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Fn {
fn decode(__decoder: &mut __D) -> Self {
Fn {
defaultness: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
generics: ::rustc_serialize::Decodable::decode(__decoder),
sig: ::rustc_serialize::Decodable::decode(__decoder),
contract: ::rustc_serialize::Decodable::decode(__decoder),
define_opaque: ::rustc_serialize::Decodable::decode(__decoder),
body: ::rustc_serialize::Decodable::decode(__decoder),
eii_impl: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Fn {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["defaultness", "ident", "generics", "sig", "contract",
"define_opaque", "body", "eii_impl"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.defaultness, &self.ident, &self.generics, &self.sig,
&self.contract, &self.define_opaque, &self.body,
&&self.eii_impl];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Fn", names,
values)
}
}Debug)]
3971pub struct Fn {
3972 pub defaultness: Defaultness,
3973 pub ident: Ident,
3974 pub generics: Generics,
3975 pub sig: FnSig,
3976 pub contract: Option<Box<FnContract>>,
3977 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
3978 pub body: Option<Box<Block>>,
3979
3980 pub eii_impl: Option<Box<EiiImpl>>,
3984}
3985
3986impl Fn {
3987 pub fn is_pin_drop_sugar(&self) -> bool {
3988 self.ident.name == sym::drop
3989 && self
3990 .sig
3991 .decl
3992 .inputs
3993 .first()
3994 .and_then(|param| param.to_self())
3995 .is_some_and(|eself| #[allow(non_exhaustive_omitted_patterns)] match eself.node {
SelfKind::Pinned(None, Mutability::Mut) => true,
_ => false,
}matches!(eself.node, SelfKind::Pinned(None, Mutability::Mut)))
3996 }
3997}
3998
3999#[derive(#[automatically_derived]
impl ::core::clone::Clone for EiiImpl {
#[inline]
fn clone(&self) -> EiiImpl {
EiiImpl {
node_id: ::core::clone::Clone::clone(&self.node_id),
eii_macro_path: ::core::clone::Clone::clone(&self.eii_macro_path),
known_eii_macro_resolution: ::core::clone::Clone::clone(&self.known_eii_macro_resolution),
impl_safety: ::core::clone::Clone::clone(&self.impl_safety),
span: ::core::clone::Clone::clone(&self.span),
inner_span: ::core::clone::Clone::clone(&self.inner_span),
is_default: ::core::clone::Clone::clone(&self.is_default),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for EiiImpl {
fn encode(&self, __encoder: &mut __E) {
match *self {
EiiImpl {
node_id: ref __binding_0,
eii_macro_path: ref __binding_1,
known_eii_macro_resolution: ref __binding_2,
impl_safety: ref __binding_3,
span: ref __binding_4,
inner_span: ref __binding_5,
is_default: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for EiiImpl {
fn decode(__decoder: &mut __D) -> Self {
EiiImpl {
node_id: ::rustc_serialize::Decodable::decode(__decoder),
eii_macro_path: ::rustc_serialize::Decodable::decode(__decoder),
known_eii_macro_resolution: ::rustc_serialize::Decodable::decode(__decoder),
impl_safety: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
inner_span: ::rustc_serialize::Decodable::decode(__decoder),
is_default: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for EiiImpl {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["node_id", "eii_macro_path", "known_eii_macro_resolution",
"impl_safety", "span", "inner_span", "is_default"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.node_id, &self.eii_macro_path,
&self.known_eii_macro_resolution, &self.impl_safety,
&self.span, &self.inner_span, &&self.is_default];
::core::fmt::Formatter::debug_struct_fields_finish(f, "EiiImpl",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for EiiImpl
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
EiiImpl {
node_id: ref __binding_0,
eii_macro_path: ref __binding_1,
known_eii_macro_resolution: ref __binding_2,
impl_safety: ref __binding_3,
span: ref __binding_4,
inner_span: ref __binding_5,
is_default: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for EiiImpl where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
EiiImpl {
node_id: ref mut __binding_0,
eii_macro_path: ref mut __binding_1,
known_eii_macro_resolution: ref mut __binding_2,
impl_safety: ref mut __binding_3,
span: ref mut __binding_4,
inner_span: ref mut __binding_5,
is_default: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
}
}
}
}
};Walkable)]
4000pub struct EiiImpl {
4001 pub node_id: NodeId,
4002 pub eii_macro_path: Path,
4003 pub known_eii_macro_resolution: Option<Path>,
4016 pub impl_safety: Safety,
4017 pub span: Span,
4018 pub inner_span: Span,
4019 pub is_default: bool,
4020}
4021
4022#[derive(#[automatically_derived]
impl ::core::clone::Clone for DelegationSource {
#[inline]
fn clone(&self) -> DelegationSource {
let _: ::core::clone::AssertParamIsClone<LocalExpnId>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for DelegationSource { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for DelegationSource {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
DelegationSource::Single => { 0usize }
DelegationSource::List(ref __binding_0) => { 1usize }
DelegationSource::Glob => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
DelegationSource::Single => {}
DelegationSource::List(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
DelegationSource::Glob => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for DelegationSource {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { DelegationSource::Single }
1usize => {
DelegationSource::List(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => { DelegationSource::Glob }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `DelegationSource`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for DelegationSource {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
DelegationSource::Single =>
::core::fmt::Formatter::write_str(f, "Single"),
DelegationSource::List(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "List",
&__self_0),
DelegationSource::Glob =>
::core::fmt::Formatter::write_str(f, "Glob"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for DelegationSource {
#[inline]
fn eq(&self, other: &DelegationSource) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(DelegationSource::List(__self_0),
DelegationSource::List(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for DelegationSource {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<LocalExpnId>;
}
}Eq)]
4023pub enum DelegationSource {
4024 Single,
4025 List(LocalExpnId),
4026 Glob,
4027}
4028
4029#[derive(#[automatically_derived]
impl ::core::clone::Clone for Delegation {
#[inline]
fn clone(&self) -> Delegation {
Delegation {
id: ::core::clone::Clone::clone(&self.id),
qself: ::core::clone::Clone::clone(&self.qself),
path: ::core::clone::Clone::clone(&self.path),
ident: ::core::clone::Clone::clone(&self.ident),
rename: ::core::clone::Clone::clone(&self.rename),
body: ::core::clone::Clone::clone(&self.body),
source: ::core::clone::Clone::clone(&self.source),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Delegation {
fn encode(&self, __encoder: &mut __E) {
match *self {
Delegation {
id: ref __binding_0,
qself: ref __binding_1,
path: ref __binding_2,
ident: ref __binding_3,
rename: ref __binding_4,
body: ref __binding_5,
source: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Delegation {
fn decode(__decoder: &mut __D) -> Self {
Delegation {
id: ::rustc_serialize::Decodable::decode(__decoder),
qself: ::rustc_serialize::Decodable::decode(__decoder),
path: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
rename: ::rustc_serialize::Decodable::decode(__decoder),
body: ::rustc_serialize::Decodable::decode(__decoder),
source: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Delegation {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["id", "qself", "path", "ident", "rename", "body", "source"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.id, &self.qself, &self.path, &self.ident, &self.rename,
&self.body, &&self.source];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Delegation",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Delegation
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Delegation {
id: ref __binding_0,
qself: ref __binding_1,
path: ref __binding_2,
ident: ref __binding_3,
rename: ref __binding_4,
body: ref __binding_5,
source: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Delegation where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Delegation {
id: ref mut __binding_0,
qself: ref mut __binding_1,
path: ref mut __binding_2,
ident: ref mut __binding_3,
rename: ref mut __binding_4,
body: ref mut __binding_5,
source: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{}
}
}
}
}
};Walkable)]
4030pub struct Delegation {
4031 pub id: NodeId,
4033 pub qself: Option<Box<QSelf>>,
4034 pub path: Path,
4035 pub ident: Ident,
4036 pub rename: Option<Ident>,
4037 pub body: Option<Box<Block>>,
4038 #[visitable(ignore)]
4040 pub source: DelegationSource,
4041}
4042
4043impl Delegation {
4044 pub fn last_segment_span(&self) -> Span {
4045 self.path.segments.last().unwrap().ident.span
4046 }
4047}
4048
4049#[derive(#[automatically_derived]
impl ::core::clone::Clone for DelegationSuffixes {
#[inline]
fn clone(&self) -> DelegationSuffixes {
match self {
DelegationSuffixes::List(__self_0) =>
DelegationSuffixes::List(::core::clone::Clone::clone(__self_0)),
DelegationSuffixes::Glob(__self_0) =>
DelegationSuffixes::Glob(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for DelegationSuffixes {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
DelegationSuffixes::List(ref __binding_0) => { 0usize }
DelegationSuffixes::Glob(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
DelegationSuffixes::List(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
DelegationSuffixes::Glob(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for DelegationSuffixes {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
DelegationSuffixes::List(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
DelegationSuffixes::Glob(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `DelegationSuffixes`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for DelegationSuffixes {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
DelegationSuffixes::List(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "List",
&__self_0),
DelegationSuffixes::Glob(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Glob",
&__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
DelegationSuffixes where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
DelegationSuffixes::List(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
DelegationSuffixes::Glob(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for DelegationSuffixes
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
DelegationSuffixes::List(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
DelegationSuffixes::Glob(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
4050pub enum DelegationSuffixes {
4051 List(ThinVec<(Ident, Option<Ident>)>),
4052 Glob(Span),
4053}
4054
4055#[derive(#[automatically_derived]
impl ::core::clone::Clone for DelegationMac {
#[inline]
fn clone(&self) -> DelegationMac {
DelegationMac {
qself: ::core::clone::Clone::clone(&self.qself),
prefix: ::core::clone::Clone::clone(&self.prefix),
suffixes: ::core::clone::Clone::clone(&self.suffixes),
body: ::core::clone::Clone::clone(&self.body),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for DelegationMac {
fn encode(&self, __encoder: &mut __E) {
match *self {
DelegationMac {
qself: ref __binding_0,
prefix: ref __binding_1,
suffixes: ref __binding_2,
body: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for DelegationMac {
fn decode(__decoder: &mut __D) -> Self {
DelegationMac {
qself: ::rustc_serialize::Decodable::decode(__decoder),
prefix: ::rustc_serialize::Decodable::decode(__decoder),
suffixes: ::rustc_serialize::Decodable::decode(__decoder),
body: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for DelegationMac {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "DelegationMac",
"qself", &self.qself, "prefix", &self.prefix, "suffixes",
&self.suffixes, "body", &&self.body)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
DelegationMac where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
DelegationMac {
qself: ref __binding_0,
prefix: ref __binding_1,
suffixes: ref __binding_2,
body: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for DelegationMac where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
DelegationMac {
qself: ref mut __binding_0,
prefix: ref mut __binding_1,
suffixes: ref mut __binding_2,
body: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
4056pub struct DelegationMac {
4057 pub qself: Option<Box<QSelf>>,
4058 pub prefix: Path,
4059 pub suffixes: DelegationSuffixes,
4060 pub body: Option<Box<Block>>,
4061}
4062
4063#[derive(#[automatically_derived]
impl ::core::clone::Clone for StaticItem {
#[inline]
fn clone(&self) -> StaticItem {
StaticItem {
ident: ::core::clone::Clone::clone(&self.ident),
ty: ::core::clone::Clone::clone(&self.ty),
safety: ::core::clone::Clone::clone(&self.safety),
mutability: ::core::clone::Clone::clone(&self.mutability),
expr: ::core::clone::Clone::clone(&self.expr),
define_opaque: ::core::clone::Clone::clone(&self.define_opaque),
eii_impl: ::core::clone::Clone::clone(&self.eii_impl),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for StaticItem {
fn encode(&self, __encoder: &mut __E) {
match *self {
StaticItem {
ident: ref __binding_0,
ty: ref __binding_1,
safety: ref __binding_2,
mutability: ref __binding_3,
expr: ref __binding_4,
define_opaque: ref __binding_5,
eii_impl: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for StaticItem {
fn decode(__decoder: &mut __D) -> Self {
StaticItem {
ident: ::rustc_serialize::Decodable::decode(__decoder),
ty: ::rustc_serialize::Decodable::decode(__decoder),
safety: ::rustc_serialize::Decodable::decode(__decoder),
mutability: ::rustc_serialize::Decodable::decode(__decoder),
expr: ::rustc_serialize::Decodable::decode(__decoder),
define_opaque: ::rustc_serialize::Decodable::decode(__decoder),
eii_impl: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for StaticItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["ident", "ty", "safety", "mutability", "expr", "define_opaque",
"eii_impl"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.ident, &self.ty, &self.safety, &self.mutability,
&self.expr, &self.define_opaque, &&self.eii_impl];
::core::fmt::Formatter::debug_struct_fields_finish(f, "StaticItem",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for StaticItem
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
StaticItem {
ident: ref __binding_0,
ty: ref __binding_1,
safety: ref __binding_2,
mutability: ref __binding_3,
expr: ref __binding_4,
define_opaque: ref __binding_5,
eii_impl: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for StaticItem where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
StaticItem {
ident: ref mut __binding_0,
ty: ref mut __binding_1,
safety: ref mut __binding_2,
mutability: ref mut __binding_3,
expr: ref mut __binding_4,
define_opaque: ref mut __binding_5,
eii_impl: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
}
}
}
}
};Walkable)]
4064pub struct StaticItem {
4065 pub ident: Ident,
4066 pub ty: Box<Ty>,
4067 pub safety: Safety,
4068 pub mutability: Mutability,
4069 pub expr: Option<Box<Expr>>,
4070 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
4071
4072 pub eii_impl: Option<Box<EiiImpl>>,
4076}
4077
4078#[derive(#[automatically_derived]
impl ::core::clone::Clone for ConstItem {
#[inline]
fn clone(&self) -> ConstItem {
ConstItem {
defaultness: ::core::clone::Clone::clone(&self.defaultness),
ident: ::core::clone::Clone::clone(&self.ident),
generics: ::core::clone::Clone::clone(&self.generics),
ty: ::core::clone::Clone::clone(&self.ty),
body: ::core::clone::Clone::clone(&self.body),
kind: ::core::clone::Clone::clone(&self.kind),
define_opaque: ::core::clone::Clone::clone(&self.define_opaque),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ConstItem {
fn encode(&self, __encoder: &mut __E) {
match *self {
ConstItem {
defaultness: ref __binding_0,
ident: ref __binding_1,
generics: ref __binding_2,
ty: ref __binding_3,
body: ref __binding_4,
kind: ref __binding_5,
define_opaque: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ConstItem {
fn decode(__decoder: &mut __D) -> Self {
ConstItem {
defaultness: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
generics: ::rustc_serialize::Decodable::decode(__decoder),
ty: ::rustc_serialize::Decodable::decode(__decoder),
body: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
define_opaque: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ConstItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["defaultness", "ident", "generics", "ty", "body", "kind",
"define_opaque"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.defaultness, &self.ident, &self.generics, &self.ty,
&self.body, &self.kind, &&self.define_opaque];
::core::fmt::Formatter::debug_struct_fields_finish(f, "ConstItem",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ConstItem
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ConstItem {
defaultness: ref __binding_0,
ident: ref __binding_1,
generics: ref __binding_2,
ty: ref __binding_3,
body: ref __binding_4,
kind: ref __binding_5,
define_opaque: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ConstItem where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ConstItem {
defaultness: ref mut __binding_0,
ident: ref mut __binding_1,
generics: ref mut __binding_2,
ty: ref mut __binding_3,
body: ref mut __binding_4,
kind: ref mut __binding_5,
define_opaque: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
}
}
}
}
};Walkable)]
4079pub struct ConstItem {
4080 pub defaultness: Defaultness,
4081 pub ident: Ident,
4082 pub generics: Generics,
4083 pub ty: Box<Ty>,
4084 pub body: Option<Box<Expr>>,
4085 #[visitable(ignore)]
4086 pub kind: ConstItemKind,
4087 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
4088}
4089
4090#[derive(#[automatically_derived]
impl ::core::clone::Clone for ConstItemKind {
#[inline]
fn clone(&self) -> ConstItemKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ConstItemKind { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ConstItemKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ConstItemKind::Body => { 0usize }
ConstItemKind::TypeConst => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ConstItemKind::Body => {}
ConstItemKind::TypeConst => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ConstItemKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { ConstItemKind::Body }
1usize => { ConstItemKind::TypeConst }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ConstItemKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ConstItemKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
ConstItemKind::Body => "Body",
ConstItemKind::TypeConst => "TypeConst",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for ConstItemKind {
#[inline]
fn eq(&self, other: &ConstItemKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ConstItemKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq)]
4091pub enum ConstItemKind {
4092 Body,
4093 TypeConst,
4094}
4095
4096#[derive(#[automatically_derived]
impl ::core::clone::Clone for ConstBlockItem {
#[inline]
fn clone(&self) -> ConstBlockItem {
ConstBlockItem {
id: ::core::clone::Clone::clone(&self.id),
span: ::core::clone::Clone::clone(&self.span),
block: ::core::clone::Clone::clone(&self.block),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ConstBlockItem {
fn encode(&self, __encoder: &mut __E) {
match *self {
ConstBlockItem {
id: ref __binding_0,
span: ref __binding_1,
block: 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);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ConstBlockItem {
fn decode(__decoder: &mut __D) -> Self {
ConstBlockItem {
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
block: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ConstBlockItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"ConstBlockItem", "id", &self.id, "span", &self.span, "block",
&&self.block)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
ConstBlockItem where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ConstBlockItem {
id: ref __binding_0,
span: ref __binding_1,
block: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ConstBlockItem where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ConstBlockItem {
id: ref mut __binding_0,
span: ref mut __binding_1,
block: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
4097pub struct ConstBlockItem {
4098 pub id: NodeId,
4099 pub span: Span,
4100 pub block: Box<Block>,
4101}
4102
4103impl ConstBlockItem {
4104 pub const IDENT: Ident = Ident { name: kw::Underscore, span: DUMMY_SP };
4105}
4106
4107#[derive(#[automatically_derived]
impl ::core::clone::Clone for Guard {
#[inline]
fn clone(&self) -> Guard {
Guard {
cond: ::core::clone::Clone::clone(&self.cond),
span_with_leading_if: ::core::clone::Clone::clone(&self.span_with_leading_if),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Guard {
fn encode(&self, __encoder: &mut __E) {
match *self {
Guard {
cond: ref __binding_0, span_with_leading_if: ref __binding_1
} => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Guard {
fn decode(__decoder: &mut __D) -> Self {
Guard {
cond: ::rustc_serialize::Decodable::decode(__decoder),
span_with_leading_if: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Guard {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Guard", "cond",
&self.cond, "span_with_leading_if", &&self.span_with_leading_if)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Guard where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Guard {
cond: ref __binding_0, span_with_leading_if: ref __binding_1
} => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Guard where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Guard {
cond: ref mut __binding_0,
span_with_leading_if: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
4108pub struct Guard {
4109 pub cond: Expr,
4110 pub span_with_leading_if: Span,
4111}
4112
4113impl Guard {
4114 pub fn span(&self) -> Span {
4115 self.cond.span
4116 }
4117}
4118
4119#[derive(#[automatically_derived]
impl ::core::clone::Clone for ItemKind {
#[inline]
fn clone(&self) -> ItemKind {
match self {
ItemKind::ExternCrate(__self_0, __self_1) =>
ItemKind::ExternCrate(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ItemKind::Use(__self_0) =>
ItemKind::Use(::core::clone::Clone::clone(__self_0)),
ItemKind::Static(__self_0) =>
ItemKind::Static(::core::clone::Clone::clone(__self_0)),
ItemKind::Const(__self_0) =>
ItemKind::Const(::core::clone::Clone::clone(__self_0)),
ItemKind::ConstBlock(__self_0) =>
ItemKind::ConstBlock(::core::clone::Clone::clone(__self_0)),
ItemKind::Fn(__self_0) =>
ItemKind::Fn(::core::clone::Clone::clone(__self_0)),
ItemKind::Mod(__self_0, __self_1, __self_2) =>
ItemKind::Mod(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ItemKind::ForeignMod(__self_0) =>
ItemKind::ForeignMod(::core::clone::Clone::clone(__self_0)),
ItemKind::GlobalAsm(__self_0) =>
ItemKind::GlobalAsm(::core::clone::Clone::clone(__self_0)),
ItemKind::TyAlias(__self_0) =>
ItemKind::TyAlias(::core::clone::Clone::clone(__self_0)),
ItemKind::Enum(__self_0, __self_1, __self_2) =>
ItemKind::Enum(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ItemKind::Struct(__self_0, __self_1, __self_2) =>
ItemKind::Struct(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ItemKind::Union(__self_0, __self_1, __self_2) =>
ItemKind::Union(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ItemKind::Trait(__self_0) =>
ItemKind::Trait(::core::clone::Clone::clone(__self_0)),
ItemKind::TraitAlias(__self_0) =>
ItemKind::TraitAlias(::core::clone::Clone::clone(__self_0)),
ItemKind::Impl(__self_0) =>
ItemKind::Impl(::core::clone::Clone::clone(__self_0)),
ItemKind::MacCall(__self_0) =>
ItemKind::MacCall(::core::clone::Clone::clone(__self_0)),
ItemKind::MacroDef(__self_0, __self_1) =>
ItemKind::MacroDef(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ItemKind::Delegation(__self_0) =>
ItemKind::Delegation(::core::clone::Clone::clone(__self_0)),
ItemKind::DelegationMac(__self_0) =>
ItemKind::DelegationMac(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ItemKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ItemKind::ExternCrate(ref __binding_0, ref __binding_1) => {
0usize
}
ItemKind::Use(ref __binding_0) => { 1usize }
ItemKind::Static(ref __binding_0) => { 2usize }
ItemKind::Const(ref __binding_0) => { 3usize }
ItemKind::ConstBlock(ref __binding_0) => { 4usize }
ItemKind::Fn(ref __binding_0) => { 5usize }
ItemKind::Mod(ref __binding_0, ref __binding_1,
ref __binding_2) => {
6usize
}
ItemKind::ForeignMod(ref __binding_0) => { 7usize }
ItemKind::GlobalAsm(ref __binding_0) => { 8usize }
ItemKind::TyAlias(ref __binding_0) => { 9usize }
ItemKind::Enum(ref __binding_0, ref __binding_1,
ref __binding_2) => {
10usize
}
ItemKind::Struct(ref __binding_0, ref __binding_1,
ref __binding_2) => {
11usize
}
ItemKind::Union(ref __binding_0, ref __binding_1,
ref __binding_2) => {
12usize
}
ItemKind::Trait(ref __binding_0) => { 13usize }
ItemKind::TraitAlias(ref __binding_0) => { 14usize }
ItemKind::Impl(ref __binding_0) => { 15usize }
ItemKind::MacCall(ref __binding_0) => { 16usize }
ItemKind::MacroDef(ref __binding_0, ref __binding_1) => {
17usize
}
ItemKind::Delegation(ref __binding_0) => { 18usize }
ItemKind::DelegationMac(ref __binding_0) => { 19usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ItemKind::ExternCrate(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ItemKind::Use(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::Static(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::Const(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::ConstBlock(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::Fn(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::Mod(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);
}
ItemKind::ForeignMod(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::GlobalAsm(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::TyAlias(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::Enum(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);
}
ItemKind::Struct(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);
}
ItemKind::Union(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);
}
ItemKind::Trait(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::TraitAlias(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::Impl(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::MacCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::MacroDef(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ItemKind::Delegation(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ItemKind::DelegationMac(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ItemKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
ItemKind::ExternCrate(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
ItemKind::Use(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
ItemKind::Static(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
ItemKind::Const(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
ItemKind::ConstBlock(::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
ItemKind::Fn(::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
ItemKind::Mod(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
ItemKind::ForeignMod(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
ItemKind::GlobalAsm(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
ItemKind::TyAlias(::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
ItemKind::Enum(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
ItemKind::Struct(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
ItemKind::Union(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
13usize => {
ItemKind::Trait(::rustc_serialize::Decodable::decode(__decoder))
}
14usize => {
ItemKind::TraitAlias(::rustc_serialize::Decodable::decode(__decoder))
}
15usize => {
ItemKind::Impl(::rustc_serialize::Decodable::decode(__decoder))
}
16usize => {
ItemKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
17usize => {
ItemKind::MacroDef(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
18usize => {
ItemKind::Delegation(::rustc_serialize::Decodable::decode(__decoder))
}
19usize => {
ItemKind::DelegationMac(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ItemKind`, expected 0..20, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ItemKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ItemKind::ExternCrate(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"ExternCrate", __self_0, &__self_1),
ItemKind::Use(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Use",
&__self_0),
ItemKind::Static(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Static",
&__self_0),
ItemKind::Const(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Const",
&__self_0),
ItemKind::ConstBlock(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ConstBlock", &__self_0),
ItemKind::Fn(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Fn",
&__self_0),
ItemKind::Mod(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Mod",
__self_0, __self_1, &__self_2),
ItemKind::ForeignMod(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ForeignMod", &__self_0),
ItemKind::GlobalAsm(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"GlobalAsm", &__self_0),
ItemKind::TyAlias(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TyAlias", &__self_0),
ItemKind::Enum(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Enum",
__self_0, __self_1, &__self_2),
ItemKind::Struct(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Struct",
__self_0, __self_1, &__self_2),
ItemKind::Union(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Union",
__self_0, __self_1, &__self_2),
ItemKind::Trait(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Trait",
&__self_0),
ItemKind::TraitAlias(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TraitAlias", &__self_0),
ItemKind::Impl(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Impl",
&__self_0),
ItemKind::MacCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MacCall", &__self_0),
ItemKind::MacroDef(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"MacroDef", __self_0, &__self_1),
ItemKind::Delegation(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Delegation", &__self_0),
ItemKind::DelegationMac(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DelegationMac", &__self_0),
}
}
}Debug)]
4121pub enum ItemKind {
4122 ExternCrate(Option<Symbol>, Ident),
4126 Use(UseTree),
4130 Static(Box<StaticItem>),
4134 Const(Box<ConstItem>),
4138 ConstBlock(ConstBlockItem),
4143 Fn(Box<Fn>),
4147 Mod(Safety, Ident, ModKind),
4153 ForeignMod(ForeignMod),
4157 GlobalAsm(Box<InlineAsm>),
4159 TyAlias(Box<TyAlias>),
4163 Enum(Ident, Generics, EnumDef),
4167 Struct(Ident, Generics, VariantData),
4171 Union(Ident, Generics, VariantData),
4175 Trait(Box<Trait>),
4179 TraitAlias(Box<TraitAlias>),
4183 Impl(Impl),
4187 MacCall(Box<MacCall>),
4191 MacroDef(Ident, MacroDef),
4193 Delegation(Box<Delegation>),
4197 DelegationMac(Box<DelegationMac>),
4200}
4201
4202impl ItemKind {
4203 pub fn ident(&self) -> Option<Ident> {
4204 match *self {
4205 ItemKind::ExternCrate(_, ident)
4206 | ItemKind::Static(StaticItem { ident, .. })
4207 | ItemKind::Const(ConstItem { ident, .. })
4208 | ItemKind::Fn(Fn { ident, .. })
4209 | ItemKind::Mod(_, ident, _)
4210 | ItemKind::TyAlias(TyAlias { ident, .. })
4211 | ItemKind::Enum(ident, ..)
4212 | ItemKind::Struct(ident, ..)
4213 | ItemKind::Union(ident, ..)
4214 | ItemKind::Trait(Trait { ident, .. })
4215 | ItemKind::TraitAlias(TraitAlias { ident, .. })
4216 | ItemKind::MacroDef(ident, _)
4217 | ItemKind::Delegation(Delegation { ident, .. }) => Some(ident),
4218
4219 ItemKind::ConstBlock(_) => Some(ConstBlockItem::IDENT),
4220
4221 ItemKind::Use(_)
4222 | ItemKind::ForeignMod(_)
4223 | ItemKind::GlobalAsm(_)
4224 | ItemKind::Impl(_)
4225 | ItemKind::MacCall(_)
4226 | ItemKind::DelegationMac(_) => None,
4227 }
4228 }
4229
4230 pub fn article(&self) -> &'static str {
4232 use ItemKind::*;
4233 match self {
4234 Use(..) | Static(..) | Const(..) | ConstBlock(..) | Fn(..) | Mod(..)
4235 | GlobalAsm(..) | TyAlias(..) | Struct(..) | Union(..) | Trait(..) | TraitAlias(..)
4236 | MacroDef(..) | Delegation(..) | DelegationMac(..) => "a",
4237 ExternCrate(..) | ForeignMod(..) | MacCall(..) | Enum(..) | Impl { .. } => "an",
4238 }
4239 }
4240
4241 pub fn descr(&self) -> &'static str {
4242 match self {
4243 ItemKind::ExternCrate(..) => "extern crate",
4244 ItemKind::Use(..) => "`use` import",
4245 ItemKind::Static(..) => "static item",
4246 ItemKind::Const(..) => "constant item",
4247 ItemKind::ConstBlock(..) => "const block",
4248 ItemKind::Fn(..) => "function",
4249 ItemKind::Mod(..) => "module",
4250 ItemKind::ForeignMod(..) => "extern block",
4251 ItemKind::GlobalAsm(..) => "global asm item",
4252 ItemKind::TyAlias(..) => "type alias",
4253 ItemKind::Enum(..) => "enum",
4254 ItemKind::Struct(..) => "struct",
4255 ItemKind::Union(..) => "union",
4256 ItemKind::Trait(..) => "trait",
4257 ItemKind::TraitAlias(..) => "trait alias",
4258 ItemKind::MacCall(..) => "item macro invocation",
4259 ItemKind::MacroDef(..) => "macro definition",
4260 ItemKind::Impl { .. } => "implementation",
4261 ItemKind::Delegation(..) => "delegated function",
4262 ItemKind::DelegationMac(..) => "delegation",
4263 }
4264 }
4265
4266 pub fn generics(&self) -> Option<&Generics> {
4267 match self {
4268 Self::Fn(Fn { generics, .. })
4269 | Self::TyAlias(TyAlias { generics, .. })
4270 | Self::Const(ConstItem { generics, .. })
4271 | Self::Enum(_, generics, _)
4272 | Self::Struct(_, generics, _)
4273 | Self::Union(_, generics, _)
4274 | Self::Trait(Trait { generics, .. })
4275 | Self::TraitAlias(TraitAlias { generics, .. })
4276 | Self::Impl(Impl { generics, .. }) => Some(generics),
4277
4278 Self::ExternCrate(..)
4279 | Self::Use(..)
4280 | Self::Static(..)
4281 | Self::ConstBlock(..)
4282 | Self::Mod(..)
4283 | Self::ForeignMod(..)
4284 | Self::GlobalAsm(..)
4285 | Self::MacCall(..)
4286 | Self::MacroDef(..)
4287 | Self::Delegation(..)
4288 | Self::DelegationMac(..) => None,
4289 }
4290 }
4291}
4292
4293pub type AssocItem = Item<AssocItemKind>;
4296
4297#[derive(#[automatically_derived]
impl ::core::clone::Clone for AssocItemKind {
#[inline]
fn clone(&self) -> AssocItemKind {
match self {
AssocItemKind::Const(__self_0) =>
AssocItemKind::Const(::core::clone::Clone::clone(__self_0)),
AssocItemKind::Fn(__self_0) =>
AssocItemKind::Fn(::core::clone::Clone::clone(__self_0)),
AssocItemKind::Type(__self_0) =>
AssocItemKind::Type(::core::clone::Clone::clone(__self_0)),
AssocItemKind::MacCall(__self_0) =>
AssocItemKind::MacCall(::core::clone::Clone::clone(__self_0)),
AssocItemKind::Delegation(__self_0) =>
AssocItemKind::Delegation(::core::clone::Clone::clone(__self_0)),
AssocItemKind::DelegationMac(__self_0) =>
AssocItemKind::DelegationMac(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AssocItemKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AssocItemKind::Const(ref __binding_0) => { 0usize }
AssocItemKind::Fn(ref __binding_0) => { 1usize }
AssocItemKind::Type(ref __binding_0) => { 2usize }
AssocItemKind::MacCall(ref __binding_0) => { 3usize }
AssocItemKind::Delegation(ref __binding_0) => { 4usize }
AssocItemKind::DelegationMac(ref __binding_0) => { 5usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AssocItemKind::Const(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssocItemKind::Fn(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssocItemKind::Type(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssocItemKind::MacCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssocItemKind::Delegation(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AssocItemKind::DelegationMac(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AssocItemKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
AssocItemKind::Const(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
AssocItemKind::Fn(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
AssocItemKind::Type(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
AssocItemKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
AssocItemKind::Delegation(::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
AssocItemKind::DelegationMac(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AssocItemKind`, expected 0..6, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AssocItemKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AssocItemKind::Const(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Const",
&__self_0),
AssocItemKind::Fn(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Fn",
&__self_0),
AssocItemKind::Type(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Type",
&__self_0),
AssocItemKind::MacCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MacCall", &__self_0),
AssocItemKind::Delegation(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Delegation", &__self_0),
AssocItemKind::DelegationMac(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DelegationMac", &__self_0),
}
}
}Debug)]
4305pub enum AssocItemKind {
4306 Const(Box<ConstItem>),
4309 Fn(Box<Fn>),
4311 Type(Box<TyAlias>),
4313 MacCall(Box<MacCall>),
4315 Delegation(Box<Delegation>),
4317 DelegationMac(Box<DelegationMac>),
4319}
4320
4321impl AssocItemKind {
4322 pub fn ident(&self) -> Option<Ident> {
4323 match *self {
4324 AssocItemKind::Const(ConstItem { ident, .. })
4325 | AssocItemKind::Fn(Fn { ident, .. })
4326 | AssocItemKind::Type(TyAlias { ident, .. })
4327 | AssocItemKind::Delegation(Delegation { ident, .. }) => Some(ident),
4328
4329 AssocItemKind::MacCall(_) | AssocItemKind::DelegationMac(_) => None,
4330 }
4331 }
4332
4333 pub fn defaultness(&self) -> Defaultness {
4334 match *self {
4335 Self::Const(ConstItem { defaultness, .. })
4336 | Self::Fn(Fn { defaultness, .. })
4337 | Self::Type(TyAlias { defaultness, .. }) => defaultness,
4338 Self::MacCall(..) | Self::Delegation(..) | Self::DelegationMac(..) => {
4339 Defaultness::Implicit
4340 }
4341 }
4342 }
4343}
4344
4345impl From<AssocItemKind> for ItemKind {
4346 fn from(assoc_item_kind: AssocItemKind) -> ItemKind {
4347 match assoc_item_kind {
4348 AssocItemKind::Const(item) => ItemKind::Const(item),
4349 AssocItemKind::Fn(fn_kind) => ItemKind::Fn(fn_kind),
4350 AssocItemKind::Type(ty_alias_kind) => ItemKind::TyAlias(ty_alias_kind),
4351 AssocItemKind::MacCall(a) => ItemKind::MacCall(a),
4352 AssocItemKind::Delegation(delegation) => ItemKind::Delegation(delegation),
4353 AssocItemKind::DelegationMac(delegation) => ItemKind::DelegationMac(delegation),
4354 }
4355 }
4356}
4357
4358impl TryFrom<ItemKind> for AssocItemKind {
4359 type Error = ItemKind;
4360
4361 fn try_from(item_kind: ItemKind) -> Result<AssocItemKind, ItemKind> {
4362 Ok(match item_kind {
4363 ItemKind::Const(item) => AssocItemKind::Const(item),
4364 ItemKind::Fn(fn_kind) => AssocItemKind::Fn(fn_kind),
4365 ItemKind::TyAlias(ty_kind) => AssocItemKind::Type(ty_kind),
4366 ItemKind::MacCall(a) => AssocItemKind::MacCall(a),
4367 ItemKind::Delegation(d) => AssocItemKind::Delegation(d),
4368 ItemKind::DelegationMac(d) => AssocItemKind::DelegationMac(d),
4369 _ => return Err(item_kind),
4370 })
4371 }
4372}
4373
4374#[derive(#[automatically_derived]
impl ::core::clone::Clone for ForeignItemKind {
#[inline]
fn clone(&self) -> ForeignItemKind {
match self {
ForeignItemKind::Static(__self_0) =>
ForeignItemKind::Static(::core::clone::Clone::clone(__self_0)),
ForeignItemKind::Fn(__self_0) =>
ForeignItemKind::Fn(::core::clone::Clone::clone(__self_0)),
ForeignItemKind::TyAlias(__self_0) =>
ForeignItemKind::TyAlias(::core::clone::Clone::clone(__self_0)),
ForeignItemKind::MacCall(__self_0) =>
ForeignItemKind::MacCall(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ForeignItemKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ForeignItemKind::Static(ref __binding_0) => { 0usize }
ForeignItemKind::Fn(ref __binding_0) => { 1usize }
ForeignItemKind::TyAlias(ref __binding_0) => { 2usize }
ForeignItemKind::MacCall(ref __binding_0) => { 3usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ForeignItemKind::Static(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ForeignItemKind::Fn(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ForeignItemKind::TyAlias(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ForeignItemKind::MacCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ForeignItemKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
ForeignItemKind::Static(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
ForeignItemKind::Fn(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
ForeignItemKind::TyAlias(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
ForeignItemKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ForeignItemKind`, expected 0..4, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ForeignItemKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ForeignItemKind::Static(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Static",
&__self_0),
ForeignItemKind::Fn(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Fn",
&__self_0),
ForeignItemKind::TyAlias(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TyAlias", &__self_0),
ForeignItemKind::MacCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MacCall", &__self_0),
}
}
}Debug)]
4376pub enum ForeignItemKind {
4377 Static(Box<StaticItem>),
4379 Fn(Box<Fn>),
4381 TyAlias(Box<TyAlias>),
4383 MacCall(Box<MacCall>),
4385}
4386
4387impl ForeignItemKind {
4388 pub fn ident(&self) -> Option<Ident> {
4389 match *self {
4390 ForeignItemKind::Static(StaticItem { ident, .. })
4391 | ForeignItemKind::Fn(Fn { ident, .. })
4392 | ForeignItemKind::TyAlias(TyAlias { ident, .. }) => Some(ident),
4393
4394 ForeignItemKind::MacCall(_) => None,
4395 }
4396 }
4397}
4398
4399impl From<ForeignItemKind> for ItemKind {
4400 fn from(foreign_item_kind: ForeignItemKind) -> ItemKind {
4401 match foreign_item_kind {
4402 ForeignItemKind::Static(static_foreign_item) => ItemKind::Static(static_foreign_item),
4403 ForeignItemKind::Fn(fn_kind) => ItemKind::Fn(fn_kind),
4404 ForeignItemKind::TyAlias(ty_alias_kind) => ItemKind::TyAlias(ty_alias_kind),
4405 ForeignItemKind::MacCall(a) => ItemKind::MacCall(a),
4406 }
4407 }
4408}
4409
4410impl TryFrom<ItemKind> for ForeignItemKind {
4411 type Error = ItemKind;
4412
4413 fn try_from(item_kind: ItemKind) -> Result<ForeignItemKind, ItemKind> {
4414 Ok(match item_kind {
4415 ItemKind::Static(static_item) => ForeignItemKind::Static(static_item),
4416 ItemKind::Fn(fn_kind) => ForeignItemKind::Fn(fn_kind),
4417 ItemKind::TyAlias(ty_alias_kind) => ForeignItemKind::TyAlias(ty_alias_kind),
4418 ItemKind::MacCall(a) => ForeignItemKind::MacCall(a),
4419 _ => return Err(item_kind),
4420 })
4421 }
4422}
4423
4424pub type ForeignItem = Item<ForeignItemKind>;
4425
4426#[derive(#[automatically_derived]
impl ::core::fmt::Debug for AstOwner {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AstOwner::NonOwner =>
::core::fmt::Formatter::write_str(f, "NonOwner"),
AstOwner::NestedUseTree(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"NestedUseTree", &__self_0),
AstOwner::Crate(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Crate",
&__self_0),
AstOwner::Item(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Item",
&__self_0),
AstOwner::TraitItem(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TraitItem", &__self_0),
AstOwner::ImplItem(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ImplItem", &__self_0),
AstOwner::ForeignItem(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ForeignItem", &__self_0),
}
}
}Debug)]
4430pub enum AstOwner {
4431 NonOwner,
4433 NestedUseTree(LocalDefId),
4436 Crate(Box<Crate>),
4437 Item(Box<Item>),
4438 TraitItem(Box<AssocItem>),
4439 ImplItem(Box<AssocItem>),
4440 ForeignItem(Box<ForeignItem>),
4441}
4442
4443#[cfg(target_pointer_width = "64")]
4445mod size_asserts {
4446 use rustc_data_structures::static_assert_size;
4447
4448 use super::*;
4449 const _: [(); 72] = [(); ::std::mem::size_of::<AssocItem>()];static_assert_size!(AssocItem, 72);
4451 const _: [(); 16] = [(); ::std::mem::size_of::<AssocItemKind>()];static_assert_size!(AssocItemKind, 16);
4452 const _: [(); 16] = [(); ::std::mem::size_of::<AttrKind>()];static_assert_size!(AttrKind, 16);
4453 const _: [(); 32] = [(); ::std::mem::size_of::<Attribute>()];static_assert_size!(Attribute, 32);
4454 const _: [(); 24] = [(); ::std::mem::size_of::<Block>()];static_assert_size!(Block, 24);
4455 const _: [(); 64] = [(); ::std::mem::size_of::<Expr>()];static_assert_size!(Expr, 64);
4456 const _: [(); 32] = [(); ::std::mem::size_of::<ExprKind>()];static_assert_size!(ExprKind, 32);
4457 const _: [(); 80] = [(); ::std::mem::size_of::<FieldDef>()];static_assert_size!(FieldDef, 80);
4458 const _: [(); 192] = [(); ::std::mem::size_of::<Fn>()];static_assert_size!(Fn, 192);
4459 const _: [(); 24] = [(); ::std::mem::size_of::<FnDecl>()];static_assert_size!(FnDecl, 24);
4460 const _: [(); 76] = [(); ::std::mem::size_of::<FnHeader>()];static_assert_size!(FnHeader, 76);
4461 const _: [(); 96] = [(); ::std::mem::size_of::<FnSig>()];static_assert_size!(FnSig, 96);
4462 const _: [(); 72] = [(); ::std::mem::size_of::<ForeignItem>()];static_assert_size!(ForeignItem, 72);
4463 const _: [(); 16] = [(); ::std::mem::size_of::<ForeignItemKind>()];static_assert_size!(ForeignItemKind, 16);
4464 const _: [(); 24] = [(); ::std::mem::size_of::<GenericArg>()];static_assert_size!(GenericArg, 24);
4465 const _: [(); 40] = [(); ::std::mem::size_of::<GenericArgs>()];static_assert_size!(GenericArgs, 40);
4466 const _: [(); 80] = [(); ::std::mem::size_of::<GenericBound>()];static_assert_size!(GenericBound, 80);
4467 const _: [(); 80] = [(); ::std::mem::size_of::<GenericParam>()];static_assert_size!(GenericParam, 80);
4468 const _: [(); 40] = [(); ::std::mem::size_of::<Generics>()];static_assert_size!(Generics, 40);
4469 const _: [(); 80] = [(); ::std::mem::size_of::<Impl>()];static_assert_size!(Impl, 80);
4470 const _: [(); 144] = [(); ::std::mem::size_of::<Item>()];static_assert_size!(Item, 144);
4471 const _: [(); 88] = [(); ::std::mem::size_of::<ItemKind>()];static_assert_size!(ItemKind, 88);
4472 const _: [(); 16] = [(); ::std::mem::size_of::<Lifetime>()];static_assert_size!(Lifetime, 16);
4473 const _: [(); 24] = [(); ::std::mem::size_of::<LitKind>()];static_assert_size!(LitKind, 24);
4474 const _: [(); 96] = [(); ::std::mem::size_of::<Local>()];static_assert_size!(Local, 96);
4475 const _: [(); 80] = [(); ::std::mem::size_of::<MetaItem>()];static_assert_size!(MetaItem, 80);
4476 const _: [(); 40] = [(); ::std::mem::size_of::<MetaItemKind>()];static_assert_size!(MetaItemKind, 40);
4477 const _: [(); 40] = [(); ::std::mem::size_of::<MetaItemLit>()];static_assert_size!(MetaItemLit, 40);
4478 const _: [(); 80] = [(); ::std::mem::size_of::<NormalAttr>()];static_assert_size!(NormalAttr, 80);
4479 const _: [(); 40] = [(); ::std::mem::size_of::<Param>()];static_assert_size!(Param, 40);
4480 const _: [(); 64] = [(); ::std::mem::size_of::<Pat>()];static_assert_size!(Pat, 64);
4481 const _: [(); 48] = [(); ::std::mem::size_of::<PatKind>()];static_assert_size!(PatKind, 48);
4482 const _: [(); 16] = [(); ::std::mem::size_of::<Path>()];static_assert_size!(Path, 16);
4483 const _: [(); 24] = [(); ::std::mem::size_of::<PathSegment>()];static_assert_size!(PathSegment, 24);
4484 const _: [(); 24] = [(); ::std::mem::size_of::<QSelf>()];static_assert_size!(QSelf, 24);
4485 const _: [(); 32] = [(); ::std::mem::size_of::<Stmt>()];static_assert_size!(Stmt, 32);
4486 const _: [(); 16] = [(); ::std::mem::size_of::<StmtKind>()];static_assert_size!(StmtKind, 16);
4487 const _: [(); 64] = [(); ::std::mem::size_of::<TraitImplHeader>()];static_assert_size!(TraitImplHeader, 64);
4488 const _: [(); 56] = [(); ::std::mem::size_of::<Ty>()];static_assert_size!(Ty, 56);
4489 const _: [(); 40] = [(); ::std::mem::size_of::<TyKind>()];static_assert_size!(TyKind, 40);
4490 }