1use std::borrow::{Borrow, Cow};
22use std::{cmp, fmt};
23
24pub use GenericArgs::*;
25pub use UnsafeSource::*;
26pub use rustc_ast_ir::{FloatTy, IntTy, Movability, Mutability, Pinnedness, UintTy};
27use rustc_data_structures::packed::Pu128;
28use rustc_data_structures::stable_hash::{StableHash, StableHashCtxt, StableHasher};
29use rustc_data_structures::stack::ensure_sufficient_stack;
30use rustc_data_structures::tagged_ptr::Tag;
31use rustc_macros::{Decodable, Encodable, StableHash, Walkable};
32pub use rustc_span::AttrId;
33use rustc_span::{
34 ByteSymbol, DUMMY_SP, ErrorGuaranteed, Ident, LocalExpnId, Span, Spanned, Symbol, kw, respan,
35 sym,
36};
37use thin_vec::{ThinVec, thin_vec};
38
39use crate::attr::data_structures::CfgEntry;
40pub use crate::format::*;
41use crate::token::{self, CommentKind, Delimiter};
42use crate::tokenstream::{DelimSpan, LazyAttrTokenStream, TokenStream};
43use crate::util::parser::{ExprPrecedence, Fixity};
44use crate::visit::{AssocCtxt, BoundKind, LifetimeCtxt};
45
46#[derive(#[automatically_derived]
impl ::core::clone::Clone for Label {
#[inline]
fn clone(&self) -> Label {
let _: ::core::clone::AssertParamIsClone<Ident>;
*self
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Label {
fn encode(&self, __encoder: &mut __E) {
match *self {
Label { ident: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Label {
fn decode(__decoder: &mut __D) -> Self {
Label {
ident: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::marker::Copy for Label { }Copy, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Label {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
Label { ident: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]
impl ::core::cmp::Eq for Label {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Label {
#[inline]
fn eq(&self, other: &Label) -> bool { self.ident == other.ident }
}PartialEq, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Label where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Label { ident: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Label where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Label { ident: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
57pub struct Label {
58 pub ident: Ident,
59}
60
61impl fmt::Debug for Label {
62 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
63 f.write_fmt(format_args!("label({0:?})", self.ident))write!(f, "label({:?})", self.ident)
64 }
65}
66
67#[derive(#[automatically_derived]
impl ::core::clone::Clone for Lifetime {
#[inline]
fn clone(&self) -> Lifetime {
let _: ::core::clone::AssertParamIsClone<NodeId>;
let _: ::core::clone::AssertParamIsClone<Ident>;
*self
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Lifetime {
fn encode(&self, __encoder: &mut __E) {
match *self {
Lifetime { id: ref __binding_0, ident: ref __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Lifetime {
fn decode(__decoder: &mut __D) -> Self {
Lifetime {
id: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::marker::Copy for Lifetime { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for Lifetime {
#[inline]
fn eq(&self, other: &Lifetime) -> bool {
self.id == other.id && self.ident == other.ident
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Lifetime {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<NodeId>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Lifetime {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.id, state);
::core::hash::Hash::hash(&self.ident, state)
}
}Hash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Lifetime
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Lifetime { id: ref __binding_0, ident: ref __binding_1 } =>
{
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Lifetime where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Lifetime {
id: ref mut __binding_0, ident: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
70pub struct Lifetime {
71 pub id: NodeId,
72 pub ident: Ident,
73}
74
75impl fmt::Debug for Lifetime {
76 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
77 f.write_fmt(format_args!("lifetime({0}: {1})", self.id, self))write!(f, "lifetime({}: {})", self.id, self)
78 }
79}
80
81impl fmt::Display for Lifetime {
82 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
83 f.write_fmt(format_args!("{0}", self.ident.name))write!(f, "{}", self.ident.name)
84 }
85}
86
87#[derive(#[automatically_derived]
impl ::core::clone::Clone for Path {
#[inline]
fn clone(&self) -> Path {
Path {
span: ::core::clone::Clone::clone(&self.span),
segments: ::core::clone::Clone::clone(&self.segments),
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)]
94pub struct Path {
95 pub span: Span,
96 pub segments: ThinVec<PathSegment>,
99 pub tokens: Option<LazyAttrTokenStream>,
100}
101
102impl PartialEq<Symbol> for Path {
104 #[inline]
105 fn eq(&self, name: &Symbol) -> bool {
106 if let [segment] = self.segments.as_ref()
107 && segment == name
108 {
109 true
110 } else {
111 false
112 }
113 }
114}
115
116impl PartialEq<&[Symbol]> for Path {
118 #[inline]
119 fn eq(&self, names: &&[Symbol]) -> bool {
120 self.segments.iter().eq(*names)
121 }
122}
123
124impl StableHash for Path {
125 fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
126 self.segments.len().stable_hash(hcx, hasher);
127 for segment in &self.segments {
128 segment.ident.stable_hash(hcx, hasher);
129 }
130 }
131}
132
133impl Path {
134 pub fn from_ident(ident: Ident) -> Path {
137 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 }
138 }
139
140 pub fn is_global(&self) -> bool {
141 self.segments.first().is_some_and(|segment| segment.ident.name == kw::PathRoot)
142 }
143
144 x;#[tracing::instrument(level = "debug", ret)]
150 pub fn is_potential_trivial_const_arg(&self) -> bool {
151 self.segments.len() == 1 && self.segments.iter().all(|seg| seg.args.is_none())
152 }
153}
154
155pub fn join_path_syms(path: impl IntoIterator<Item = impl Borrow<Symbol>>) -> String {
167 let mut iter = path.into_iter();
172 let len_hint = iter.size_hint().1.unwrap_or(1);
173 let mut s = String::with_capacity(len_hint * 8);
174
175 let first_sym = *iter.next().unwrap().borrow();
176 if first_sym != kw::PathRoot {
177 s.push_str(first_sym.as_str());
178 }
179 for sym in iter {
180 let sym = *sym.borrow();
181 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);
182 s.push_str("::");
183 s.push_str(sym.as_str());
184 }
185 s
186}
187
188pub fn join_path_idents(path: impl IntoIterator<Item = impl Borrow<Ident>>) -> String {
191 let mut iter = path.into_iter();
192 let len_hint = iter.size_hint().1.unwrap_or(1);
193 let mut s = String::with_capacity(len_hint * 8);
194
195 let first_ident = *iter.next().unwrap().borrow();
196 if first_ident.name != kw::PathRoot {
197 s.push_str(&first_ident.to_string());
198 }
199 for ident in iter {
200 let ident = *ident.borrow();
201 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);
202 s.push_str("::");
203 s.push_str(&ident.to_string());
204 }
205 s
206}
207
208#[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)]
212pub struct PathSegment {
213 pub ident: Ident,
215
216 pub id: NodeId,
217
218 pub args: Option<Box<GenericArgs>>,
225}
226
227impl PartialEq<Symbol> for PathSegment {
229 #[inline]
230 fn eq(&self, name: &Symbol) -> bool {
231 self.args.is_none() && self.ident.name == *name
232 }
233}
234
235impl PathSegment {
236 pub fn from_ident(ident: Ident) -> Self {
237 PathSegment { ident, id: DUMMY_NODE_ID, args: None }
238 }
239
240 pub fn path_root(span: Span) -> Self {
241 PathSegment::from_ident(Ident::new(kw::PathRoot, span))
242 }
243
244 pub fn span(&self) -> Span {
245 match &self.args {
246 Some(args) => self.ident.span.to(args.span()),
247 None => self.ident.span,
248 }
249 }
250}
251
252#[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)]
256pub enum GenericArgs {
257 AngleBracketed(AngleBracketedArgs),
259 Parenthesized(ParenthesizedArgs),
261 ParenthesizedElided(Span),
263}
264
265impl GenericArgs {
266 pub fn is_angle_bracketed(&self) -> bool {
267 #[allow(non_exhaustive_omitted_patterns)] match self {
AngleBracketed(..) => true,
_ => false,
}matches!(self, AngleBracketed(..))
268 }
269
270 pub fn span(&self) -> Span {
271 match self {
272 AngleBracketed(data) => data.span,
273 Parenthesized(data) => data.span,
274 ParenthesizedElided(span) => *span,
275 }
276 }
277}
278
279#[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)]
281pub enum GenericArg {
282 Lifetime(#[visitable(extra = LifetimeCtxt::GenericArg)] Lifetime),
284 Type(Box<Ty>),
286 Const(AnonConst),
288}
289
290impl GenericArg {
291 pub fn span(&self) -> Span {
292 match self {
293 GenericArg::Lifetime(lt) => lt.ident.span,
294 GenericArg::Type(ty) => ty.span,
295 GenericArg::Const(ct) => ct.value.span,
296 }
297 }
298}
299
300#[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)]
302pub struct AngleBracketedArgs {
303 pub span: Span,
305 pub args: ThinVec<AngleBracketedArg>,
307}
308
309#[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)]
311pub enum AngleBracketedArg {
312 Arg(GenericArg),
314 Constraint(AssocItemConstraint),
316}
317
318impl AngleBracketedArg {
319 pub fn span(&self) -> Span {
320 match self {
321 AngleBracketedArg::Arg(arg) => arg.span(),
322 AngleBracketedArg::Constraint(constraint) => constraint.span,
323 }
324 }
325}
326
327impl From<AngleBracketedArgs> for Box<GenericArgs> {
328 fn from(val: AngleBracketedArgs) -> Self {
329 Box::new(GenericArgs::AngleBracketed(val))
330 }
331}
332
333impl From<ParenthesizedArgs> for Box<GenericArgs> {
334 fn from(val: ParenthesizedArgs) -> Self {
335 Box::new(GenericArgs::Parenthesized(val))
336 }
337}
338
339#[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)]
341pub struct ParenthesizedArgs {
342 pub span: Span,
347
348 pub inputs: ThinVec<Box<Ty>>,
350
351 pub inputs_span: Span,
356
357 pub output: FnRetTy,
359}
360
361impl ParenthesizedArgs {
362 pub fn as_angle_bracketed_args(&self) -> AngleBracketedArgs {
363 let args = self
364 .inputs
365 .iter()
366 .cloned()
367 .map(|input| AngleBracketedArg::Arg(GenericArg::Type(input)))
368 .collect();
369 AngleBracketedArgs { span: self.inputs_span, args }
370 }
371}
372
373pub use crate::node_id::{CRATE_NODE_ID, DUMMY_NODE_ID, NodeId};
374
375#[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)]
377pub struct TraitBoundModifiers {
378 pub constness: BoundConstness,
379 pub asyncness: BoundAsyncness,
380 pub polarity: BoundPolarity,
381}
382
383impl TraitBoundModifiers {
384 pub const NONE: Self = Self {
385 constness: BoundConstness::Never,
386 asyncness: BoundAsyncness::Normal,
387 polarity: BoundPolarity::Positive,
388 };
389}
390
391#[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)]
392pub enum GenericBound {
393 Trait(PolyTraitRef),
394 Outlives(#[visitable(extra = LifetimeCtxt::Bound)] Lifetime),
395 Use(ThinVec<PreciseCapturingArg>, Span),
397}
398
399impl GenericBound {
400 pub fn span(&self) -> Span {
401 match self {
402 GenericBound::Trait(t, ..) => t.span,
403 GenericBound::Outlives(l) => l.ident.span,
404 GenericBound::Use(_, span) => *span,
405 }
406 }
407}
408
409pub type GenericBounds = Vec<GenericBound>;
410
411#[derive(#[automatically_derived]
impl ::core::hash::Hash for ParamKindOrd {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash, #[automatically_derived]
impl ::core::clone::Clone for ParamKindOrd {
#[inline]
fn clone(&self) -> ParamKindOrd { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ParamKindOrd { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for ParamKindOrd {
#[inline]
fn eq(&self, other: &ParamKindOrd) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ParamKindOrd {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ParamKindOrd {
#[inline]
fn partial_cmp(&self, other: &ParamKindOrd)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for ParamKindOrd {
#[inline]
fn cmp(&self, other: &ParamKindOrd) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord)]
415pub enum ParamKindOrd {
416 Lifetime,
417 TypeOrConst,
418}
419
420impl fmt::Display for ParamKindOrd {
421 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
422 match self {
423 ParamKindOrd::Lifetime => "lifetime".fmt(f),
424 ParamKindOrd::TypeOrConst => "type and const".fmt(f),
425 }
426 }
427}
428
429#[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)]
430pub enum GenericParamKind {
431 Lifetime,
433 Type {
434 default: Option<Box<Ty>>,
435 },
436 Const {
437 ty: Box<Ty>,
438 span: Span,
440 default: Option<AnonConst>,
442 },
443}
444
445#[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)]
446pub struct GenericParam {
447 pub id: NodeId,
448 pub ident: Ident,
449 pub attrs: AttrVec,
450 #[visitable(extra = BoundKind::Bound)]
451 pub bounds: GenericBounds,
452 pub is_placeholder: bool,
453 pub kind: GenericParamKind,
454 pub colon_span: Option<Span>,
455}
456
457impl GenericParam {
458 pub fn span(&self) -> Span {
459 match &self.kind {
460 GenericParamKind::Lifetime | GenericParamKind::Type { default: None } => {
461 self.ident.span
462 }
463 GenericParamKind::Type { default: Some(ty) } => self.ident.span.to(ty.span),
464 GenericParamKind::Const { span, .. } => *span,
465 }
466 }
467}
468
469#[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)]
472pub struct Generics {
473 pub params: ThinVec<GenericParam>,
474 pub where_clause: WhereClause,
475 pub span: Span,
476}
477
478#[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)]
480pub struct WhereClause {
481 pub has_where_token: bool,
486 pub predicates: ThinVec<WherePredicate>,
487 pub span: Span,
488}
489
490impl WhereClause {
491 pub fn is_empty(&self) -> bool {
492 !self.has_where_token && self.predicates.is_empty()
493 }
494}
495
496#[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)]
498pub struct WherePredicate {
499 pub attrs: AttrVec,
500 pub kind: WherePredicateKind,
501 pub id: NodeId,
502 pub span: Span,
503 pub is_placeholder: bool,
504}
505
506#[derive(#[automatically_derived]
impl ::core::clone::Clone for WherePredicateKind {
#[inline]
fn clone(&self) -> WherePredicateKind {
match self {
WherePredicateKind::BoundPredicate(__self_0) =>
WherePredicateKind::BoundPredicate(::core::clone::Clone::clone(__self_0)),
WherePredicateKind::RegionPredicate(__self_0) =>
WherePredicateKind::RegionPredicate(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for WherePredicateKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
WherePredicateKind::BoundPredicate(ref __binding_0) => {
0usize
}
WherePredicateKind::RegionPredicate(ref __binding_0) => {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
WherePredicateKind::BoundPredicate(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
WherePredicateKind::RegionPredicate(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for WherePredicateKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
WherePredicateKind::BoundPredicate(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
WherePredicateKind::RegionPredicate(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `WherePredicateKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for WherePredicateKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
WherePredicateKind::BoundPredicate(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"BoundPredicate", &__self_0),
WherePredicateKind::RegionPredicate(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RegionPredicate", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
WherePredicateKind where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
WherePredicateKind::BoundPredicate(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
WherePredicateKind::RegionPredicate(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for WherePredicateKind
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
WherePredicateKind::BoundPredicate(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
WherePredicateKind::RegionPredicate(ref mut __binding_0) =>
{
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
508pub enum WherePredicateKind {
509 BoundPredicate(WhereBoundPredicate),
511 RegionPredicate(WhereRegionPredicate),
513}
514
515#[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)]
519pub struct WhereBoundPredicate {
520 pub bound_generic_params: ThinVec<GenericParam>,
522 pub bounded_ty: Box<Ty>,
524 #[visitable(extra = BoundKind::Bound)]
526 pub bounds: GenericBounds,
527}
528
529#[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)]
533pub struct WhereRegionPredicate {
534 #[visitable(extra = LifetimeCtxt::Bound)]
535 pub lifetime: Lifetime,
536 #[visitable(extra = BoundKind::Bound)]
537 pub bounds: GenericBounds,
538}
539
540#[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)]
544pub struct WhereEqPredicate {
545 pub lhs_ty: Box<Ty>,
546 pub rhs_ty: Box<Ty>,
547}
548
549#[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)]
550pub struct Crate {
551 pub id: NodeId,
554 pub attrs: AttrVec,
555 pub items: ThinVec<Box<Item>>,
556 pub spans: ModSpans,
557 pub is_placeholder: bool,
558}
559
560#[derive(#[automatically_derived]
impl ::core::clone::Clone for MetaItem {
#[inline]
fn clone(&self) -> MetaItem {
MetaItem {
unsafety: ::core::clone::Clone::clone(&self.unsafety),
path: ::core::clone::Clone::clone(&self.path),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MetaItem {
fn encode(&self, __encoder: &mut __E) {
match *self {
MetaItem {
unsafety: ref __binding_0,
path: ref __binding_1,
kind: ref __binding_2,
span: ref __binding_3 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MetaItem {
fn decode(__decoder: &mut __D) -> Self {
MetaItem {
unsafety: ::rustc_serialize::Decodable::decode(__decoder),
path: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MetaItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "MetaItem",
"unsafety", &self.unsafety, "path", &self.path, "kind",
&self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for MetaItem {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
MetaItem {
unsafety: ref __binding_0,
path: ref __binding_1,
kind: ref __binding_2,
span: ref __binding_3 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
567pub struct MetaItem {
568 pub unsafety: Safety,
569 pub path: Path,
570 pub kind: MetaItemKind,
571 pub span: Span,
572}
573
574#[derive(#[automatically_derived]
impl ::core::clone::Clone for MetaItemKind {
#[inline]
fn clone(&self) -> MetaItemKind {
match self {
MetaItemKind::Word => MetaItemKind::Word,
MetaItemKind::List(__self_0) =>
MetaItemKind::List(::core::clone::Clone::clone(__self_0)),
MetaItemKind::NameValue(__self_0) =>
MetaItemKind::NameValue(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MetaItemKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MetaItemKind::Word => { 0usize }
MetaItemKind::List(ref __binding_0) => { 1usize }
MetaItemKind::NameValue(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MetaItemKind::Word => {}
MetaItemKind::List(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
MetaItemKind::NameValue(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MetaItemKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { MetaItemKind::Word }
1usize => {
MetaItemKind::List(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
MetaItemKind::NameValue(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MetaItemKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MetaItemKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
MetaItemKind::Word =>
::core::fmt::Formatter::write_str(f, "Word"),
MetaItemKind::List(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "List",
&__self_0),
MetaItemKind::NameValue(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"NameValue", &__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for MetaItemKind
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
MetaItemKind::Word => {}
MetaItemKind::List(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
MetaItemKind::NameValue(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
576pub enum MetaItemKind {
577 Word,
581
582 List(ThinVec<MetaItemInner>),
586
587 NameValue(MetaItemLit),
591}
592
593#[derive(#[automatically_derived]
impl ::core::clone::Clone for MetaItemInner {
#[inline]
fn clone(&self) -> MetaItemInner {
match self {
MetaItemInner::MetaItem(__self_0) =>
MetaItemInner::MetaItem(::core::clone::Clone::clone(__self_0)),
MetaItemInner::Lit(__self_0) =>
MetaItemInner::Lit(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MetaItemInner {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MetaItemInner::MetaItem(ref __binding_0) => { 0usize }
MetaItemInner::Lit(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MetaItemInner::MetaItem(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
MetaItemInner::Lit(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MetaItemInner {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
MetaItemInner::MetaItem(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
MetaItemInner::Lit(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MetaItemInner`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MetaItemInner {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
MetaItemInner::MetaItem(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MetaItem", &__self_0),
MetaItemInner::Lit(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Lit",
&__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
MetaItemInner {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
MetaItemInner::MetaItem(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
MetaItemInner::Lit(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
597pub enum MetaItemInner {
598 MetaItem(MetaItem),
600
601 Lit(MetaItemLit),
605}
606
607#[derive(#[automatically_derived]
impl ::core::clone::Clone for Block {
#[inline]
fn clone(&self) -> Block {
Block {
stmts: ::core::clone::Clone::clone(&self.stmts),
id: ::core::clone::Clone::clone(&self.id),
rules: ::core::clone::Clone::clone(&self.rules),
span: ::core::clone::Clone::clone(&self.span),
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)]
611pub struct Block {
612 pub stmts: ThinVec<Stmt>,
614 pub id: NodeId,
615 pub rules: BlockCheckMode,
617 pub span: Span,
618 pub tokens: Option<LazyAttrTokenStream>,
619}
620
621#[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)]
625pub struct Pat {
626 pub id: NodeId,
627 pub kind: PatKind,
628 pub span: Span,
629 pub tokens: Option<LazyAttrTokenStream>,
630}
631
632impl Pat {
633 pub fn to_ty(&self) -> Option<Box<Ty>> {
636 let kind = match &self.kind {
637 PatKind::Missing => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
638 PatKind::Wild => TyKind::Infer,
640 PatKind::Ident(BindingMode::NONE, ident, None) => {
642 TyKind::Path(None, Path::from_ident(*ident))
643 }
644 PatKind::Path(qself, path) => TyKind::Path(qself.clone(), path.clone()),
645 PatKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
646 PatKind::Ref(pat, pinned, mutbl) => pat.to_ty().map(|ty| match pinned {
648 Pinnedness::Not => TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }),
649 Pinnedness::Pinned => TyKind::PinnedRef(None, MutTy { ty, mutbl: *mutbl }),
650 })?,
651 PatKind::Slice(pats) if let [pat] = pats.as_slice() => {
654 pat.to_ty().map(TyKind::Slice)?
655 }
656 PatKind::Tuple(pats) => {
659 let tys = pats.iter().map(|pat| pat.to_ty()).collect::<Option<ThinVec<_>>>()?;
660 TyKind::Tup(tys)
661 }
662 _ => return None,
663 };
664
665 Some(Box::new(Ty { kind, id: self.id, span: self.span, tokens: None }))
666 }
667
668 pub fn walk<'ast>(&'ast self, it: &mut impl FnMut(&'ast Pat) -> bool) {
672 if !it(self) {
673 return;
674 }
675
676 match &self.kind {
677 PatKind::Ident(_, _, Some(p)) => p.walk(it),
679
680 PatKind::Struct(_, _, fields, _) => fields.iter().for_each(|field| field.pat.walk(it)),
682
683 PatKind::TupleStruct(_, _, s)
685 | PatKind::Tuple(s)
686 | PatKind::Slice(s)
687 | PatKind::Or(s) => s.iter().for_each(|p| p.walk(it)),
688
689 PatKind::Box(s)
691 | PatKind::Deref(s)
692 | PatKind::Ref(s, _, _)
693 | PatKind::Paren(s)
694 | PatKind::Guard(s, _) => s.walk(it),
695
696 PatKind::Missing
698 | PatKind::Wild
699 | PatKind::Rest
700 | PatKind::Never
701 | PatKind::Expr(_)
702 | PatKind::Range(..)
703 | PatKind::Ident(..)
704 | PatKind::Path(..)
705 | PatKind::MacCall(_)
706 | PatKind::Err(_) => {}
707 }
708 }
709
710 pub fn peel_refs(&self) -> &Pat {
712 let mut current = self;
713 while let PatKind::Ref(inner, _, _) = ¤t.kind {
714 current = inner;
715 }
716 current
717 }
718
719 pub fn is_rest(&self) -> bool {
721 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
PatKind::Rest => true,
_ => false,
}matches!(self.kind, PatKind::Rest)
722 }
723
724 pub fn could_be_never_pattern(&self) -> bool {
727 let mut could_be_never_pattern = false;
728 self.walk(&mut |pat| match &pat.kind {
729 PatKind::Never | PatKind::MacCall(_) => {
730 could_be_never_pattern = true;
731 false
732 }
733 PatKind::Or(s) => {
734 could_be_never_pattern = s.iter().all(|p| p.could_be_never_pattern());
735 false
736 }
737 _ => true,
738 });
739 could_be_never_pattern
740 }
741
742 pub fn contains_never_pattern(&self) -> bool {
745 let mut contains_never_pattern = false;
746 self.walk(&mut |pat| {
747 if #[allow(non_exhaustive_omitted_patterns)] match pat.kind {
PatKind::Never => true,
_ => false,
}matches!(pat.kind, PatKind::Never) {
748 contains_never_pattern = true;
749 }
750 true
751 });
752 contains_never_pattern
753 }
754
755 pub fn descr(&self) -> Option<String> {
757 match &self.kind {
758 PatKind::Missing => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
759 PatKind::Wild => Some("_".to_string()),
760 PatKind::Ident(BindingMode::NONE, ident, None) => Some(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}", ident))
})format!("{ident}")),
761 PatKind::Ref(pat, pinned, mutbl) => {
762 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)))
763 }
764 _ => None,
765 }
766 }
767}
768
769impl From<Box<Pat>> for Pat {
770 fn from(value: Box<Pat>) -> Self {
771 *value
772 }
773}
774
775#[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)]
781pub struct PatField {
782 pub ident: Ident,
784 pub pat: Box<Pat>,
786 pub is_shorthand: bool,
787 pub attrs: AttrVec,
788 pub id: NodeId,
789 pub span: Span,
790 pub is_placeholder: bool,
791}
792
793#[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)]
794#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ByRef {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => { 0usize }
ByRef::No => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ByRef::No => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ByRef {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
ByRef::Yes(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { ByRef::No }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ByRef`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for ByRef {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
ByRef::No => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ByRef where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
ByRef::No => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ByRef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ByRef::Yes(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
ByRef::No => {}
}
}
}
};Walkable)]
795pub enum ByRef {
796 Yes(Pinnedness, Mutability),
797 No,
798}
799
800impl ByRef {
801 #[must_use]
802 pub fn cap_ref_mutability(mut self, mutbl: Mutability) -> Self {
803 if let ByRef::Yes(_, old_mutbl) = &mut self {
804 *old_mutbl = cmp::min(*old_mutbl, mutbl);
805 }
806 self
807 }
808}
809
810#[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)]
816#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BindingMode {
fn encode(&self, __encoder: &mut __E) {
match *self {
BindingMode(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for BindingMode {
fn decode(__decoder: &mut __D) -> Self {
BindingMode(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for BindingMode
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
BindingMode(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for BindingMode
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BindingMode(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BindingMode where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BindingMode(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
817pub struct BindingMode(pub ByRef, pub Mutability);
818
819impl BindingMode {
820 pub const NONE: Self = Self(ByRef::No, Mutability::Not);
821 pub const REF: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Not), Mutability::Not);
822 pub const REF_PIN: Self =
823 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Not), Mutability::Not);
824 pub const MUT: Self = Self(ByRef::No, Mutability::Mut);
825 pub const REF_MUT: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Mut), Mutability::Not);
826 pub const REF_PIN_MUT: Self =
827 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Mut), Mutability::Not);
828 pub const MUT_REF: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Not), Mutability::Mut);
829 pub const MUT_REF_PIN: Self =
830 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Not), Mutability::Mut);
831 pub const MUT_REF_MUT: Self =
832 Self(ByRef::Yes(Pinnedness::Not, Mutability::Mut), Mutability::Mut);
833 pub const MUT_REF_PIN_MUT: Self =
834 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Mut), Mutability::Mut);
835
836 pub fn prefix_str(self) -> &'static str {
837 match self {
838 Self::NONE => "",
839 Self::REF => "ref ",
840 Self::REF_PIN => "ref pin const ",
841 Self::MUT => "mut ",
842 Self::REF_MUT => "ref mut ",
843 Self::REF_PIN_MUT => "ref pin mut ",
844 Self::MUT_REF => "mut ref ",
845 Self::MUT_REF_PIN => "mut ref pin ",
846 Self::MUT_REF_MUT => "mut ref mut ",
847 Self::MUT_REF_PIN_MUT => "mut ref pin mut ",
848 }
849 }
850}
851
852#[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)]
853pub enum RangeEnd {
854 Included(RangeSyntax),
856 Excluded,
858}
859
860#[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)]
861pub enum RangeSyntax {
862 DotDotDot,
864 DotDotEq,
866}
867
868#[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)]
872pub enum PatKind {
873 Missing,
875
876 Wild,
878
879 Ident(BindingMode, Ident, Option<Box<Pat>>),
884
885 Struct(Option<Box<QSelf>>, Path, ThinVec<PatField>, PatFieldsRest),
887
888 TupleStruct(Option<Box<QSelf>>, Path, ThinVec<Pat>),
890
891 Or(ThinVec<Pat>),
894
895 Path(Option<Box<QSelf>>, Path),
900
901 Tuple(ThinVec<Pat>),
903
904 Box(Box<Pat>),
906
907 Deref(Box<Pat>),
909
910 Ref(Box<Pat>, Pinnedness, Mutability),
912
913 Expr(Box<Expr>),
915
916 Range(Option<Box<Expr>>, Option<Box<Expr>>, Spanned<RangeEnd>),
918
919 Slice(ThinVec<Pat>),
921
922 Rest,
935
936 Never,
938
939 Guard(Box<Pat>, Box<Guard>),
941
942 Paren(Box<Pat>),
944
945 MacCall(Box<MacCall>),
947
948 Err(ErrorGuaranteed),
950}
951
952#[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)]
954pub enum PatFieldsRest {
955 Rest(Span),
957 Recovered(ErrorGuaranteed),
959 None,
961}
962
963#[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)]
966#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BorrowKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BorrowKind::Ref => { 0usize }
BorrowKind::Raw => { 1usize }
BorrowKind::Pin => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
BorrowKind::Ref => {}
BorrowKind::Raw => {}
BorrowKind::Pin => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for BorrowKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { BorrowKind::Ref }
1usize => { BorrowKind::Raw }
2usize => { BorrowKind::Pin }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `BorrowKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for BorrowKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
BorrowKind::Ref => {}
BorrowKind::Raw => {}
BorrowKind::Pin => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for BorrowKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BorrowKind::Ref => {}
BorrowKind::Raw => {}
BorrowKind::Pin => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BorrowKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BorrowKind::Ref => {}
BorrowKind::Raw => {}
BorrowKind::Pin => {}
}
}
}
};Walkable)]
967pub enum BorrowKind {
968 Ref,
972 Raw,
976 Pin,
980}
981
982#[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_hash::StableHash for BinOpKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
BinOpKind::Add => {}
BinOpKind::Sub => {}
BinOpKind::Mul => {}
BinOpKind::Div => {}
BinOpKind::Rem => {}
BinOpKind::And => {}
BinOpKind::Or => {}
BinOpKind::BitXor => {}
BinOpKind::BitAnd => {}
BinOpKind::BitOr => {}
BinOpKind::Shl => {}
BinOpKind::Shr => {}
BinOpKind::Eq => {}
BinOpKind::Lt => {}
BinOpKind::Le => {}
BinOpKind::Ne => {}
BinOpKind::Ge => {}
BinOpKind::Gt => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for BinOpKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BinOpKind::Add => {}
BinOpKind::Sub => {}
BinOpKind::Mul => {}
BinOpKind::Div => {}
BinOpKind::Rem => {}
BinOpKind::And => {}
BinOpKind::Or => {}
BinOpKind::BitXor => {}
BinOpKind::BitAnd => {}
BinOpKind::BitOr => {}
BinOpKind::Shl => {}
BinOpKind::Shr => {}
BinOpKind::Eq => {}
BinOpKind::Lt => {}
BinOpKind::Le => {}
BinOpKind::Ne => {}
BinOpKind::Ge => {}
BinOpKind::Gt => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BinOpKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BinOpKind::Add => {}
BinOpKind::Sub => {}
BinOpKind::Mul => {}
BinOpKind::Div => {}
BinOpKind::Rem => {}
BinOpKind::And => {}
BinOpKind::Or => {}
BinOpKind::BitXor => {}
BinOpKind::BitAnd => {}
BinOpKind::BitOr => {}
BinOpKind::Shl => {}
BinOpKind::Shr => {}
BinOpKind::Eq => {}
BinOpKind::Lt => {}
BinOpKind::Le => {}
BinOpKind::Ne => {}
BinOpKind::Ge => {}
BinOpKind::Gt => {}
}
}
}
};Walkable)]
983pub enum BinOpKind {
984 Add,
986 Sub,
988 Mul,
990 Div,
992 Rem,
994 And,
996 Or,
998 BitXor,
1000 BitAnd,
1002 BitOr,
1004 Shl,
1006 Shr,
1008 Eq,
1010 Lt,
1012 Le,
1014 Ne,
1016 Ge,
1018 Gt,
1020}
1021
1022impl BinOpKind {
1023 pub fn as_str(&self) -> &'static str {
1024 use BinOpKind::*;
1025 match self {
1026 Add => "+",
1027 Sub => "-",
1028 Mul => "*",
1029 Div => "/",
1030 Rem => "%",
1031 And => "&&",
1032 Or => "||",
1033 BitXor => "^",
1034 BitAnd => "&",
1035 BitOr => "|",
1036 Shl => "<<",
1037 Shr => ">>",
1038 Eq => "==",
1039 Lt => "<",
1040 Le => "<=",
1041 Ne => "!=",
1042 Ge => ">=",
1043 Gt => ">",
1044 }
1045 }
1046
1047 pub fn is_lazy(&self) -> bool {
1048 #[allow(non_exhaustive_omitted_patterns)] match self {
BinOpKind::And | BinOpKind::Or => true,
_ => false,
}matches!(self, BinOpKind::And | BinOpKind::Or)
1049 }
1050
1051 pub fn precedence(&self) -> ExprPrecedence {
1052 use BinOpKind::*;
1053 match *self {
1054 Mul | Div | Rem => ExprPrecedence::Product,
1055 Add | Sub => ExprPrecedence::Sum,
1056 Shl | Shr => ExprPrecedence::Shift,
1057 BitAnd => ExprPrecedence::BitAnd,
1058 BitXor => ExprPrecedence::BitXor,
1059 BitOr => ExprPrecedence::BitOr,
1060 Lt | Gt | Le | Ge | Eq | Ne => ExprPrecedence::Compare,
1061 And => ExprPrecedence::LAnd,
1062 Or => ExprPrecedence::LOr,
1063 }
1064 }
1065
1066 pub fn fixity(&self) -> Fixity {
1067 use BinOpKind::*;
1068 match self {
1069 Eq | Ne | Lt | Le | Gt | Ge => Fixity::None,
1070 Add | Sub | Mul | Div | Rem | And | Or | BitXor | BitAnd | BitOr | Shl | Shr => {
1071 Fixity::Left
1072 }
1073 }
1074 }
1075
1076 pub fn is_comparison(self) -> bool {
1077 use BinOpKind::*;
1078 match self {
1079 Eq | Ne | Lt | Le | Gt | Ge => true,
1080 Add | Sub | Mul | Div | Rem | And | Or | BitXor | BitAnd | BitOr | Shl | Shr => false,
1081 }
1082 }
1083
1084 pub fn is_by_value(self) -> bool {
1086 !self.is_comparison()
1087 }
1088}
1089
1090pub type BinOp = Spanned<BinOpKind>;
1091
1092impl From<AssignOpKind> for BinOpKind {
1096 fn from(op: AssignOpKind) -> BinOpKind {
1097 match op {
1098 AssignOpKind::AddAssign => BinOpKind::Add,
1099 AssignOpKind::SubAssign => BinOpKind::Sub,
1100 AssignOpKind::MulAssign => BinOpKind::Mul,
1101 AssignOpKind::DivAssign => BinOpKind::Div,
1102 AssignOpKind::RemAssign => BinOpKind::Rem,
1103 AssignOpKind::BitXorAssign => BinOpKind::BitXor,
1104 AssignOpKind::BitAndAssign => BinOpKind::BitAnd,
1105 AssignOpKind::BitOrAssign => BinOpKind::BitOr,
1106 AssignOpKind::ShlAssign => BinOpKind::Shl,
1107 AssignOpKind::ShrAssign => BinOpKind::Shr,
1108 }
1109 }
1110}
1111
1112#[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_hash::StableHash for AssignOpKind
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
AssignOpKind::AddAssign => {}
AssignOpKind::SubAssign => {}
AssignOpKind::MulAssign => {}
AssignOpKind::DivAssign => {}
AssignOpKind::RemAssign => {}
AssignOpKind::BitXorAssign => {}
AssignOpKind::BitAndAssign => {}
AssignOpKind::BitOrAssign => {}
AssignOpKind::ShlAssign => {}
AssignOpKind::ShrAssign => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AssignOpKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AssignOpKind::AddAssign => {}
AssignOpKind::SubAssign => {}
AssignOpKind::MulAssign => {}
AssignOpKind::DivAssign => {}
AssignOpKind::RemAssign => {}
AssignOpKind::BitXorAssign => {}
AssignOpKind::BitAndAssign => {}
AssignOpKind::BitOrAssign => {}
AssignOpKind::ShlAssign => {}
AssignOpKind::ShrAssign => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AssignOpKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AssignOpKind::AddAssign => {}
AssignOpKind::SubAssign => {}
AssignOpKind::MulAssign => {}
AssignOpKind::DivAssign => {}
AssignOpKind::RemAssign => {}
AssignOpKind::BitXorAssign => {}
AssignOpKind::BitAndAssign => {}
AssignOpKind::BitOrAssign => {}
AssignOpKind::ShlAssign => {}
AssignOpKind::ShrAssign => {}
}
}
}
};Walkable)]
1113pub enum AssignOpKind {
1114 AddAssign,
1116 SubAssign,
1118 MulAssign,
1120 DivAssign,
1122 RemAssign,
1124 BitXorAssign,
1126 BitAndAssign,
1128 BitOrAssign,
1130 ShlAssign,
1132 ShrAssign,
1134}
1135
1136impl AssignOpKind {
1137 pub fn as_str(&self) -> &'static str {
1138 use AssignOpKind::*;
1139 match self {
1140 AddAssign => "+=",
1141 SubAssign => "-=",
1142 MulAssign => "*=",
1143 DivAssign => "/=",
1144 RemAssign => "%=",
1145 BitXorAssign => "^=",
1146 BitAndAssign => "&=",
1147 BitOrAssign => "|=",
1148 ShlAssign => "<<=",
1149 ShrAssign => ">>=",
1150 }
1151 }
1152
1153 pub fn is_by_value(self) -> bool {
1155 true
1156 }
1157}
1158
1159pub type AssignOp = Spanned<AssignOpKind>;
1160
1161#[derive(#[automatically_derived]
impl ::core::clone::Clone for UnOp {
#[inline]
fn clone(&self) -> UnOp { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for UnOp { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for UnOp {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
UnOp::Deref => "Deref",
UnOp::Not => "Not",
UnOp::Neg => "Neg",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for UnOp {
#[inline]
fn eq(&self, other: &UnOp) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for UnOp {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnOp::Deref => { 0usize }
UnOp::Not => { 1usize }
UnOp::Neg => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
UnOp::Deref => {}
UnOp::Not => {}
UnOp::Neg => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for UnOp {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnOp::Deref }
1usize => { UnOp::Not }
2usize => { UnOp::Neg }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnOp`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for UnOp {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
UnOp::Deref => {}
UnOp::Not => {}
UnOp::Neg => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for UnOp where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
UnOp::Deref => {}
UnOp::Not => {}
UnOp::Neg => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for UnOp where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
UnOp::Deref => {}
UnOp::Not => {}
UnOp::Neg => {}
}
}
}
};Walkable)]
1165pub enum UnOp {
1166 Deref,
1168 Not,
1170 Neg,
1172}
1173
1174impl UnOp {
1175 pub fn as_str(&self) -> &'static str {
1176 match self {
1177 UnOp::Deref => "*",
1178 UnOp::Not => "!",
1179 UnOp::Neg => "-",
1180 }
1181 }
1182
1183 pub fn is_by_value(self) -> bool {
1185 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::Neg | Self::Not => true,
_ => false,
}matches!(self, Self::Neg | Self::Not)
1186 }
1187}
1188
1189#[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)]
1193pub struct Stmt {
1194 pub id: NodeId,
1195 pub kind: StmtKind,
1196 pub span: Span,
1197}
1198
1199impl Stmt {
1200 pub fn has_trailing_semicolon(&self) -> bool {
1201 match &self.kind {
1202 StmtKind::Semi(_) => true,
1203 StmtKind::MacCall(mac) => #[allow(non_exhaustive_omitted_patterns)] match mac.style {
MacStmtStyle::Semicolon => true,
_ => false,
}matches!(mac.style, MacStmtStyle::Semicolon),
1204 _ => false,
1205 }
1206 }
1207
1208 pub fn add_trailing_semicolon(mut self) -> Self {
1216 self.kind = match self.kind {
1217 StmtKind::Expr(expr) => StmtKind::Semi(expr),
1218 StmtKind::MacCall(mut mac) => {
1219 mac.style = MacStmtStyle::Semicolon;
1220 StmtKind::MacCall(mac)
1221 }
1222 kind => kind,
1223 };
1224
1225 self
1226 }
1227
1228 pub fn is_item(&self) -> bool {
1229 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
StmtKind::Item(_) => true,
_ => false,
}matches!(self.kind, StmtKind::Item(_))
1230 }
1231
1232 pub fn is_expr(&self) -> bool {
1233 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
StmtKind::Expr(_) => true,
_ => false,
}matches!(self.kind, StmtKind::Expr(_))
1234 }
1235}
1236
1237#[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)]
1239pub enum StmtKind {
1240 Let(Box<Local>),
1242 Item(Box<Item>),
1244 Expr(Box<Expr>),
1246 Semi(Box<Expr>),
1248 Empty,
1250 MacCall(Box<MacCallStmt>),
1252}
1253
1254impl StmtKind {
1255 pub fn descr(&self) -> &'static str {
1256 match self {
1257 StmtKind::Let(_) => "local",
1258 StmtKind::Item(_) => "item",
1259 StmtKind::Expr(_) => "expression",
1260 StmtKind::Semi(_) => "statement",
1261 StmtKind::Empty => "semicolon",
1262 StmtKind::MacCall(_) => "macro call",
1263 }
1264 }
1265}
1266
1267#[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)]
1268pub struct MacCallStmt {
1269 pub mac: Box<MacCall>,
1270 pub style: MacStmtStyle,
1271 pub attrs: AttrVec,
1272 pub tokens: Option<LazyAttrTokenStream>,
1273}
1274
1275#[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)]
1276pub enum MacStmtStyle {
1277 Semicolon,
1280 Braces,
1282 NoBraces,
1286}
1287
1288#[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)]
1290pub struct Local {
1291 pub id: NodeId,
1292 pub super_: Option<Span>,
1293 pub pat: Box<Pat>,
1294 pub ty: Option<Box<Ty>>,
1295 pub kind: LocalKind,
1296 pub span: Span,
1297 pub colon_sp: Option<Span>,
1298 pub attrs: AttrVec,
1299 pub tokens: Option<LazyAttrTokenStream>,
1300}
1301
1302#[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)]
1303pub enum LocalKind {
1304 Decl,
1307 Init(Box<Expr>),
1310 InitElse(Box<Expr>, Box<Block>),
1313}
1314
1315impl LocalKind {
1316 pub fn init(&self) -> Option<&Expr> {
1317 match self {
1318 Self::Decl => None,
1319 Self::Init(i) | Self::InitElse(i, _) => Some(i),
1320 }
1321 }
1322
1323 pub fn init_else_opt(&self) -> Option<(&Expr, Option<&Block>)> {
1324 match self {
1325 Self::Decl => None,
1326 Self::Init(init) => Some((init, None)),
1327 Self::InitElse(init, els) => Some((init, Some(els))),
1328 }
1329 }
1330}
1331
1332#[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)]
1343pub struct Arm {
1344 pub attrs: AttrVec,
1345 pub pat: Box<Pat>,
1347 pub guard: Option<Box<Guard>>,
1349 pub body: Option<Box<Expr>>,
1351 pub span: Span,
1352 pub id: NodeId,
1353 pub is_placeholder: bool,
1354}
1355
1356#[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)]
1358pub struct ExprField {
1359 pub attrs: AttrVec,
1360 pub id: NodeId,
1361 pub span: Span,
1362 pub ident: Ident,
1363 pub expr: Box<Expr>,
1364 pub is_shorthand: bool,
1365 pub is_placeholder: bool,
1366}
1367
1368#[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)]
1369pub enum BlockCheckMode {
1370 Default,
1371 Unsafe(UnsafeSource),
1372}
1373
1374#[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)]
1375pub enum UnsafeSource {
1376 CompilerGenerated,
1377 UserProvided,
1378}
1379
1380#[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)]
1384pub enum MgcaDisambiguation {
1385 AnonConst,
1386 Direct,
1387}
1388
1389#[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)]
1395pub struct AnonConst {
1396 pub id: NodeId,
1397 pub value: Box<Expr>,
1398 pub mgca_disambiguation: MgcaDisambiguation,
1399}
1400
1401#[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)]
1403pub struct Expr {
1404 pub id: NodeId,
1405 pub kind: ExprKind,
1406 pub span: Span,
1407 pub attrs: AttrVec,
1408 pub tokens: Option<LazyAttrTokenStream>,
1409}
1410
1411impl Expr {
1412 pub fn is_potential_trivial_const_arg(&self) -> bool {
1424 let this = self.maybe_unwrap_block();
1425 if let ExprKind::Path(None, path) = &this.kind
1426 && path.is_potential_trivial_const_arg()
1427 {
1428 true
1429 } else {
1430 false
1431 }
1432 }
1433
1434 pub fn maybe_unwrap_block(&self) -> &Expr {
1436 if let ExprKind::Block(block, None) = &self.kind
1437 && let [stmt] = block.stmts.as_slice()
1438 && let StmtKind::Expr(expr) = &stmt.kind
1439 {
1440 expr
1441 } else {
1442 self
1443 }
1444 }
1445
1446 pub fn optionally_braced_mac_call(
1452 &self,
1453 already_stripped_block: bool,
1454 ) -> Option<(bool, NodeId)> {
1455 match &self.kind {
1456 ExprKind::Block(block, None)
1457 if let [stmt] = &*block.stmts
1458 && !already_stripped_block =>
1459 {
1460 match &stmt.kind {
1461 StmtKind::MacCall(_) => Some((true, stmt.id)),
1462 StmtKind::Expr(expr) if let ExprKind::MacCall(_) = &expr.kind => {
1463 Some((true, expr.id))
1464 }
1465 _ => None,
1466 }
1467 }
1468 ExprKind::MacCall(_) => Some((already_stripped_block, self.id)),
1469 _ => None,
1470 }
1471 }
1472
1473 pub fn to_bound(&self) -> Option<GenericBound> {
1474 match &self.kind {
1475 ExprKind::Path(None, path) => Some(GenericBound::Trait(PolyTraitRef::new(
1476 ThinVec::new(),
1477 path.clone(),
1478 TraitBoundModifiers::NONE,
1479 self.span,
1480 Parens::No,
1481 ))),
1482 _ => None,
1483 }
1484 }
1485
1486 pub fn peel_parens(&self) -> &Expr {
1487 let mut expr = self;
1488 while let ExprKind::Paren(inner) = &expr.kind {
1489 expr = inner;
1490 }
1491 expr
1492 }
1493
1494 pub fn peel_parens_and_refs(&self) -> &Expr {
1495 let mut expr = self;
1496 while let ExprKind::Paren(inner) | ExprKind::AddrOf(BorrowKind::Ref, _, inner) = &expr.kind
1497 {
1498 expr = inner;
1499 }
1500 expr
1501 }
1502
1503 pub fn to_ty(&self) -> Option<Box<Ty>> {
1505 let kind = match &self.kind {
1506 ExprKind::Path(qself, path) => TyKind::Path(qself.clone(), path.clone()),
1508 ExprKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
1509
1510 ExprKind::Paren(expr) => expr.to_ty().map(TyKind::Paren)?,
1511
1512 ExprKind::AddrOf(BorrowKind::Ref, mutbl, expr) => {
1513 expr.to_ty().map(|ty| TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }))?
1514 }
1515
1516 ExprKind::Repeat(expr, expr_len) => {
1517 expr.to_ty().map(|ty| TyKind::Array(ty, expr_len.clone()))?
1518 }
1519
1520 ExprKind::Array(exprs) if let [expr] = exprs.as_slice() => {
1521 expr.to_ty().map(TyKind::Slice)?
1522 }
1523
1524 ExprKind::Tup(exprs) => {
1525 let tys = exprs.iter().map(|expr| expr.to_ty()).collect::<Option<ThinVec<_>>>()?;
1526 TyKind::Tup(tys)
1527 }
1528
1529 ExprKind::Binary(binop, lhs, rhs) if binop.node == BinOpKind::Add => {
1533 let (Some(lhs), Some(rhs)) = (lhs.to_bound(), rhs.to_bound()) else {
1534 return None;
1535 };
1536 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)
1537 }
1538
1539 ExprKind::Underscore => TyKind::Infer,
1540
1541 _ => return None,
1543 };
1544
1545 Some(Box::new(Ty { kind, id: self.id, span: self.span, tokens: None }))
1546 }
1547
1548 pub fn precedence(&self) -> ExprPrecedence {
1549 fn prefix_attrs_precedence(attrs: &AttrVec) -> ExprPrecedence {
1550 for attr in attrs {
1551 if let AttrStyle::Outer = attr.style {
1552 return ExprPrecedence::Prefix;
1553 }
1554 }
1555 ExprPrecedence::Unambiguous
1556 }
1557
1558 match &self.kind {
1559 ExprKind::Closure(closure) => match closure.fn_decl.output {
1560 FnRetTy::Default(_) => ExprPrecedence::Jump,
1561 FnRetTy::Ty(_) => prefix_attrs_precedence(&self.attrs),
1562 },
1563
1564 ExprKind::Break(_ , value)
1565 | ExprKind::Ret(value)
1566 | ExprKind::Yield(YieldKind::Prefix(value))
1567 | ExprKind::Yeet(value) => match value {
1568 Some(_) => ExprPrecedence::Jump,
1569 None => prefix_attrs_precedence(&self.attrs),
1570 },
1571
1572 ExprKind::Become(_) => ExprPrecedence::Jump,
1573
1574 ExprKind::Range(..) => ExprPrecedence::Range,
1579
1580 ExprKind::Binary(op, ..) => op.node.precedence(),
1582 ExprKind::Cast(..) => ExprPrecedence::Cast,
1583
1584 ExprKind::Assign(..) | ExprKind::AssignOp(..) => ExprPrecedence::Assign,
1585
1586 ExprKind::AddrOf(..) => ExprPrecedence::Prefix,
1588
1589 ExprKind::Let(..) | ExprKind::Move(..) | ExprKind::Unary(..) => ExprPrecedence::Prefix,
1594
1595 ExprKind::Array(_)
1597 | ExprKind::Await(..)
1598 | ExprKind::Use(..)
1599 | ExprKind::Block(..)
1600 | ExprKind::Call(..)
1601 | ExprKind::ConstBlock(_)
1602 | ExprKind::Continue(..)
1603 | ExprKind::Field(..)
1604 | ExprKind::ForLoop { .. }
1605 | ExprKind::FormatArgs(..)
1606 | ExprKind::Gen(..)
1607 | ExprKind::If(..)
1608 | ExprKind::IncludedBytes(..)
1609 | ExprKind::Index(..)
1610 | ExprKind::InlineAsm(..)
1611 | ExprKind::Lit(_)
1612 | ExprKind::Loop(..)
1613 | ExprKind::MacCall(..)
1614 | ExprKind::Match(..)
1615 | ExprKind::MethodCall(..)
1616 | ExprKind::OffsetOf(..)
1617 | ExprKind::Paren(..)
1618 | ExprKind::Path(..)
1619 | ExprKind::Repeat(..)
1620 | ExprKind::Struct(..)
1621 | ExprKind::Try(..)
1622 | ExprKind::TryBlock(..)
1623 | ExprKind::Tup(_)
1624 | ExprKind::Type(..)
1625 | ExprKind::Underscore
1626 | ExprKind::UnsafeBinderCast(..)
1627 | ExprKind::While(..)
1628 | ExprKind::Yield(YieldKind::Postfix(..))
1629 | ExprKind::Err(_)
1630 | ExprKind::Dummy => prefix_attrs_precedence(&self.attrs),
1631 }
1632 }
1633
1634 pub fn is_approximately_pattern(&self) -> bool {
1636 #[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!(
1637 &self.peel_parens().kind,
1638 ExprKind::Array(_)
1639 | ExprKind::Call(_, _)
1640 | ExprKind::Tup(_)
1641 | ExprKind::Lit(_)
1642 | ExprKind::Range(_, _, _)
1643 | ExprKind::Underscore
1644 | ExprKind::Path(_, _)
1645 | ExprKind::Struct(_)
1646 )
1647 }
1648
1649 pub fn dummy() -> Expr {
1653 Expr {
1654 id: DUMMY_NODE_ID,
1655 kind: ExprKind::Dummy,
1656 span: DUMMY_SP,
1657 attrs: ThinVec::new(),
1658 tokens: None,
1659 }
1660 }
1661}
1662
1663impl From<Box<Expr>> for Expr {
1664 fn from(value: Box<Expr>) -> Self {
1665 *value
1666 }
1667}
1668
1669#[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)]
1670pub struct Closure {
1671 pub binder: ClosureBinder,
1672 pub capture_clause: CaptureBy,
1673 pub constness: Const,
1674 pub coroutine_kind: Option<CoroutineKind>,
1675 pub movability: Movability,
1676 pub fn_decl: Box<FnDecl>,
1677 pub body: Box<Expr>,
1678 pub fn_decl_span: Span,
1680 pub fn_arg_span: Span,
1682}
1683
1684#[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)]
1686pub enum RangeLimits {
1687 HalfOpen,
1689 Closed,
1691}
1692
1693impl RangeLimits {
1694 pub fn as_str(&self) -> &'static str {
1695 match self {
1696 RangeLimits::HalfOpen => "..",
1697 RangeLimits::Closed => "..=",
1698 }
1699 }
1700}
1701
1702#[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)]
1704pub struct MethodCall {
1705 pub seg: PathSegment,
1707 pub receiver: Box<Expr>,
1709 pub args: ThinVec<Box<Expr>>,
1711 pub span: Span,
1714}
1715
1716#[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)]
1717pub enum StructRest {
1718 Base(Box<Expr>),
1720 Rest(Span),
1722 None,
1724 NoneWithError(ErrorGuaranteed),
1730}
1731
1732#[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)]
1733pub struct StructExpr {
1734 pub qself: Option<Box<QSelf>>,
1735 pub path: Path,
1736 pub fields: ThinVec<ExprField>,
1737 pub rest: StructRest,
1738}
1739
1740#[derive(#[automatically_derived]
impl ::core::clone::Clone for ExprKind {
#[inline]
fn clone(&self) -> ExprKind {
match self {
ExprKind::Array(__self_0) =>
ExprKind::Array(::core::clone::Clone::clone(__self_0)),
ExprKind::ConstBlock(__self_0) =>
ExprKind::ConstBlock(::core::clone::Clone::clone(__self_0)),
ExprKind::Call(__self_0, __self_1) =>
ExprKind::Call(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::MethodCall(__self_0) =>
ExprKind::MethodCall(::core::clone::Clone::clone(__self_0)),
ExprKind::Tup(__self_0) =>
ExprKind::Tup(::core::clone::Clone::clone(__self_0)),
ExprKind::Binary(__self_0, __self_1, __self_2) =>
ExprKind::Binary(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Unary(__self_0, __self_1) =>
ExprKind::Unary(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Move(__self_0, __self_1) =>
ExprKind::Move(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Lit(__self_0) =>
ExprKind::Lit(::core::clone::Clone::clone(__self_0)),
ExprKind::Cast(__self_0, __self_1) =>
ExprKind::Cast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Type(__self_0, __self_1) =>
ExprKind::Type(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Let(__self_0, __self_1, __self_2, __self_3) =>
ExprKind::Let(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2),
::core::clone::Clone::clone(__self_3)),
ExprKind::If(__self_0, __self_1, __self_2) =>
ExprKind::If(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::While(__self_0, __self_1, __self_2) =>
ExprKind::While(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::ForLoop {
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::Move(ref __binding_0, ref __binding_1) => {
7usize
}
ExprKind::Lit(ref __binding_0) => { 8usize }
ExprKind::Cast(ref __binding_0, ref __binding_1) => {
9usize
}
ExprKind::Type(ref __binding_0, ref __binding_1) => {
10usize
}
ExprKind::Let(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
11usize
}
ExprKind::If(ref __binding_0, ref __binding_1,
ref __binding_2) => {
12usize
}
ExprKind::While(ref __binding_0, ref __binding_1,
ref __binding_2) => {
13usize
}
ExprKind::ForLoop {
pat: ref __binding_0,
iter: ref __binding_1,
body: ref __binding_2,
label: ref __binding_3,
kind: ref __binding_4 } => {
14usize
}
ExprKind::Loop(ref __binding_0, ref __binding_1,
ref __binding_2) => {
15usize
}
ExprKind::Match(ref __binding_0, ref __binding_1,
ref __binding_2) => {
16usize
}
ExprKind::Closure(ref __binding_0) => { 17usize }
ExprKind::Block(ref __binding_0, ref __binding_1) => {
18usize
}
ExprKind::Gen(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
19usize
}
ExprKind::Await(ref __binding_0, ref __binding_1) => {
20usize
}
ExprKind::Use(ref __binding_0, ref __binding_1) => {
21usize
}
ExprKind::TryBlock(ref __binding_0, ref __binding_1) => {
22usize
}
ExprKind::Assign(ref __binding_0, ref __binding_1,
ref __binding_2) => {
23usize
}
ExprKind::AssignOp(ref __binding_0, ref __binding_1,
ref __binding_2) => {
24usize
}
ExprKind::Field(ref __binding_0, ref __binding_1) => {
25usize
}
ExprKind::Index(ref __binding_0, ref __binding_1,
ref __binding_2) => {
26usize
}
ExprKind::Range(ref __binding_0, ref __binding_1,
ref __binding_2) => {
27usize
}
ExprKind::Underscore => { 28usize }
ExprKind::Path(ref __binding_0, ref __binding_1) => {
29usize
}
ExprKind::AddrOf(ref __binding_0, ref __binding_1,
ref __binding_2) => {
30usize
}
ExprKind::Break(ref __binding_0, ref __binding_1) => {
31usize
}
ExprKind::Continue(ref __binding_0) => { 32usize }
ExprKind::Ret(ref __binding_0) => { 33usize }
ExprKind::InlineAsm(ref __binding_0) => { 34usize }
ExprKind::OffsetOf(ref __binding_0, ref __binding_1) => {
35usize
}
ExprKind::MacCall(ref __binding_0) => { 36usize }
ExprKind::Struct(ref __binding_0) => { 37usize }
ExprKind::Repeat(ref __binding_0, ref __binding_1) => {
38usize
}
ExprKind::Paren(ref __binding_0) => { 39usize }
ExprKind::Try(ref __binding_0) => { 40usize }
ExprKind::Yield(ref __binding_0) => { 41usize }
ExprKind::Yeet(ref __binding_0) => { 42usize }
ExprKind::Become(ref __binding_0) => { 43usize }
ExprKind::IncludedBytes(ref __binding_0) => { 44usize }
ExprKind::FormatArgs(ref __binding_0) => { 45usize }
ExprKind::UnsafeBinderCast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
46usize
}
ExprKind::Err(ref __binding_0) => { 47usize }
ExprKind::Dummy => { 48usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ExprKind::Array(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::ConstBlock(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Call(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::MethodCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Tup(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Binary(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::Unary(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Move(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Lit(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Cast(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Type(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Let(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
ExprKind::If(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::While(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::ForLoop {
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::Move(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
ExprKind::Lit(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
ExprKind::Cast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
ExprKind::Type(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
ExprKind::Let(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
ExprKind::If(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
13usize => {
ExprKind::While(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
14usize => {
ExprKind::ForLoop {
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),
}
}
15usize => {
ExprKind::Loop(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
16usize => {
ExprKind::Match(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
17usize => {
ExprKind::Closure(::rustc_serialize::Decodable::decode(__decoder))
}
18usize => {
ExprKind::Block(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
19usize => {
ExprKind::Gen(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
20usize => {
ExprKind::Await(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
21usize => {
ExprKind::Use(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
22usize => {
ExprKind::TryBlock(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
23usize => {
ExprKind::Assign(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
24usize => {
ExprKind::AssignOp(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
25usize => {
ExprKind::Field(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
26usize => {
ExprKind::Index(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
27usize => {
ExprKind::Range(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
28usize => { ExprKind::Underscore }
29usize => {
ExprKind::Path(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
30usize => {
ExprKind::AddrOf(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
31usize => {
ExprKind::Break(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
32usize => {
ExprKind::Continue(::rustc_serialize::Decodable::decode(__decoder))
}
33usize => {
ExprKind::Ret(::rustc_serialize::Decodable::decode(__decoder))
}
34usize => {
ExprKind::InlineAsm(::rustc_serialize::Decodable::decode(__decoder))
}
35usize => {
ExprKind::OffsetOf(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
36usize => {
ExprKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
37usize => {
ExprKind::Struct(::rustc_serialize::Decodable::decode(__decoder))
}
38usize => {
ExprKind::Repeat(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
39usize => {
ExprKind::Paren(::rustc_serialize::Decodable::decode(__decoder))
}
40usize => {
ExprKind::Try(::rustc_serialize::Decodable::decode(__decoder))
}
41usize => {
ExprKind::Yield(::rustc_serialize::Decodable::decode(__decoder))
}
42usize => {
ExprKind::Yeet(::rustc_serialize::Decodable::decode(__decoder))
}
43usize => {
ExprKind::Become(::rustc_serialize::Decodable::decode(__decoder))
}
44usize => {
ExprKind::IncludedBytes(::rustc_serialize::Decodable::decode(__decoder))
}
45usize => {
ExprKind::FormatArgs(::rustc_serialize::Decodable::decode(__decoder))
}
46usize => {
ExprKind::UnsafeBinderCast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
47usize => {
ExprKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
48usize => { ExprKind::Dummy }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ExprKind`, expected 0..49, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ExprKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ExprKind::Array(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Array",
&__self_0),
ExprKind::ConstBlock(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ConstBlock", &__self_0),
ExprKind::Call(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Call",
__self_0, &__self_1),
ExprKind::MethodCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MethodCall", &__self_0),
ExprKind::Tup(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Tup",
&__self_0),
ExprKind::Binary(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Binary",
__self_0, __self_1, &__self_2),
ExprKind::Unary(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Unary",
__self_0, &__self_1),
ExprKind::Move(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Move",
__self_0, &__self_1),
ExprKind::Lit(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Lit",
&__self_0),
ExprKind::Cast(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Cast",
__self_0, &__self_1),
ExprKind::Type(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Type",
__self_0, &__self_1),
ExprKind::Let(__self_0, __self_1, __self_2, __self_3) =>
::core::fmt::Formatter::debug_tuple_field4_finish(f, "Let",
__self_0, __self_1, __self_2, &__self_3),
ExprKind::If(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "If",
__self_0, __self_1, &__self_2),
ExprKind::While(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "While",
__self_0, __self_1, &__self_2),
ExprKind::ForLoop {
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)]
1742pub enum ExprKind {
1743 Array(ThinVec<Box<Expr>>),
1745 ConstBlock(AnonConst),
1747 Call(Box<Expr>, ThinVec<Box<Expr>>),
1754 MethodCall(Box<MethodCall>),
1756 Tup(ThinVec<Box<Expr>>),
1758 Binary(BinOp, Box<Expr>, Box<Expr>),
1760 Unary(UnOp, Box<Expr>),
1762 Move(Box<Expr>, Span),
1764 Lit(token::Lit),
1766 Cast(Box<Expr>, Box<Ty>),
1768 Type(Box<Expr>, Box<Ty>),
1773 Let(Box<Pat>, Box<Expr>, Span, Recovered),
1778 If(Box<Expr>, Box<Block>, Option<Box<Expr>>),
1785 While(Box<Expr>, Box<Block>, Option<Label>),
1789 ForLoop {
1795 pat: Box<Pat>,
1796 iter: Box<Expr>,
1797 body: Box<Block>,
1798 label: Option<Label>,
1799 kind: ForLoopKind,
1800 },
1801 Loop(Box<Block>, Option<Label>, Span),
1805 Match(Box<Expr>, ThinVec<Arm>, MatchKind),
1807 Closure(Box<Closure>),
1809 Block(Box<Block>, Option<Label>),
1811 Gen(CaptureBy, Box<Block>, GenBlockKind, Span),
1817 Await(Box<Expr>, Span),
1819 Use(Box<Expr>, Span),
1821
1822 TryBlock(Box<Block>, Option<Box<Ty>>),
1830
1831 Assign(Box<Expr>, Box<Expr>, Span),
1834 AssignOp(AssignOp, Box<Expr>, Box<Expr>),
1838 Field(Box<Expr>, Ident),
1840 Index(Box<Expr>, Box<Expr>, Span),
1843 Range(Option<Box<Expr>>, Option<Box<Expr>>, RangeLimits),
1845 Underscore,
1847
1848 Path(Option<Box<QSelf>>, Path),
1853
1854 AddrOf(BorrowKind, Mutability, Box<Expr>),
1856 Break(Option<Label>, Option<Box<Expr>>),
1858 Continue(Option<Label>),
1860 Ret(Option<Box<Expr>>),
1862
1863 InlineAsm(Box<InlineAsm>),
1865
1866 OffsetOf(Box<Ty>, Vec<Ident>),
1871
1872 MacCall(Box<MacCall>),
1874
1875 Struct(Box<StructExpr>),
1879
1880 Repeat(Box<Expr>, AnonConst),
1885
1886 Paren(Box<Expr>),
1888
1889 Try(Box<Expr>),
1891
1892 Yield(YieldKind),
1894
1895 Yeet(Option<Box<Expr>>),
1898
1899 Become(Box<Expr>),
1903
1904 IncludedBytes(ByteSymbol),
1916
1917 FormatArgs(Box<FormatArgs>),
1919
1920 UnsafeBinderCast(UnsafeBinderCastKind, Box<Expr>, Option<Box<Ty>>),
1921
1922 Err(ErrorGuaranteed),
1924
1925 Dummy,
1927}
1928
1929#[derive(#[automatically_derived]
impl ::core::clone::Clone for ForLoopKind {
#[inline]
fn clone(&self) -> ForLoopKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ForLoopKind { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ForLoopKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ForLoopKind::For => { 0usize }
ForLoopKind::ForAwait => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ForLoopKind::For => {}
ForLoopKind::ForAwait => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ForLoopKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { ForLoopKind::For }
1usize => { ForLoopKind::ForAwait }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ForLoopKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ForLoopKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
ForLoopKind::For => "For",
ForLoopKind::ForAwait => "ForAwait",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for ForLoopKind {
#[inline]
fn eq(&self, other: &ForLoopKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for ForLoopKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ForLoopKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ForLoopKind::For => {}
ForLoopKind::ForAwait => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ForLoopKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ForLoopKind::For => {}
ForLoopKind::ForAwait => {}
}
}
}
};Walkable)]
1931pub enum ForLoopKind {
1932 For,
1933 ForAwait,
1934}
1935
1936#[derive(#[automatically_derived]
impl ::core::clone::Clone for GenBlockKind {
#[inline]
fn clone(&self) -> GenBlockKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for GenBlockKind { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for GenBlockKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
GenBlockKind::Async => { 0usize }
GenBlockKind::Gen => { 1usize }
GenBlockKind::AsyncGen => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
GenBlockKind::Async => {}
GenBlockKind::Gen => {}
GenBlockKind::AsyncGen => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for GenBlockKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { GenBlockKind::Async }
1usize => { GenBlockKind::Gen }
2usize => { GenBlockKind::AsyncGen }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `GenBlockKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for GenBlockKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
GenBlockKind::Async => "Async",
GenBlockKind::Gen => "Gen",
GenBlockKind::AsyncGen => "AsyncGen",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for GenBlockKind {
#[inline]
fn eq(&self, other: &GenBlockKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for GenBlockKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for GenBlockKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
GenBlockKind::Async => {}
GenBlockKind::Gen => {}
GenBlockKind::AsyncGen => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for GenBlockKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
GenBlockKind::Async => {}
GenBlockKind::Gen => {}
GenBlockKind::AsyncGen => {}
}
}
}
};Walkable)]
1938pub enum GenBlockKind {
1939 Async,
1940 Gen,
1941 AsyncGen,
1942}
1943
1944impl fmt::Display for GenBlockKind {
1945 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1946 self.modifier().fmt(f)
1947 }
1948}
1949
1950impl GenBlockKind {
1951 pub fn modifier(&self) -> &'static str {
1952 match self {
1953 GenBlockKind::Async => "async",
1954 GenBlockKind::Gen => "gen",
1955 GenBlockKind::AsyncGen => "async gen",
1956 }
1957 }
1958}
1959
1960#[derive(#[automatically_derived]
impl ::core::marker::Copy for UnsafeBinderCastKind { }Copy, #[automatically_derived]
impl ::core::clone::Clone for UnsafeBinderCastKind {
#[inline]
fn clone(&self) -> UnsafeBinderCastKind { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for UnsafeBinderCastKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
UnsafeBinderCastKind::Wrap => "Wrap",
UnsafeBinderCastKind::Unwrap => "Unwrap",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for UnsafeBinderCastKind {
#[inline]
fn eq(&self, other: &UnsafeBinderCastKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for UnsafeBinderCastKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for UnsafeBinderCastKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1962#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for UnsafeBinderCastKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
UnsafeBinderCastKind::Wrap => { 0usize }
UnsafeBinderCastKind::Unwrap => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
UnsafeBinderCastKind::Wrap => {}
UnsafeBinderCastKind::Unwrap => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for UnsafeBinderCastKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { UnsafeBinderCastKind::Wrap }
1usize => { UnsafeBinderCastKind::Unwrap }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `UnsafeBinderCastKind`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
UnsafeBinderCastKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
UnsafeBinderCastKind::Wrap => {}
UnsafeBinderCastKind::Unwrap => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
UnsafeBinderCastKind where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
UnsafeBinderCastKind::Wrap => {}
UnsafeBinderCastKind::Unwrap => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for UnsafeBinderCastKind
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
UnsafeBinderCastKind::Wrap => {}
UnsafeBinderCastKind::Unwrap => {}
}
}
}
};Walkable)]
1963pub enum UnsafeBinderCastKind {
1964 Wrap,
1966 Unwrap,
1968}
1969
1970#[derive(#[automatically_derived]
impl ::core::clone::Clone for QSelf {
#[inline]
fn clone(&self) -> QSelf {
QSelf {
ty: ::core::clone::Clone::clone(&self.ty),
path_span: ::core::clone::Clone::clone(&self.path_span),
position: ::core::clone::Clone::clone(&self.position),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for QSelf {
fn encode(&self, __encoder: &mut __E) {
match *self {
QSelf {
ty: ref __binding_0,
path_span: ref __binding_1,
position: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for QSelf {
fn decode(__decoder: &mut __D) -> Self {
QSelf {
ty: ::rustc_serialize::Decodable::decode(__decoder),
path_span: ::rustc_serialize::Decodable::decode(__decoder),
position: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for QSelf {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "QSelf", "ty",
&self.ty, "path_span", &self.path_span, "position",
&&self.position)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for QSelf where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
QSelf {
ty: ref __binding_0,
path_span: ref __binding_1,
position: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for QSelf where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
QSelf {
ty: ref mut __binding_0,
path_span: ref mut __binding_1,
position: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
1985pub struct QSelf {
1986 pub ty: Box<Ty>,
1987
1988 pub path_span: Span,
1992 pub position: usize,
1993}
1994
1995#[derive(#[automatically_derived]
impl ::core::clone::Clone for CaptureBy {
#[inline]
fn clone(&self) -> CaptureBy {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for CaptureBy { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for CaptureBy {
#[inline]
fn eq(&self, other: &CaptureBy) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(CaptureBy::Value { move_kw: __self_0 }, CaptureBy::Value {
move_kw: __arg1_0 }) => __self_0 == __arg1_0,
(CaptureBy::Use { use_kw: __self_0 }, CaptureBy::Use {
use_kw: __arg1_0 }) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for CaptureBy {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
CaptureBy::Value { move_kw: ref __binding_0 } => { 0usize }
CaptureBy::Ref => { 1usize }
CaptureBy::Use { use_kw: ref __binding_0 } => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
CaptureBy::Value { move_kw: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
CaptureBy::Ref => {}
CaptureBy::Use { use_kw: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for CaptureBy {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
CaptureBy::Value {
move_kw: ::rustc_serialize::Decodable::decode(__decoder),
}
}
1usize => { CaptureBy::Ref }
2usize => {
CaptureBy::Use {
use_kw: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CaptureBy`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for CaptureBy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
CaptureBy::Value { move_kw: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Value",
"move_kw", &__self_0),
CaptureBy::Ref => ::core::fmt::Formatter::write_str(f, "Ref"),
CaptureBy::Use { use_kw: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Use",
"use_kw", &__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for CaptureBy {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
CaptureBy::Value { move_kw: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
CaptureBy::Ref => {}
CaptureBy::Use { use_kw: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for CaptureBy
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
CaptureBy::Value { move_kw: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
CaptureBy::Ref => {}
CaptureBy::Use { use_kw: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for CaptureBy where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
CaptureBy::Value { move_kw: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
CaptureBy::Ref => {}
CaptureBy::Use { use_kw: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
1997pub enum CaptureBy {
1998 Value {
2000 move_kw: Span,
2002 },
2003 Ref,
2005 Use {
2011 use_kw: Span,
2013 },
2014}
2015
2016#[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)]
2018pub enum ClosureBinder {
2019 NotPresent,
2021 For {
2023 span: Span,
2030
2031 generic_params: ThinVec<GenericParam>,
2038 },
2039}
2040
2041#[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)]
2044pub struct MacCall {
2045 pub path: Path,
2046 pub args: Box<DelimArgs>,
2047}
2048
2049impl MacCall {
2050 pub fn span(&self) -> Span {
2051 self.path.span.to(self.args.dspan.entire())
2052 }
2053}
2054
2055#[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)]
2057pub enum AttrArgs {
2058 Empty,
2060 Delimited(DelimArgs),
2062 Eq {
2064 eq_span: Span,
2066 expr: Box<Expr>,
2067 },
2068}
2069
2070impl AttrArgs {
2071 pub fn span(&self) -> Option<Span> {
2072 match self {
2073 AttrArgs::Empty => None,
2074 AttrArgs::Delimited(args) => Some(args.dspan.entire()),
2075 AttrArgs::Eq { eq_span, expr } => Some(eq_span.to(expr.span)),
2076 }
2077 }
2078
2079 pub fn inner_tokens(&self) -> TokenStream {
2082 match self {
2083 AttrArgs::Empty => TokenStream::default(),
2084 AttrArgs::Delimited(args) => args.tokens.clone(),
2085 AttrArgs::Eq { expr, .. } => TokenStream::from_ast(expr),
2086 }
2087 }
2088}
2089
2090#[derive(#[automatically_derived]
impl ::core::clone::Clone for DelimArgs {
#[inline]
fn clone(&self) -> DelimArgs {
DelimArgs {
dspan: ::core::clone::Clone::clone(&self.dspan),
delim: ::core::clone::Clone::clone(&self.delim),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for DelimArgs {
fn encode(&self, __encoder: &mut __E) {
match *self {
DelimArgs {
dspan: ref __binding_0,
delim: ref __binding_1,
tokens: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for DelimArgs {
fn decode(__decoder: &mut __D) -> Self {
DelimArgs {
dspan: ::rustc_serialize::Decodable::decode(__decoder),
delim: ::rustc_serialize::Decodable::decode(__decoder),
tokens: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for DelimArgs {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "DelimArgs",
"dspan", &self.dspan, "delim", &self.delim, "tokens",
&&self.tokens)
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for DelimArgs {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
DelimArgs {
dspan: ref __binding_0,
delim: ref __binding_1,
tokens: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for DelimArgs
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
DelimArgs {
dspan: ref __binding_0,
delim: ref __binding_1,
tokens: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for DelimArgs where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
DelimArgs {
dspan: ref mut __binding_0,
delim: ref mut __binding_1,
tokens: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2092pub struct DelimArgs {
2093 pub dspan: DelimSpan,
2094 pub delim: Delimiter, pub tokens: TokenStream,
2096}
2097
2098impl DelimArgs {
2099 pub fn need_semicolon(&self) -> bool {
2102 !#[allow(non_exhaustive_omitted_patterns)] match self {
DelimArgs { delim: Delimiter::Brace, .. } => true,
_ => false,
}matches!(self, DelimArgs { delim: Delimiter::Brace, .. })
2103 }
2104}
2105
2106#[derive(#[automatically_derived]
impl ::core::clone::Clone for MacroDef {
#[inline]
fn clone(&self) -> MacroDef {
MacroDef {
body: ::core::clone::Clone::clone(&self.body),
macro_rules: ::core::clone::Clone::clone(&self.macro_rules),
eii_declaration: ::core::clone::Clone::clone(&self.eii_declaration),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MacroDef {
fn encode(&self, __encoder: &mut __E) {
match *self {
MacroDef {
body: ref __binding_0,
macro_rules: ref __binding_1,
eii_declaration: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MacroDef {
fn decode(__decoder: &mut __D) -> Self {
MacroDef {
body: ::rustc_serialize::Decodable::decode(__decoder),
macro_rules: ::rustc_serialize::Decodable::decode(__decoder),
eii_declaration: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MacroDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "MacroDef",
"body", &self.body, "macro_rules", &self.macro_rules,
"eii_declaration", &&self.eii_declaration)
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for MacroDef {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
MacroDef {
body: ref __binding_0,
macro_rules: ref __binding_1,
eii_declaration: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for MacroDef
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MacroDef {
body: ref __binding_0,
macro_rules: ref __binding_1,
eii_declaration: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for MacroDef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MacroDef {
body: ref mut __binding_0,
macro_rules: ref mut __binding_1,
eii_declaration: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2108pub struct MacroDef {
2109 pub body: Box<DelimArgs>,
2110 pub macro_rules: bool,
2112
2113 pub eii_declaration: Option<EiiDecl>,
2119}
2120
2121#[derive(#[automatically_derived]
impl ::core::clone::Clone for EiiDecl {
#[inline]
fn clone(&self) -> EiiDecl {
EiiDecl {
foreign_item: ::core::clone::Clone::clone(&self.foreign_item),
impl_unsafe: ::core::clone::Clone::clone(&self.impl_unsafe),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for EiiDecl {
fn encode(&self, __encoder: &mut __E) {
match *self {
EiiDecl {
foreign_item: ref __binding_0, impl_unsafe: ref __binding_1
} => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for EiiDecl {
fn decode(__decoder: &mut __D) -> Self {
EiiDecl {
foreign_item: ::rustc_serialize::Decodable::decode(__decoder),
impl_unsafe: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for EiiDecl {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "EiiDecl",
"foreign_item", &self.foreign_item, "impl_unsafe",
&&self.impl_unsafe)
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for EiiDecl {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
EiiDecl {
foreign_item: ref __binding_0, impl_unsafe: ref __binding_1
} => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for EiiDecl
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
EiiDecl {
foreign_item: ref __binding_0, impl_unsafe: ref __binding_1
} => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for EiiDecl where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
EiiDecl {
foreign_item: ref mut __binding_0,
impl_unsafe: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
2122pub struct EiiDecl {
2123 pub foreign_item: Path,
2125 pub impl_unsafe: bool,
2126}
2127
2128#[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)]
2129#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for StrStyle {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
StrStyle::Cooked => {}
StrStyle::Raw(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for StrStyle
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
StrStyle::Cooked => {}
StrStyle::Raw(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for StrStyle where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
StrStyle::Cooked => {}
StrStyle::Raw(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
2130pub enum StrStyle {
2131 Cooked,
2133 Raw(u8),
2137}
2138
2139#[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)]
2141pub enum MatchKind {
2142 Prefix,
2144 Postfix,
2146}
2147
2148#[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)]
2150pub enum YieldKind {
2151 Prefix(Option<Box<Expr>>),
2153 Postfix(Box<Expr>),
2155}
2156
2157impl YieldKind {
2158 pub const fn expr(&self) -> Option<&Box<Expr>> {
2162 match self {
2163 YieldKind::Prefix(expr) => expr.as_ref(),
2164 YieldKind::Postfix(expr) => Some(expr),
2165 }
2166 }
2167
2168 pub const fn expr_mut(&mut self) -> Option<&mut Box<Expr>> {
2170 match self {
2171 YieldKind::Prefix(expr) => expr.as_mut(),
2172 YieldKind::Postfix(expr) => Some(expr),
2173 }
2174 }
2175
2176 pub const fn same_kind(&self, other: &Self) -> bool {
2178 match (self, other) {
2179 (YieldKind::Prefix(_), YieldKind::Prefix(_)) => true,
2180 (YieldKind::Postfix(_), YieldKind::Postfix(_)) => true,
2181 _ => false,
2182 }
2183 }
2184}
2185
2186#[derive(#[automatically_derived]
impl ::core::clone::Clone for MetaItemLit {
#[inline]
fn clone(&self) -> MetaItemLit {
let _: ::core::clone::AssertParamIsClone<Symbol>;
let _: ::core::clone::AssertParamIsClone<Option<Symbol>>;
let _: ::core::clone::AssertParamIsClone<LitKind>;
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for MetaItemLit { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MetaItemLit {
fn encode(&self, __encoder: &mut __E) {
match *self {
MetaItemLit {
symbol: ref __binding_0,
suffix: ref __binding_1,
kind: ref __binding_2,
span: ref __binding_3 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MetaItemLit {
fn decode(__decoder: &mut __D) -> Self {
MetaItemLit {
symbol: ::rustc_serialize::Decodable::decode(__decoder),
suffix: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MetaItemLit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "MetaItemLit",
"symbol", &self.symbol, "suffix", &self.suffix, "kind",
&self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for MetaItemLit
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
MetaItemLit {
symbol: ref __binding_0,
suffix: ref __binding_1,
kind: ref __binding_2,
span: ref __binding_3 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
{ __binding_3.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
2188pub struct MetaItemLit {
2189 pub symbol: Symbol,
2191 pub suffix: Option<Symbol>,
2193 pub kind: LitKind,
2196 pub span: Span,
2197}
2198
2199#[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)]
2201pub struct StrLit {
2202 pub symbol: Symbol,
2204 pub suffix: Option<Symbol>,
2206 pub symbol_unescaped: Symbol,
2208 pub style: StrStyle,
2209 pub span: Span,
2210}
2211
2212impl StrLit {
2213 pub fn as_token_lit(&self) -> token::Lit {
2214 let token_kind = match self.style {
2215 StrStyle::Cooked => token::Str,
2216 StrStyle::Raw(n) => token::StrRaw(n),
2217 };
2218 token::Lit::new(token_kind, self.symbol, self.suffix)
2219 }
2220}
2221
2222#[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)]
2224#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for LitIntType {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
LitIntType::Signed(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitIntType::Unsigned(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitIntType::Unsuffixed => {}
}
}
}
};StableHash)]
2225pub enum LitIntType {
2226 Signed(IntTy),
2228 Unsigned(UintTy),
2230 Unsuffixed,
2232}
2233
2234#[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)]
2236#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for LitFloatType
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
LitFloatType::Suffixed(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitFloatType::Unsuffixed => {}
}
}
}
};StableHash)]
2237pub enum LitFloatType {
2238 Suffixed(FloatTy),
2240 Unsuffixed,
2242}
2243
2244#[derive(#[automatically_derived]
impl ::core::clone::Clone for LitKind {
#[inline]
fn clone(&self) -> LitKind {
let _: ::core::clone::AssertParamIsClone<Symbol>;
let _: ::core::clone::AssertParamIsClone<StrStyle>;
let _: ::core::clone::AssertParamIsClone<ByteSymbol>;
let _: ::core::clone::AssertParamIsClone<u8>;
let _: ::core::clone::AssertParamIsClone<char>;
let _: ::core::clone::AssertParamIsClone<Pu128>;
let _: ::core::clone::AssertParamIsClone<LitIntType>;
let _: ::core::clone::AssertParamIsClone<LitFloatType>;
let _: ::core::clone::AssertParamIsClone<bool>;
let _: ::core::clone::AssertParamIsClone<ErrorGuaranteed>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for LitKind { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for LitKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
LitKind::Str(ref __binding_0, ref __binding_1) => { 0usize }
LitKind::ByteStr(ref __binding_0, ref __binding_1) => {
1usize
}
LitKind::CStr(ref __binding_0, ref __binding_1) => {
2usize
}
LitKind::Byte(ref __binding_0) => { 3usize }
LitKind::Char(ref __binding_0) => { 4usize }
LitKind::Int(ref __binding_0, ref __binding_1) => { 5usize }
LitKind::Float(ref __binding_0, ref __binding_1) => {
6usize
}
LitKind::Bool(ref __binding_0) => { 7usize }
LitKind::Err(ref __binding_0) => { 8usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
LitKind::Str(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
LitKind::ByteStr(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
LitKind::CStr(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
LitKind::Byte(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
LitKind::Char(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
LitKind::Int(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
LitKind::Float(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
LitKind::Bool(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
LitKind::Err(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for LitKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
LitKind::Str(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
LitKind::ByteStr(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
LitKind::CStr(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
LitKind::Byte(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
LitKind::Char(::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
LitKind::Int(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
LitKind::Float(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
LitKind::Bool(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
LitKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `LitKind`, expected 0..9, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for LitKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
LitKind::Str(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Str",
__self_0, &__self_1),
LitKind::ByteStr(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"ByteStr", __self_0, &__self_1),
LitKind::CStr(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "CStr",
__self_0, &__self_1),
LitKind::Byte(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Byte",
&__self_0),
LitKind::Char(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Char",
&__self_0),
LitKind::Int(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Int",
__self_0, &__self_1),
LitKind::Float(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Float",
__self_0, &__self_1),
LitKind::Bool(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Bool",
&__self_0),
LitKind::Err(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Err",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for LitKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
LitKind::Str(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
LitKind::ByteStr(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
LitKind::CStr(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
LitKind::Byte(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
LitKind::Char(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
LitKind::Int(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
LitKind::Float(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
LitKind::Bool(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
LitKind::Err(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash, #[automatically_derived]
impl ::core::cmp::Eq for LitKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Symbol>;
let _: ::core::cmp::AssertParamIsEq<StrStyle>;
let _: ::core::cmp::AssertParamIsEq<ByteSymbol>;
let _: ::core::cmp::AssertParamIsEq<u8>;
let _: ::core::cmp::AssertParamIsEq<char>;
let _: ::core::cmp::AssertParamIsEq<Pu128>;
let _: ::core::cmp::AssertParamIsEq<LitIntType>;
let _: ::core::cmp::AssertParamIsEq<LitFloatType>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<ErrorGuaranteed>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for LitKind {
#[inline]
fn eq(&self, other: &LitKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(LitKind::Str(__self_0, __self_1),
LitKind::Str(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(LitKind::ByteStr(__self_0, __self_1),
LitKind::ByteStr(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(LitKind::CStr(__self_0, __self_1),
LitKind::CStr(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(LitKind::Byte(__self_0), LitKind::Byte(__arg1_0)) =>
__self_0 == __arg1_0,
(LitKind::Char(__self_0), LitKind::Char(__arg1_0)) =>
__self_0 == __arg1_0,
(LitKind::Int(__self_0, __self_1),
LitKind::Int(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(LitKind::Float(__self_0, __self_1),
LitKind::Float(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(LitKind::Bool(__self_0), LitKind::Bool(__arg1_0)) =>
__self_0 == __arg1_0,
(LitKind::Err(__self_0), LitKind::Err(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for LitKind {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
LitKind::Str(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
LitKind::ByteStr(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
LitKind::CStr(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
LitKind::Byte(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitKind::Char(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitKind::Int(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
LitKind::Float(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
LitKind::Bool(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
LitKind::Err(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
2251pub enum LitKind {
2252 Str(Symbol, StrStyle),
2255 ByteStr(ByteSymbol, StrStyle),
2258 CStr(ByteSymbol, StrStyle),
2262 Byte(u8),
2264 Char(char),
2266 Int(Pu128, LitIntType),
2268 Float(Symbol, LitFloatType),
2272 Bool(bool),
2274 Err(ErrorGuaranteed),
2276}
2277
2278impl LitKind {
2279 pub fn str(&self) -> Option<Symbol> {
2280 match *self {
2281 LitKind::Str(s, _) => Some(s),
2282 _ => None,
2283 }
2284 }
2285
2286 pub fn is_str(&self) -> bool {
2288 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::Str(..) => true,
_ => false,
}matches!(self, LitKind::Str(..))
2289 }
2290
2291 pub fn is_bytestr(&self) -> bool {
2293 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::ByteStr(..) => true,
_ => false,
}matches!(self, LitKind::ByteStr(..))
2294 }
2295
2296 pub fn is_numeric(&self) -> bool {
2298 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::Int(..) | LitKind::Float(..) => true,
_ => false,
}matches!(self, LitKind::Int(..) | LitKind::Float(..))
2299 }
2300
2301 pub fn is_unsuffixed(&self) -> bool {
2304 !self.is_suffixed()
2305 }
2306
2307 pub fn is_suffixed(&self) -> bool {
2309 match *self {
2310 LitKind::Int(_, LitIntType::Signed(..) | LitIntType::Unsigned(..))
2312 | LitKind::Float(_, LitFloatType::Suffixed(..)) => true,
2313 LitKind::Str(..)
2315 | LitKind::ByteStr(..)
2316 | LitKind::CStr(..)
2317 | LitKind::Byte(..)
2318 | LitKind::Char(..)
2319 | LitKind::Int(_, LitIntType::Unsuffixed)
2320 | LitKind::Float(_, LitFloatType::Unsuffixed)
2321 | LitKind::Bool(..)
2322 | LitKind::Err(_) => false,
2323 }
2324 }
2325}
2326
2327#[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)]
2330pub struct MutTy {
2331 pub ty: Box<Ty>,
2332 pub mutbl: Mutability,
2333}
2334
2335#[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)]
2338pub struct FnSig {
2339 pub header: FnHeader,
2340 pub decl: Box<FnDecl>,
2341 pub span: Span,
2342}
2343
2344impl FnSig {
2345 pub fn header_span(&self) -> Span {
2347 match self.header.ext {
2348 Extern::Implicit(span) | Extern::Explicit(_, span) => {
2349 return self.span.with_hi(span.hi());
2350 }
2351 Extern::None => {}
2352 }
2353
2354 match self.header.safety {
2355 Safety::Unsafe(span) | Safety::Safe(span) => return self.span.with_hi(span.hi()),
2356 Safety::Default => {}
2357 };
2358
2359 if let Some(coroutine_kind) = self.header.coroutine_kind {
2360 return self.span.with_hi(coroutine_kind.span().hi());
2361 }
2362
2363 if let Const::Yes(span) = self.header.constness {
2364 return self.span.with_hi(span.hi());
2365 }
2366
2367 self.span.shrink_to_lo()
2368 }
2369
2370 pub fn safety_span(&self) -> Span {
2372 match self.header.safety {
2373 Safety::Unsafe(span) | Safety::Safe(span) => span,
2374 Safety::Default => {
2375 if let Some(extern_span) = self.header.ext.span() {
2377 return extern_span.shrink_to_lo();
2378 }
2379
2380 self.header_span().shrink_to_hi()
2382 }
2383 }
2384 }
2385
2386 pub fn extern_span(&self) -> Span {
2388 self.header.ext.span().unwrap_or(self.safety_span().shrink_to_hi())
2389 }
2390}
2391
2392#[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)]
2403pub struct AssocItemConstraint {
2404 pub id: NodeId,
2405 pub ident: Ident,
2406 pub gen_args: Option<GenericArgs>,
2407 pub kind: AssocItemConstraintKind,
2408 pub span: Span,
2409}
2410
2411#[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)]
2412pub enum Term {
2413 Ty(Box<Ty>),
2414 Const(AnonConst),
2415}
2416
2417impl From<Box<Ty>> for Term {
2418 fn from(v: Box<Ty>) -> Self {
2419 Term::Ty(v)
2420 }
2421}
2422
2423impl From<AnonConst> for Term {
2424 fn from(v: AnonConst) -> Self {
2425 Term::Const(v)
2426 }
2427}
2428
2429#[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)]
2431pub enum AssocItemConstraintKind {
2432 Equality { term: Term },
2439 Bound {
2441 #[visitable(extra = BoundKind::Bound)]
2442 bounds: GenericBounds,
2443 },
2444}
2445
2446#[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)]
2447pub struct Ty {
2448 pub id: NodeId,
2449 pub kind: TyKind,
2450 pub span: Span,
2451 pub tokens: Option<LazyAttrTokenStream>,
2452}
2453
2454impl Clone for Ty {
2455 fn clone(&self) -> Self {
2456 ensure_sufficient_stack(|| Self {
2457 id: self.id,
2458 kind: self.kind.clone(),
2459 span: self.span,
2460 tokens: self.tokens.clone(),
2461 })
2462 }
2463}
2464
2465impl From<Box<Ty>> for Ty {
2466 fn from(value: Box<Ty>) -> Self {
2467 *value
2468 }
2469}
2470
2471impl Ty {
2472 pub fn peel_refs(&self) -> &Self {
2473 let mut final_ty = self;
2474 while let TyKind::Ref(_, MutTy { ty, .. }) | TyKind::Ptr(MutTy { ty, .. }) = &final_ty.kind
2475 {
2476 final_ty = ty;
2477 }
2478 final_ty
2479 }
2480
2481 pub fn is_maybe_parenthesised_infer(&self) -> bool {
2482 match &self.kind {
2483 TyKind::Infer => true,
2484 TyKind::Paren(inner) => inner.is_maybe_parenthesised_infer(),
2485 _ => false,
2486 }
2487 }
2488}
2489
2490#[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)]
2491pub struct FnPtrTy {
2492 pub safety: Safety,
2493 pub ext: Extern,
2494 pub generic_params: ThinVec<GenericParam>,
2495 pub decl: Box<FnDecl>,
2496 pub decl_span: Span,
2499}
2500
2501#[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)]
2502pub struct UnsafeBinderTy {
2503 pub generic_params: ThinVec<GenericParam>,
2504 pub inner_ty: Box<Ty>,
2505}
2506
2507#[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)]
2511pub enum TyKind {
2512 Slice(Box<Ty>),
2514 Array(Box<Ty>, AnonConst),
2516 Ptr(MutTy),
2518 Ref(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
2520 PinnedRef(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
2524 FnPtr(Box<FnPtrTy>),
2526 UnsafeBinder(Box<UnsafeBinderTy>),
2528 Never,
2530 Tup(ThinVec<Box<Ty>>),
2532 Path(Option<Box<QSelf>>, Path),
2537 TraitObject(#[visitable(extra = BoundKind::TraitObject)] GenericBounds, TraitObjectSyntax),
2540 ImplTrait(NodeId, #[visitable(extra = BoundKind::Impl)] GenericBounds),
2547 Paren(Box<Ty>),
2549 Infer,
2552 ImplicitSelf,
2554 MacCall(Box<MacCall>),
2556 CVarArgs,
2558 Pat(Box<Ty>, Box<TyPat>),
2561 FieldOf(Box<Ty>, Option<Ident>, Ident),
2566 Dummy,
2568 Err(ErrorGuaranteed),
2570}
2571
2572impl TyKind {
2573 pub fn is_implicit_self(&self) -> bool {
2574 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::ImplicitSelf => true,
_ => false,
}matches!(self, TyKind::ImplicitSelf)
2575 }
2576
2577 pub fn is_unit(&self) -> bool {
2578 #[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())
2579 }
2580
2581 pub fn is_simple_path(&self) -> Option<Symbol> {
2582 if let TyKind::Path(None, Path { segments, .. }) = &self
2583 && let [segment] = &segments[..]
2584 && segment.args.is_none()
2585 {
2586 Some(segment.ident.name)
2587 } else {
2588 None
2589 }
2590 }
2591
2592 pub fn maybe_scalar(&self) -> bool {
2600 let Some(ty_sym) = self.is_simple_path() else {
2601 return self.is_unit();
2603 };
2604 #[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!(
2605 ty_sym,
2606 sym::i8
2607 | sym::i16
2608 | sym::i32
2609 | sym::i64
2610 | sym::i128
2611 | sym::u8
2612 | sym::u16
2613 | sym::u32
2614 | sym::u64
2615 | sym::u128
2616 | sym::f16
2617 | sym::f32
2618 | sym::f64
2619 | sym::f128
2620 | sym::char
2621 | sym::bool
2622 )
2623 }
2624}
2625
2626#[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)]
2628pub struct TyPat {
2629 pub id: NodeId,
2630 pub kind: TyPatKind,
2631 pub span: Span,
2632 pub tokens: Option<LazyAttrTokenStream>,
2633}
2634
2635#[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)]
2639pub enum TyPatKind {
2640 Range(Option<Box<AnonConst>>, Option<Box<AnonConst>>, Spanned<RangeEnd>),
2642
2643 NotNull,
2645
2646 Or(ThinVec<TyPat>),
2647
2648 Err(ErrorGuaranteed),
2650}
2651
2652#[derive(#[automatically_derived]
impl ::core::clone::Clone for TraitObjectSyntax {
#[inline]
fn clone(&self) -> TraitObjectSyntax { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TraitObjectSyntax { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for TraitObjectSyntax {
#[inline]
fn eq(&self, other: &TraitObjectSyntax) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TraitObjectSyntax {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
TraitObjectSyntax::Dyn => { 0usize }
TraitObjectSyntax::None => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
TraitObjectSyntax::Dyn => {}
TraitObjectSyntax::None => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TraitObjectSyntax {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { TraitObjectSyntax::Dyn }
1usize => { TraitObjectSyntax::None }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `TraitObjectSyntax`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TraitObjectSyntax {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TraitObjectSyntax::Dyn => "Dyn",
TraitObjectSyntax::None => "None",
})
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
TraitObjectSyntax {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
TraitObjectSyntax::Dyn => {}
TraitObjectSyntax::None => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
TraitObjectSyntax where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TraitObjectSyntax::Dyn => {}
TraitObjectSyntax::None => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TraitObjectSyntax
where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TraitObjectSyntax::Dyn => {}
TraitObjectSyntax::None => {}
}
}
}
};Walkable)]
2654#[repr(u8)]
2655pub enum TraitObjectSyntax {
2656 Dyn = 0,
2658 None = 1,
2659}
2660
2661unsafe impl Tag for TraitObjectSyntax {
2665 const BITS: u32 = 2;
2666
2667 fn into_usize(self) -> usize {
2668 self as u8 as usize
2669 }
2670
2671 unsafe fn from_usize(tag: usize) -> Self {
2672 match tag {
2673 0 => TraitObjectSyntax::Dyn,
2674 1 => TraitObjectSyntax::None,
2675 _ => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
2676 }
2677 }
2678}
2679
2680#[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)]
2681pub enum PreciseCapturingArg {
2682 Lifetime(#[visitable(extra = LifetimeCtxt::GenericArg)] Lifetime),
2684 Arg(Path, NodeId),
2686}
2687
2688#[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)]
2692pub enum InlineAsmRegOrRegClass {
2693 Reg(Symbol),
2694 RegClass(Symbol),
2695}
2696
2697#[derive(#[automatically_derived]
impl ::core::clone::Clone for InlineAsmOptions {
#[inline]
fn clone(&self) -> InlineAsmOptions {
let _: ::core::clone::AssertParamIsClone<u16>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for InlineAsmOptions { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for InlineAsmOptions {
#[inline]
fn eq(&self, other: &InlineAsmOptions) -> bool { self.0 == other.0 }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for InlineAsmOptions {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u16>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for InlineAsmOptions {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state)
}
}Hash, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for InlineAsmOptions {
fn encode(&self, __encoder: &mut __E) {
match *self {
InlineAsmOptions(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for InlineAsmOptions {
fn decode(__decoder: &mut __D) -> Self {
InlineAsmOptions(::rustc_serialize::Decodable::decode(__decoder))
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
InlineAsmOptions {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
InlineAsmOptions(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
2698pub struct InlineAsmOptions(u16);
2699impl 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! {
2700 impl InlineAsmOptions: u16 {
2701 const PURE = 1 << 0;
2702 const NOMEM = 1 << 1;
2703 const READONLY = 1 << 2;
2704 const PRESERVES_FLAGS = 1 << 3;
2705 const NORETURN = 1 << 4;
2706 const NOSTACK = 1 << 5;
2707 const ATT_SYNTAX = 1 << 6;
2708 const RAW = 1 << 7;
2709 const MAY_UNWIND = 1 << 8;
2710 }
2711}
2712
2713impl InlineAsmOptions {
2714 pub const COUNT: usize = Self::all().bits().count_ones() as usize;
2715
2716 pub const GLOBAL_OPTIONS: Self = Self::ATT_SYNTAX.union(Self::RAW);
2717 pub const NAKED_OPTIONS: Self = Self::ATT_SYNTAX.union(Self::RAW);
2718
2719 pub fn human_readable_names(&self) -> Vec<&'static str> {
2720 let mut options = ::alloc::vec::Vec::new()vec![];
2721
2722 if self.contains(InlineAsmOptions::PURE) {
2723 options.push("pure");
2724 }
2725 if self.contains(InlineAsmOptions::NOMEM) {
2726 options.push("nomem");
2727 }
2728 if self.contains(InlineAsmOptions::READONLY) {
2729 options.push("readonly");
2730 }
2731 if self.contains(InlineAsmOptions::PRESERVES_FLAGS) {
2732 options.push("preserves_flags");
2733 }
2734 if self.contains(InlineAsmOptions::NORETURN) {
2735 options.push("noreturn");
2736 }
2737 if self.contains(InlineAsmOptions::NOSTACK) {
2738 options.push("nostack");
2739 }
2740 if self.contains(InlineAsmOptions::ATT_SYNTAX) {
2741 options.push("att_syntax");
2742 }
2743 if self.contains(InlineAsmOptions::RAW) {
2744 options.push("raw");
2745 }
2746 if self.contains(InlineAsmOptions::MAY_UNWIND) {
2747 options.push("may_unwind");
2748 }
2749
2750 options
2751 }
2752}
2753
2754impl std::fmt::Debug for InlineAsmOptions {
2755 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2756 bitflags::parser::to_writer(self, f)
2757 }
2758}
2759
2760#[derive(#[automatically_derived]
impl ::core::clone::Clone for InlineAsmTemplatePiece {
#[inline]
fn clone(&self) -> InlineAsmTemplatePiece {
match self {
InlineAsmTemplatePiece::String(__self_0) =>
InlineAsmTemplatePiece::String(::core::clone::Clone::clone(__self_0)),
InlineAsmTemplatePiece::Placeholder {
operand_idx: __self_0, modifier: __self_1, span: __self_2 } =>
InlineAsmTemplatePiece::Placeholder {
operand_idx: ::core::clone::Clone::clone(__self_0),
modifier: ::core::clone::Clone::clone(__self_1),
span: ::core::clone::Clone::clone(__self_2),
},
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for InlineAsmTemplatePiece {
#[inline]
fn eq(&self, other: &InlineAsmTemplatePiece) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(InlineAsmTemplatePiece::String(__self_0),
InlineAsmTemplatePiece::String(__arg1_0)) =>
__self_0 == __arg1_0,
(InlineAsmTemplatePiece::Placeholder {
operand_idx: __self_0, modifier: __self_1, span: __self_2 },
InlineAsmTemplatePiece::Placeholder {
operand_idx: __arg1_0, modifier: __arg1_1, span: __arg1_2 })
=>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for InlineAsmTemplatePiece {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
InlineAsmTemplatePiece::String(ref __binding_0) => {
0usize
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref __binding_0,
modifier: ref __binding_1,
span: ref __binding_2 } => {
1usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
InlineAsmTemplatePiece::String(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref __binding_0,
modifier: ref __binding_1,
span: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for InlineAsmTemplatePiece {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
InlineAsmTemplatePiece::String(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
InlineAsmTemplatePiece::Placeholder {
operand_idx: ::rustc_serialize::Decodable::decode(__decoder),
modifier: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `InlineAsmTemplatePiece`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for InlineAsmTemplatePiece {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
InlineAsmTemplatePiece::String(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "String",
&__self_0),
InlineAsmTemplatePiece::Placeholder {
operand_idx: __self_0, modifier: __self_1, span: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"Placeholder", "operand_idx", __self_0, "modifier",
__self_1, "span", &__self_2),
}
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for InlineAsmTemplatePiece {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
InlineAsmTemplatePiece::String(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
InlineAsmTemplatePiece::Placeholder {
operand_idx: __self_0, modifier: __self_1, span: __self_2 } =>
{
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
}
}
}Hash, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
InlineAsmTemplatePiece {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
InlineAsmTemplatePiece::String(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref __binding_0,
modifier: ref __binding_1,
span: ref __binding_2 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
{ __binding_2.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
InlineAsmTemplatePiece where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
InlineAsmTemplatePiece::String(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref __binding_0,
modifier: ref __binding_1,
span: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for
InlineAsmTemplatePiece where __V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
InlineAsmTemplatePiece::String(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
InlineAsmTemplatePiece::Placeholder {
operand_idx: ref mut __binding_0,
modifier: ref mut __binding_1,
span: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2761pub enum InlineAsmTemplatePiece {
2762 String(Cow<'static, str>),
2763 Placeholder { operand_idx: usize, modifier: Option<char>, span: Span },
2764}
2765
2766impl fmt::Display for InlineAsmTemplatePiece {
2767 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2768 match self {
2769 Self::String(s) => {
2770 for c in s.chars() {
2771 match c {
2772 '{' => f.write_str("{{")?,
2773 '}' => f.write_str("}}")?,
2774 _ => c.fmt(f)?,
2775 }
2776 }
2777 Ok(())
2778 }
2779 Self::Placeholder { operand_idx, modifier: Some(modifier), .. } => {
2780 f.write_fmt(format_args!("{{{0}:{1}}}", operand_idx, modifier))write!(f, "{{{operand_idx}:{modifier}}}")
2781 }
2782 Self::Placeholder { operand_idx, modifier: None, .. } => {
2783 f.write_fmt(format_args!("{{{0}}}", operand_idx))write!(f, "{{{operand_idx}}}")
2784 }
2785 }
2786 }
2787}
2788
2789impl InlineAsmTemplatePiece {
2790 pub fn to_string(s: &[Self]) -> String {
2792 use fmt::Write;
2793 let mut out = String::new();
2794 for p in s.iter() {
2795 let _ = out.write_fmt(format_args!("{0}", p))write!(out, "{p}");
2796 }
2797 out
2798 }
2799}
2800
2801#[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)]
2809pub struct InlineAsmSym {
2810 pub id: NodeId,
2811 pub qself: Option<Box<QSelf>>,
2812 pub path: Path,
2813}
2814
2815#[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)]
2819pub enum InlineAsmOperand {
2820 In {
2821 reg: InlineAsmRegOrRegClass,
2822 expr: Box<Expr>,
2823 },
2824 Out {
2825 reg: InlineAsmRegOrRegClass,
2826 late: bool,
2827 expr: Option<Box<Expr>>,
2828 },
2829 InOut {
2830 reg: InlineAsmRegOrRegClass,
2831 late: bool,
2832 expr: Box<Expr>,
2833 },
2834 SplitInOut {
2835 reg: InlineAsmRegOrRegClass,
2836 late: bool,
2837 in_expr: Box<Expr>,
2838 out_expr: Option<Box<Expr>>,
2839 },
2840 Const {
2841 anon_const: AnonConst,
2842 },
2843 Sym {
2844 sym: InlineAsmSym,
2845 },
2846 Label {
2847 block: Box<Block>,
2848 },
2849}
2850
2851impl InlineAsmOperand {
2852 pub fn reg(&self) -> Option<&InlineAsmRegOrRegClass> {
2853 match self {
2854 Self::In { reg, .. }
2855 | Self::Out { reg, .. }
2856 | Self::InOut { reg, .. }
2857 | Self::SplitInOut { reg, .. } => Some(reg),
2858 Self::Const { .. } | Self::Sym { .. } | Self::Label { .. } => None,
2859 }
2860 }
2861}
2862
2863#[derive(#[automatically_derived]
impl ::core::clone::Clone for AsmMacro {
#[inline]
fn clone(&self) -> AsmMacro { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for AsmMacro { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AsmMacro {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AsmMacro::Asm => { 0usize }
AsmMacro::GlobalAsm => { 1usize }
AsmMacro::NakedAsm => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AsmMacro::Asm => {}
AsmMacro::GlobalAsm => {}
AsmMacro::NakedAsm => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AsmMacro {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { AsmMacro::Asm }
1usize => { AsmMacro::GlobalAsm }
2usize => { AsmMacro::NakedAsm }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AsmMacro`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AsmMacro {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
AsmMacro::Asm => "Asm",
AsmMacro::GlobalAsm => "GlobalAsm",
AsmMacro::NakedAsm => "NakedAsm",
})
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for AsmMacro {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
AsmMacro::Asm => {}
AsmMacro::GlobalAsm => {}
AsmMacro::NakedAsm => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AsmMacro
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AsmMacro::Asm => {}
AsmMacro::GlobalAsm => {}
AsmMacro::NakedAsm => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AsmMacro where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AsmMacro::Asm => {}
AsmMacro::GlobalAsm => {}
AsmMacro::NakedAsm => {}
}
}
}
};Walkable, #[automatically_derived]
impl ::core::cmp::PartialEq for AsmMacro {
#[inline]
fn eq(&self, other: &AsmMacro) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for AsmMacro {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq)]
2864pub enum AsmMacro {
2865 Asm,
2867 GlobalAsm,
2869 NakedAsm,
2871}
2872
2873impl AsmMacro {
2874 pub const fn macro_name(self) -> &'static str {
2875 match self {
2876 AsmMacro::Asm => "asm",
2877 AsmMacro::GlobalAsm => "global_asm",
2878 AsmMacro::NakedAsm => "naked_asm",
2879 }
2880 }
2881
2882 pub const fn is_supported_option(self, option: InlineAsmOptions) -> bool {
2883 match self {
2884 AsmMacro::Asm => true,
2885 AsmMacro::GlobalAsm => InlineAsmOptions::GLOBAL_OPTIONS.contains(option),
2886 AsmMacro::NakedAsm => InlineAsmOptions::NAKED_OPTIONS.contains(option),
2887 }
2888 }
2889
2890 pub const fn diverges(self, options: InlineAsmOptions) -> bool {
2891 match self {
2892 AsmMacro::Asm => options.contains(InlineAsmOptions::NORETURN),
2893 AsmMacro::GlobalAsm => true,
2894 AsmMacro::NakedAsm => true,
2895 }
2896 }
2897}
2898
2899#[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)]
2903pub struct InlineAsm {
2904 pub asm_macro: AsmMacro,
2905 pub template: Vec<InlineAsmTemplatePiece>,
2906 pub template_strs: Box<[(Symbol, Option<Symbol>, Span)]>,
2907 pub operands: Vec<(InlineAsmOperand, Span)>,
2908 pub clobber_abis: Vec<(Symbol, Span)>,
2909 #[visitable(ignore)]
2910 pub options: InlineAsmOptions,
2911 pub line_spans: Vec<Span>,
2912}
2913
2914#[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)]
2918pub struct Param {
2919 pub attrs: AttrVec,
2920 pub ty: Box<Ty>,
2921 pub pat: Box<Pat>,
2922 pub id: NodeId,
2923 pub span: Span,
2924 pub is_placeholder: bool,
2925}
2926
2927#[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)]
2931pub enum SelfKind {
2932 Value(Mutability),
2934 Region(Option<Lifetime>, Mutability),
2936 Pinned(Option<Lifetime>, Mutability),
2938 Explicit(Box<Ty>, Mutability),
2940}
2941
2942impl SelfKind {
2943 pub fn to_ref_suggestion(&self) -> String {
2944 match self {
2945 SelfKind::Region(None, mutbl) => mutbl.ref_prefix_str().to_string(),
2946 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()),
2947 SelfKind::Pinned(None, mutbl) => ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("&pin {0}", mutbl.ptr_str()))
})format!("&pin {}", mutbl.ptr_str()),
2948 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()),
2949 SelfKind::Value(_) | SelfKind::Explicit(_, _) => {
2950 {
::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")
2951 }
2952 }
2953 }
2954}
2955
2956pub type ExplicitSelf = Spanned<SelfKind>;
2957
2958impl Param {
2959 pub fn to_self(&self) -> Option<ExplicitSelf> {
2961 if let PatKind::Ident(BindingMode(ByRef::No, mutbl), ident, _) = self.pat.kind {
2962 if ident.name == kw::SelfLower {
2963 return match self.ty.kind {
2964 TyKind::ImplicitSelf => Some(respan(self.pat.span, SelfKind::Value(mutbl))),
2965 TyKind::Ref(lt, MutTy { ref ty, mutbl }) if ty.kind.is_implicit_self() => {
2966 Some(respan(self.pat.span, SelfKind::Region(lt, mutbl)))
2967 }
2968 TyKind::PinnedRef(lt, MutTy { ref ty, mutbl })
2969 if ty.kind.is_implicit_self() =>
2970 {
2971 Some(respan(self.pat.span, SelfKind::Pinned(lt, mutbl)))
2972 }
2973 _ => Some(respan(
2974 self.pat.span.to(self.ty.span),
2975 SelfKind::Explicit(self.ty.clone(), mutbl),
2976 )),
2977 };
2978 }
2979 }
2980 None
2981 }
2982
2983 pub fn is_self(&self) -> bool {
2985 if let PatKind::Ident(_, ident, _) = self.pat.kind {
2986 ident.name == kw::SelfLower
2987 } else {
2988 false
2989 }
2990 }
2991
2992 pub fn from_self(attrs: AttrVec, eself: ExplicitSelf, eself_ident: Ident) -> Param {
2994 let span = eself.span.to(eself_ident.span);
2995 let infer_ty = Box::new(Ty {
2996 id: DUMMY_NODE_ID,
2997 kind: TyKind::ImplicitSelf,
2998 span: eself_ident.span,
2999 tokens: None,
3000 });
3001 let (mutbl, ty) = match eself.node {
3002 SelfKind::Explicit(ty, mutbl) => (mutbl, ty),
3003 SelfKind::Value(mutbl) => (mutbl, infer_ty),
3004 SelfKind::Region(lt, mutbl) => (
3005 Mutability::Not,
3006 Box::new(Ty {
3007 id: DUMMY_NODE_ID,
3008 kind: TyKind::Ref(lt, MutTy { ty: infer_ty, mutbl }),
3009 span,
3010 tokens: None,
3011 }),
3012 ),
3013 SelfKind::Pinned(lt, mutbl) => (
3014 mutbl,
3015 Box::new(Ty {
3016 id: DUMMY_NODE_ID,
3017 kind: TyKind::PinnedRef(lt, MutTy { ty: infer_ty, mutbl }),
3018 span,
3019 tokens: None,
3020 }),
3021 ),
3022 };
3023 Param {
3024 attrs,
3025 pat: Box::new(Pat {
3026 id: DUMMY_NODE_ID,
3027 kind: PatKind::Ident(BindingMode(ByRef::No, mutbl), eself_ident, None),
3028 span,
3029 tokens: None,
3030 }),
3031 span,
3032 ty,
3033 id: DUMMY_NODE_ID,
3034 is_placeholder: false,
3035 }
3036 }
3037}
3038
3039#[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)]
3046pub struct FnDecl {
3047 pub inputs: ThinVec<Param>,
3048 pub output: FnRetTy,
3049}
3050
3051impl FnDecl {
3052 pub fn has_self(&self) -> bool {
3053 self.inputs.get(0).is_some_and(Param::is_self)
3054 }
3055
3056 pub fn c_variadic(&self) -> bool {
3057 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))
3058 }
3059
3060 pub const NO_SPLATTED_ARG_INDEX: u16 = u16::MAX;
3063
3064 pub fn splatted(&self) -> Option<u16> {
3066 self.inputs.iter().enumerate().find_map(|(index, arg)| {
3067 if index == Self::NO_SPLATTED_ARG_INDEX as usize {
3068 None
3071 } else {
3072 arg.attrs
3073 .iter()
3074 .any(|attr| attr.has_name(sym::splat))
3075 .then_some(u16::try_from(index).unwrap())
3076 }
3077 })
3078 }
3079}
3080
3081#[derive(#[automatically_derived]
impl ::core::marker::Copy for IsAuto { }Copy, #[automatically_derived]
impl ::core::clone::Clone for IsAuto {
#[inline]
fn clone(&self) -> IsAuto { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for IsAuto {
#[inline]
fn eq(&self, other: &IsAuto) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for IsAuto {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
IsAuto::Yes => { 0usize }
IsAuto::No => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self { IsAuto::Yes => {} IsAuto::No => {} }
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for IsAuto {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { IsAuto::Yes }
1usize => { IsAuto::No }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `IsAuto`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for IsAuto {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self { IsAuto::Yes => "Yes", IsAuto::No => "No", })
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for IsAuto {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self { IsAuto::Yes => {} IsAuto::No => {} }
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for IsAuto where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self { IsAuto::Yes => {} IsAuto::No => {} }
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for IsAuto where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self { IsAuto::Yes => {} IsAuto::No => {} }
}
}
};Walkable)]
3083pub enum IsAuto {
3084 Yes,
3085 No,
3086}
3087
3088#[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)]
3090#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Safety {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
Safety::Unsafe(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Safety::Safe(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Safety::Default => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Safety where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Safety::Unsafe(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
Safety::Safe(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
Safety::Default => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Safety where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Safety::Unsafe(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
Safety::Safe(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
Safety::Default => {}
}
}
}
};Walkable)]
3091pub enum Safety {
3092 Unsafe(Span),
3094 Safe(Span),
3096 Default,
3099}
3100
3101#[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)]
3107pub enum CoroutineKind {
3108 Async { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3110 Gen { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3112 AsyncGen { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3114}
3115
3116impl CoroutineKind {
3117 pub fn span(self) -> Span {
3118 match self {
3119 CoroutineKind::Async { span, .. } => span,
3120 CoroutineKind::Gen { span, .. } => span,
3121 CoroutineKind::AsyncGen { span, .. } => span,
3122 }
3123 }
3124
3125 pub fn as_str(self) -> &'static str {
3126 match self {
3127 CoroutineKind::Async { .. } => "async",
3128 CoroutineKind::Gen { .. } => "gen",
3129 CoroutineKind::AsyncGen { .. } => "async gen",
3130 }
3131 }
3132
3133 pub fn closure_id(self) -> NodeId {
3134 match self {
3135 CoroutineKind::Async { closure_id, .. }
3136 | CoroutineKind::Gen { closure_id, .. }
3137 | CoroutineKind::AsyncGen { closure_id, .. } => closure_id,
3138 }
3139 }
3140
3141 pub fn return_id(self) -> (NodeId, Span) {
3144 match self {
3145 CoroutineKind::Async { return_impl_trait_id, span, .. }
3146 | CoroutineKind::Gen { return_impl_trait_id, span, .. }
3147 | CoroutineKind::AsyncGen { return_impl_trait_id, span, .. } => {
3148 (return_impl_trait_id, span)
3149 }
3150 }
3151 }
3152}
3153
3154#[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)]
3155#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Const {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
Const::Yes(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Const::No => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Const where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Const::Yes(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
Const::No => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Const where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Const::Yes(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
Const::No => {}
}
}
}
};Walkable)]
3156pub enum Const {
3157 Yes(Span),
3158 No,
3159}
3160
3161#[derive(#[automatically_derived]
impl ::core::marker::Copy for Defaultness { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Defaultness {
#[inline]
fn clone(&self) -> Defaultness {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Defaultness {
#[inline]
fn eq(&self, other: &Defaultness) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Defaultness::Default(__self_0),
Defaultness::Default(__arg1_0)) => __self_0 == __arg1_0,
(Defaultness::Final(__self_0), Defaultness::Final(__arg1_0))
=> __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Defaultness {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Defaultness::Implicit => { 0usize }
Defaultness::Default(ref __binding_0) => { 1usize }
Defaultness::Final(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Defaultness::Implicit => {}
Defaultness::Default(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
Defaultness::Final(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Defaultness {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { Defaultness::Implicit }
1usize => {
Defaultness::Default(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
Defaultness::Final(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Defaultness`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Defaultness {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Defaultness::Implicit =>
::core::fmt::Formatter::write_str(f, "Implicit"),
Defaultness::Default(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Default", &__self_0),
Defaultness::Final(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Final",
&__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Defaultness
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
Defaultness::Implicit => {}
Defaultness::Default(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
Defaultness::Final(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Defaultness
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Defaultness::Implicit => {}
Defaultness::Default(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
Defaultness::Final(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Defaultness where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Defaultness::Implicit => {}
Defaultness::Default(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
Defaultness::Final(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3164pub enum Defaultness {
3165 Implicit,
3171 Default(Span),
3173 Final(Span),
3175}
3176
3177#[derive(#[automatically_derived]
impl ::core::marker::Copy for ImplPolarity { }Copy, #[automatically_derived]
impl ::core::clone::Clone for ImplPolarity {
#[inline]
fn clone(&self) -> ImplPolarity {
let _: ::core::clone::AssertParamIsClone<Span>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ImplPolarity {
#[inline]
fn eq(&self, other: &ImplPolarity) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ImplPolarity::Negative(__self_0),
ImplPolarity::Negative(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ImplPolarity {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ImplPolarity::Positive => { 0usize }
ImplPolarity::Negative(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ImplPolarity::Positive => {}
ImplPolarity::Negative(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ImplPolarity {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { ImplPolarity::Positive }
1usize => {
ImplPolarity::Negative(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ImplPolarity`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for ImplPolarity
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
ImplPolarity::Positive => {}
ImplPolarity::Negative(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ImplPolarity
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ImplPolarity::Positive => {}
ImplPolarity::Negative(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ImplPolarity where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ImplPolarity::Positive => {}
ImplPolarity::Negative(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3178pub enum ImplPolarity {
3179 Positive,
3181 Negative(Span),
3183}
3184
3185impl fmt::Debug for ImplPolarity {
3186 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
3187 match *self {
3188 ImplPolarity::Positive => "positive".fmt(f),
3189 ImplPolarity::Negative(_) => "negative".fmt(f),
3190 }
3191 }
3192}
3193
3194#[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)]
3196#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
BoundPolarity {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
BoundPolarity::Positive => {}
BoundPolarity::Negative(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
BoundPolarity::Maybe(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
BoundPolarity where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BoundPolarity::Positive => {}
BoundPolarity::Negative(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
BoundPolarity::Maybe(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BoundPolarity where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BoundPolarity::Positive => {}
BoundPolarity::Negative(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
BoundPolarity::Maybe(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3197pub enum BoundPolarity {
3198 Positive,
3200 Negative(Span),
3202 Maybe(Span),
3204}
3205
3206impl BoundPolarity {
3207 pub fn as_str(self) -> &'static str {
3208 match self {
3209 Self::Positive => "",
3210 Self::Negative(_) => "!",
3211 Self::Maybe(_) => "?",
3212 }
3213 }
3214}
3215
3216#[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)]
3218#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
BoundConstness {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
BoundConstness::Never => {}
BoundConstness::Always(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
BoundConstness::Maybe(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
BoundConstness where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BoundConstness::Never => {}
BoundConstness::Always(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
BoundConstness::Maybe(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BoundConstness where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BoundConstness::Never => {}
BoundConstness::Always(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
BoundConstness::Maybe(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3219pub enum BoundConstness {
3220 Never,
3222 Always(Span),
3224 Maybe(Span),
3226}
3227
3228impl BoundConstness {
3229 pub fn as_str(self) -> &'static str {
3230 match self {
3231 Self::Never => "",
3232 Self::Always(_) => "const",
3233 Self::Maybe(_) => "[const]",
3234 }
3235 }
3236}
3237
3238#[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)]
3240#[derive(const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
BoundAsyncness {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
BoundAsyncness::Normal => {}
BoundAsyncness::Async(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
BoundAsyncness where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BoundAsyncness::Normal => {}
BoundAsyncness::Async(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BoundAsyncness where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BoundAsyncness::Normal => {}
BoundAsyncness::Async(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3241pub enum BoundAsyncness {
3242 Normal,
3244 Async(Span),
3246}
3247
3248impl BoundAsyncness {
3249 pub fn as_str(self) -> &'static str {
3250 match self {
3251 Self::Normal => "",
3252 Self::Async(_) => "async",
3253 }
3254 }
3255}
3256
3257#[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)]
3258pub enum FnRetTy {
3259 Default(Span),
3264 Ty(Box<Ty>),
3266}
3267
3268impl FnRetTy {
3269 pub fn span(&self) -> Span {
3270 match self {
3271 &FnRetTy::Default(span) => span,
3272 FnRetTy::Ty(ty) => ty.span,
3273 }
3274 }
3275}
3276
3277#[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)]
3278pub enum Inline {
3279 Yes,
3280 No { had_parse_error: Result<(), ErrorGuaranteed> },
3281}
3282
3283#[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)]
3285pub enum ModKind {
3286 Loaded(ThinVec<Box<Item>>, Inline, ModSpans),
3291 Unloaded,
3293}
3294
3295#[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)]
3296pub struct ModSpans {
3297 pub inner_span: Span,
3300 pub inject_use_span: Span,
3301}
3302
3303#[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)]
3307pub struct ForeignMod {
3308 pub extern_span: Span,
3310 pub safety: Safety,
3313 pub abi: Option<StrLit>,
3314 pub items: ThinVec<Box<ForeignItem>>,
3315}
3316
3317#[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)]
3318pub struct EnumDef {
3319 pub variants: ThinVec<Variant>,
3320}
3321
3322#[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)]
3324pub struct Variant {
3325 pub attrs: AttrVec,
3327 pub id: NodeId,
3329 pub span: Span,
3331 pub vis: Visibility,
3333 pub ident: Ident,
3335
3336 pub data: VariantData,
3338 pub disr_expr: Option<AnonConst>,
3340 pub is_placeholder: bool,
3342}
3343
3344#[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)]
3346pub enum UseTreeKind {
3347 Simple(Option<Ident>),
3349 Nested { items: ThinVec<(UseTree, NodeId)>, span: Span },
3358 Glob(Span),
3360}
3361
3362#[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)]
3365pub struct UseTree {
3366 pub prefix: Path,
3367 pub kind: UseTreeKind,
3368}
3369
3370impl UseTree {
3371 pub fn ident(&self) -> Ident {
3374 match self.kind {
3375 UseTreeKind::Simple(Some(rename)) => rename,
3376 UseTreeKind::Simple(None) => {
3377 self.prefix.segments.last().expect("empty prefix in a simple import").ident
3378 }
3379 _ => {
::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"),
3380 }
3381 }
3382
3383 pub fn span(&self) -> Span {
3387 self.prefix.span.to(self.hi_span())
3388 }
3389
3390 pub fn hi_span(&self) -> Span {
3396 match self.kind {
3397 UseTreeKind::Simple(None) => self.prefix.span,
3398 UseTreeKind::Simple(Some(name)) => name.span,
3399 UseTreeKind::Nested { span, .. } => span,
3400 UseTreeKind::Glob(span) => span,
3401 }
3402 }
3403}
3404
3405#[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)]
3409#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AttrStyle {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AttrStyle::Outer => { 0usize }
AttrStyle::Inner => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self { AttrStyle::Outer => {} AttrStyle::Inner => {} }
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AttrStyle {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { AttrStyle::Outer }
1usize => { AttrStyle::Inner }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AttrStyle`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for AttrStyle {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self { AttrStyle::Outer => {} AttrStyle::Inner => {} }
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AttrStyle
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self { AttrStyle::Outer => {} AttrStyle::Inner => {} }
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AttrStyle where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self { AttrStyle::Outer => {} AttrStyle::Inner => {} }
}
}
};Walkable)]
3410pub enum AttrStyle {
3411 Outer,
3412 Inner,
3413}
3414
3415pub type AttrVec = ThinVec<Attribute>;
3417
3418#[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)]
3420pub struct Attribute {
3421 pub kind: AttrKind,
3422 pub id: AttrId,
3423 pub style: AttrStyle,
3426 pub span: Span,
3427}
3428
3429#[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)]
3430pub enum AttrKind {
3431 Normal(Box<NormalAttr>),
3433
3434 DocComment(CommentKind, Symbol),
3438}
3439
3440#[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)]
3441pub struct NormalAttr {
3442 pub item: AttrItem,
3443 pub tokens: Option<LazyAttrTokenStream>,
3445}
3446
3447impl NormalAttr {
3448 pub fn from_ident(ident: Ident) -> Self {
3449 Self {
3450 item: AttrItem {
3451 unsafety: Safety::Default,
3452 path: Path::from_ident(ident),
3453 args: AttrItemKind::Unparsed(AttrArgs::Empty),
3454 tokens: None,
3455 },
3456 tokens: None,
3457 }
3458 }
3459}
3460
3461#[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)]
3462pub struct AttrItem {
3463 pub unsafety: Safety,
3464 pub path: Path,
3465 pub args: AttrItemKind,
3466 pub tokens: Option<LazyAttrTokenStream>,
3468}
3469
3470#[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)]
3473pub enum AttrItemKind {
3474 Parsed(EarlyParsedAttribute),
3475 Unparsed(AttrArgs),
3476}
3477
3478impl AttrItemKind {
3479 pub fn unparsed(self) -> Option<AttrArgs> {
3480 match self {
3481 AttrItemKind::Unparsed(args) => Some(args),
3482 AttrItemKind::Parsed(_) => None,
3483 }
3484 }
3485
3486 pub fn unparsed_ref(&self) -> Option<&AttrArgs> {
3487 match self {
3488 AttrItemKind::Unparsed(args) => Some(args),
3489 AttrItemKind::Parsed(_) => None,
3490 }
3491 }
3492
3493 pub fn span(&self) -> Option<Span> {
3494 match self {
3495 AttrItemKind::Unparsed(args) => args.span(),
3496 AttrItemKind::Parsed(_) => None,
3497 }
3498 }
3499}
3500
3501#[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_hash::StableHash for
EarlyParsedAttribute {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
EarlyParsedAttribute::CfgTrace(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
EarlyParsedAttribute::CfgAttrTrace => {}
}
}
}
};StableHash)]
3507pub enum EarlyParsedAttribute {
3508 CfgTrace(CfgEntry),
3509 CfgAttrTrace,
3510}
3511
3512impl AttrItem {
3513 pub fn is_valid_for_outer_style(&self) -> bool {
3514 self.path == sym::cfg_attr
3515 || self.path == sym::cfg
3516 || self.path == sym::forbid
3517 || self.path == sym::warn
3518 || self.path == sym::allow
3519 || self.path == sym::deny
3520 || self.path == sym::expect
3521 }
3522}
3523
3524#[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)]
3531pub struct TraitRef {
3532 pub path: Path,
3533 pub ref_id: NodeId,
3534}
3535
3536#[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)]
3538pub enum Parens {
3539 Yes,
3540 No,
3541}
3542
3543#[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)]
3544pub struct PolyTraitRef {
3545 pub bound_generic_params: ThinVec<GenericParam>,
3547
3548 pub modifiers: TraitBoundModifiers,
3550
3551 pub trait_ref: TraitRef,
3553
3554 pub span: Span,
3555
3556 pub parens: Parens,
3559}
3560
3561impl PolyTraitRef {
3562 pub fn new(
3563 generic_params: ThinVec<GenericParam>,
3564 path: Path,
3565 modifiers: TraitBoundModifiers,
3566 span: Span,
3567 parens: Parens,
3568 ) -> Self {
3569 PolyTraitRef {
3570 bound_generic_params: generic_params,
3571 modifiers,
3572 trait_ref: TraitRef { path, ref_id: DUMMY_NODE_ID },
3573 span,
3574 parens,
3575 }
3576 }
3577}
3578
3579#[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)]
3580pub struct Visibility {
3581 pub kind: VisibilityKind,
3582 pub span: Span,
3583 pub tokens: Option<LazyAttrTokenStream>,
3584}
3585
3586#[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)]
3587pub enum VisibilityKind {
3588 Public,
3589 Restricted { path: Box<Path>, id: NodeId, shorthand: bool },
3590 Inherited,
3591}
3592
3593impl VisibilityKind {
3594 pub fn is_pub(&self) -> bool {
3595 #[allow(non_exhaustive_omitted_patterns)] match self {
VisibilityKind::Public => true,
_ => false,
}matches!(self, VisibilityKind::Public)
3596 }
3597}
3598
3599#[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)]
3600pub struct ImplRestriction {
3601 pub kind: RestrictionKind,
3602 pub span: Span,
3603 pub tokens: Option<LazyAttrTokenStream>,
3604}
3605
3606#[derive(#[automatically_derived]
impl ::core::clone::Clone for MutRestriction {
#[inline]
fn clone(&self) -> MutRestriction {
MutRestriction {
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
tokens: ::core::clone::Clone::clone(&self.tokens),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MutRestriction {
fn encode(&self, __encoder: &mut __E) {
match *self {
MutRestriction {
kind: ref __binding_0,
span: ref __binding_1,
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 MutRestriction {
fn decode(__decoder: &mut __D) -> Self {
MutRestriction {
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 MutRestriction {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"MutRestriction", "kind", &self.kind, "span", &self.span,
"tokens", &&self.tokens)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
MutRestriction where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MutRestriction {
kind: ref __binding_0,
span: ref __binding_1,
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 MutRestriction where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MutRestriction {
kind: ref mut __binding_0,
span: ref mut __binding_1,
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)]
3607pub struct MutRestriction {
3608 pub kind: RestrictionKind,
3609 pub span: Span,
3610 pub tokens: Option<LazyAttrTokenStream>,
3611}
3612
3613#[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)]
3614pub enum RestrictionKind {
3615 Unrestricted,
3616 Restricted { path: Box<Path>, id: NodeId, shorthand: bool },
3617}
3618
3619#[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),
mut_restriction: ::core::clone::Clone::clone(&self.mut_restriction),
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,
mut_restriction: ref __binding_4,
safety: ref __binding_5,
ident: ref __binding_6,
ty: ref __binding_7,
default: ref __binding_8,
is_placeholder: ref __binding_9 } => {
::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);
::rustc_serialize::Encodable::<__E>::encode(__binding_9,
__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),
mut_restriction: ::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", "mut_restriction", "safety",
"ident", "ty", "default", "is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.attrs, &self.id, &self.span, &self.vis,
&self.mut_restriction, &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,
mut_restriction: ref __binding_4,
safety: ref __binding_5,
ident: ref __binding_6,
ty: ref __binding_7,
default: ref __binding_8,
is_placeholder: ref __binding_9 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__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);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_9,
__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,
mut_restriction: ref mut __binding_4,
safety: ref mut __binding_5,
ident: ref mut __binding_6,
ty: ref mut __binding_7,
default: ref mut __binding_8,
is_placeholder: ref mut __binding_9 } => {
{
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, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_9,
__visitor, ())
}
}
}
}
}
};Walkable)]
3623pub struct FieldDef {
3624 pub attrs: AttrVec,
3625 pub id: NodeId,
3626 pub span: Span,
3627 pub vis: Visibility,
3628 pub mut_restriction: MutRestriction,
3629 pub safety: Safety,
3630 pub ident: Option<Ident>,
3631
3632 pub ty: Box<Ty>,
3633 pub default: Option<AnonConst>,
3634 pub is_placeholder: bool,
3635}
3636
3637#[derive(#[automatically_derived]
impl ::core::marker::Copy for Recovered { }Copy, #[automatically_derived]
impl ::core::clone::Clone for Recovered {
#[inline]
fn clone(&self) -> Recovered {
let _: ::core::clone::AssertParamIsClone<ErrorGuaranteed>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Recovered {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Recovered::No => ::core::fmt::Formatter::write_str(f, "No"),
Recovered::Yes(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Yes",
&__self_0),
}
}
}Debug, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Recovered {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
Recovered::No => { 0usize }
Recovered::Yes(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
Recovered::No => {}
Recovered::Yes(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Recovered {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { Recovered::No }
1usize => {
Recovered::Yes(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `Recovered`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Recovered {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
Recovered::No => {}
Recovered::Yes(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Recovered
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Recovered::No => {}
Recovered::Yes(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Recovered where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Recovered::No => {}
Recovered::Yes(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
3639pub enum Recovered {
3640 No,
3641 Yes(ErrorGuaranteed),
3642}
3643
3644#[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)]
3646pub enum VariantData {
3647 Struct { fields: ThinVec<FieldDef>, recovered: Recovered },
3651 Tuple(ThinVec<FieldDef>, NodeId),
3655 Unit(NodeId),
3659}
3660
3661impl VariantData {
3662 pub fn fields(&self) -> &[FieldDef] {
3664 match self {
3665 VariantData::Struct { fields, .. } | VariantData::Tuple(fields, _) => fields,
3666 _ => &[],
3667 }
3668 }
3669
3670 pub fn ctor_node_id(&self) -> Option<NodeId> {
3672 match *self {
3673 VariantData::Struct { .. } => None,
3674 VariantData::Tuple(_, id) | VariantData::Unit(id) => Some(id),
3675 }
3676 }
3677}
3678
3679#[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)]
3681pub struct Item<K = ItemKind> {
3682 pub attrs: AttrVec,
3683 pub id: NodeId,
3684 pub span: Span,
3685 pub vis: Visibility,
3686
3687 pub kind: K,
3688
3689 pub tokens: Option<LazyAttrTokenStream>,
3697}
3698
3699impl Item {
3700 pub fn span_with_attributes(&self) -> Span {
3702 self.attrs.iter().fold(self.span, |acc, attr| acc.to(attr.span))
3703 }
3704
3705 pub fn opt_generics(&self) -> Option<&Generics> {
3706 match &self.kind {
3707 ItemKind::ExternCrate(..)
3708 | ItemKind::ConstBlock(_)
3709 | ItemKind::Use(_)
3710 | ItemKind::Mod(..)
3711 | ItemKind::ForeignMod(_)
3712 | ItemKind::GlobalAsm(_)
3713 | ItemKind::MacCall(_)
3714 | ItemKind::Delegation(_)
3715 | ItemKind::DelegationMac(_)
3716 | ItemKind::MacroDef(..) => None,
3717 ItemKind::Static(_) => None,
3718 ItemKind::Const(i) => Some(&i.generics),
3719 ItemKind::Fn(i) => Some(&i.generics),
3720 ItemKind::TyAlias(i) => Some(&i.generics),
3721 ItemKind::TraitAlias(i) => Some(&i.generics),
3722
3723 ItemKind::Enum(_, generics, _)
3724 | ItemKind::Struct(_, generics, _)
3725 | ItemKind::Union(_, generics, _) => Some(&generics),
3726 ItemKind::Trait(i) => Some(&i.generics),
3727 ItemKind::Impl(i) => Some(&i.generics),
3728 }
3729 }
3730}
3731
3732#[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)]
3734pub enum Extern {
3735 None,
3739 Implicit(Span),
3745 Explicit(StrLit, Span),
3749}
3750
3751impl Extern {
3752 pub fn from_abi(abi: Option<StrLit>, span: Span) -> Extern {
3753 match abi {
3754 Some(name) => Extern::Explicit(name, span),
3755 None => Extern::Implicit(span),
3756 }
3757 }
3758
3759 pub fn span(self) -> Option<Span> {
3760 match self {
3761 Extern::None => None,
3762 Extern::Implicit(span) | Extern::Explicit(_, span) => Some(span),
3763 }
3764 }
3765}
3766
3767#[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)]
3772pub struct FnHeader {
3773 pub constness: Const,
3775 pub coroutine_kind: Option<CoroutineKind>,
3777 pub safety: Safety,
3779 pub ext: Extern,
3781}
3782
3783impl FnHeader {
3784 pub fn has_qualifiers(&self) -> bool {
3786 let Self { safety, coroutine_kind, constness, ext } = self;
3787 #[allow(non_exhaustive_omitted_patterns)] match safety {
Safety::Unsafe(_) => true,
_ => false,
}matches!(safety, Safety::Unsafe(_))
3788 || coroutine_kind.is_some()
3789 || #[allow(non_exhaustive_omitted_patterns)] match constness {
Const::Yes(_) => true,
_ => false,
}matches!(constness, Const::Yes(_))
3790 || !#[allow(non_exhaustive_omitted_patterns)] match ext {
Extern::None => true,
_ => false,
}matches!(ext, Extern::None)
3791 }
3792}
3793
3794impl Default for FnHeader {
3795 fn default() -> FnHeader {
3796 FnHeader {
3797 safety: Safety::Default,
3798 coroutine_kind: None,
3799 constness: Const::No,
3800 ext: Extern::None,
3801 }
3802 }
3803}
3804
3805#[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)]
3806pub struct TraitAlias {
3807 pub constness: Const,
3808 pub ident: Ident,
3809 pub generics: Generics,
3810 #[visitable(extra = BoundKind::Bound)]
3811 pub bounds: GenericBounds,
3812}
3813
3814#[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)]
3815pub struct Trait {
3816 pub impl_restriction: ImplRestriction,
3817 pub constness: Const,
3818 pub safety: Safety,
3819 pub is_auto: IsAuto,
3820 pub ident: Ident,
3821 pub generics: Generics,
3822 #[visitable(extra = BoundKind::SuperTraits)]
3823 pub bounds: GenericBounds,
3824 #[visitable(extra = AssocCtxt::Trait)]
3825 pub items: ThinVec<Box<AssocItem>>,
3826}
3827
3828#[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)]
3829pub struct TyAlias {
3830 pub defaultness: Defaultness,
3831 pub ident: Ident,
3832 pub generics: Generics,
3833 pub after_where_clause: WhereClause,
3848 #[visitable(extra = BoundKind::Bound)]
3849 pub bounds: GenericBounds,
3850 pub ty: Option<Box<Ty>>,
3851}
3852
3853#[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)]
3854pub struct Impl {
3855 pub generics: Generics,
3856 pub constness: Const,
3857 pub of_trait: Option<Box<TraitImplHeader>>,
3858 pub self_ty: Box<Ty>,
3859 pub items: ThinVec<Box<AssocItem>>,
3860}
3861
3862#[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)]
3863pub struct TraitImplHeader {
3864 pub defaultness: Defaultness,
3865 pub safety: Safety,
3866 pub polarity: ImplPolarity,
3867 pub trait_ref: TraitRef,
3868}
3869
3870#[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)]
3871pub struct FnContract {
3872 pub declarations: ThinVec<Stmt>,
3875 pub requires: Option<Box<Expr>>,
3876 pub ensures: Option<Box<Expr>>,
3877}
3878
3879#[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)]
3880pub struct Fn {
3881 pub defaultness: Defaultness,
3882 pub ident: Ident,
3883 pub generics: Generics,
3884 pub sig: FnSig,
3885 pub contract: Option<Box<FnContract>>,
3886 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
3887 pub body: Option<Box<Block>>,
3888
3889 pub eii_impls: ThinVec<EiiImpl>,
3893}
3894
3895impl Fn {
3896 pub fn is_pin_drop_sugar(&self) -> bool {
3897 self.ident.name == sym::drop
3898 && self
3899 .sig
3900 .decl
3901 .inputs
3902 .first()
3903 .and_then(|param| param.to_self())
3904 .is_some_and(|eself| #[allow(non_exhaustive_omitted_patterns)] match eself.node {
SelfKind::Pinned(None, Mutability::Mut) => true,
_ => false,
}matches!(eself.node, SelfKind::Pinned(None, Mutability::Mut)))
3905 }
3906}
3907
3908#[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)]
3909pub struct EiiImpl {
3910 pub node_id: NodeId,
3911 pub eii_macro_path: Path,
3912 pub known_eii_macro_resolution: Option<EiiDecl>,
3925 pub impl_safety: Safety,
3926 pub span: Span,
3927 pub inner_span: Span,
3928 pub is_default: bool,
3929}
3930
3931#[derive(#[automatically_derived]
impl ::core::clone::Clone for DelegationSource {
#[inline]
fn clone(&self) -> DelegationSource {
let _: ::core::clone::AssertParamIsClone<LocalExpnId>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for DelegationSource { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for DelegationSource {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
DelegationSource::Single => { 0usize }
DelegationSource::List(ref __binding_0) => { 1usize }
DelegationSource::Glob => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
DelegationSource::Single => {}
DelegationSource::List(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
DelegationSource::Glob => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for DelegationSource {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { DelegationSource::Single }
1usize => {
DelegationSource::List(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => { DelegationSource::Glob }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `DelegationSource`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for DelegationSource {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
DelegationSource::Single =>
::core::fmt::Formatter::write_str(f, "Single"),
DelegationSource::List(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "List",
&__self_0),
DelegationSource::Glob =>
::core::fmt::Formatter::write_str(f, "Glob"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for DelegationSource {
#[inline]
fn eq(&self, other: &DelegationSource) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(DelegationSource::List(__self_0),
DelegationSource::List(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for DelegationSource {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<LocalExpnId>;
}
}Eq)]
3932pub enum DelegationSource {
3933 Single,
3934 List(LocalExpnId),
3935 Glob,
3936}
3937
3938#[derive(#[automatically_derived]
impl ::core::clone::Clone for Delegation {
#[inline]
fn clone(&self) -> Delegation {
Delegation {
id: ::core::clone::Clone::clone(&self.id),
qself: ::core::clone::Clone::clone(&self.qself),
path: ::core::clone::Clone::clone(&self.path),
ident: ::core::clone::Clone::clone(&self.ident),
rename: ::core::clone::Clone::clone(&self.rename),
body: ::core::clone::Clone::clone(&self.body),
source: ::core::clone::Clone::clone(&self.source),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Delegation {
fn encode(&self, __encoder: &mut __E) {
match *self {
Delegation {
id: ref __binding_0,
qself: ref __binding_1,
path: ref __binding_2,
ident: ref __binding_3,
rename: ref __binding_4,
body: ref __binding_5,
source: ref __binding_6 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_6,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Delegation {
fn decode(__decoder: &mut __D) -> Self {
Delegation {
id: ::rustc_serialize::Decodable::decode(__decoder),
qself: ::rustc_serialize::Decodable::decode(__decoder),
path: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
rename: ::rustc_serialize::Decodable::decode(__decoder),
body: ::rustc_serialize::Decodable::decode(__decoder),
source: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Delegation {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["id", "qself", "path", "ident", "rename", "body", "source"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.id, &self.qself, &self.path, &self.ident, &self.rename,
&self.body, &&self.source];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Delegation",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Delegation
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Delegation {
id: ref __binding_0,
qself: ref __binding_1,
path: ref __binding_2,
ident: ref __binding_3,
rename: ref __binding_4,
body: ref __binding_5,
source: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Delegation where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Delegation {
id: ref mut __binding_0,
qself: ref mut __binding_1,
path: ref mut __binding_2,
ident: ref mut __binding_3,
rename: ref mut __binding_4,
body: ref mut __binding_5,
source: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{}
}
}
}
}
};Walkable)]
3939pub struct Delegation {
3940 pub id: NodeId,
3942 pub qself: Option<Box<QSelf>>,
3943 pub path: Path,
3944 pub ident: Ident,
3945 pub rename: Option<Ident>,
3946 pub body: Option<Box<Block>>,
3947 #[visitable(ignore)]
3949 pub source: DelegationSource,
3950}
3951
3952impl Delegation {
3953 pub fn last_segment_span(&self) -> Span {
3954 self.path.segments.last().unwrap().ident.span
3955 }
3956}
3957
3958#[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)]
3959pub enum DelegationSuffixes {
3960 List(ThinVec<(Ident, Option<Ident>)>),
3961 Glob(Span),
3962}
3963
3964#[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)]
3965pub struct DelegationMac {
3966 pub qself: Option<Box<QSelf>>,
3967 pub prefix: Path,
3968 pub suffixes: DelegationSuffixes,
3969 pub body: Option<Box<Block>>,
3970}
3971
3972#[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)]
3973pub struct StaticItem {
3974 pub ident: Ident,
3975 pub ty: Box<Ty>,
3976 pub safety: Safety,
3977 pub mutability: Mutability,
3978 pub expr: Option<Box<Expr>>,
3979 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
3980
3981 pub eii_impls: ThinVec<EiiImpl>,
3987}
3988
3989#[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)]
3990pub struct ConstItem {
3991 pub defaultness: Defaultness,
3992 pub ident: Ident,
3993 pub generics: Generics,
3994 pub ty: Box<Ty>,
3995 pub rhs_kind: ConstItemRhsKind,
3996 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
3997}
3998
3999#[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)]
4000pub enum ConstItemRhsKind {
4001 Body { rhs: Option<Box<Expr>> },
4002 TypeConst { rhs: Option<AnonConst> },
4003}
4004
4005impl ConstItemRhsKind {
4006 pub fn new_body(rhs: Box<Expr>) -> Self {
4007 Self::Body { rhs: Some(rhs) }
4008 }
4009
4010 pub fn span(&self) -> Option<Span> {
4011 Some(self.expr()?.span)
4012 }
4013
4014 pub fn expr(&self) -> Option<&Expr> {
4015 match self {
4016 Self::Body { rhs: Some(body) } => Some(&body),
4017 Self::TypeConst { rhs: Some(anon) } => Some(&anon.value),
4018 _ => None,
4019 }
4020 }
4021
4022 pub fn has_expr(&self) -> bool {
4023 match self {
4024 Self::Body { rhs: Some(_) } => true,
4025 Self::TypeConst { rhs: Some(_) } => true,
4026 _ => false,
4027 }
4028 }
4029
4030 pub fn is_type_const(&self) -> bool {
4031 #[allow(non_exhaustive_omitted_patterns)] match self {
&Self::TypeConst { .. } => true,
_ => false,
}matches!(self, &Self::TypeConst { .. })
4032 }
4033}
4034
4035#[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)]
4036pub struct ConstBlockItem {
4037 pub id: NodeId,
4038 pub span: Span,
4039 pub block: Box<Block>,
4040}
4041
4042impl ConstBlockItem {
4043 pub const IDENT: Ident = Ident { name: kw::Underscore, span: DUMMY_SP };
4044}
4045
4046#[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)]
4047pub struct Guard {
4048 pub cond: Expr,
4049 pub span_with_leading_if: Span,
4050}
4051
4052impl Guard {
4053 pub fn span(&self) -> Span {
4054 self.cond.span
4055 }
4056}
4057
4058#[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)]
4060pub enum ItemKind {
4061 ExternCrate(Option<Symbol>, Ident),
4065 Use(UseTree),
4069 Static(Box<StaticItem>),
4073 Const(Box<ConstItem>),
4077 ConstBlock(ConstBlockItem),
4082 Fn(Box<Fn>),
4086 Mod(Safety, Ident, ModKind),
4092 ForeignMod(ForeignMod),
4096 GlobalAsm(Box<InlineAsm>),
4098 TyAlias(Box<TyAlias>),
4102 Enum(Ident, Generics, EnumDef),
4106 Struct(Ident, Generics, VariantData),
4110 Union(Ident, Generics, VariantData),
4114 Trait(Box<Trait>),
4118 TraitAlias(Box<TraitAlias>),
4122 Impl(Impl),
4126 MacCall(Box<MacCall>),
4130 MacroDef(Ident, MacroDef),
4132 Delegation(Box<Delegation>),
4136 DelegationMac(Box<DelegationMac>),
4139}
4140
4141impl ItemKind {
4142 pub fn ident(&self) -> Option<Ident> {
4143 match *self {
4144 ItemKind::ExternCrate(_, ident)
4145 | ItemKind::Static(StaticItem { ident, .. })
4146 | ItemKind::Const(ConstItem { ident, .. })
4147 | ItemKind::Fn(Fn { ident, .. })
4148 | ItemKind::Mod(_, ident, _)
4149 | ItemKind::TyAlias(TyAlias { ident, .. })
4150 | ItemKind::Enum(ident, ..)
4151 | ItemKind::Struct(ident, ..)
4152 | ItemKind::Union(ident, ..)
4153 | ItemKind::Trait(Trait { ident, .. })
4154 | ItemKind::TraitAlias(TraitAlias { ident, .. })
4155 | ItemKind::MacroDef(ident, _)
4156 | ItemKind::Delegation(Delegation { ident, .. }) => Some(ident),
4157
4158 ItemKind::ConstBlock(_) => Some(ConstBlockItem::IDENT),
4159
4160 ItemKind::Use(_)
4161 | ItemKind::ForeignMod(_)
4162 | ItemKind::GlobalAsm(_)
4163 | ItemKind::Impl(_)
4164 | ItemKind::MacCall(_)
4165 | ItemKind::DelegationMac(_) => None,
4166 }
4167 }
4168
4169 pub fn article(&self) -> &'static str {
4171 use ItemKind::*;
4172 match self {
4173 Use(..) | Static(..) | Const(..) | ConstBlock(..) | Fn(..) | Mod(..)
4174 | GlobalAsm(..) | TyAlias(..) | Struct(..) | Union(..) | Trait(..) | TraitAlias(..)
4175 | MacroDef(..) | Delegation(..) | DelegationMac(..) => "a",
4176 ExternCrate(..) | ForeignMod(..) | MacCall(..) | Enum(..) | Impl { .. } => "an",
4177 }
4178 }
4179
4180 pub fn descr(&self) -> &'static str {
4181 match self {
4182 ItemKind::ExternCrate(..) => "extern crate",
4183 ItemKind::Use(..) => "`use` import",
4184 ItemKind::Static(..) => "static item",
4185 ItemKind::Const(..) => "constant item",
4186 ItemKind::ConstBlock(..) => "const block",
4187 ItemKind::Fn(..) => "function",
4188 ItemKind::Mod(..) => "module",
4189 ItemKind::ForeignMod(..) => "extern block",
4190 ItemKind::GlobalAsm(..) => "global asm item",
4191 ItemKind::TyAlias(..) => "type alias",
4192 ItemKind::Enum(..) => "enum",
4193 ItemKind::Struct(..) => "struct",
4194 ItemKind::Union(..) => "union",
4195 ItemKind::Trait(..) => "trait",
4196 ItemKind::TraitAlias(..) => "trait alias",
4197 ItemKind::MacCall(..) => "item macro invocation",
4198 ItemKind::MacroDef(..) => "macro definition",
4199 ItemKind::Impl { .. } => "implementation",
4200 ItemKind::Delegation(..) => "delegated function",
4201 ItemKind::DelegationMac(..) => "delegation",
4202 }
4203 }
4204
4205 pub fn generics(&self) -> Option<&Generics> {
4206 match self {
4207 Self::Fn(Fn { generics, .. })
4208 | Self::TyAlias(TyAlias { generics, .. })
4209 | Self::Const(ConstItem { generics, .. })
4210 | Self::Enum(_, generics, _)
4211 | Self::Struct(_, generics, _)
4212 | Self::Union(_, generics, _)
4213 | Self::Trait(Trait { generics, .. })
4214 | Self::TraitAlias(TraitAlias { generics, .. })
4215 | Self::Impl(Impl { generics, .. }) => Some(generics),
4216
4217 Self::ExternCrate(..)
4218 | Self::Use(..)
4219 | Self::Static(..)
4220 | Self::ConstBlock(..)
4221 | Self::Mod(..)
4222 | Self::ForeignMod(..)
4223 | Self::GlobalAsm(..)
4224 | Self::MacCall(..)
4225 | Self::MacroDef(..)
4226 | Self::Delegation(..)
4227 | Self::DelegationMac(..) => None,
4228 }
4229 }
4230}
4231
4232pub type AssocItem = Item<AssocItemKind>;
4235
4236#[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)]
4244pub enum AssocItemKind {
4245 Const(Box<ConstItem>),
4248 Fn(Box<Fn>),
4250 Type(Box<TyAlias>),
4252 MacCall(Box<MacCall>),
4254 Delegation(Box<Delegation>),
4256 DelegationMac(Box<DelegationMac>),
4258}
4259
4260impl AssocItemKind {
4261 pub fn ident(&self) -> Option<Ident> {
4262 match *self {
4263 AssocItemKind::Const(ConstItem { ident, .. })
4264 | AssocItemKind::Fn(Fn { ident, .. })
4265 | AssocItemKind::Type(TyAlias { ident, .. })
4266 | AssocItemKind::Delegation(Delegation { ident, .. }) => Some(ident),
4267
4268 AssocItemKind::MacCall(_) | AssocItemKind::DelegationMac(_) => None,
4269 }
4270 }
4271
4272 pub fn defaultness(&self) -> Defaultness {
4273 match *self {
4274 Self::Const(ConstItem { defaultness, .. })
4275 | Self::Fn(Fn { defaultness, .. })
4276 | Self::Type(TyAlias { defaultness, .. }) => defaultness,
4277 Self::MacCall(..) | Self::Delegation(..) | Self::DelegationMac(..) => {
4278 Defaultness::Implicit
4279 }
4280 }
4281 }
4282}
4283
4284impl From<AssocItemKind> for ItemKind {
4285 fn from(assoc_item_kind: AssocItemKind) -> ItemKind {
4286 match assoc_item_kind {
4287 AssocItemKind::Const(item) => ItemKind::Const(item),
4288 AssocItemKind::Fn(fn_kind) => ItemKind::Fn(fn_kind),
4289 AssocItemKind::Type(ty_alias_kind) => ItemKind::TyAlias(ty_alias_kind),
4290 AssocItemKind::MacCall(a) => ItemKind::MacCall(a),
4291 AssocItemKind::Delegation(delegation) => ItemKind::Delegation(delegation),
4292 AssocItemKind::DelegationMac(delegation) => ItemKind::DelegationMac(delegation),
4293 }
4294 }
4295}
4296
4297impl TryFrom<ItemKind> for AssocItemKind {
4298 type Error = ItemKind;
4299
4300 fn try_from(item_kind: ItemKind) -> Result<AssocItemKind, ItemKind> {
4301 Ok(match item_kind {
4302 ItemKind::Const(item) => AssocItemKind::Const(item),
4303 ItemKind::Fn(fn_kind) => AssocItemKind::Fn(fn_kind),
4304 ItemKind::TyAlias(ty_kind) => AssocItemKind::Type(ty_kind),
4305 ItemKind::MacCall(a) => AssocItemKind::MacCall(a),
4306 ItemKind::Delegation(d) => AssocItemKind::Delegation(d),
4307 ItemKind::DelegationMac(d) => AssocItemKind::DelegationMac(d),
4308 _ => return Err(item_kind),
4309 })
4310 }
4311}
4312
4313#[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)]
4315pub enum ForeignItemKind {
4316 Static(Box<StaticItem>),
4318 Fn(Box<Fn>),
4320 TyAlias(Box<TyAlias>),
4322 MacCall(Box<MacCall>),
4324}
4325
4326impl ForeignItemKind {
4327 pub fn ident(&self) -> Option<Ident> {
4328 match *self {
4329 ForeignItemKind::Static(StaticItem { ident, .. })
4330 | ForeignItemKind::Fn(Fn { ident, .. })
4331 | ForeignItemKind::TyAlias(TyAlias { ident, .. }) => Some(ident),
4332
4333 ForeignItemKind::MacCall(_) => None,
4334 }
4335 }
4336}
4337
4338impl From<ForeignItemKind> for ItemKind {
4339 fn from(foreign_item_kind: ForeignItemKind) -> ItemKind {
4340 match foreign_item_kind {
4341 ForeignItemKind::Static(static_foreign_item) => ItemKind::Static(static_foreign_item),
4342 ForeignItemKind::Fn(fn_kind) => ItemKind::Fn(fn_kind),
4343 ForeignItemKind::TyAlias(ty_alias_kind) => ItemKind::TyAlias(ty_alias_kind),
4344 ForeignItemKind::MacCall(a) => ItemKind::MacCall(a),
4345 }
4346 }
4347}
4348
4349impl TryFrom<ItemKind> for ForeignItemKind {
4350 type Error = ItemKind;
4351
4352 fn try_from(item_kind: ItemKind) -> Result<ForeignItemKind, ItemKind> {
4353 Ok(match item_kind {
4354 ItemKind::Static(static_item) => ForeignItemKind::Static(static_item),
4355 ItemKind::Fn(fn_kind) => ForeignItemKind::Fn(fn_kind),
4356 ItemKind::TyAlias(ty_alias_kind) => ForeignItemKind::TyAlias(ty_alias_kind),
4357 ItemKind::MacCall(a) => ForeignItemKind::MacCall(a),
4358 _ => return Err(item_kind),
4359 })
4360 }
4361}
4362
4363pub type ForeignItem = Item<ForeignItemKind>;
4364
4365#[cfg(target_pointer_width = "64")]
4367mod size_asserts {
4368 use rustc_data_structures::static_assert_size;
4369
4370 use super::*;
4371 const _: [(); 80] = [(); ::std::mem::size_of::<AssocItem>()];static_assert_size!(AssocItem, 80);
4373 const _: [(); 16] = [(); ::std::mem::size_of::<AssocItemKind>()];static_assert_size!(AssocItemKind, 16);
4374 const _: [(); 32] = [(); ::std::mem::size_of::<Attribute>()];static_assert_size!(Attribute, 32);
4375 const _: [(); 32] = [(); ::std::mem::size_of::<Block>()];static_assert_size!(Block, 32);
4376 const _: [(); 72] = [(); ::std::mem::size_of::<Expr>()];static_assert_size!(Expr, 72);
4377 const _: [(); 40] = [(); ::std::mem::size_of::<ExprKind>()];static_assert_size!(ExprKind, 40);
4378 const _: [(); 192] = [(); ::std::mem::size_of::<Fn>()];static_assert_size!(Fn, 192);
4379 const _: [(); 80] = [(); ::std::mem::size_of::<ForeignItem>()];static_assert_size!(ForeignItem, 80);
4380 const _: [(); 16] = [(); ::std::mem::size_of::<ForeignItemKind>()];static_assert_size!(ForeignItemKind, 16);
4381 const _: [(); 24] = [(); ::std::mem::size_of::<GenericArg>()];static_assert_size!(GenericArg, 24);
4382 const _: [(); 88] = [(); ::std::mem::size_of::<GenericBound>()];static_assert_size!(GenericBound, 88);
4383 const _: [(); 40] = [(); ::std::mem::size_of::<Generics>()];static_assert_size!(Generics, 40);
4384 const _: [(); 80] = [(); ::std::mem::size_of::<Impl>()];static_assert_size!(Impl, 80);
4385 const _: [(); 152] = [(); ::std::mem::size_of::<Item>()];static_assert_size!(Item, 152);
4386 const _: [(); 88] = [(); ::std::mem::size_of::<ItemKind>()];static_assert_size!(ItemKind, 88);
4387 const _: [(); 24] = [(); ::std::mem::size_of::<LitKind>()];static_assert_size!(LitKind, 24);
4388 const _: [(); 96] = [(); ::std::mem::size_of::<Local>()];static_assert_size!(Local, 96);
4389 const _: [(); 40] = [(); ::std::mem::size_of::<MetaItemLit>()];static_assert_size!(MetaItemLit, 40);
4390 const _: [(); 40] = [(); ::std::mem::size_of::<Param>()];static_assert_size!(Param, 40);
4391 const _: [(); 80] = [(); ::std::mem::size_of::<Pat>()];static_assert_size!(Pat, 80);
4392 const _: [(); 56] = [(); ::std::mem::size_of::<PatKind>()];static_assert_size!(PatKind, 56);
4393 const _: [(); 24] = [(); ::std::mem::size_of::<Path>()];static_assert_size!(Path, 24);
4394 const _: [(); 24] = [(); ::std::mem::size_of::<PathSegment>()];static_assert_size!(PathSegment, 24);
4395 const _: [(); 32] = [(); ::std::mem::size_of::<Stmt>()];static_assert_size!(Stmt, 32);
4396 const _: [(); 16] = [(); ::std::mem::size_of::<StmtKind>()];static_assert_size!(StmtKind, 16);
4397 const _: [(); 72] = [(); ::std::mem::size_of::<TraitImplHeader>()];static_assert_size!(TraitImplHeader, 72);
4398 const _: [(); 64] = [(); ::std::mem::size_of::<Ty>()];static_assert_size!(Ty, 64);
4399 const _: [(); 40] = [(); ::std::mem::size_of::<TyKind>()];static_assert_size!(TyKind, 40);
4400 }