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_hasher::{HashStable, HashStableContext, StableHasher};
29use rustc_data_structures::stack::ensure_sufficient_stack;
30use rustc_data_structures::tagged_ptr::Tag;
31use rustc_macros::{Decodable, Encodable, HashStable, Walkable};
32pub use rustc_span::AttrId;
33use rustc_span::{
34 ByteSymbol, DUMMY_SP, ErrorGuaranteed, Ident, Span, Spanned, Symbol, kw, respan, sym,
35};
36use thin_vec::{ThinVec, thin_vec};
37
38use crate::attr::data_structures::CfgEntry;
39pub use crate::format::*;
40use crate::token::{self, CommentKind, Delimiter};
41use crate::tokenstream::{DelimSpan, LazyAttrTokenStream, TokenStream};
42use crate::util::parser::{ExprPrecedence, Fixity};
43use crate::visit::{AssocCtxt, BoundKind, LifetimeCtxt};
44
45#[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_hasher::HashStable for Label {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
Label { ident: ref __binding_0 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, #[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)]
56pub struct Label {
57 pub ident: Ident,
58}
59
60impl fmt::Debug for Label {
61 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
62 f.write_fmt(format_args!("label({0:?})", self.ident))write!(f, "label({:?})", self.ident)
63 }
64}
65
66#[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)]
69pub struct Lifetime {
70 pub id: NodeId,
71 pub ident: Ident,
72}
73
74impl fmt::Debug for Lifetime {
75 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
76 f.write_fmt(format_args!("lifetime({0}: {1})", self.id, self))write!(f, "lifetime({}: {})", self.id, self)
77 }
78}
79
80impl fmt::Display for Lifetime {
81 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
82 f.write_fmt(format_args!("{0}", self.ident.name))write!(f, "{}", self.ident.name)
83 }
84}
85
86#[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),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}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,
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 Path {
fn decode(__decoder: &mut __D) -> Self {
Path {
span: ::rustc_serialize::Decodable::decode(__decoder),
segments: ::rustc_serialize::Decodable::decode(__decoder),
tokens: ::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_field3_finish(f, "Path", "span",
&self.span, "segments", &self.segments, "tokens", &&self.tokens)
}
}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,
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 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,
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)]
93pub struct Path {
94 pub span: Span,
95 pub segments: ThinVec<PathSegment>,
98 pub tokens: Option<LazyAttrTokenStream>,
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 HashStable for Path {
124 fn hash_stable<Hcx: HashStableContext>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
125 self.segments.len().hash_stable(hcx, hasher);
126 for segment in &self.segments {
127 segment.ident.hash_stable(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, tokens: None }
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 = Vec<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> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for 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)),
WherePredicateKind::EqPredicate(__self_0) =>
WherePredicateKind::EqPredicate(::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
}
WherePredicateKind::EqPredicate(ref __binding_0) => {
2usize
}
};
::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);
}
WherePredicateKind::EqPredicate(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))
}
2usize => {
WherePredicateKind::EqPredicate(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `WherePredicateKind`, expected 0..3, 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),
WherePredicateKind::EqPredicate(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"EqPredicate", &__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);
}
}
}
}
WherePredicateKind::EqPredicate(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, ())
}
}
WherePredicateKind::EqPredicate(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
507pub enum WherePredicateKind {
508 BoundPredicate(WhereBoundPredicate),
510 RegionPredicate(WhereRegionPredicate),
512 EqPredicate(WhereEqPredicate),
514}
515
516#[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)]
520pub struct WhereBoundPredicate {
521 pub bound_generic_params: ThinVec<GenericParam>,
523 pub bounded_ty: Box<Ty>,
525 #[visitable(extra = BoundKind::Bound)]
527 pub bounds: GenericBounds,
528}
529
530#[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)]
534pub struct WhereRegionPredicate {
535 #[visitable(extra = LifetimeCtxt::Bound)]
536 pub lifetime: Lifetime,
537 #[visitable(extra = BoundKind::Bound)]
538 pub bounds: GenericBounds,
539}
540
541#[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)]
545pub struct WhereEqPredicate {
546 pub lhs_ty: Box<Ty>,
547 pub rhs_ty: Box<Ty>,
548}
549
550#[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)]
551pub struct Crate {
552 pub id: NodeId,
555 pub attrs: AttrVec,
556 pub items: ThinVec<Box<Item>>,
557 pub spans: ModSpans,
558 pub is_placeholder: bool,
559}
560
561#[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_hasher::HashStable for MetaItem {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
MetaItem {
unsafety: ref __binding_0,
path: ref __binding_1,
kind: ref __binding_2,
span: ref __binding_3 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
{ __binding_3.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
568pub struct MetaItem {
569 pub unsafety: Safety,
570 pub path: Path,
571 pub kind: MetaItemKind,
572 pub span: Span,
573}
574
575#[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_hasher::HashStable for
MetaItemKind {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
MetaItemKind::Word => {}
MetaItemKind::List(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
MetaItemKind::NameValue(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
577pub enum MetaItemKind {
578 Word,
582
583 List(ThinVec<MetaItemInner>),
587
588 NameValue(MetaItemLit),
592}
593
594#[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_hasher::HashStable for
MetaItemInner {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
MetaItemInner::MetaItem(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
MetaItemInner::Lit(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
598pub enum MetaItemInner {
599 MetaItem(MetaItem),
601
602 Lit(MetaItemLit),
606}
607
608#[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),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}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,
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 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),
tokens: ::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_field5_finish(f, "Block",
"stmts", &self.stmts, "id", &self.id, "rules", &self.rules,
"span", &self.span, "tokens", &&self.tokens)
}
}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,
tokens: 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 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,
tokens: 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)]
612pub struct Block {
613 pub stmts: ThinVec<Stmt>,
615 pub id: NodeId,
616 pub rules: BlockCheckMode,
618 pub span: Span,
619 pub tokens: Option<LazyAttrTokenStream>,
620}
621
622#[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),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}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,
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 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),
tokens: ::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_field4_finish(f, "Pat", "id",
&self.id, "kind", &self.kind, "span", &self.span, "tokens",
&&self.tokens)
}
}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,
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 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,
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)]
626pub struct Pat {
627 pub id: NodeId,
628 pub kind: PatKind,
629 pub span: Span,
630 pub tokens: Option<LazyAttrTokenStream>,
631}
632
633impl Pat {
634 pub fn to_ty(&self) -> Option<Box<Ty>> {
637 let kind = match &self.kind {
638 PatKind::Missing => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
639 PatKind::Wild => TyKind::Infer,
641 PatKind::Ident(BindingMode::NONE, ident, None) => {
643 TyKind::Path(None, Path::from_ident(*ident))
644 }
645 PatKind::Path(qself, path) => TyKind::Path(qself.clone(), path.clone()),
646 PatKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
647 PatKind::Ref(pat, pinned, mutbl) => pat.to_ty().map(|ty| match pinned {
649 Pinnedness::Not => TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }),
650 Pinnedness::Pinned => TyKind::PinnedRef(None, MutTy { ty, mutbl: *mutbl }),
651 })?,
652 PatKind::Slice(pats) if let [pat] = pats.as_slice() => {
655 pat.to_ty().map(TyKind::Slice)?
656 }
657 PatKind::Tuple(pats) => {
660 let tys = pats.iter().map(|pat| pat.to_ty()).collect::<Option<ThinVec<_>>>()?;
661 TyKind::Tup(tys)
662 }
663 _ => return None,
664 };
665
666 Some(Box::new(Ty { kind, id: self.id, span: self.span, tokens: None }))
667 }
668
669 pub fn walk<'ast>(&'ast self, it: &mut impl FnMut(&'ast Pat) -> bool) {
673 if !it(self) {
674 return;
675 }
676
677 match &self.kind {
678 PatKind::Ident(_, _, Some(p)) => p.walk(it),
680
681 PatKind::Struct(_, _, fields, _) => fields.iter().for_each(|field| field.pat.walk(it)),
683
684 PatKind::TupleStruct(_, _, s)
686 | PatKind::Tuple(s)
687 | PatKind::Slice(s)
688 | PatKind::Or(s) => s.iter().for_each(|p| p.walk(it)),
689
690 PatKind::Box(s)
692 | PatKind::Deref(s)
693 | PatKind::Ref(s, _, _)
694 | PatKind::Paren(s)
695 | PatKind::Guard(s, _) => s.walk(it),
696
697 PatKind::Missing
699 | PatKind::Wild
700 | PatKind::Rest
701 | PatKind::Never
702 | PatKind::Expr(_)
703 | PatKind::Range(..)
704 | PatKind::Ident(..)
705 | PatKind::Path(..)
706 | PatKind::MacCall(_)
707 | PatKind::Err(_) => {}
708 }
709 }
710
711 pub fn peel_refs(&self) -> &Pat {
713 let mut current = self;
714 while let PatKind::Ref(inner, _, _) = ¤t.kind {
715 current = inner;
716 }
717 current
718 }
719
720 pub fn is_rest(&self) -> bool {
722 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
PatKind::Rest => true,
_ => false,
}matches!(self.kind, PatKind::Rest)
723 }
724
725 pub fn could_be_never_pattern(&self) -> bool {
728 let mut could_be_never_pattern = false;
729 self.walk(&mut |pat| match &pat.kind {
730 PatKind::Never | PatKind::MacCall(_) => {
731 could_be_never_pattern = true;
732 false
733 }
734 PatKind::Or(s) => {
735 could_be_never_pattern = s.iter().all(|p| p.could_be_never_pattern());
736 false
737 }
738 _ => true,
739 });
740 could_be_never_pattern
741 }
742
743 pub fn contains_never_pattern(&self) -> bool {
746 let mut contains_never_pattern = false;
747 self.walk(&mut |pat| {
748 if #[allow(non_exhaustive_omitted_patterns)] match pat.kind {
PatKind::Never => true,
_ => false,
}matches!(pat.kind, PatKind::Never) {
749 contains_never_pattern = true;
750 }
751 true
752 });
753 contains_never_pattern
754 }
755
756 pub fn descr(&self) -> Option<String> {
758 match &self.kind {
759 PatKind::Missing => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
760 PatKind::Wild => Some("_".to_string()),
761 PatKind::Ident(BindingMode::NONE, ident, None) => Some(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}", ident))
})format!("{ident}")),
762 PatKind::Ref(pat, pinned, mutbl) => {
763 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)))
764 }
765 _ => None,
766 }
767 }
768}
769
770impl From<Box<Pat>> for Pat {
771 fn from(value: Box<Pat>) -> Self {
772 *value
773 }
774}
775
776#[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)]
782pub struct PatField {
783 pub ident: Ident,
785 pub pat: Box<Pat>,
787 pub is_shorthand: bool,
788 pub attrs: AttrVec,
789 pub id: NodeId,
790 pub span: Span,
791 pub is_placeholder: bool,
792}
793
794#[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)]
795#[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_hasher::HashStable for ByRef {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
ByRef::No => {}
}
}
}
};HashStable, 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)]
796pub enum ByRef {
797 Yes(Pinnedness, Mutability),
798 No,
799}
800
801impl ByRef {
802 #[must_use]
803 pub fn cap_ref_mutability(mut self, mutbl: Mutability) -> Self {
804 if let ByRef::Yes(_, old_mutbl) = &mut self {
805 *old_mutbl = cmp::min(*old_mutbl, mutbl);
806 }
807 self
808 }
809}
810
811#[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)]
817#[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_hasher::HashStable for
BindingMode {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
BindingMode(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
818pub struct BindingMode(pub ByRef, pub Mutability);
819
820impl BindingMode {
821 pub const NONE: Self = Self(ByRef::No, Mutability::Not);
822 pub const REF: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Not), Mutability::Not);
823 pub const REF_PIN: Self =
824 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Not), Mutability::Not);
825 pub const MUT: Self = Self(ByRef::No, Mutability::Mut);
826 pub const REF_MUT: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Mut), Mutability::Not);
827 pub const REF_PIN_MUT: Self =
828 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Mut), Mutability::Not);
829 pub const MUT_REF: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Not), Mutability::Mut);
830 pub const MUT_REF_PIN: Self =
831 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Not), Mutability::Mut);
832 pub const MUT_REF_MUT: Self =
833 Self(ByRef::Yes(Pinnedness::Not, Mutability::Mut), Mutability::Mut);
834 pub const MUT_REF_PIN_MUT: Self =
835 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Mut), Mutability::Mut);
836
837 pub fn prefix_str(self) -> &'static str {
838 match self {
839 Self::NONE => "",
840 Self::REF => "ref ",
841 Self::REF_PIN => "ref pin const ",
842 Self::MUT => "mut ",
843 Self::REF_MUT => "ref mut ",
844 Self::REF_PIN_MUT => "ref pin mut ",
845 Self::MUT_REF => "mut ref ",
846 Self::MUT_REF_PIN => "mut ref pin ",
847 Self::MUT_REF_MUT => "mut ref mut ",
848 Self::MUT_REF_PIN_MUT => "mut ref pin mut ",
849 }
850 }
851}
852
853#[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)]
854pub enum RangeEnd {
855 Included(RangeSyntax),
857 Excluded,
859}
860
861#[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)]
862pub enum RangeSyntax {
863 DotDotDot,
865 DotDotEq,
867}
868
869#[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)]
873pub enum PatKind {
874 Missing,
876
877 Wild,
879
880 Ident(BindingMode, Ident, Option<Box<Pat>>),
885
886 Struct(Option<Box<QSelf>>, Path, ThinVec<PatField>, PatFieldsRest),
888
889 TupleStruct(Option<Box<QSelf>>, Path, ThinVec<Pat>),
891
892 Or(ThinVec<Pat>),
895
896 Path(Option<Box<QSelf>>, Path),
901
902 Tuple(ThinVec<Pat>),
904
905 Box(Box<Pat>),
907
908 Deref(Box<Pat>),
910
911 Ref(Box<Pat>, Pinnedness, Mutability),
913
914 Expr(Box<Expr>),
916
917 Range(Option<Box<Expr>>, Option<Box<Expr>>, Spanned<RangeEnd>),
919
920 Slice(ThinVec<Pat>),
922
923 Rest,
936
937 Never,
939
940 Guard(Box<Pat>, Box<Guard>),
942
943 Paren(Box<Pat>),
945
946 MacCall(Box<MacCall>),
948
949 Err(ErrorGuaranteed),
951}
952
953#[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)]
955pub enum PatFieldsRest {
956 Rest(Span),
958 Recovered(ErrorGuaranteed),
960 None,
962}
963
964#[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)]
967#[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_hasher::HashStable for BorrowKind
{
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
BorrowKind::Ref => {}
BorrowKind::Raw => {}
BorrowKind::Pin => {}
}
}
}
};HashStable, 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)]
968pub enum BorrowKind {
969 Ref,
973 Raw,
977 Pin,
981}
982
983#[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 {
::core::fmt::Formatter::write_str(f,
match self {
BinOpKind::Add => "Add",
BinOpKind::Sub => "Sub",
BinOpKind::Mul => "Mul",
BinOpKind::Div => "Div",
BinOpKind::Rem => "Rem",
BinOpKind::And => "And",
BinOpKind::Or => "Or",
BinOpKind::BitXor => "BitXor",
BinOpKind::BitAnd => "BitAnd",
BinOpKind::BitOr => "BitOr",
BinOpKind::Shl => "Shl",
BinOpKind::Shr => "Shr",
BinOpKind::Eq => "Eq",
BinOpKind::Lt => "Lt",
BinOpKind::Le => "Le",
BinOpKind::Ne => "Ne",
BinOpKind::Ge => "Ge",
BinOpKind::Gt => "Gt",
})
}
}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_hasher::HashStable for BinOpKind
{
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__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 => {}
}
}
}
};HashStable, 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)]
984pub enum BinOpKind {
985 Add,
987 Sub,
989 Mul,
991 Div,
993 Rem,
995 And,
997 Or,
999 BitXor,
1001 BitAnd,
1003 BitOr,
1005 Shl,
1007 Shr,
1009 Eq,
1011 Lt,
1013 Le,
1015 Ne,
1017 Ge,
1019 Gt,
1021}
1022
1023impl BinOpKind {
1024 pub fn as_str(&self) -> &'static str {
1025 use BinOpKind::*;
1026 match self {
1027 Add => "+",
1028 Sub => "-",
1029 Mul => "*",
1030 Div => "/",
1031 Rem => "%",
1032 And => "&&",
1033 Or => "||",
1034 BitXor => "^",
1035 BitAnd => "&",
1036 BitOr => "|",
1037 Shl => "<<",
1038 Shr => ">>",
1039 Eq => "==",
1040 Lt => "<",
1041 Le => "<=",
1042 Ne => "!=",
1043 Ge => ">=",
1044 Gt => ">",
1045 }
1046 }
1047
1048 pub fn is_lazy(&self) -> bool {
1049 #[allow(non_exhaustive_omitted_patterns)] match self {
BinOpKind::And | BinOpKind::Or => true,
_ => false,
}matches!(self, BinOpKind::And | BinOpKind::Or)
1050 }
1051
1052 pub fn precedence(&self) -> ExprPrecedence {
1053 use BinOpKind::*;
1054 match *self {
1055 Mul | Div | Rem => ExprPrecedence::Product,
1056 Add | Sub => ExprPrecedence::Sum,
1057 Shl | Shr => ExprPrecedence::Shift,
1058 BitAnd => ExprPrecedence::BitAnd,
1059 BitXor => ExprPrecedence::BitXor,
1060 BitOr => ExprPrecedence::BitOr,
1061 Lt | Gt | Le | Ge | Eq | Ne => ExprPrecedence::Compare,
1062 And => ExprPrecedence::LAnd,
1063 Or => ExprPrecedence::LOr,
1064 }
1065 }
1066
1067 pub fn fixity(&self) -> Fixity {
1068 use BinOpKind::*;
1069 match self {
1070 Eq | Ne | Lt | Le | Gt | Ge => Fixity::None,
1071 Add | Sub | Mul | Div | Rem | And | Or | BitXor | BitAnd | BitOr | Shl | Shr => {
1072 Fixity::Left
1073 }
1074 }
1075 }
1076
1077 pub fn is_comparison(self) -> bool {
1078 use BinOpKind::*;
1079 match self {
1080 Eq | Ne | Lt | Le | Gt | Ge => true,
1081 Add | Sub | Mul | Div | Rem | And | Or | BitXor | BitAnd | BitOr | Shl | Shr => false,
1082 }
1083 }
1084
1085 pub fn is_by_value(self) -> bool {
1087 !self.is_comparison()
1088 }
1089}
1090
1091pub type BinOp = Spanned<BinOpKind>;
1092
1093impl From<AssignOpKind> for BinOpKind {
1097 fn from(op: AssignOpKind) -> BinOpKind {
1098 match op {
1099 AssignOpKind::AddAssign => BinOpKind::Add,
1100 AssignOpKind::SubAssign => BinOpKind::Sub,
1101 AssignOpKind::MulAssign => BinOpKind::Mul,
1102 AssignOpKind::DivAssign => BinOpKind::Div,
1103 AssignOpKind::RemAssign => BinOpKind::Rem,
1104 AssignOpKind::BitXorAssign => BinOpKind::BitXor,
1105 AssignOpKind::BitAndAssign => BinOpKind::BitAnd,
1106 AssignOpKind::BitOrAssign => BinOpKind::BitOr,
1107 AssignOpKind::ShlAssign => BinOpKind::Shl,
1108 AssignOpKind::ShrAssign => BinOpKind::Shr,
1109 }
1110 }
1111}
1112
1113#[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 {
::core::fmt::Formatter::write_str(f,
match self {
AssignOpKind::AddAssign => "AddAssign",
AssignOpKind::SubAssign => "SubAssign",
AssignOpKind::MulAssign => "MulAssign",
AssignOpKind::DivAssign => "DivAssign",
AssignOpKind::RemAssign => "RemAssign",
AssignOpKind::BitXorAssign => "BitXorAssign",
AssignOpKind::BitAndAssign => "BitAndAssign",
AssignOpKind::BitOrAssign => "BitOrAssign",
AssignOpKind::ShlAssign => "ShlAssign",
AssignOpKind::ShrAssign => "ShrAssign",
})
}
}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_hasher::HashStable for
AssignOpKind {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
AssignOpKind::AddAssign => {}
AssignOpKind::SubAssign => {}
AssignOpKind::MulAssign => {}
AssignOpKind::DivAssign => {}
AssignOpKind::RemAssign => {}
AssignOpKind::BitXorAssign => {}
AssignOpKind::BitAndAssign => {}
AssignOpKind::BitOrAssign => {}
AssignOpKind::ShlAssign => {}
AssignOpKind::ShrAssign => {}
}
}
}
};HashStable, 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)]
1114pub enum AssignOpKind {
1115 AddAssign,
1117 SubAssign,
1119 MulAssign,
1121 DivAssign,
1123 RemAssign,
1125 BitXorAssign,
1127 BitAndAssign,
1129 BitOrAssign,
1131 ShlAssign,
1133 ShrAssign,
1135}
1136
1137impl AssignOpKind {
1138 pub fn as_str(&self) -> &'static str {
1139 use AssignOpKind::*;
1140 match self {
1141 AddAssign => "+=",
1142 SubAssign => "-=",
1143 MulAssign => "*=",
1144 DivAssign => "/=",
1145 RemAssign => "%=",
1146 BitXorAssign => "^=",
1147 BitAndAssign => "&=",
1148 BitOrAssign => "|=",
1149 ShlAssign => "<<=",
1150 ShrAssign => ">>=",
1151 }
1152 }
1153
1154 pub fn is_by_value(self) -> bool {
1156 true
1157 }
1158}
1159
1160pub type AssignOp = Spanned<AssignOpKind>;
1161
1162#[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_hasher::HashStable for UnOp {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
UnOp::Deref => {}
UnOp::Not => {}
UnOp::Neg => {}
}
}
}
};HashStable, 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)]
1166pub enum UnOp {
1167 Deref,
1169 Not,
1171 Neg,
1173}
1174
1175impl UnOp {
1176 pub fn as_str(&self) -> &'static str {
1177 match self {
1178 UnOp::Deref => "*",
1179 UnOp::Not => "!",
1180 UnOp::Neg => "-",
1181 }
1182 }
1183
1184 pub fn is_by_value(self) -> bool {
1186 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::Neg | Self::Not => true,
_ => false,
}matches!(self, Self::Neg | Self::Not)
1187 }
1188}
1189
1190#[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 MgcaDisambiguation {
#[inline]
fn clone(&self) -> MgcaDisambiguation { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for MgcaDisambiguation {
#[inline]
fn eq(&self, other: &MgcaDisambiguation) -> 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 MgcaDisambiguation {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MgcaDisambiguation::AnonConst => { 0usize }
MgcaDisambiguation::Direct => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MgcaDisambiguation::AnonConst => {}
MgcaDisambiguation::Direct => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MgcaDisambiguation {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { MgcaDisambiguation::AnonConst }
1usize => { MgcaDisambiguation::Direct }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MgcaDisambiguation`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MgcaDisambiguation {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
MgcaDisambiguation::AnonConst => "AnonConst",
MgcaDisambiguation::Direct => "Direct",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for MgcaDisambiguation { }Copy, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
MgcaDisambiguation where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MgcaDisambiguation::AnonConst => {}
MgcaDisambiguation::Direct => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for MgcaDisambiguation
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MgcaDisambiguation::AnonConst => {}
MgcaDisambiguation::Direct => {}
}
}
}
};Walkable)]
1385pub enum MgcaDisambiguation {
1386 AnonConst,
1387 Direct,
1388}
1389
1390#[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),
mgca_disambiguation: ::core::clone::Clone::clone(&self.mgca_disambiguation),
}
}
}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,
mgca_disambiguation: 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 AnonConst {
fn decode(__decoder: &mut __D) -> Self {
AnonConst {
id: ::rustc_serialize::Decodable::decode(__decoder),
value: ::rustc_serialize::Decodable::decode(__decoder),
mgca_disambiguation: ::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_field3_finish(f, "AnonConst",
"id", &self.id, "value", &self.value, "mgca_disambiguation",
&&self.mgca_disambiguation)
}
}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,
mgca_disambiguation: 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 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,
mgca_disambiguation: 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)]
1396pub struct AnonConst {
1397 pub id: NodeId,
1398 pub value: Box<Expr>,
1399 pub mgca_disambiguation: MgcaDisambiguation,
1400}
1401
1402#[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)]
1404pub struct Expr {
1405 pub id: NodeId,
1406 pub kind: ExprKind,
1407 pub span: Span,
1408 pub attrs: AttrVec,
1409 pub tokens: Option<LazyAttrTokenStream>,
1410}
1411
1412impl Expr {
1413 pub fn is_potential_trivial_const_arg(&self) -> bool {
1425 let this = self.maybe_unwrap_block();
1426 if let ExprKind::Path(None, path) = &this.kind
1427 && path.is_potential_trivial_const_arg()
1428 {
1429 true
1430 } else {
1431 false
1432 }
1433 }
1434
1435 pub fn maybe_unwrap_block(&self) -> &Expr {
1437 if let ExprKind::Block(block, None) = &self.kind
1438 && let [stmt] = block.stmts.as_slice()
1439 && let StmtKind::Expr(expr) = &stmt.kind
1440 {
1441 expr
1442 } else {
1443 self
1444 }
1445 }
1446
1447 pub fn optionally_braced_mac_call(
1453 &self,
1454 already_stripped_block: bool,
1455 ) -> Option<(bool, NodeId)> {
1456 match &self.kind {
1457 ExprKind::Block(block, None)
1458 if let [stmt] = &*block.stmts
1459 && !already_stripped_block =>
1460 {
1461 match &stmt.kind {
1462 StmtKind::MacCall(_) => Some((true, stmt.id)),
1463 StmtKind::Expr(expr) if let ExprKind::MacCall(_) = &expr.kind => {
1464 Some((true, expr.id))
1465 }
1466 _ => None,
1467 }
1468 }
1469 ExprKind::MacCall(_) => Some((already_stripped_block, self.id)),
1470 _ => None,
1471 }
1472 }
1473
1474 pub fn to_bound(&self) -> Option<GenericBound> {
1475 match &self.kind {
1476 ExprKind::Path(None, path) => Some(GenericBound::Trait(PolyTraitRef::new(
1477 ThinVec::new(),
1478 path.clone(),
1479 TraitBoundModifiers::NONE,
1480 self.span,
1481 Parens::No,
1482 ))),
1483 _ => None,
1484 }
1485 }
1486
1487 pub fn peel_parens(&self) -> &Expr {
1488 let mut expr = self;
1489 while let ExprKind::Paren(inner) = &expr.kind {
1490 expr = inner;
1491 }
1492 expr
1493 }
1494
1495 pub fn peel_parens_and_refs(&self) -> &Expr {
1496 let mut expr = self;
1497 while let ExprKind::Paren(inner) | ExprKind::AddrOf(BorrowKind::Ref, _, inner) = &expr.kind
1498 {
1499 expr = inner;
1500 }
1501 expr
1502 }
1503
1504 pub fn to_ty(&self) -> Option<Box<Ty>> {
1506 let kind = match &self.kind {
1507 ExprKind::Path(qself, path) => TyKind::Path(qself.clone(), path.clone()),
1509 ExprKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
1510
1511 ExprKind::Paren(expr) => expr.to_ty().map(TyKind::Paren)?,
1512
1513 ExprKind::AddrOf(BorrowKind::Ref, mutbl, expr) => {
1514 expr.to_ty().map(|ty| TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }))?
1515 }
1516
1517 ExprKind::Repeat(expr, expr_len) => {
1518 expr.to_ty().map(|ty| TyKind::Array(ty, expr_len.clone()))?
1519 }
1520
1521 ExprKind::Array(exprs) if let [expr] = exprs.as_slice() => {
1522 expr.to_ty().map(TyKind::Slice)?
1523 }
1524
1525 ExprKind::Tup(exprs) => {
1526 let tys = exprs.iter().map(|expr| expr.to_ty()).collect::<Option<ThinVec<_>>>()?;
1527 TyKind::Tup(tys)
1528 }
1529
1530 ExprKind::Binary(binop, lhs, rhs) if binop.node == BinOpKind::Add => {
1534 let (Some(lhs), Some(rhs)) = (lhs.to_bound(), rhs.to_bound()) else {
1535 return None;
1536 };
1537 TyKind::TraitObject(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[lhs, rhs]))vec![lhs, rhs], TraitObjectSyntax::None)
1538 }
1539
1540 ExprKind::Underscore => TyKind::Infer,
1541
1542 _ => return None,
1544 };
1545
1546 Some(Box::new(Ty { kind, id: self.id, span: self.span, tokens: None }))
1547 }
1548
1549 pub fn precedence(&self) -> ExprPrecedence {
1550 fn prefix_attrs_precedence(attrs: &AttrVec) -> ExprPrecedence {
1551 for attr in attrs {
1552 if let AttrStyle::Outer = attr.style {
1553 return ExprPrecedence::Prefix;
1554 }
1555 }
1556 ExprPrecedence::Unambiguous
1557 }
1558
1559 match &self.kind {
1560 ExprKind::Closure(closure) => {
1561 match closure.fn_decl.output {
1562 FnRetTy::Default(_) => ExprPrecedence::Jump,
1563 FnRetTy::Ty(_) => prefix_attrs_precedence(&self.attrs),
1564 }
1565 }
1566
1567 ExprKind::Break(_ , value)
1568 | ExprKind::Ret(value)
1569 | ExprKind::Yield(YieldKind::Prefix(value))
1570 | ExprKind::Yeet(value) => match value {
1571 Some(_) => ExprPrecedence::Jump,
1572 None => prefix_attrs_precedence(&self.attrs),
1573 },
1574
1575 ExprKind::Become(_) => ExprPrecedence::Jump,
1576
1577 ExprKind::Range(..) => ExprPrecedence::Range,
1582
1583 ExprKind::Binary(op, ..) => op.node.precedence(),
1585 ExprKind::Cast(..) => ExprPrecedence::Cast,
1586
1587 ExprKind::Assign(..) |
1588 ExprKind::AssignOp(..) => ExprPrecedence::Assign,
1589
1590 ExprKind::AddrOf(..)
1592 | ExprKind::Let(..)
1597 | ExprKind::Unary(..) => ExprPrecedence::Prefix,
1598
1599 ExprKind::Array(_)
1601 | ExprKind::Await(..)
1602 | ExprKind::Use(..)
1603 | ExprKind::Block(..)
1604 | ExprKind::Call(..)
1605 | ExprKind::ConstBlock(_)
1606 | ExprKind::Continue(..)
1607 | ExprKind::Field(..)
1608 | ExprKind::ForLoop { .. }
1609 | ExprKind::FormatArgs(..)
1610 | ExprKind::Gen(..)
1611 | ExprKind::If(..)
1612 | ExprKind::IncludedBytes(..)
1613 | ExprKind::Index(..)
1614 | ExprKind::InlineAsm(..)
1615 | ExprKind::Lit(_)
1616 | ExprKind::Loop(..)
1617 | ExprKind::MacCall(..)
1618 | ExprKind::Match(..)
1619 | ExprKind::MethodCall(..)
1620 | ExprKind::OffsetOf(..)
1621 | ExprKind::Paren(..)
1622 | ExprKind::Path(..)
1623 | ExprKind::Repeat(..)
1624 | ExprKind::Struct(..)
1625 | ExprKind::Try(..)
1626 | ExprKind::TryBlock(..)
1627 | ExprKind::Tup(_)
1628 | ExprKind::Type(..)
1629 | ExprKind::Underscore
1630 | ExprKind::UnsafeBinderCast(..)
1631 | ExprKind::While(..)
1632 | ExprKind::Yield(YieldKind::Postfix(..))
1633 | ExprKind::Err(_)
1634 | ExprKind::Dummy => prefix_attrs_precedence(&self.attrs),
1635 }
1636 }
1637
1638 pub fn is_approximately_pattern(&self) -> bool {
1640 #[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!(
1641 &self.peel_parens().kind,
1642 ExprKind::Array(_)
1643 | ExprKind::Call(_, _)
1644 | ExprKind::Tup(_)
1645 | ExprKind::Lit(_)
1646 | ExprKind::Range(_, _, _)
1647 | ExprKind::Underscore
1648 | ExprKind::Path(_, _)
1649 | ExprKind::Struct(_)
1650 )
1651 }
1652
1653 pub fn dummy() -> Expr {
1657 Expr {
1658 id: DUMMY_NODE_ID,
1659 kind: ExprKind::Dummy,
1660 span: DUMMY_SP,
1661 attrs: ThinVec::new(),
1662 tokens: None,
1663 }
1664 }
1665}
1666
1667impl From<Box<Expr>> for Expr {
1668 fn from(value: Box<Expr>) -> Self {
1669 *value
1670 }
1671}
1672
1673#[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)]
1674pub struct Closure {
1675 pub binder: ClosureBinder,
1676 pub capture_clause: CaptureBy,
1677 pub constness: Const,
1678 pub coroutine_kind: Option<CoroutineKind>,
1679 pub movability: Movability,
1680 pub fn_decl: Box<FnDecl>,
1681 pub body: Box<Expr>,
1682 pub fn_decl_span: Span,
1684 pub fn_arg_span: Span,
1686}
1687
1688#[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)]
1690pub enum RangeLimits {
1691 HalfOpen,
1693 Closed,
1695}
1696
1697impl RangeLimits {
1698 pub fn as_str(&self) -> &'static str {
1699 match self {
1700 RangeLimits::HalfOpen => "..",
1701 RangeLimits::Closed => "..=",
1702 }
1703 }
1704}
1705
1706#[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)]
1708pub struct MethodCall {
1709 pub seg: PathSegment,
1711 pub receiver: Box<Expr>,
1713 pub args: ThinVec<Box<Expr>>,
1715 pub span: Span,
1718}
1719
1720#[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)]
1721pub enum StructRest {
1722 Base(Box<Expr>),
1724 Rest(Span),
1726 None,
1728 NoneWithError(ErrorGuaranteed),
1734}
1735
1736#[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)]
1737pub struct StructExpr {
1738 pub qself: Option<Box<QSelf>>,
1739 pub path: Path,
1740 pub fields: ThinVec<ExprField>,
1741 pub rest: StructRest,
1742}
1743
1744#[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::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 {
pat: __self_0,
iter: __self_1,
body: __self_2,
label: __self_3,
kind: __self_4 } =>
ExprKind::ForLoop {
pat: ::core::clone::Clone::clone(__self_0),
iter: ::core::clone::Clone::clone(__self_1),
body: ::core::clone::Clone::clone(__self_2),
label: ::core::clone::Clone::clone(__self_3),
kind: ::core::clone::Clone::clone(__self_4),
},
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::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::Lit(ref __binding_0) => { 7usize }
ExprKind::Cast(ref __binding_0, ref __binding_1) => {
8usize
}
ExprKind::Type(ref __binding_0, ref __binding_1) => {
9usize
}
ExprKind::Let(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
10usize
}
ExprKind::If(ref __binding_0, ref __binding_1,
ref __binding_2) => {
11usize
}
ExprKind::While(ref __binding_0, ref __binding_1,
ref __binding_2) => {
12usize
}
ExprKind::ForLoop {
pat: ref __binding_0,
iter: ref __binding_1,
body: ref __binding_2,
label: ref __binding_3,
kind: ref __binding_4 } => {
13usize
}
ExprKind::Loop(ref __binding_0, ref __binding_1,
ref __binding_2) => {
14usize
}
ExprKind::Match(ref __binding_0, ref __binding_1,
ref __binding_2) => {
15usize
}
ExprKind::Closure(ref __binding_0) => { 16usize }
ExprKind::Block(ref __binding_0, ref __binding_1) => {
17usize
}
ExprKind::Gen(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
18usize
}
ExprKind::Await(ref __binding_0, ref __binding_1) => {
19usize
}
ExprKind::Use(ref __binding_0, ref __binding_1) => {
20usize
}
ExprKind::TryBlock(ref __binding_0, ref __binding_1) => {
21usize
}
ExprKind::Assign(ref __binding_0, ref __binding_1,
ref __binding_2) => {
22usize
}
ExprKind::AssignOp(ref __binding_0, ref __binding_1,
ref __binding_2) => {
23usize
}
ExprKind::Field(ref __binding_0, ref __binding_1) => {
24usize
}
ExprKind::Index(ref __binding_0, ref __binding_1,
ref __binding_2) => {
25usize
}
ExprKind::Range(ref __binding_0, ref __binding_1,
ref __binding_2) => {
26usize
}
ExprKind::Underscore => { 27usize }
ExprKind::Path(ref __binding_0, ref __binding_1) => {
28usize
}
ExprKind::AddrOf(ref __binding_0, ref __binding_1,
ref __binding_2) => {
29usize
}
ExprKind::Break(ref __binding_0, ref __binding_1) => {
30usize
}
ExprKind::Continue(ref __binding_0) => { 31usize }
ExprKind::Ret(ref __binding_0) => { 32usize }
ExprKind::InlineAsm(ref __binding_0) => { 33usize }
ExprKind::OffsetOf(ref __binding_0, ref __binding_1) => {
34usize
}
ExprKind::MacCall(ref __binding_0) => { 35usize }
ExprKind::Struct(ref __binding_0) => { 36usize }
ExprKind::Repeat(ref __binding_0, ref __binding_1) => {
37usize
}
ExprKind::Paren(ref __binding_0) => { 38usize }
ExprKind::Try(ref __binding_0) => { 39usize }
ExprKind::Yield(ref __binding_0) => { 40usize }
ExprKind::Yeet(ref __binding_0) => { 41usize }
ExprKind::Become(ref __binding_0) => { 42usize }
ExprKind::IncludedBytes(ref __binding_0) => { 43usize }
ExprKind::FormatArgs(ref __binding_0) => { 44usize }
ExprKind::UnsafeBinderCast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
45usize
}
ExprKind::Err(ref __binding_0) => { 46usize }
ExprKind::Dummy => { 47usize }
};
::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::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 {
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);
}
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::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::Lit(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
ExprKind::Cast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
ExprKind::Type(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
ExprKind::Let(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
ExprKind::If(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
ExprKind::While(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
13usize => {
ExprKind::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),
}
}
14usize => {
ExprKind::Loop(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
15usize => {
ExprKind::Match(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
16usize => {
ExprKind::Closure(::rustc_serialize::Decodable::decode(__decoder))
}
17usize => {
ExprKind::Block(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
18usize => {
ExprKind::Gen(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
19usize => {
ExprKind::Await(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
20usize => {
ExprKind::Use(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
21usize => {
ExprKind::TryBlock(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
22usize => {
ExprKind::Assign(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
23usize => {
ExprKind::AssignOp(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
24usize => {
ExprKind::Field(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
25usize => {
ExprKind::Index(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
26usize => {
ExprKind::Range(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
27usize => { ExprKind::Underscore }
28usize => {
ExprKind::Path(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
29usize => {
ExprKind::AddrOf(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
30usize => {
ExprKind::Break(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
31usize => {
ExprKind::Continue(::rustc_serialize::Decodable::decode(__decoder))
}
32usize => {
ExprKind::Ret(::rustc_serialize::Decodable::decode(__decoder))
}
33usize => {
ExprKind::InlineAsm(::rustc_serialize::Decodable::decode(__decoder))
}
34usize => {
ExprKind::OffsetOf(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
35usize => {
ExprKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
36usize => {
ExprKind::Struct(::rustc_serialize::Decodable::decode(__decoder))
}
37usize => {
ExprKind::Repeat(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
38usize => {
ExprKind::Paren(::rustc_serialize::Decodable::decode(__decoder))
}
39usize => {
ExprKind::Try(::rustc_serialize::Decodable::decode(__decoder))
}
40usize => {
ExprKind::Yield(::rustc_serialize::Decodable::decode(__decoder))
}
41usize => {
ExprKind::Yeet(::rustc_serialize::Decodable::decode(__decoder))
}
42usize => {
ExprKind::Become(::rustc_serialize::Decodable::decode(__decoder))
}
43usize => {
ExprKind::IncludedBytes(::rustc_serialize::Decodable::decode(__decoder))
}
44usize => {
ExprKind::FormatArgs(::rustc_serialize::Decodable::decode(__decoder))
}
45usize => {
ExprKind::UnsafeBinderCast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
46usize => {
ExprKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
47usize => { ExprKind::Dummy }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ExprKind`, expected 0..48, 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::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 {
pat: __self_0,
iter: __self_1,
body: __self_2,
label: __self_3,
kind: __self_4 } =>
::core::fmt::Formatter::debug_struct_field5_finish(f,
"ForLoop", "pat", __self_0, "iter", __self_1, "body",
__self_2, "label", __self_3, "kind", &__self_4),
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::Err(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Err",
&__self_0),
ExprKind::Dummy => ::core::fmt::Formatter::write_str(f, "Dummy"),
}
}
}Debug)]
1746pub enum ExprKind {
1747 Array(ThinVec<Box<Expr>>),
1749 ConstBlock(AnonConst),
1751 Call(Box<Expr>, ThinVec<Box<Expr>>),
1758 MethodCall(Box<MethodCall>),
1760 Tup(ThinVec<Box<Expr>>),
1762 Binary(BinOp, Box<Expr>, Box<Expr>),
1764 Unary(UnOp, Box<Expr>),
1766 Lit(token::Lit),
1768 Cast(Box<Expr>, Box<Ty>),
1770 Type(Box<Expr>, Box<Ty>),
1775 Let(Box<Pat>, Box<Expr>, Span, Recovered),
1780 If(Box<Expr>, Box<Block>, Option<Box<Expr>>),
1787 While(Box<Expr>, Box<Block>, Option<Label>),
1791 ForLoop {
1797 pat: Box<Pat>,
1798 iter: Box<Expr>,
1799 body: Box<Block>,
1800 label: Option<Label>,
1801 kind: ForLoopKind,
1802 },
1803 Loop(Box<Block>, Option<Label>, Span),
1807 Match(Box<Expr>, ThinVec<Arm>, MatchKind),
1809 Closure(Box<Closure>),
1811 Block(Box<Block>, Option<Label>),
1813 Gen(CaptureBy, Box<Block>, GenBlockKind, Span),
1819 Await(Box<Expr>, Span),
1821 Use(Box<Expr>, Span),
1823
1824 TryBlock(Box<Block>, Option<Box<Ty>>),
1832
1833 Assign(Box<Expr>, Box<Expr>, Span),
1836 AssignOp(AssignOp, Box<Expr>, Box<Expr>),
1840 Field(Box<Expr>, Ident),
1842 Index(Box<Expr>, Box<Expr>, Span),
1845 Range(Option<Box<Expr>>, Option<Box<Expr>>, RangeLimits),
1847 Underscore,
1849
1850 Path(Option<Box<QSelf>>, Path),
1855
1856 AddrOf(BorrowKind, Mutability, Box<Expr>),
1858 Break(Option<Label>, Option<Box<Expr>>),
1860 Continue(Option<Label>),
1862 Ret(Option<Box<Expr>>),
1864
1865 InlineAsm(Box<InlineAsm>),
1867
1868 OffsetOf(Box<Ty>, Vec<Ident>),
1873
1874 MacCall(Box<MacCall>),
1876
1877 Struct(Box<StructExpr>),
1881
1882 Repeat(Box<Expr>, AnonConst),
1887
1888 Paren(Box<Expr>),
1890
1891 Try(Box<Expr>),
1893
1894 Yield(YieldKind),
1896
1897 Yeet(Option<Box<Expr>>),
1900
1901 Become(Box<Expr>),
1905
1906 IncludedBytes(ByteSymbol),
1918
1919 FormatArgs(Box<FormatArgs>),
1921
1922 UnsafeBinderCast(UnsafeBinderCastKind, Box<Expr>, Option<Box<Ty>>),
1923
1924 Err(ErrorGuaranteed),
1926
1927 Dummy,
1929}
1930
1931#[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)]
1933pub enum ForLoopKind {
1934 For,
1935 ForAwait,
1936}
1937
1938#[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)]
1940pub enum GenBlockKind {
1941 Async,
1942 Gen,
1943 AsyncGen,
1944}
1945
1946impl fmt::Display for GenBlockKind {
1947 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1948 self.modifier().fmt(f)
1949 }
1950}
1951
1952impl GenBlockKind {
1953 pub fn modifier(&self) -> &'static str {
1954 match self {
1955 GenBlockKind::Async => "async",
1956 GenBlockKind::Gen => "gen",
1957 GenBlockKind::AsyncGen => "async gen",
1958 }
1959 }
1960}
1961
1962#[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)]
1964#[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_hasher::HashStable for
UnsafeBinderCastKind {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
UnsafeBinderCastKind::Wrap => {}
UnsafeBinderCastKind::Unwrap => {}
}
}
}
};HashStable, 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)]
1965pub enum UnsafeBinderCastKind {
1966 Wrap,
1968 Unwrap,
1970}
1971
1972#[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)]
1987pub struct QSelf {
1988 pub ty: Box<Ty>,
1989
1990 pub path_span: Span,
1994 pub position: usize,
1995}
1996
1997#[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_hasher::HashStable for CaptureBy
{
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
CaptureBy::Value { move_kw: ref __binding_0 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
CaptureBy::Ref => {}
CaptureBy::Use { use_kw: ref __binding_0 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
1999pub enum CaptureBy {
2000 Value {
2002 move_kw: Span,
2004 },
2005 Ref,
2007 Use {
2013 use_kw: Span,
2015 },
2016}
2017
2018#[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)]
2020pub enum ClosureBinder {
2021 NotPresent,
2023 For {
2025 span: Span,
2032
2033 generic_params: ThinVec<GenericParam>,
2040 },
2041}
2042
2043#[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)]
2046pub struct MacCall {
2047 pub path: Path,
2048 pub args: Box<DelimArgs>,
2049}
2050
2051impl MacCall {
2052 pub fn span(&self) -> Span {
2053 self.path.span.to(self.args.dspan.entire())
2054 }
2055}
2056
2057#[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)]
2059pub enum AttrArgs {
2060 Empty,
2062 Delimited(DelimArgs),
2064 Eq {
2066 eq_span: Span,
2068 expr: Box<Expr>,
2069 },
2070}
2071
2072impl AttrArgs {
2073 pub fn span(&self) -> Option<Span> {
2074 match self {
2075 AttrArgs::Empty => None,
2076 AttrArgs::Delimited(args) => Some(args.dspan.entire()),
2077 AttrArgs::Eq { eq_span, expr } => Some(eq_span.to(expr.span)),
2078 }
2079 }
2080
2081 pub fn inner_tokens(&self) -> TokenStream {
2084 match self {
2085 AttrArgs::Empty => TokenStream::default(),
2086 AttrArgs::Delimited(args) => args.tokens.clone(),
2087 AttrArgs::Eq { expr, .. } => TokenStream::from_ast(expr),
2088 }
2089 }
2090}
2091
2092#[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_hasher::HashStable for DelimArgs
{
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
DelimArgs {
dspan: ref __binding_0,
delim: ref __binding_1,
tokens: ref __binding_2 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
2094pub struct DelimArgs {
2095 pub dspan: DelimSpan,
2096 pub delim: Delimiter, pub tokens: TokenStream,
2098}
2099
2100impl DelimArgs {
2101 pub fn need_semicolon(&self) -> bool {
2104 !#[allow(non_exhaustive_omitted_patterns)] match self {
DelimArgs { delim: Delimiter::Brace, .. } => true,
_ => false,
}matches!(self, DelimArgs { delim: Delimiter::Brace, .. })
2105 }
2106}
2107
2108#[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_hasher::HashStable for MacroDef {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
MacroDef {
body: ref __binding_0,
macro_rules: ref __binding_1,
eii_declaration: ref __binding_2 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
2110pub struct MacroDef {
2111 pub body: Box<DelimArgs>,
2112 pub macro_rules: bool,
2114
2115 pub eii_declaration: Option<EiiDecl>,
2121}
2122
2123#[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_hasher::HashStable for EiiDecl {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
EiiDecl {
foreign_item: ref __binding_0, impl_unsafe: ref __binding_1
} => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
2124pub struct EiiDecl {
2125 pub foreign_item: Path,
2127 pub impl_unsafe: bool,
2128}
2129
2130#[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)]
2131#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hasher::HashStable for StrStyle {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
StrStyle::Cooked => {}
StrStyle::Raw(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
2132pub enum StrStyle {
2133 Cooked,
2135 Raw(u8),
2139}
2140
2141#[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)]
2143pub enum MatchKind {
2144 Prefix,
2146 Postfix,
2148}
2149
2150#[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)]
2152pub enum YieldKind {
2153 Prefix(Option<Box<Expr>>),
2155 Postfix(Box<Expr>),
2157}
2158
2159impl YieldKind {
2160 pub const fn expr(&self) -> Option<&Box<Expr>> {
2164 match self {
2165 YieldKind::Prefix(expr) => expr.as_ref(),
2166 YieldKind::Postfix(expr) => Some(expr),
2167 }
2168 }
2169
2170 pub const fn expr_mut(&mut self) -> Option<&mut Box<Expr>> {
2172 match self {
2173 YieldKind::Prefix(expr) => expr.as_mut(),
2174 YieldKind::Postfix(expr) => Some(expr),
2175 }
2176 }
2177
2178 pub const fn same_kind(&self, other: &Self) -> bool {
2180 match (self, other) {
2181 (YieldKind::Prefix(_), YieldKind::Prefix(_)) => true,
2182 (YieldKind::Postfix(_), YieldKind::Postfix(_)) => true,
2183 _ => false,
2184 }
2185 }
2186}
2187
2188#[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_hasher::HashStable for
MetaItemLit {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
MetaItemLit {
symbol: ref __binding_0,
suffix: ref __binding_1,
kind: ref __binding_2,
span: ref __binding_3 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
{ __binding_3.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
2190pub struct MetaItemLit {
2191 pub symbol: Symbol,
2193 pub suffix: Option<Symbol>,
2195 pub kind: LitKind,
2198 pub span: Span,
2199}
2200
2201#[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)]
2203pub struct StrLit {
2204 pub symbol: Symbol,
2206 pub suffix: Option<Symbol>,
2208 pub symbol_unescaped: Symbol,
2210 pub style: StrStyle,
2211 pub span: Span,
2212}
2213
2214impl StrLit {
2215 pub fn as_token_lit(&self) -> token::Lit {
2216 let token_kind = match self.style {
2217 StrStyle::Cooked => token::Str,
2218 StrStyle::Raw(n) => token::StrRaw(n),
2219 };
2220 token::Lit::new(token_kind, self.symbol, self.suffix)
2221 }
2222}
2223
2224#[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)]
2226#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hasher::HashStable for LitIntType
{
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
LitIntType::Signed(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
LitIntType::Unsigned(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
LitIntType::Unsuffixed => {}
}
}
}
};HashStable)]
2227pub enum LitIntType {
2228 Signed(IntTy),
2230 Unsigned(UintTy),
2232 Unsuffixed,
2234}
2235
2236#[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)]
2238#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hasher::HashStable for
LitFloatType {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
LitFloatType::Suffixed(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
LitFloatType::Unsuffixed => {}
}
}
}
};HashStable)]
2239pub enum LitFloatType {
2240 Suffixed(FloatTy),
2242 Unsuffixed,
2244}
2245
2246#[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_hasher::HashStable for LitKind {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
LitKind::Str(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
LitKind::ByteStr(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
LitKind::CStr(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
LitKind::Byte(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
LitKind::Char(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
LitKind::Int(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
LitKind::Float(ref __binding_0, ref __binding_1) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
}
LitKind::Bool(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
LitKind::Err(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
2253pub enum LitKind {
2254 Str(Symbol, StrStyle),
2257 ByteStr(ByteSymbol, StrStyle),
2260 CStr(ByteSymbol, StrStyle),
2264 Byte(u8),
2266 Char(char),
2268 Int(Pu128, LitIntType),
2270 Float(Symbol, LitFloatType),
2274 Bool(bool),
2276 Err(ErrorGuaranteed),
2278}
2279
2280impl LitKind {
2281 pub fn str(&self) -> Option<Symbol> {
2282 match *self {
2283 LitKind::Str(s, _) => Some(s),
2284 _ => None,
2285 }
2286 }
2287
2288 pub fn is_str(&self) -> bool {
2290 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::Str(..) => true,
_ => false,
}matches!(self, LitKind::Str(..))
2291 }
2292
2293 pub fn is_bytestr(&self) -> bool {
2295 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::ByteStr(..) => true,
_ => false,
}matches!(self, LitKind::ByteStr(..))
2296 }
2297
2298 pub fn is_numeric(&self) -> bool {
2300 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::Int(..) | LitKind::Float(..) => true,
_ => false,
}matches!(self, LitKind::Int(..) | LitKind::Float(..))
2301 }
2302
2303 pub fn is_unsuffixed(&self) -> bool {
2306 !self.is_suffixed()
2307 }
2308
2309 pub fn is_suffixed(&self) -> bool {
2311 match *self {
2312 LitKind::Int(_, LitIntType::Signed(..) | LitIntType::Unsigned(..))
2314 | LitKind::Float(_, LitFloatType::Suffixed(..)) => true,
2315 LitKind::Str(..)
2317 | LitKind::ByteStr(..)
2318 | LitKind::CStr(..)
2319 | LitKind::Byte(..)
2320 | LitKind::Char(..)
2321 | LitKind::Int(_, LitIntType::Unsuffixed)
2322 | LitKind::Float(_, LitFloatType::Unsuffixed)
2323 | LitKind::Bool(..)
2324 | LitKind::Err(_) => false,
2325 }
2326 }
2327}
2328
2329#[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)]
2332pub struct MutTy {
2333 pub ty: Box<Ty>,
2334 pub mutbl: Mutability,
2335}
2336
2337#[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)]
2340pub struct FnSig {
2341 pub header: FnHeader,
2342 pub decl: Box<FnDecl>,
2343 pub span: Span,
2344}
2345
2346impl FnSig {
2347 pub fn header_span(&self) -> Span {
2349 match self.header.ext {
2350 Extern::Implicit(span) | Extern::Explicit(_, span) => {
2351 return self.span.with_hi(span.hi());
2352 }
2353 Extern::None => {}
2354 }
2355
2356 match self.header.safety {
2357 Safety::Unsafe(span) | Safety::Safe(span) => return self.span.with_hi(span.hi()),
2358 Safety::Default => {}
2359 };
2360
2361 if let Some(coroutine_kind) = self.header.coroutine_kind {
2362 return self.span.with_hi(coroutine_kind.span().hi());
2363 }
2364
2365 if let Const::Yes(span) = self.header.constness {
2366 return self.span.with_hi(span.hi());
2367 }
2368
2369 self.span.shrink_to_lo()
2370 }
2371
2372 pub fn safety_span(&self) -> Span {
2374 match self.header.safety {
2375 Safety::Unsafe(span) | Safety::Safe(span) => span,
2376 Safety::Default => {
2377 if let Some(extern_span) = self.header.ext.span() {
2379 return extern_span.shrink_to_lo();
2380 }
2381
2382 self.header_span().shrink_to_hi()
2384 }
2385 }
2386 }
2387
2388 pub fn extern_span(&self) -> Span {
2390 self.header.ext.span().unwrap_or(self.safety_span().shrink_to_hi())
2391 }
2392}
2393
2394#[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)]
2405pub struct AssocItemConstraint {
2406 pub id: NodeId,
2407 pub ident: Ident,
2408 pub gen_args: Option<GenericArgs>,
2409 pub kind: AssocItemConstraintKind,
2410 pub span: Span,
2411}
2412
2413#[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)]
2414pub enum Term {
2415 Ty(Box<Ty>),
2416 Const(AnonConst),
2417}
2418
2419impl From<Box<Ty>> for Term {
2420 fn from(v: Box<Ty>) -> Self {
2421 Term::Ty(v)
2422 }
2423}
2424
2425impl From<AnonConst> for Term {
2426 fn from(v: AnonConst) -> Self {
2427 Term::Const(v)
2428 }
2429}
2430
2431#[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)]
2433pub enum AssocItemConstraintKind {
2434 Equality { term: Term },
2441 Bound {
2443 #[visitable(extra = BoundKind::Bound)]
2444 bounds: GenericBounds,
2445 },
2446}
2447
2448#[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,
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 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),
tokens: ::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_field4_finish(f, "Ty", "id",
&self.id, "kind", &self.kind, "span", &self.span, "tokens",
&&self.tokens)
}
}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,
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 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,
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)]
2449pub struct Ty {
2450 pub id: NodeId,
2451 pub kind: TyKind,
2452 pub span: Span,
2453 pub tokens: Option<LazyAttrTokenStream>,
2454}
2455
2456impl Clone for Ty {
2457 fn clone(&self) -> Self {
2458 ensure_sufficient_stack(|| Self {
2459 id: self.id,
2460 kind: self.kind.clone(),
2461 span: self.span,
2462 tokens: self.tokens.clone(),
2463 })
2464 }
2465}
2466
2467impl From<Box<Ty>> for Ty {
2468 fn from(value: Box<Ty>) -> Self {
2469 *value
2470 }
2471}
2472
2473impl Ty {
2474 pub fn peel_refs(&self) -> &Self {
2475 let mut final_ty = self;
2476 while let TyKind::Ref(_, MutTy { ty, .. }) | TyKind::Ptr(MutTy { ty, .. }) = &final_ty.kind
2477 {
2478 final_ty = ty;
2479 }
2480 final_ty
2481 }
2482
2483 pub fn is_maybe_parenthesised_infer(&self) -> bool {
2484 match &self.kind {
2485 TyKind::Infer => true,
2486 TyKind::Paren(inner) => inner.is_maybe_parenthesised_infer(),
2487 _ => false,
2488 }
2489 }
2490}
2491
2492#[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)]
2493pub struct FnPtrTy {
2494 pub safety: Safety,
2495 pub ext: Extern,
2496 pub generic_params: ThinVec<GenericParam>,
2497 pub decl: Box<FnDecl>,
2498 pub decl_span: Span,
2501}
2502
2503#[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)]
2504pub struct UnsafeBinderTy {
2505 pub generic_params: ThinVec<GenericParam>,
2506 pub inner_ty: Box<Ty>,
2507}
2508
2509#[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::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::Dummy => { 19usize }
TyKind::Err(ref __binding_0) => { 20usize }
};
::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::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::Dummy }
20usize => {
TyKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `TyKind`, expected 0..21, 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::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::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::Dummy => {}
TyKind::Err(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
2513pub enum TyKind {
2514 Slice(Box<Ty>),
2516 Array(Box<Ty>, AnonConst),
2518 Ptr(MutTy),
2520 Ref(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
2522 PinnedRef(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
2526 FnPtr(Box<FnPtrTy>),
2528 UnsafeBinder(Box<UnsafeBinderTy>),
2530 Never,
2532 Tup(ThinVec<Box<Ty>>),
2534 Path(Option<Box<QSelf>>, Path),
2539 TraitObject(#[visitable(extra = BoundKind::TraitObject)] GenericBounds, TraitObjectSyntax),
2542 ImplTrait(NodeId, #[visitable(extra = BoundKind::Impl)] GenericBounds),
2549 Paren(Box<Ty>),
2551 Infer,
2554 ImplicitSelf,
2556 MacCall(Box<MacCall>),
2558 CVarArgs,
2560 Pat(Box<Ty>, Box<TyPat>),
2563 FieldOf(Box<Ty>, Option<Ident>, Ident),
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),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}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,
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 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),
tokens: ::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_field4_finish(f, "TyPat", "id",
&self.id, "kind", &self.kind, "span", &self.span, "tokens",
&&self.tokens)
}
}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,
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 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,
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)]
2630pub struct TyPat {
2631 pub id: NodeId,
2632 pub kind: TyPatKind,
2633 pub span: Span,
2634 pub tokens: Option<LazyAttrTokenStream>,
2635}
2636
2637#[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)]
2641pub enum TyPatKind {
2642 Range(Option<Box<AnonConst>>, Option<Box<AnonConst>>, Spanned<RangeEnd>),
2644
2645 NotNull,
2647
2648 Or(ThinVec<TyPat>),
2649
2650 Err(ErrorGuaranteed),
2652}
2653
2654#[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_hasher::HashStable for
TraitObjectSyntax {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
TraitObjectSyntax::Dyn => {}
TraitObjectSyntax::None => {}
}
}
}
};HashStable, 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)]
2656#[repr(u8)]
2657pub enum TraitObjectSyntax {
2658 Dyn = 0,
2660 None = 1,
2661}
2662
2663unsafe impl Tag for TraitObjectSyntax {
2667 const BITS: u32 = 2;
2668
2669 fn into_usize(self) -> usize {
2670 self as u8 as usize
2671 }
2672
2673 unsafe fn from_usize(tag: usize) -> Self {
2674 match tag {
2675 0 => TraitObjectSyntax::Dyn,
2676 1 => TraitObjectSyntax::None,
2677 _ => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
2678 }
2679 }
2680}
2681
2682#[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)]
2683pub enum PreciseCapturingArg {
2684 Lifetime(#[visitable(extra = LifetimeCtxt::GenericArg)] Lifetime),
2686 Arg(Path, NodeId),
2688}
2689
2690#[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)]
2694pub enum InlineAsmRegOrRegClass {
2695 Reg(Symbol),
2696 RegClass(Symbol),
2697}
2698
2699#[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_hasher::HashStable for
InlineAsmOptions {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
match *self {
InlineAsmOptions(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable)]
2700pub struct InlineAsmOptions(u16);
2701impl 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! {
2702 impl InlineAsmOptions: u16 {
2703 const PURE = 1 << 0;
2704 const NOMEM = 1 << 1;
2705 const READONLY = 1 << 2;
2706 const PRESERVES_FLAGS = 1 << 3;
2707 const NORETURN = 1 << 4;
2708 const NOSTACK = 1 << 5;
2709 const ATT_SYNTAX = 1 << 6;
2710 const RAW = 1 << 7;
2711 const MAY_UNWIND = 1 << 8;
2712 }
2713}
2714
2715impl InlineAsmOptions {
2716 pub const COUNT: usize = Self::all().bits().count_ones() as usize;
2717
2718 pub const GLOBAL_OPTIONS: Self = Self::ATT_SYNTAX.union(Self::RAW);
2719 pub const NAKED_OPTIONS: Self = Self::ATT_SYNTAX.union(Self::RAW);
2720
2721 pub fn human_readable_names(&self) -> Vec<&'static str> {
2722 let mut options = ::alloc::vec::Vec::new()vec![];
2723
2724 if self.contains(InlineAsmOptions::PURE) {
2725 options.push("pure");
2726 }
2727 if self.contains(InlineAsmOptions::NOMEM) {
2728 options.push("nomem");
2729 }
2730 if self.contains(InlineAsmOptions::READONLY) {
2731 options.push("readonly");
2732 }
2733 if self.contains(InlineAsmOptions::PRESERVES_FLAGS) {
2734 options.push("preserves_flags");
2735 }
2736 if self.contains(InlineAsmOptions::NORETURN) {
2737 options.push("noreturn");
2738 }
2739 if self.contains(InlineAsmOptions::NOSTACK) {
2740 options.push("nostack");
2741 }
2742 if self.contains(InlineAsmOptions::ATT_SYNTAX) {
2743 options.push("att_syntax");
2744 }
2745 if self.contains(InlineAsmOptions::RAW) {
2746 options.push("raw");
2747 }
2748 if self.contains(InlineAsmOptions::MAY_UNWIND) {
2749 options.push("may_unwind");
2750 }
2751
2752 options
2753 }
2754}
2755
2756impl std::fmt::Debug for InlineAsmOptions {
2757 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2758 bitflags::parser::to_writer(self, f)
2759 }
2760}
2761
2762#[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_hasher::HashStable for
InlineAsmTemplatePiece {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
InlineAsmTemplatePiece::String(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref __binding_0,
modifier: ref __binding_1,
span: ref __binding_2 } => {
{ __binding_0.hash_stable(__hcx, __hasher); }
{ __binding_1.hash_stable(__hcx, __hasher); }
{ __binding_2.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
2763pub enum InlineAsmTemplatePiece {
2764 String(Cow<'static, str>),
2765 Placeholder { operand_idx: usize, modifier: Option<char>, span: Span },
2766}
2767
2768impl fmt::Display for InlineAsmTemplatePiece {
2769 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2770 match self {
2771 Self::String(s) => {
2772 for c in s.chars() {
2773 match c {
2774 '{' => f.write_str("{{")?,
2775 '}' => f.write_str("}}")?,
2776 _ => c.fmt(f)?,
2777 }
2778 }
2779 Ok(())
2780 }
2781 Self::Placeholder { operand_idx, modifier: Some(modifier), .. } => {
2782 f.write_fmt(format_args!("{{{0}:{1}}}", operand_idx, modifier))write!(f, "{{{operand_idx}:{modifier}}}")
2783 }
2784 Self::Placeholder { operand_idx, modifier: None, .. } => {
2785 f.write_fmt(format_args!("{{{0}}}", operand_idx))write!(f, "{{{operand_idx}}}")
2786 }
2787 }
2788 }
2789}
2790
2791impl InlineAsmTemplatePiece {
2792 pub fn to_string(s: &[Self]) -> String {
2794 use fmt::Write;
2795 let mut out = String::new();
2796 for p in s.iter() {
2797 let _ = out.write_fmt(format_args!("{0}", p))write!(out, "{p}");
2798 }
2799 out
2800 }
2801}
2802
2803#[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)]
2811pub struct InlineAsmSym {
2812 pub id: NodeId,
2813 pub qself: Option<Box<QSelf>>,
2814 pub path: Path,
2815}
2816
2817#[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)]
2821pub enum InlineAsmOperand {
2822 In {
2823 reg: InlineAsmRegOrRegClass,
2824 expr: Box<Expr>,
2825 },
2826 Out {
2827 reg: InlineAsmRegOrRegClass,
2828 late: bool,
2829 expr: Option<Box<Expr>>,
2830 },
2831 InOut {
2832 reg: InlineAsmRegOrRegClass,
2833 late: bool,
2834 expr: Box<Expr>,
2835 },
2836 SplitInOut {
2837 reg: InlineAsmRegOrRegClass,
2838 late: bool,
2839 in_expr: Box<Expr>,
2840 out_expr: Option<Box<Expr>>,
2841 },
2842 Const {
2843 anon_const: AnonConst,
2844 },
2845 Sym {
2846 sym: InlineAsmSym,
2847 },
2848 Label {
2849 block: Box<Block>,
2850 },
2851}
2852
2853impl InlineAsmOperand {
2854 pub fn reg(&self) -> Option<&InlineAsmRegOrRegClass> {
2855 match self {
2856 Self::In { reg, .. }
2857 | Self::Out { reg, .. }
2858 | Self::InOut { reg, .. }
2859 | Self::SplitInOut { reg, .. } => Some(reg),
2860 Self::Const { .. } | Self::Sym { .. } | Self::Label { .. } => None,
2861 }
2862 }
2863}
2864
2865#[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_hasher::HashStable for AsmMacro {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
AsmMacro::Asm => {}
AsmMacro::GlobalAsm => {}
AsmMacro::NakedAsm => {}
}
}
}
};HashStable, 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)]
2866pub enum AsmMacro {
2867 Asm,
2869 GlobalAsm,
2871 NakedAsm,
2873}
2874
2875impl AsmMacro {
2876 pub const fn macro_name(self) -> &'static str {
2877 match self {
2878 AsmMacro::Asm => "asm",
2879 AsmMacro::GlobalAsm => "global_asm",
2880 AsmMacro::NakedAsm => "naked_asm",
2881 }
2882 }
2883
2884 pub const fn is_supported_option(self, option: InlineAsmOptions) -> bool {
2885 match self {
2886 AsmMacro::Asm => true,
2887 AsmMacro::GlobalAsm => InlineAsmOptions::GLOBAL_OPTIONS.contains(option),
2888 AsmMacro::NakedAsm => InlineAsmOptions::NAKED_OPTIONS.contains(option),
2889 }
2890 }
2891
2892 pub const fn diverges(self, options: InlineAsmOptions) -> bool {
2893 match self {
2894 AsmMacro::Asm => options.contains(InlineAsmOptions::NORETURN),
2895 AsmMacro::GlobalAsm => true,
2896 AsmMacro::NakedAsm => true,
2897 }
2898 }
2899}
2900
2901#[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)]
2905pub struct InlineAsm {
2906 pub asm_macro: AsmMacro,
2907 pub template: Vec<InlineAsmTemplatePiece>,
2908 pub template_strs: Box<[(Symbol, Option<Symbol>, Span)]>,
2909 pub operands: Vec<(InlineAsmOperand, Span)>,
2910 pub clobber_abis: Vec<(Symbol, Span)>,
2911 #[visitable(ignore)]
2912 pub options: InlineAsmOptions,
2913 pub line_spans: Vec<Span>,
2914}
2915
2916#[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)]
2920pub struct Param {
2921 pub attrs: AttrVec,
2922 pub ty: Box<Ty>,
2923 pub pat: Box<Pat>,
2924 pub id: NodeId,
2925 pub span: Span,
2926 pub is_placeholder: bool,
2927}
2928
2929#[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)]
2933pub enum SelfKind {
2934 Value(Mutability),
2936 Region(Option<Lifetime>, Mutability),
2938 Pinned(Option<Lifetime>, Mutability),
2940 Explicit(Box<Ty>, Mutability),
2942}
2943
2944impl SelfKind {
2945 pub fn to_ref_suggestion(&self) -> String {
2946 match self {
2947 SelfKind::Region(None, mutbl) => mutbl.ref_prefix_str().to_string(),
2948 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()),
2949 SelfKind::Pinned(None, mutbl) => ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("&pin {0}", mutbl.ptr_str()))
})format!("&pin {}", mutbl.ptr_str()),
2950 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()),
2951 SelfKind::Value(_) | SelfKind::Explicit(_, _) => {
2952 {
::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")
2953 }
2954 }
2955 }
2956}
2957
2958pub type ExplicitSelf = Spanned<SelfKind>;
2959
2960impl Param {
2961 pub fn to_self(&self) -> Option<ExplicitSelf> {
2963 if let PatKind::Ident(BindingMode(ByRef::No, mutbl), ident, _) = self.pat.kind {
2964 if ident.name == kw::SelfLower {
2965 return match self.ty.kind {
2966 TyKind::ImplicitSelf => Some(respan(self.pat.span, SelfKind::Value(mutbl))),
2967 TyKind::Ref(lt, MutTy { ref ty, mutbl }) if ty.kind.is_implicit_self() => {
2968 Some(respan(self.pat.span, SelfKind::Region(lt, mutbl)))
2969 }
2970 TyKind::PinnedRef(lt, MutTy { ref ty, mutbl })
2971 if ty.kind.is_implicit_self() =>
2972 {
2973 Some(respan(self.pat.span, SelfKind::Pinned(lt, mutbl)))
2974 }
2975 _ => Some(respan(
2976 self.pat.span.to(self.ty.span),
2977 SelfKind::Explicit(self.ty.clone(), mutbl),
2978 )),
2979 };
2980 }
2981 }
2982 None
2983 }
2984
2985 pub fn is_self(&self) -> bool {
2987 if let PatKind::Ident(_, ident, _) = self.pat.kind {
2988 ident.name == kw::SelfLower
2989 } else {
2990 false
2991 }
2992 }
2993
2994 pub fn from_self(attrs: AttrVec, eself: ExplicitSelf, eself_ident: Ident) -> Param {
2996 let span = eself.span.to(eself_ident.span);
2997 let infer_ty = Box::new(Ty {
2998 id: DUMMY_NODE_ID,
2999 kind: TyKind::ImplicitSelf,
3000 span: eself_ident.span,
3001 tokens: None,
3002 });
3003 let (mutbl, ty) = match eself.node {
3004 SelfKind::Explicit(ty, mutbl) => (mutbl, ty),
3005 SelfKind::Value(mutbl) => (mutbl, infer_ty),
3006 SelfKind::Region(lt, mutbl) => (
3007 Mutability::Not,
3008 Box::new(Ty {
3009 id: DUMMY_NODE_ID,
3010 kind: TyKind::Ref(lt, MutTy { ty: infer_ty, mutbl }),
3011 span,
3012 tokens: None,
3013 }),
3014 ),
3015 SelfKind::Pinned(lt, mutbl) => (
3016 mutbl,
3017 Box::new(Ty {
3018 id: DUMMY_NODE_ID,
3019 kind: TyKind::PinnedRef(lt, MutTy { ty: infer_ty, mutbl }),
3020 span,
3021 tokens: None,
3022 }),
3023 ),
3024 };
3025 Param {
3026 attrs,
3027 pat: Box::new(Pat {
3028 id: DUMMY_NODE_ID,
3029 kind: PatKind::Ident(BindingMode(ByRef::No, mutbl), eself_ident, None),
3030 span,
3031 tokens: None,
3032 }),
3033 span,
3034 ty,
3035 id: DUMMY_NODE_ID,
3036 is_placeholder: false,
3037 }
3038 }
3039}
3040
3041#[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)]
3048pub struct FnDecl {
3049 pub inputs: ThinVec<Param>,
3050 pub output: FnRetTy,
3051}
3052
3053impl FnDecl {
3054 pub fn has_self(&self) -> bool {
3055 self.inputs.get(0).is_some_and(Param::is_self)
3056 }
3057 pub fn c_variadic(&self) -> bool {
3058 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))
3059 }
3060}
3061
3062#[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_hasher::HashStable for IsAuto {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self { IsAuto::Yes => {} IsAuto::No => {} }
}
}
};HashStable, 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)]
3064pub enum IsAuto {
3065 Yes,
3066 No,
3067}
3068
3069#[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)]
3071#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hasher::HashStable for Safety {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
Safety::Unsafe(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Safety::Safe(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Safety::Default => {}
}
}
}
};HashStable, 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)]
3072pub enum Safety {
3073 Unsafe(Span),
3075 Safe(Span),
3077 Default,
3080}
3081
3082#[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)]
3088pub enum CoroutineKind {
3089 Async { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3091 Gen { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3093 AsyncGen { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3095}
3096
3097impl CoroutineKind {
3098 pub fn span(self) -> Span {
3099 match self {
3100 CoroutineKind::Async { span, .. } => span,
3101 CoroutineKind::Gen { span, .. } => span,
3102 CoroutineKind::AsyncGen { span, .. } => span,
3103 }
3104 }
3105
3106 pub fn as_str(self) -> &'static str {
3107 match self {
3108 CoroutineKind::Async { .. } => "async",
3109 CoroutineKind::Gen { .. } => "gen",
3110 CoroutineKind::AsyncGen { .. } => "async gen",
3111 }
3112 }
3113
3114 pub fn closure_id(self) -> NodeId {
3115 match self {
3116 CoroutineKind::Async { closure_id, .. }
3117 | CoroutineKind::Gen { closure_id, .. }
3118 | CoroutineKind::AsyncGen { closure_id, .. } => closure_id,
3119 }
3120 }
3121
3122 pub fn return_id(self) -> (NodeId, Span) {
3125 match self {
3126 CoroutineKind::Async { return_impl_trait_id, span, .. }
3127 | CoroutineKind::Gen { return_impl_trait_id, span, .. }
3128 | CoroutineKind::AsyncGen { return_impl_trait_id, span, .. } => {
3129 (return_impl_trait_id, span)
3130 }
3131 }
3132 }
3133}
3134
3135#[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)]
3136#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hasher::HashStable for Const {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
Const::Yes(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Const::No => {}
}
}
}
};HashStable, 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)]
3137pub enum Const {
3138 Yes(Span),
3139 No,
3140}
3141
3142#[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_hasher::HashStable for
Defaultness {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
Defaultness::Implicit => {}
Defaultness::Default(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
Defaultness::Final(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
3145pub enum Defaultness {
3146 Implicit,
3152 Default(Span),
3154 Final(Span),
3156}
3157
3158#[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_hasher::HashStable for
ImplPolarity {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
ImplPolarity::Positive => {}
ImplPolarity::Negative(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
3159pub enum ImplPolarity {
3160 Positive,
3162 Negative(Span),
3164}
3165
3166impl fmt::Debug for ImplPolarity {
3167 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
3168 match *self {
3169 ImplPolarity::Positive => "positive".fmt(f),
3170 ImplPolarity::Negative(_) => "negative".fmt(f),
3171 }
3172 }
3173}
3174
3175#[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)]
3177#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hasher::HashStable for
BoundPolarity {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
BoundPolarity::Positive => {}
BoundPolarity::Negative(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
BoundPolarity::Maybe(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
3178pub enum BoundPolarity {
3179 Positive,
3181 Negative(Span),
3183 Maybe(Span),
3185}
3186
3187impl BoundPolarity {
3188 pub fn as_str(self) -> &'static str {
3189 match self {
3190 Self::Positive => "",
3191 Self::Negative(_) => "!",
3192 Self::Maybe(_) => "?",
3193 }
3194 }
3195}
3196
3197#[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)]
3199#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hasher::HashStable for
BoundConstness {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
BoundConstness::Never => {}
BoundConstness::Always(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
BoundConstness::Maybe(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
3200pub enum BoundConstness {
3201 Never,
3203 Always(Span),
3205 Maybe(Span),
3207}
3208
3209impl BoundConstness {
3210 pub fn as_str(self) -> &'static str {
3211 match self {
3212 Self::Never => "",
3213 Self::Always(_) => "const",
3214 Self::Maybe(_) => "[const]",
3215 }
3216 }
3217}
3218
3219#[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)]
3221#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hasher::HashStable for
BoundAsyncness {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
BoundAsyncness::Normal => {}
BoundAsyncness::Async(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
3222pub enum BoundAsyncness {
3223 Normal,
3225 Async(Span),
3227}
3228
3229impl BoundAsyncness {
3230 pub fn as_str(self) -> &'static str {
3231 match self {
3232 Self::Normal => "",
3233 Self::Async(_) => "async",
3234 }
3235 }
3236}
3237
3238#[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)]
3239pub enum FnRetTy {
3240 Default(Span),
3245 Ty(Box<Ty>),
3247}
3248
3249impl FnRetTy {
3250 pub fn span(&self) -> Span {
3251 match self {
3252 &FnRetTy::Default(span) => span,
3253 FnRetTy::Ty(ty) => ty.span,
3254 }
3255 }
3256}
3257
3258#[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)]
3259pub enum Inline {
3260 Yes,
3261 No { had_parse_error: Result<(), ErrorGuaranteed> },
3262}
3263
3264#[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)]
3266pub enum ModKind {
3267 Loaded(ThinVec<Box<Item>>, Inline, ModSpans),
3272 Unloaded,
3274}
3275
3276#[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)]
3277pub struct ModSpans {
3278 pub inner_span: Span,
3281 pub inject_use_span: Span,
3282}
3283
3284#[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)]
3288pub struct ForeignMod {
3289 pub extern_span: Span,
3291 pub safety: Safety,
3294 pub abi: Option<StrLit>,
3295 pub items: ThinVec<Box<ForeignItem>>,
3296}
3297
3298#[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)]
3299pub struct EnumDef {
3300 pub variants: ThinVec<Variant>,
3301}
3302
3303#[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)]
3305pub struct Variant {
3306 pub attrs: AttrVec,
3308 pub id: NodeId,
3310 pub span: Span,
3312 pub vis: Visibility,
3314 pub ident: Ident,
3316
3317 pub data: VariantData,
3319 pub disr_expr: Option<AnonConst>,
3321 pub is_placeholder: bool,
3323}
3324
3325#[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)]
3327pub enum UseTreeKind {
3328 Simple(Option<Ident>),
3330 Nested { items: ThinVec<(UseTree, NodeId)>, span: Span },
3339 Glob(Span),
3341}
3342
3343#[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)]
3346pub struct UseTree {
3347 pub prefix: Path,
3348 pub kind: UseTreeKind,
3349}
3350
3351impl UseTree {
3352 pub fn ident(&self) -> Ident {
3355 match self.kind {
3356 UseTreeKind::Simple(Some(rename)) => rename,
3357 UseTreeKind::Simple(None) => {
3358 self.prefix.segments.last().expect("empty prefix in a simple import").ident
3359 }
3360 _ => {
::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"),
3361 }
3362 }
3363
3364 pub fn span(&self) -> Span {
3368 self.prefix.span.to(self.hi_span())
3369 }
3370
3371 pub fn hi_span(&self) -> Span {
3377 match self.kind {
3378 UseTreeKind::Simple(None) => self.prefix.span,
3379 UseTreeKind::Simple(Some(name)) => name.span,
3380 UseTreeKind::Nested { span, .. } => span,
3381 UseTreeKind::Glob(span) => span,
3382 }
3383 }
3384}
3385
3386#[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)]
3390#[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_hasher::HashStable for AttrStyle
{
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self { AttrStyle::Outer => {} AttrStyle::Inner => {} }
}
}
};HashStable, 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)]
3391pub enum AttrStyle {
3392 Outer,
3393 Inner,
3394}
3395
3396pub type AttrVec = ThinVec<Attribute>;
3398
3399#[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)]
3401pub struct Attribute {
3402 pub kind: AttrKind,
3403 pub id: AttrId,
3404 pub style: AttrStyle,
3407 pub span: Span,
3408}
3409
3410#[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::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::DocComment(ref __binding_0, ref __binding_1) => {
1usize
}
};
::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::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::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..2, 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::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::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::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)]
3411pub enum AttrKind {
3412 Normal(Box<NormalAttr>),
3414
3415 DocComment(CommentKind, Symbol),
3419}
3420
3421#[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)]
3422pub struct NormalAttr {
3423 pub item: AttrItem,
3424 pub tokens: Option<LazyAttrTokenStream>,
3426}
3427
3428impl NormalAttr {
3429 pub fn from_ident(ident: Ident) -> Self {
3430 Self {
3431 item: AttrItem {
3432 unsafety: Safety::Default,
3433 path: Path::from_ident(ident),
3434 args: AttrItemKind::Unparsed(AttrArgs::Empty),
3435 tokens: None,
3436 },
3437 tokens: None,
3438 }
3439 }
3440}
3441
3442#[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),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}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,
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 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),
tokens: ::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, "tokens", &&self.tokens)
}
}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,
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 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,
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)]
3443pub struct AttrItem {
3444 pub unsafety: Safety,
3445 pub path: Path,
3446 pub args: AttrItemKind,
3447 pub tokens: Option<LazyAttrTokenStream>,
3449}
3450
3451#[derive(#[automatically_derived]
impl ::core::clone::Clone for AttrItemKind {
#[inline]
fn clone(&self) -> AttrItemKind {
match self {
AttrItemKind::Parsed(__self_0) =>
AttrItemKind::Parsed(::core::clone::Clone::clone(__self_0)),
AttrItemKind::Unparsed(__self_0) =>
AttrItemKind::Unparsed(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AttrItemKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AttrItemKind::Parsed(ref __binding_0) => { 0usize }
AttrItemKind::Unparsed(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AttrItemKind::Parsed(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AttrItemKind::Unparsed(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AttrItemKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
AttrItemKind::Parsed(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
AttrItemKind::Unparsed(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AttrItemKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AttrItemKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AttrItemKind::Parsed(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Parsed",
&__self_0),
AttrItemKind::Unparsed(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Unparsed", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AttrItemKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AttrItemKind::Parsed(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);
}
}
}
}
AttrItemKind::Unparsed(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 AttrItemKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AttrItemKind::Parsed(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
AttrItemKind::Unparsed(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3454pub enum AttrItemKind {
3455 Parsed(EarlyParsedAttribute),
3456 Unparsed(AttrArgs),
3457}
3458
3459impl AttrItemKind {
3460 pub fn unparsed(self) -> Option<AttrArgs> {
3461 match self {
3462 AttrItemKind::Unparsed(args) => Some(args),
3463 AttrItemKind::Parsed(_) => None,
3464 }
3465 }
3466
3467 pub fn unparsed_ref(&self) -> Option<&AttrArgs> {
3468 match self {
3469 AttrItemKind::Unparsed(args) => Some(args),
3470 AttrItemKind::Parsed(_) => None,
3471 }
3472 }
3473
3474 pub fn span(&self) -> Option<Span> {
3475 match self {
3476 AttrItemKind::Unparsed(args) => args.span(),
3477 AttrItemKind::Parsed(_) => None,
3478 }
3479 }
3480}
3481
3482#[derive(#[automatically_derived]
impl ::core::clone::Clone for EarlyParsedAttribute {
#[inline]
fn clone(&self) -> EarlyParsedAttribute {
match self {
EarlyParsedAttribute::CfgTrace(__self_0) =>
EarlyParsedAttribute::CfgTrace(::core::clone::Clone::clone(__self_0)),
EarlyParsedAttribute::CfgAttrTrace =>
EarlyParsedAttribute::CfgAttrTrace,
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for EarlyParsedAttribute {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
EarlyParsedAttribute::CfgTrace(ref __binding_0) => {
0usize
}
EarlyParsedAttribute::CfgAttrTrace => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
EarlyParsedAttribute::CfgTrace(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
EarlyParsedAttribute::CfgAttrTrace => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for EarlyParsedAttribute {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
EarlyParsedAttribute::CfgTrace(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { EarlyParsedAttribute::CfgAttrTrace }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `EarlyParsedAttribute`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for EarlyParsedAttribute {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
EarlyParsedAttribute::CfgTrace(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"CfgTrace", &__self_0),
EarlyParsedAttribute::CfgAttrTrace =>
::core::fmt::Formatter::write_str(f, "CfgAttrTrace"),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hasher::HashStable for
EarlyParsedAttribute {
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
EarlyParsedAttribute::CfgTrace(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
EarlyParsedAttribute::CfgAttrTrace => {}
}
}
}
};HashStable)]
3488pub enum EarlyParsedAttribute {
3489 CfgTrace(CfgEntry),
3490 CfgAttrTrace,
3491}
3492
3493impl AttrItem {
3494 pub fn is_valid_for_outer_style(&self) -> bool {
3495 self.path == sym::cfg_attr
3496 || self.path == sym::cfg
3497 || self.path == sym::forbid
3498 || self.path == sym::warn
3499 || self.path == sym::allow
3500 || self.path == sym::deny
3501 }
3502}
3503
3504#[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)]
3511pub struct TraitRef {
3512 pub path: Path,
3513 pub ref_id: NodeId,
3514}
3515
3516#[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)]
3518pub enum Parens {
3519 Yes,
3520 No,
3521}
3522
3523#[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)]
3524pub struct PolyTraitRef {
3525 pub bound_generic_params: ThinVec<GenericParam>,
3527
3528 pub modifiers: TraitBoundModifiers,
3530
3531 pub trait_ref: TraitRef,
3533
3534 pub span: Span,
3535
3536 pub parens: Parens,
3539}
3540
3541impl PolyTraitRef {
3542 pub fn new(
3543 generic_params: ThinVec<GenericParam>,
3544 path: Path,
3545 modifiers: TraitBoundModifiers,
3546 span: Span,
3547 parens: Parens,
3548 ) -> Self {
3549 PolyTraitRef {
3550 bound_generic_params: generic_params,
3551 modifiers,
3552 trait_ref: TraitRef { path, ref_id: DUMMY_NODE_ID },
3553 span,
3554 parens,
3555 }
3556 }
3557}
3558
3559#[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),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}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,
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 Visibility {
fn decode(__decoder: &mut __D) -> Self {
Visibility {
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
tokens: ::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_field3_finish(f, "Visibility",
"kind", &self.kind, "span", &self.span, "tokens", &&self.tokens)
}
}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,
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 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,
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)]
3560pub struct Visibility {
3561 pub kind: VisibilityKind,
3562 pub span: Span,
3563 pub tokens: Option<LazyAttrTokenStream>,
3564}
3565
3566#[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)]
3567pub enum VisibilityKind {
3568 Public,
3569 Restricted { path: Box<Path>, id: NodeId, shorthand: bool },
3570 Inherited,
3571}
3572
3573impl VisibilityKind {
3574 pub fn is_pub(&self) -> bool {
3575 #[allow(non_exhaustive_omitted_patterns)] match self {
VisibilityKind::Public => true,
_ => false,
}matches!(self, VisibilityKind::Public)
3576 }
3577}
3578
3579#[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),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}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,
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 ImplRestriction {
fn decode(__decoder: &mut __D) -> Self {
ImplRestriction {
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
tokens: ::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_field3_finish(f,
"ImplRestriction", "kind", &self.kind, "span", &self.span,
"tokens", &&self.tokens)
}
}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,
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 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,
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)]
3580pub struct ImplRestriction {
3581 pub kind: RestrictionKind,
3582 pub span: Span,
3583 pub tokens: Option<LazyAttrTokenStream>,
3584}
3585
3586#[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)]
3587pub enum RestrictionKind {
3588 Unrestricted,
3589 Restricted { path: Box<Path>, id: NodeId, shorthand: bool },
3590}
3591
3592#[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),
safety: ::core::clone::Clone::clone(&self.safety),
ident: ::core::clone::Clone::clone(&self.ident),
ty: ::core::clone::Clone::clone(&self.ty),
default: ::core::clone::Clone::clone(&self.default),
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,
safety: ref __binding_4,
ident: ref __binding_5,
ty: ref __binding_6,
default: ref __binding_7,
is_placeholder: 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 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),
safety: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
ty: ::rustc_serialize::Decodable::decode(__decoder),
default: ::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", "safety", "ident", "ty",
"default", "is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.attrs, &self.id, &self.span, &self.vis, &self.safety,
&self.ident, &self.ty, &self.default,
&&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,
safety: ref __binding_4,
ident: ref __binding_5,
ty: ref __binding_6,
default: ref __binding_7,
is_placeholder: 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 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,
safety: ref mut __binding_4,
ident: ref mut __binding_5,
ty: ref mut __binding_6,
default: ref mut __binding_7,
is_placeholder: 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)]
3596pub struct FieldDef {
3597 pub attrs: AttrVec,
3598 pub id: NodeId,
3599 pub span: Span,
3600 pub vis: Visibility,
3601 pub safety: Safety,
3602 pub ident: Option<Ident>,
3603
3604 pub ty: Box<Ty>,
3605 pub default: Option<AnonConst>,
3606 pub is_placeholder: bool,
3607}
3608
3609#[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_hasher::HashStable for Recovered
{
#[inline]
fn hash_stable<__Hcx: ::rustc_data_structures::stable_hasher::HashStableContext>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hasher::StableHasher) {
::std::mem::discriminant(self).hash_stable(__hcx, __hasher);
match *self {
Recovered::No => {}
Recovered::Yes(ref __binding_0) => {
{ __binding_0.hash_stable(__hcx, __hasher); }
}
}
}
}
};HashStable, 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)]
3611pub enum Recovered {
3612 No,
3613 Yes(ErrorGuaranteed),
3614}
3615
3616#[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)]
3618pub enum VariantData {
3619 Struct { fields: ThinVec<FieldDef>, recovered: Recovered },
3623 Tuple(ThinVec<FieldDef>, NodeId),
3627 Unit(NodeId),
3631}
3632
3633impl VariantData {
3634 pub fn fields(&self) -> &[FieldDef] {
3636 match self {
3637 VariantData::Struct { fields, .. } | VariantData::Tuple(fields, _) => fields,
3638 _ => &[],
3639 }
3640 }
3641
3642 pub fn ctor_node_id(&self) -> Option<NodeId> {
3644 match *self {
3645 VariantData::Struct { .. } => None,
3646 VariantData::Tuple(_, id) | VariantData::Unit(id) => Some(id),
3647 }
3648 }
3649}
3650
3651#[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)]
3653pub struct Item<K = ItemKind> {
3654 pub attrs: AttrVec,
3655 pub id: NodeId,
3656 pub span: Span,
3657 pub vis: Visibility,
3658
3659 pub kind: K,
3660
3661 pub tokens: Option<LazyAttrTokenStream>,
3669}
3670
3671impl Item {
3672 pub fn span_with_attributes(&self) -> Span {
3674 self.attrs.iter().fold(self.span, |acc, attr| acc.to(attr.span))
3675 }
3676
3677 pub fn opt_generics(&self) -> Option<&Generics> {
3678 match &self.kind {
3679 ItemKind::ExternCrate(..)
3680 | ItemKind::ConstBlock(_)
3681 | ItemKind::Use(_)
3682 | ItemKind::Mod(..)
3683 | ItemKind::ForeignMod(_)
3684 | ItemKind::GlobalAsm(_)
3685 | ItemKind::MacCall(_)
3686 | ItemKind::Delegation(_)
3687 | ItemKind::DelegationMac(_)
3688 | ItemKind::MacroDef(..) => None,
3689 ItemKind::Static(_) => None,
3690 ItemKind::Const(i) => Some(&i.generics),
3691 ItemKind::Fn(i) => Some(&i.generics),
3692 ItemKind::TyAlias(i) => Some(&i.generics),
3693 ItemKind::TraitAlias(i) => Some(&i.generics),
3694
3695 ItemKind::Enum(_, generics, _)
3696 | ItemKind::Struct(_, generics, _)
3697 | ItemKind::Union(_, generics, _) => Some(&generics),
3698 ItemKind::Trait(i) => Some(&i.generics),
3699 ItemKind::Impl(i) => Some(&i.generics),
3700 }
3701 }
3702}
3703
3704#[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)]
3706pub enum Extern {
3707 None,
3711 Implicit(Span),
3717 Explicit(StrLit, Span),
3721}
3722
3723impl Extern {
3724 pub fn from_abi(abi: Option<StrLit>, span: Span) -> Extern {
3725 match abi {
3726 Some(name) => Extern::Explicit(name, span),
3727 None => Extern::Implicit(span),
3728 }
3729 }
3730
3731 pub fn span(self) -> Option<Span> {
3732 match self {
3733 Extern::None => None,
3734 Extern::Implicit(span) | Extern::Explicit(_, span) => Some(span),
3735 }
3736 }
3737}
3738
3739#[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)]
3744pub struct FnHeader {
3745 pub constness: Const,
3747 pub coroutine_kind: Option<CoroutineKind>,
3749 pub safety: Safety,
3751 pub ext: Extern,
3753}
3754
3755impl FnHeader {
3756 pub fn has_qualifiers(&self) -> bool {
3758 let Self { safety, coroutine_kind, constness, ext } = self;
3759 #[allow(non_exhaustive_omitted_patterns)] match safety {
Safety::Unsafe(_) => true,
_ => false,
}matches!(safety, Safety::Unsafe(_))
3760 || coroutine_kind.is_some()
3761 || #[allow(non_exhaustive_omitted_patterns)] match constness {
Const::Yes(_) => true,
_ => false,
}matches!(constness, Const::Yes(_))
3762 || !#[allow(non_exhaustive_omitted_patterns)] match ext {
Extern::None => true,
_ => false,
}matches!(ext, Extern::None)
3763 }
3764}
3765
3766impl Default for FnHeader {
3767 fn default() -> FnHeader {
3768 FnHeader {
3769 safety: Safety::Default,
3770 coroutine_kind: None,
3771 constness: Const::No,
3772 ext: Extern::None,
3773 }
3774 }
3775}
3776
3777#[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)]
3778pub struct TraitAlias {
3779 pub constness: Const,
3780 pub ident: Ident,
3781 pub generics: Generics,
3782 #[visitable(extra = BoundKind::Bound)]
3783 pub bounds: GenericBounds,
3784}
3785
3786#[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)]
3787pub struct Trait {
3788 pub impl_restriction: ImplRestriction,
3789 pub constness: Const,
3790 pub safety: Safety,
3791 pub is_auto: IsAuto,
3792 pub ident: Ident,
3793 pub generics: Generics,
3794 #[visitable(extra = BoundKind::SuperTraits)]
3795 pub bounds: GenericBounds,
3796 #[visitable(extra = AssocCtxt::Trait)]
3797 pub items: ThinVec<Box<AssocItem>>,
3798}
3799
3800#[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)]
3801pub struct TyAlias {
3802 pub defaultness: Defaultness,
3803 pub ident: Ident,
3804 pub generics: Generics,
3805 pub after_where_clause: WhereClause,
3820 #[visitable(extra = BoundKind::Bound)]
3821 pub bounds: GenericBounds,
3822 pub ty: Option<Box<Ty>>,
3823}
3824
3825#[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)]
3826pub struct Impl {
3827 pub generics: Generics,
3828 pub constness: Const,
3829 pub of_trait: Option<Box<TraitImplHeader>>,
3830 pub self_ty: Box<Ty>,
3831 pub items: ThinVec<Box<AssocItem>>,
3832}
3833
3834#[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)]
3835pub struct TraitImplHeader {
3836 pub defaultness: Defaultness,
3837 pub safety: Safety,
3838 pub polarity: ImplPolarity,
3839 pub trait_ref: TraitRef,
3840}
3841
3842#[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)]
3843pub struct FnContract {
3844 pub declarations: ThinVec<Stmt>,
3847 pub requires: Option<Box<Expr>>,
3848 pub ensures: Option<Box<Expr>>,
3849}
3850
3851#[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_impls: ::core::clone::Clone::clone(&self.eii_impls),
}
}
}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_impls: 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_impls: ::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_impls"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.defaultness, &self.ident, &self.generics, &self.sig,
&self.contract, &self.define_opaque, &self.body,
&&self.eii_impls];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Fn", names,
values)
}
}Debug)]
3852pub struct Fn {
3853 pub defaultness: Defaultness,
3854 pub ident: Ident,
3855 pub generics: Generics,
3856 pub sig: FnSig,
3857 pub contract: Option<Box<FnContract>>,
3858 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
3859 pub body: Option<Box<Block>>,
3860
3861 pub eii_impls: ThinVec<EiiImpl>,
3865}
3866
3867#[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)]
3868pub struct EiiImpl {
3869 pub node_id: NodeId,
3870 pub eii_macro_path: Path,
3871 pub known_eii_macro_resolution: Option<EiiDecl>,
3884 pub impl_safety: Safety,
3885 pub span: Span,
3886 pub inner_span: Span,
3887 pub is_default: bool,
3888}
3889
3890#[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),
from_glob: ::core::clone::Clone::clone(&self.from_glob),
}
}
}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,
from_glob: 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),
from_glob: ::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", "from_glob"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.id, &self.qself, &self.path, &self.ident, &self.rename,
&self.body, &&self.from_glob];
::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,
from_glob: 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 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,
from_glob: 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)]
3891pub struct Delegation {
3892 pub id: NodeId,
3894 pub qself: Option<Box<QSelf>>,
3895 pub path: Path,
3896 pub ident: Ident,
3897 pub rename: Option<Ident>,
3898 pub body: Option<Box<Block>>,
3899 pub from_glob: bool,
3901}
3902
3903#[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)]
3904pub enum DelegationSuffixes {
3905 List(ThinVec<(Ident, Option<Ident>)>),
3906 Glob(Span),
3907}
3908
3909#[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)]
3910pub struct DelegationMac {
3911 pub qself: Option<Box<QSelf>>,
3912 pub prefix: Path,
3913 pub suffixes: DelegationSuffixes,
3914 pub body: Option<Box<Block>>,
3915}
3916
3917#[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_impls: ::core::clone::Clone::clone(&self.eii_impls),
}
}
}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_impls: 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_impls: ::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_impls"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.ident, &self.ty, &self.safety, &self.mutability,
&self.expr, &self.define_opaque, &&self.eii_impls];
::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_impls: 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_impls: 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)]
3918pub struct StaticItem {
3919 pub ident: Ident,
3920 pub ty: Box<Ty>,
3921 pub safety: Safety,
3922 pub mutability: Mutability,
3923 pub expr: Option<Box<Expr>>,
3924 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
3925
3926 pub eii_impls: ThinVec<EiiImpl>,
3932}
3933
3934#[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),
rhs_kind: ::core::clone::Clone::clone(&self.rhs_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,
rhs_kind: ref __binding_4,
define_opaque: 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 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),
rhs_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", "rhs_kind",
"define_opaque"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.defaultness, &self.ident, &self.generics, &self.ty,
&self.rhs_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,
rhs_kind: ref __binding_4,
define_opaque: 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 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,
rhs_kind: ref mut __binding_4,
define_opaque: 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)]
3935pub struct ConstItem {
3936 pub defaultness: Defaultness,
3937 pub ident: Ident,
3938 pub generics: Generics,
3939 pub ty: Box<Ty>,
3940 pub rhs_kind: ConstItemRhsKind,
3941 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
3942}
3943
3944#[derive(#[automatically_derived]
impl ::core::clone::Clone for ConstItemRhsKind {
#[inline]
fn clone(&self) -> ConstItemRhsKind {
match self {
ConstItemRhsKind::Body { rhs: __self_0 } =>
ConstItemRhsKind::Body {
rhs: ::core::clone::Clone::clone(__self_0),
},
ConstItemRhsKind::TypeConst { rhs: __self_0 } =>
ConstItemRhsKind::TypeConst {
rhs: ::core::clone::Clone::clone(__self_0),
},
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ConstItemRhsKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ConstItemRhsKind::Body { rhs: ref __binding_0 } => {
0usize
}
ConstItemRhsKind::TypeConst { rhs: ref __binding_0 } => {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ConstItemRhsKind::Body { rhs: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ConstItemRhsKind::TypeConst { rhs: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ConstItemRhsKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
ConstItemRhsKind::Body {
rhs: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => {
ConstItemRhsKind::TypeConst {
rhs: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ConstItemRhsKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ConstItemRhsKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ConstItemRhsKind::Body { rhs: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Body",
"rhs", &__self_0),
ConstItemRhsKind::TypeConst { rhs: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"TypeConst", "rhs", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
ConstItemRhsKind where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ConstItemRhsKind::Body { rhs: 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);
}
}
}
}
ConstItemRhsKind::TypeConst { rhs: 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 ConstItemRhsKind
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ConstItemRhsKind::Body { rhs: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
ConstItemRhsKind::TypeConst { rhs: ref mut __binding_0 } =>
{
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3945pub enum ConstItemRhsKind {
3946 Body { rhs: Option<Box<Expr>> },
3947 TypeConst { rhs: Option<AnonConst> },
3948}
3949
3950impl ConstItemRhsKind {
3951 pub fn new_body(rhs: Box<Expr>) -> Self {
3952 Self::Body { rhs: Some(rhs) }
3953 }
3954
3955 pub fn span(&self) -> Option<Span> {
3956 Some(self.expr()?.span)
3957 }
3958
3959 pub fn expr(&self) -> Option<&Expr> {
3960 match self {
3961 Self::Body { rhs: Some(body) } => Some(&body),
3962 Self::TypeConst { rhs: Some(anon) } => Some(&anon.value),
3963 _ => None,
3964 }
3965 }
3966
3967 pub fn has_expr(&self) -> bool {
3968 match self {
3969 Self::Body { rhs: Some(_) } => true,
3970 Self::TypeConst { rhs: Some(_) } => true,
3971 _ => false,
3972 }
3973 }
3974
3975 pub fn is_type_const(&self) -> bool {
3976 #[allow(non_exhaustive_omitted_patterns)] match self {
&Self::TypeConst { .. } => true,
_ => false,
}matches!(self, &Self::TypeConst { .. })
3977 }
3978}
3979
3980#[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)]
3981pub struct ConstBlockItem {
3982 pub id: NodeId,
3983 pub span: Span,
3984 pub block: Box<Block>,
3985}
3986
3987impl ConstBlockItem {
3988 pub const IDENT: Ident = Ident { name: kw::Underscore, span: DUMMY_SP };
3989}
3990
3991#[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)]
3992pub struct Guard {
3993 pub cond: Expr,
3994 pub span_with_leading_if: Span,
3995}
3996
3997impl Guard {
3998 pub fn span(&self) -> Span {
3999 self.cond.span
4000 }
4001}
4002
4003#[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)]
4005pub enum ItemKind {
4006 ExternCrate(Option<Symbol>, Ident),
4010 Use(UseTree),
4014 Static(Box<StaticItem>),
4018 Const(Box<ConstItem>),
4022 ConstBlock(ConstBlockItem),
4027 Fn(Box<Fn>),
4031 Mod(Safety, Ident, ModKind),
4037 ForeignMod(ForeignMod),
4041 GlobalAsm(Box<InlineAsm>),
4043 TyAlias(Box<TyAlias>),
4047 Enum(Ident, Generics, EnumDef),
4051 Struct(Ident, Generics, VariantData),
4055 Union(Ident, Generics, VariantData),
4059 Trait(Box<Trait>),
4063 TraitAlias(Box<TraitAlias>),
4067 Impl(Impl),
4071 MacCall(Box<MacCall>),
4075 MacroDef(Ident, MacroDef),
4077 Delegation(Box<Delegation>),
4081 DelegationMac(Box<DelegationMac>),
4084}
4085
4086impl ItemKind {
4087 pub fn ident(&self) -> Option<Ident> {
4088 match *self {
4089 ItemKind::ExternCrate(_, ident)
4090 | ItemKind::Static(box StaticItem { ident, .. })
4091 | ItemKind::Const(box ConstItem { ident, .. })
4092 | ItemKind::Fn(box Fn { ident, .. })
4093 | ItemKind::Mod(_, ident, _)
4094 | ItemKind::TyAlias(box TyAlias { ident, .. })
4095 | ItemKind::Enum(ident, ..)
4096 | ItemKind::Struct(ident, ..)
4097 | ItemKind::Union(ident, ..)
4098 | ItemKind::Trait(box Trait { ident, .. })
4099 | ItemKind::TraitAlias(box TraitAlias { ident, .. })
4100 | ItemKind::MacroDef(ident, _)
4101 | ItemKind::Delegation(box Delegation { ident, .. }) => Some(ident),
4102
4103 ItemKind::ConstBlock(_) => Some(ConstBlockItem::IDENT),
4104
4105 ItemKind::Use(_)
4106 | ItemKind::ForeignMod(_)
4107 | ItemKind::GlobalAsm(_)
4108 | ItemKind::Impl(_)
4109 | ItemKind::MacCall(_)
4110 | ItemKind::DelegationMac(_) => None,
4111 }
4112 }
4113
4114 pub fn article(&self) -> &'static str {
4116 use ItemKind::*;
4117 match self {
4118 Use(..) | Static(..) | Const(..) | ConstBlock(..) | Fn(..) | Mod(..)
4119 | GlobalAsm(..) | TyAlias(..) | Struct(..) | Union(..) | Trait(..) | TraitAlias(..)
4120 | MacroDef(..) | Delegation(..) | DelegationMac(..) => "a",
4121 ExternCrate(..) | ForeignMod(..) | MacCall(..) | Enum(..) | Impl { .. } => "an",
4122 }
4123 }
4124
4125 pub fn descr(&self) -> &'static str {
4126 match self {
4127 ItemKind::ExternCrate(..) => "extern crate",
4128 ItemKind::Use(..) => "`use` import",
4129 ItemKind::Static(..) => "static item",
4130 ItemKind::Const(..) => "constant item",
4131 ItemKind::ConstBlock(..) => "const block",
4132 ItemKind::Fn(..) => "function",
4133 ItemKind::Mod(..) => "module",
4134 ItemKind::ForeignMod(..) => "extern block",
4135 ItemKind::GlobalAsm(..) => "global asm item",
4136 ItemKind::TyAlias(..) => "type alias",
4137 ItemKind::Enum(..) => "enum",
4138 ItemKind::Struct(..) => "struct",
4139 ItemKind::Union(..) => "union",
4140 ItemKind::Trait(..) => "trait",
4141 ItemKind::TraitAlias(..) => "trait alias",
4142 ItemKind::MacCall(..) => "item macro invocation",
4143 ItemKind::MacroDef(..) => "macro definition",
4144 ItemKind::Impl { .. } => "implementation",
4145 ItemKind::Delegation(..) => "delegated function",
4146 ItemKind::DelegationMac(..) => "delegation",
4147 }
4148 }
4149
4150 pub fn generics(&self) -> Option<&Generics> {
4151 match self {
4152 Self::Fn(box Fn { generics, .. })
4153 | Self::TyAlias(box TyAlias { generics, .. })
4154 | Self::Const(box ConstItem { generics, .. })
4155 | Self::Enum(_, generics, _)
4156 | Self::Struct(_, generics, _)
4157 | Self::Union(_, generics, _)
4158 | Self::Trait(box Trait { generics, .. })
4159 | Self::TraitAlias(box TraitAlias { generics, .. })
4160 | Self::Impl(Impl { generics, .. }) => Some(generics),
4161
4162 Self::ExternCrate(..)
4163 | Self::Use(..)
4164 | Self::Static(..)
4165 | Self::ConstBlock(..)
4166 | Self::Mod(..)
4167 | Self::ForeignMod(..)
4168 | Self::GlobalAsm(..)
4169 | Self::MacCall(..)
4170 | Self::MacroDef(..)
4171 | Self::Delegation(..)
4172 | Self::DelegationMac(..) => None,
4173 }
4174 }
4175}
4176
4177pub type AssocItem = Item<AssocItemKind>;
4180
4181#[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)]
4189pub enum AssocItemKind {
4190 Const(Box<ConstItem>),
4193 Fn(Box<Fn>),
4195 Type(Box<TyAlias>),
4197 MacCall(Box<MacCall>),
4199 Delegation(Box<Delegation>),
4201 DelegationMac(Box<DelegationMac>),
4203}
4204
4205impl AssocItemKind {
4206 pub fn ident(&self) -> Option<Ident> {
4207 match *self {
4208 AssocItemKind::Const(box ConstItem { ident, .. })
4209 | AssocItemKind::Fn(box Fn { ident, .. })
4210 | AssocItemKind::Type(box TyAlias { ident, .. })
4211 | AssocItemKind::Delegation(box Delegation { ident, .. }) => Some(ident),
4212
4213 AssocItemKind::MacCall(_) | AssocItemKind::DelegationMac(_) => None,
4214 }
4215 }
4216
4217 pub fn defaultness(&self) -> Defaultness {
4218 match *self {
4219 Self::Const(box ConstItem { defaultness, .. })
4220 | Self::Fn(box Fn { defaultness, .. })
4221 | Self::Type(box TyAlias { defaultness, .. }) => defaultness,
4222 Self::MacCall(..) | Self::Delegation(..) | Self::DelegationMac(..) => {
4223 Defaultness::Implicit
4224 }
4225 }
4226 }
4227}
4228
4229impl From<AssocItemKind> for ItemKind {
4230 fn from(assoc_item_kind: AssocItemKind) -> ItemKind {
4231 match assoc_item_kind {
4232 AssocItemKind::Const(item) => ItemKind::Const(item),
4233 AssocItemKind::Fn(fn_kind) => ItemKind::Fn(fn_kind),
4234 AssocItemKind::Type(ty_alias_kind) => ItemKind::TyAlias(ty_alias_kind),
4235 AssocItemKind::MacCall(a) => ItemKind::MacCall(a),
4236 AssocItemKind::Delegation(delegation) => ItemKind::Delegation(delegation),
4237 AssocItemKind::DelegationMac(delegation) => ItemKind::DelegationMac(delegation),
4238 }
4239 }
4240}
4241
4242impl TryFrom<ItemKind> for AssocItemKind {
4243 type Error = ItemKind;
4244
4245 fn try_from(item_kind: ItemKind) -> Result<AssocItemKind, ItemKind> {
4246 Ok(match item_kind {
4247 ItemKind::Const(item) => AssocItemKind::Const(item),
4248 ItemKind::Fn(fn_kind) => AssocItemKind::Fn(fn_kind),
4249 ItemKind::TyAlias(ty_kind) => AssocItemKind::Type(ty_kind),
4250 ItemKind::MacCall(a) => AssocItemKind::MacCall(a),
4251 ItemKind::Delegation(d) => AssocItemKind::Delegation(d),
4252 ItemKind::DelegationMac(d) => AssocItemKind::DelegationMac(d),
4253 _ => return Err(item_kind),
4254 })
4255 }
4256}
4257
4258#[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)]
4260pub enum ForeignItemKind {
4261 Static(Box<StaticItem>),
4263 Fn(Box<Fn>),
4265 TyAlias(Box<TyAlias>),
4267 MacCall(Box<MacCall>),
4269}
4270
4271impl ForeignItemKind {
4272 pub fn ident(&self) -> Option<Ident> {
4273 match *self {
4274 ForeignItemKind::Static(box StaticItem { ident, .. })
4275 | ForeignItemKind::Fn(box Fn { ident, .. })
4276 | ForeignItemKind::TyAlias(box TyAlias { ident, .. }) => Some(ident),
4277
4278 ForeignItemKind::MacCall(_) => None,
4279 }
4280 }
4281}
4282
4283impl From<ForeignItemKind> for ItemKind {
4284 fn from(foreign_item_kind: ForeignItemKind) -> ItemKind {
4285 match foreign_item_kind {
4286 ForeignItemKind::Static(static_foreign_item) => ItemKind::Static(static_foreign_item),
4287 ForeignItemKind::Fn(fn_kind) => ItemKind::Fn(fn_kind),
4288 ForeignItemKind::TyAlias(ty_alias_kind) => ItemKind::TyAlias(ty_alias_kind),
4289 ForeignItemKind::MacCall(a) => ItemKind::MacCall(a),
4290 }
4291 }
4292}
4293
4294impl TryFrom<ItemKind> for ForeignItemKind {
4295 type Error = ItemKind;
4296
4297 fn try_from(item_kind: ItemKind) -> Result<ForeignItemKind, ItemKind> {
4298 Ok(match item_kind {
4299 ItemKind::Static(static_item) => ForeignItemKind::Static(static_item),
4300 ItemKind::Fn(fn_kind) => ForeignItemKind::Fn(fn_kind),
4301 ItemKind::TyAlias(ty_alias_kind) => ForeignItemKind::TyAlias(ty_alias_kind),
4302 ItemKind::MacCall(a) => ForeignItemKind::MacCall(a),
4303 _ => return Err(item_kind),
4304 })
4305 }
4306}
4307
4308pub type ForeignItem = Item<ForeignItemKind>;
4309
4310#[cfg(target_pointer_width = "64")]
4312mod size_asserts {
4313 use rustc_data_structures::static_assert_size;
4314
4315 use super::*;
4316 const _: [(); 80] = [(); ::std::mem::size_of::<AssocItem>()];static_assert_size!(AssocItem, 80);
4318 const _: [(); 16] = [(); ::std::mem::size_of::<AssocItemKind>()];static_assert_size!(AssocItemKind, 16);
4319 const _: [(); 32] = [(); ::std::mem::size_of::<Attribute>()];static_assert_size!(Attribute, 32);
4320 const _: [(); 32] = [(); ::std::mem::size_of::<Block>()];static_assert_size!(Block, 32);
4321 const _: [(); 72] = [(); ::std::mem::size_of::<Expr>()];static_assert_size!(Expr, 72);
4322 const _: [(); 40] = [(); ::std::mem::size_of::<ExprKind>()];static_assert_size!(ExprKind, 40);
4323 const _: [(); 192] = [(); ::std::mem::size_of::<Fn>()];static_assert_size!(Fn, 192);
4324 const _: [(); 80] = [(); ::std::mem::size_of::<ForeignItem>()];static_assert_size!(ForeignItem, 80);
4325 const _: [(); 16] = [(); ::std::mem::size_of::<ForeignItemKind>()];static_assert_size!(ForeignItemKind, 16);
4326 const _: [(); 24] = [(); ::std::mem::size_of::<GenericArg>()];static_assert_size!(GenericArg, 24);
4327 const _: [(); 88] = [(); ::std::mem::size_of::<GenericBound>()];static_assert_size!(GenericBound, 88);
4328 const _: [(); 40] = [(); ::std::mem::size_of::<Generics>()];static_assert_size!(Generics, 40);
4329 const _: [(); 80] = [(); ::std::mem::size_of::<Impl>()];static_assert_size!(Impl, 80);
4330 const _: [(); 152] = [(); ::std::mem::size_of::<Item>()];static_assert_size!(Item, 152);
4331 const _: [(); 88] = [(); ::std::mem::size_of::<ItemKind>()];static_assert_size!(ItemKind, 88);
4332 const _: [(); 24] = [(); ::std::mem::size_of::<LitKind>()];static_assert_size!(LitKind, 24);
4333 const _: [(); 96] = [(); ::std::mem::size_of::<Local>()];static_assert_size!(Local, 96);
4334 const _: [(); 40] = [(); ::std::mem::size_of::<MetaItemLit>()];static_assert_size!(MetaItemLit, 40);
4335 const _: [(); 40] = [(); ::std::mem::size_of::<Param>()];static_assert_size!(Param, 40);
4336 const _: [(); 80] = [(); ::std::mem::size_of::<Pat>()];static_assert_size!(Pat, 80);
4337 const _: [(); 56] = [(); ::std::mem::size_of::<PatKind>()];static_assert_size!(PatKind, 56);
4338 const _: [(); 24] = [(); ::std::mem::size_of::<Path>()];static_assert_size!(Path, 24);
4339 const _: [(); 24] = [(); ::std::mem::size_of::<PathSegment>()];static_assert_size!(PathSegment, 24);
4340 const _: [(); 32] = [(); ::std::mem::size_of::<Stmt>()];static_assert_size!(Stmt, 32);
4341 const _: [(); 16] = [(); ::std::mem::size_of::<StmtKind>()];static_assert_size!(StmtKind, 16);
4342 const _: [(); 72] = [(); ::std::mem::size_of::<TraitImplHeader>()];static_assert_size!(TraitImplHeader, 72);
4343 const _: [(); 64] = [(); ::std::mem::size_of::<Ty>()];static_assert_size!(Ty, 64);
4344 const _: [(); 40] = [(); ::std::mem::size_of::<TyKind>()];static_assert_size!(TyKind, 40);
4345 }