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::def_id::LocalDefId;
34use rustc_span::{
35 ByteSymbol, DUMMY_SP, ErrorGuaranteed, Ident, LocalExpnId, Span, Spanned, Symbol, kw, respan,
36 sym,
37};
38use thin_vec::{ThinVec, thin_vec};
39
40use crate::attr::data_structures::CfgEntry;
41pub use crate::format::*;
42use crate::token::{self, CommentKind, Delimiter};
43use crate::tokenstream::{DelimSpan, LazyAttrTokenStream, TokenStream};
44use crate::util::parser::{ExprPrecedence, Fixity};
45use crate::visit::{AssocCtxt, BoundKind, LifetimeCtxt};
46
47#[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)]
58pub struct Label {
59 pub ident: Ident,
60}
61
62impl fmt::Debug for Label {
63 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
64 f.write_fmt(format_args!("label({0:?})", self.ident))write!(f, "label({:?})", self.ident)
65 }
66}
67
68#[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)]
71pub struct Lifetime {
72 pub id: NodeId,
73 pub ident: Ident,
74}
75
76impl fmt::Debug for Lifetime {
77 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
78 f.write_fmt(format_args!("lifetime({0}: {1})", self.id, self))write!(f, "lifetime({}: {})", self.id, self)
79 }
80}
81
82impl fmt::Display for Lifetime {
83 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
84 f.write_fmt(format_args!("{0}", self.ident.name))write!(f, "{}", self.ident.name)
85 }
86}
87
88#[derive(#[automatically_derived]
impl ::core::clone::Clone for Path {
#[inline]
fn clone(&self) -> Path {
Path {
span: ::core::clone::Clone::clone(&self.span),
segments: ::core::clone::Clone::clone(&self.segments),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Path {
fn encode(&self, __encoder: &mut __E) {
match *self {
Path { span: ref __binding_0, segments: ref __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Path {
fn decode(__decoder: &mut __D) -> Self {
Path {
span: ::rustc_serialize::Decodable::decode(__decoder),
segments: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Path {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Path", "span",
&self.span, "segments", &&self.segments)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Path where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Path { span: ref __binding_0, segments: ref __binding_1 } =>
{
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Path where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Path {
span: ref mut __binding_0, segments: ref mut __binding_1 }
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
95pub struct Path {
96 pub span: Span,
97 pub segments: ThinVec<PathSegment>,
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 }
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 = ThinVec<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),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Block {
fn encode(&self, __encoder: &mut __E) {
match *self {
Block {
stmts: ref __binding_0,
id: ref __binding_1,
rules: ref __binding_2,
span: ref __binding_3 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Block {
fn decode(__decoder: &mut __D) -> Self {
Block {
stmts: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
rules: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Block {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "Block",
"stmts", &self.stmts, "id", &self.id, "rules", &self.rules,
"span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Block where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Block {
stmts: ref __binding_0,
id: ref __binding_1,
rules: ref __binding_2,
span: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Block where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Block {
stmts: ref mut __binding_0,
id: ref mut __binding_1,
rules: ref mut __binding_2,
span: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
611pub struct Block {
612 pub stmts: ThinVec<Stmt>,
614 pub id: NodeId,
615 pub rules: BlockCheckMode,
617 pub span: Span,
618}
619
620#[derive(#[automatically_derived]
impl ::core::clone::Clone for Pat {
#[inline]
fn clone(&self) -> Pat {
Pat {
id: ::core::clone::Clone::clone(&self.id),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Pat {
fn encode(&self, __encoder: &mut __E) {
match *self {
Pat {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Pat {
fn decode(__decoder: &mut __D) -> Self {
Pat {
id: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Pat {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Pat", "id",
&self.id, "kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Pat where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Pat {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Pat where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Pat {
id: ref mut __binding_0,
kind: ref mut __binding_1,
span: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
624pub struct Pat {
625 pub id: NodeId,
626 pub kind: PatKind,
627 pub span: Span,
628}
629
630impl Pat {
631 pub fn to_ty(&self) -> Option<Box<Ty>> {
634 let kind = match &self.kind {
635 PatKind::Missing => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
636 PatKind::Wild => TyKind::Infer,
638 PatKind::Ident(BindingMode::NONE, ident, None) => {
640 TyKind::Path(None, Path::from_ident(*ident))
641 }
642 PatKind::Path(qself, path) => TyKind::Path(qself.clone(), path.clone()),
643 PatKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
644 PatKind::Ref(pat, pinned, mutbl) => pat.to_ty().map(|ty| match pinned {
646 Pinnedness::Not => TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }),
647 Pinnedness::Pinned => TyKind::PinnedRef(None, MutTy { ty, mutbl: *mutbl }),
648 })?,
649 PatKind::Slice(pats) if let [pat] = pats.as_slice() => {
652 pat.to_ty().map(TyKind::Slice)?
653 }
654 PatKind::Tuple(pats) => {
657 let tys = pats.iter().map(|pat| pat.to_ty()).collect::<Option<ThinVec<_>>>()?;
658 TyKind::Tup(tys)
659 }
660 _ => return None,
661 };
662
663 Some(Box::new(Ty { kind, id: self.id, span: self.span }))
664 }
665
666 pub fn walk<'ast>(&'ast self, it: &mut impl FnMut(&'ast Pat) -> bool) {
670 if !it(self) {
671 return;
672 }
673
674 match &self.kind {
675 PatKind::Ident(_, _, Some(p)) => p.walk(it),
677
678 PatKind::Struct(_, _, fields, _) => fields.iter().for_each(|field| field.pat.walk(it)),
680
681 PatKind::TupleStruct(_, _, s)
683 | PatKind::Tuple(s)
684 | PatKind::Slice(s)
685 | PatKind::Or(s) => s.iter().for_each(|p| p.walk(it)),
686
687 PatKind::Box(s)
689 | PatKind::Deref(s)
690 | PatKind::Ref(s, _, _)
691 | PatKind::Paren(s)
692 | PatKind::Guard(s, _) => s.walk(it),
693
694 PatKind::Missing
696 | PatKind::Wild
697 | PatKind::Rest
698 | PatKind::Never
699 | PatKind::Expr(_)
700 | PatKind::Range(..)
701 | PatKind::Ident(..)
702 | PatKind::Path(..)
703 | PatKind::MacCall(_)
704 | PatKind::Err(_) => {}
705 }
706 }
707
708 pub fn peel_refs(&self) -> &Pat {
710 let mut current = self;
711 while let PatKind::Ref(inner, _, _) = ¤t.kind {
712 current = inner;
713 }
714 current
715 }
716
717 pub fn is_rest(&self) -> bool {
719 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
PatKind::Rest => true,
_ => false,
}matches!(self.kind, PatKind::Rest)
720 }
721
722 pub fn could_be_never_pattern(&self) -> bool {
725 let mut could_be_never_pattern = false;
726 self.walk(&mut |pat| match &pat.kind {
727 PatKind::Never | PatKind::MacCall(_) => {
728 could_be_never_pattern = true;
729 false
730 }
731 PatKind::Or(s) => {
732 could_be_never_pattern = s.iter().all(|p| p.could_be_never_pattern());
733 false
734 }
735 _ => true,
736 });
737 could_be_never_pattern
738 }
739
740 pub fn contains_never_pattern(&self) -> bool {
743 let mut contains_never_pattern = false;
744 self.walk(&mut |pat| {
745 if #[allow(non_exhaustive_omitted_patterns)] match pat.kind {
PatKind::Never => true,
_ => false,
}matches!(pat.kind, PatKind::Never) {
746 contains_never_pattern = true;
747 }
748 true
749 });
750 contains_never_pattern
751 }
752
753 pub fn descr(&self) -> Option<String> {
755 match &self.kind {
756 PatKind::Missing => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
757 PatKind::Wild => Some("_".to_string()),
758 PatKind::Ident(BindingMode::NONE, ident, None) => Some(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}", ident))
})format!("{ident}")),
759 PatKind::Ref(pat, pinned, mutbl) => {
760 pat.descr().map(|d| ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("&{0}{1}",
pinned.prefix_str(*mutbl), d))
})format!("&{}{d}", pinned.prefix_str(*mutbl)))
761 }
762 _ => None,
763 }
764 }
765}
766
767impl From<Box<Pat>> for Pat {
768 fn from(value: Box<Pat>) -> Self {
769 *value
770 }
771}
772
773#[derive(#[automatically_derived]
impl ::core::clone::Clone for PatField {
#[inline]
fn clone(&self) -> PatField {
PatField {
ident: ::core::clone::Clone::clone(&self.ident),
pat: ::core::clone::Clone::clone(&self.pat),
is_shorthand: ::core::clone::Clone::clone(&self.is_shorthand),
attrs: ::core::clone::Clone::clone(&self.attrs),
id: ::core::clone::Clone::clone(&self.id),
span: ::core::clone::Clone::clone(&self.span),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for PatField {
fn encode(&self, __encoder: &mut __E) {
match *self {
PatField {
ident: ref __binding_0,
pat: ref __binding_1,
is_shorthand: ref __binding_2,
attrs: ref __binding_3,
id: ref __binding_4,
span: ref __binding_5,
is_placeholder: ref __binding_6 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_6,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for PatField {
fn decode(__decoder: &mut __D) -> Self {
PatField {
ident: ::rustc_serialize::Decodable::decode(__decoder),
pat: ::rustc_serialize::Decodable::decode(__decoder),
is_shorthand: ::rustc_serialize::Decodable::decode(__decoder),
attrs: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for PatField {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["ident", "pat", "is_shorthand", "attrs", "id", "span",
"is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.ident, &self.pat, &self.is_shorthand, &self.attrs,
&self.id, &self.span, &&self.is_placeholder];
::core::fmt::Formatter::debug_struct_fields_finish(f, "PatField",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for PatField
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
PatField {
ident: ref __binding_0,
pat: ref __binding_1,
is_shorthand: ref __binding_2,
attrs: ref __binding_3,
id: ref __binding_4,
span: ref __binding_5,
is_placeholder: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for PatField where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
PatField {
ident: ref mut __binding_0,
pat: ref mut __binding_1,
is_shorthand: ref mut __binding_2,
attrs: ref mut __binding_3,
id: ref mut __binding_4,
span: ref mut __binding_5,
is_placeholder: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
}
}
}
}
};Walkable)]
779pub struct PatField {
780 pub ident: Ident,
782 pub pat: Box<Pat>,
784 pub is_shorthand: bool,
785 pub attrs: AttrVec,
786 pub id: NodeId,
787 pub span: Span,
788 pub is_placeholder: bool,
789}
790
791#[derive(#[automatically_derived]
impl ::core::clone::Clone for ByRef {
#[inline]
fn clone(&self) -> ByRef {
let _: ::core::clone::AssertParamIsClone<Pinnedness>;
let _: ::core::clone::AssertParamIsClone<Mutability>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ByRef { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for ByRef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ByRef::Yes(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Yes",
__self_0, &__self_1),
ByRef::No => ::core::fmt::Formatter::write_str(f, "No"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ByRef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Pinnedness>;
let _: ::core::cmp::AssertParamIsEq<Mutability>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ByRef {
#[inline]
fn eq(&self, other: &ByRef) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ByRef::Yes(__self_0, __self_1),
ByRef::Yes(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq)]
792#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ByRef {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => { 0usize }
ByRef::No => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ByRef::No => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ByRef {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
ByRef::Yes(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { ByRef::No }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ByRef`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for ByRef {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
ByRef::No => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ByRef where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
ByRef::No => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ByRef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ByRef::Yes(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
ByRef::No => {}
}
}
}
};Walkable)]
793pub enum ByRef {
794 Yes(Pinnedness, Mutability),
795 No,
796}
797
798impl ByRef {
799 #[must_use]
800 pub fn cap_ref_mutability(mut self, mutbl: Mutability) -> Self {
801 if let ByRef::Yes(_, old_mutbl) = &mut self {
802 *old_mutbl = cmp::min(*old_mutbl, mutbl);
803 }
804 self
805 }
806}
807
808#[derive(#[automatically_derived]
impl ::core::clone::Clone for BindingMode {
#[inline]
fn clone(&self) -> BindingMode {
let _: ::core::clone::AssertParamIsClone<ByRef>;
let _: ::core::clone::AssertParamIsClone<Mutability>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for BindingMode { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for BindingMode {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field2_finish(f, "BindingMode",
&self.0, &&self.1)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for BindingMode {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ByRef>;
let _: ::core::cmp::AssertParamIsEq<Mutability>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for BindingMode {
#[inline]
fn eq(&self, other: &BindingMode) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq)]
814#[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)]
815pub struct BindingMode(pub ByRef, pub Mutability);
816
817impl BindingMode {
818 pub const NONE: Self = Self(ByRef::No, Mutability::Not);
819 pub const REF: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Not), Mutability::Not);
820 pub const REF_PIN: Self =
821 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Not), Mutability::Not);
822 pub const MUT: Self = Self(ByRef::No, Mutability::Mut);
823 pub const REF_MUT: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Mut), Mutability::Not);
824 pub const REF_PIN_MUT: Self =
825 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Mut), Mutability::Not);
826 pub const MUT_REF: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Not), Mutability::Mut);
827 pub const MUT_REF_PIN: Self =
828 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Not), Mutability::Mut);
829 pub const MUT_REF_MUT: Self =
830 Self(ByRef::Yes(Pinnedness::Not, Mutability::Mut), Mutability::Mut);
831 pub const MUT_REF_PIN_MUT: Self =
832 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Mut), Mutability::Mut);
833
834 pub fn prefix_str(self) -> &'static str {
835 match self {
836 Self::NONE => "",
837 Self::REF => "ref ",
838 Self::REF_PIN => "ref pin const ",
839 Self::MUT => "mut ",
840 Self::REF_MUT => "ref mut ",
841 Self::REF_PIN_MUT => "ref pin mut ",
842 Self::MUT_REF => "mut ref ",
843 Self::MUT_REF_PIN => "mut ref pin ",
844 Self::MUT_REF_MUT => "mut ref mut ",
845 Self::MUT_REF_PIN_MUT => "mut ref pin mut ",
846 }
847 }
848}
849
850#[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)]
851pub enum RangeEnd {
852 Included(RangeSyntax),
854 Excluded,
856}
857
858#[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)]
859pub enum RangeSyntax {
860 DotDotDot,
862 DotDotEq,
864}
865
866#[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)]
870pub enum PatKind {
871 Missing,
873
874 Wild,
876
877 Ident(BindingMode, Ident, Option<Box<Pat>>),
882
883 Struct(Option<Box<QSelf>>, Path, ThinVec<PatField>, PatFieldsRest),
885
886 TupleStruct(Option<Box<QSelf>>, Path, ThinVec<Pat>),
888
889 Or(ThinVec<Pat>),
892
893 Path(Option<Box<QSelf>>, Path),
898
899 Tuple(ThinVec<Pat>),
901
902 Box(Box<Pat>),
904
905 Deref(Box<Pat>),
907
908 Ref(Box<Pat>, Pinnedness, Mutability),
910
911 Expr(Box<Expr>),
913
914 Range(Option<Box<Expr>>, Option<Box<Expr>>, Spanned<RangeEnd>),
916
917 Slice(ThinVec<Pat>),
919
920 Rest,
933
934 Never,
936
937 Guard(Box<Pat>, Box<Guard>),
939
940 Paren(Box<Pat>),
942
943 MacCall(Box<MacCall>),
945
946 Err(ErrorGuaranteed),
948}
949
950#[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)]
952pub enum PatFieldsRest {
953 Rest(Span),
955 Recovered(ErrorGuaranteed),
957 None,
959}
960
961#[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)]
964#[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)]
965pub enum BorrowKind {
966 Ref,
970 Raw,
974 Pin,
978}
979
980#[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)]
981pub enum BinOpKind {
982 Add,
984 Sub,
986 Mul,
988 Div,
990 Rem,
992 And,
994 Or,
996 BitXor,
998 BitAnd,
1000 BitOr,
1002 Shl,
1004 Shr,
1006 Eq,
1008 Lt,
1010 Le,
1012 Ne,
1014 Ge,
1016 Gt,
1018}
1019
1020impl BinOpKind {
1021 pub fn as_str(&self) -> &'static str {
1022 use BinOpKind::*;
1023 match self {
1024 Add => "+",
1025 Sub => "-",
1026 Mul => "*",
1027 Div => "/",
1028 Rem => "%",
1029 And => "&&",
1030 Or => "||",
1031 BitXor => "^",
1032 BitAnd => "&",
1033 BitOr => "|",
1034 Shl => "<<",
1035 Shr => ">>",
1036 Eq => "==",
1037 Lt => "<",
1038 Le => "<=",
1039 Ne => "!=",
1040 Ge => ">=",
1041 Gt => ">",
1042 }
1043 }
1044
1045 pub fn is_lazy(&self) -> bool {
1046 #[allow(non_exhaustive_omitted_patterns)] match self {
BinOpKind::And | BinOpKind::Or => true,
_ => false,
}matches!(self, BinOpKind::And | BinOpKind::Or)
1047 }
1048
1049 pub fn precedence(&self) -> ExprPrecedence {
1050 use BinOpKind::*;
1051 match *self {
1052 Mul | Div | Rem => ExprPrecedence::Product,
1053 Add | Sub => ExprPrecedence::Sum,
1054 Shl | Shr => ExprPrecedence::Shift,
1055 BitAnd => ExprPrecedence::BitAnd,
1056 BitXor => ExprPrecedence::BitXor,
1057 BitOr => ExprPrecedence::BitOr,
1058 Lt | Gt | Le | Ge | Eq | Ne => ExprPrecedence::Compare,
1059 And => ExprPrecedence::LAnd,
1060 Or => ExprPrecedence::LOr,
1061 }
1062 }
1063
1064 pub fn fixity(&self) -> Fixity {
1065 use BinOpKind::*;
1066 match self {
1067 Eq | Ne | Lt | Le | Gt | Ge => Fixity::None,
1068 Add | Sub | Mul | Div | Rem | And | Or | BitXor | BitAnd | BitOr | Shl | Shr => {
1069 Fixity::Left
1070 }
1071 }
1072 }
1073
1074 pub fn is_comparison(self) -> bool {
1075 use BinOpKind::*;
1076 match self {
1077 Eq | Ne | Lt | Le | Gt | Ge => true,
1078 Add | Sub | Mul | Div | Rem | And | Or | BitXor | BitAnd | BitOr | Shl | Shr => false,
1079 }
1080 }
1081
1082 pub fn is_by_value(self) -> bool {
1084 !self.is_comparison()
1085 }
1086}
1087
1088pub type BinOp = Spanned<BinOpKind>;
1089
1090impl From<AssignOpKind> for BinOpKind {
1094 fn from(op: AssignOpKind) -> BinOpKind {
1095 match op {
1096 AssignOpKind::AddAssign => BinOpKind::Add,
1097 AssignOpKind::SubAssign => BinOpKind::Sub,
1098 AssignOpKind::MulAssign => BinOpKind::Mul,
1099 AssignOpKind::DivAssign => BinOpKind::Div,
1100 AssignOpKind::RemAssign => BinOpKind::Rem,
1101 AssignOpKind::BitXorAssign => BinOpKind::BitXor,
1102 AssignOpKind::BitAndAssign => BinOpKind::BitAnd,
1103 AssignOpKind::BitOrAssign => BinOpKind::BitOr,
1104 AssignOpKind::ShlAssign => BinOpKind::Shl,
1105 AssignOpKind::ShrAssign => BinOpKind::Shr,
1106 }
1107 }
1108}
1109
1110#[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)]
1111pub enum AssignOpKind {
1112 AddAssign,
1114 SubAssign,
1116 MulAssign,
1118 DivAssign,
1120 RemAssign,
1122 BitXorAssign,
1124 BitAndAssign,
1126 BitOrAssign,
1128 ShlAssign,
1130 ShrAssign,
1132}
1133
1134impl AssignOpKind {
1135 pub fn as_str(&self) -> &'static str {
1136 use AssignOpKind::*;
1137 match self {
1138 AddAssign => "+=",
1139 SubAssign => "-=",
1140 MulAssign => "*=",
1141 DivAssign => "/=",
1142 RemAssign => "%=",
1143 BitXorAssign => "^=",
1144 BitAndAssign => "&=",
1145 BitOrAssign => "|=",
1146 ShlAssign => "<<=",
1147 ShrAssign => ">>=",
1148 }
1149 }
1150
1151 pub fn is_by_value(self) -> bool {
1153 true
1154 }
1155}
1156
1157pub type AssignOp = Spanned<AssignOpKind>;
1158
1159#[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)]
1163pub enum UnOp {
1164 Deref,
1166 Not,
1168 Neg,
1170}
1171
1172impl UnOp {
1173 pub fn as_str(&self) -> &'static str {
1174 match self {
1175 UnOp::Deref => "*",
1176 UnOp::Not => "!",
1177 UnOp::Neg => "-",
1178 }
1179 }
1180
1181 pub fn is_by_value(self) -> bool {
1183 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::Neg | Self::Not => true,
_ => false,
}matches!(self, Self::Neg | Self::Not)
1184 }
1185}
1186
1187#[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)]
1191pub struct Stmt {
1192 pub id: NodeId,
1193 pub kind: StmtKind,
1194 pub span: Span,
1195}
1196
1197impl Stmt {
1198 pub fn has_trailing_semicolon(&self) -> bool {
1199 match &self.kind {
1200 StmtKind::Semi(_) => true,
1201 StmtKind::MacCall(mac) => #[allow(non_exhaustive_omitted_patterns)] match mac.style {
MacStmtStyle::Semicolon => true,
_ => false,
}matches!(mac.style, MacStmtStyle::Semicolon),
1202 _ => false,
1203 }
1204 }
1205
1206 pub fn add_trailing_semicolon(mut self) -> Self {
1214 self.kind = match self.kind {
1215 StmtKind::Expr(expr) => StmtKind::Semi(expr),
1216 StmtKind::MacCall(mut mac) => {
1217 mac.style = MacStmtStyle::Semicolon;
1218 StmtKind::MacCall(mac)
1219 }
1220 kind => kind,
1221 };
1222
1223 self
1224 }
1225
1226 pub fn is_item(&self) -> bool {
1227 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
StmtKind::Item(_) => true,
_ => false,
}matches!(self.kind, StmtKind::Item(_))
1228 }
1229
1230 pub fn is_expr(&self) -> bool {
1231 #[allow(non_exhaustive_omitted_patterns)] match self.kind {
StmtKind::Expr(_) => true,
_ => false,
}matches!(self.kind, StmtKind::Expr(_))
1232 }
1233}
1234
1235#[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)]
1237pub enum StmtKind {
1238 Let(Box<Local>),
1240 Item(Box<Item>),
1242 Expr(Box<Expr>),
1244 Semi(Box<Expr>),
1246 Empty,
1248 MacCall(Box<MacCallStmt>),
1250}
1251
1252impl StmtKind {
1253 pub fn descr(&self) -> &'static str {
1254 match self {
1255 StmtKind::Let(_) => "local",
1256 StmtKind::Item(_) => "item",
1257 StmtKind::Expr(_) => "expression",
1258 StmtKind::Semi(_) => "statement",
1259 StmtKind::Empty => "semicolon",
1260 StmtKind::MacCall(_) => "macro call",
1261 }
1262 }
1263}
1264
1265#[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)]
1266pub struct MacCallStmt {
1267 pub mac: Box<MacCall>,
1268 pub style: MacStmtStyle,
1269 pub attrs: AttrVec,
1270 pub tokens: Option<LazyAttrTokenStream>,
1271}
1272
1273#[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)]
1274pub enum MacStmtStyle {
1275 Semicolon,
1278 Braces,
1280 NoBraces,
1284}
1285
1286#[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)]
1288pub struct Local {
1289 pub id: NodeId,
1290 pub super_: Option<Span>,
1291 pub pat: Box<Pat>,
1292 pub ty: Option<Box<Ty>>,
1293 pub kind: LocalKind,
1294 pub span: Span,
1295 pub colon_sp: Option<Span>,
1296 pub attrs: AttrVec,
1297 pub tokens: Option<LazyAttrTokenStream>,
1298}
1299
1300#[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)]
1301pub enum LocalKind {
1302 Decl,
1305 Init(Box<Expr>),
1308 InitElse(Box<Expr>, Box<Block>),
1311}
1312
1313impl LocalKind {
1314 pub fn init(&self) -> Option<&Expr> {
1315 match self {
1316 Self::Decl => None,
1317 Self::Init(i) | Self::InitElse(i, _) => Some(i),
1318 }
1319 }
1320
1321 pub fn init_else_opt(&self) -> Option<(&Expr, Option<&Block>)> {
1322 match self {
1323 Self::Decl => None,
1324 Self::Init(init) => Some((init, None)),
1325 Self::InitElse(init, els) => Some((init, Some(els))),
1326 }
1327 }
1328}
1329
1330#[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)]
1341pub struct Arm {
1342 pub attrs: AttrVec,
1343 pub pat: Box<Pat>,
1345 pub guard: Option<Box<Guard>>,
1347 pub body: Option<Box<Expr>>,
1349 pub span: Span,
1350 pub id: NodeId,
1351 pub is_placeholder: bool,
1352}
1353
1354#[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)]
1356pub struct ExprField {
1357 pub attrs: AttrVec,
1358 pub id: NodeId,
1359 pub span: Span,
1360 pub ident: Ident,
1361 pub expr: Box<Expr>,
1362 pub is_shorthand: bool,
1363 pub is_placeholder: bool,
1364}
1365
1366#[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)]
1367pub enum BlockCheckMode {
1368 Default,
1369 Unsafe(UnsafeSource),
1370}
1371
1372#[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)]
1373pub enum UnsafeSource {
1374 CompilerGenerated,
1375 UserProvided,
1376}
1377
1378#[derive(#[automatically_derived]
impl ::core::clone::Clone for AnonConst {
#[inline]
fn clone(&self) -> AnonConst {
AnonConst {
id: ::core::clone::Clone::clone(&self.id),
value: ::core::clone::Clone::clone(&self.value),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AnonConst {
fn encode(&self, __encoder: &mut __E) {
match *self {
AnonConst { id: ref __binding_0, value: ref __binding_1 } =>
{
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AnonConst {
fn decode(__decoder: &mut __D) -> Self {
AnonConst {
id: ::rustc_serialize::Decodable::decode(__decoder),
value: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AnonConst {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "AnonConst",
"id", &self.id, "value", &&self.value)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AnonConst
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AnonConst { id: ref __binding_0, value: ref __binding_1 } =>
{
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AnonConst where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AnonConst {
id: ref mut __binding_0, value: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
1384pub struct AnonConst {
1385 pub id: NodeId,
1386 pub value: Box<Expr>,
1387}
1388
1389#[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)]
1391pub struct Expr {
1392 pub id: NodeId,
1393 pub kind: ExprKind,
1394 pub span: Span,
1395 pub attrs: AttrVec,
1396 pub tokens: Option<LazyAttrTokenStream>,
1397}
1398
1399impl Expr {
1400 pub fn is_potential_trivial_const_arg(&self) -> bool {
1412 let this = self.maybe_unwrap_block();
1413 if let ExprKind::Path(None, path) = &this.kind
1414 && path.is_potential_trivial_const_arg()
1415 {
1416 true
1417 } else {
1418 false
1419 }
1420 }
1421
1422 pub fn maybe_unwrap_block(&self) -> &Expr {
1424 if let ExprKind::Block(block, None) = &self.kind
1425 && let [stmt] = block.stmts.as_slice()
1426 && let StmtKind::Expr(expr) = &stmt.kind
1427 {
1428 expr
1429 } else {
1430 self
1431 }
1432 }
1433
1434 pub fn optionally_braced_mac_call(
1440 &self,
1441 already_stripped_block: bool,
1442 ) -> Option<(bool, NodeId)> {
1443 match &self.kind {
1444 ExprKind::Block(block, None)
1445 if let [stmt] = &*block.stmts
1446 && !already_stripped_block =>
1447 {
1448 match &stmt.kind {
1449 StmtKind::MacCall(_) => Some((true, stmt.id)),
1450 StmtKind::Expr(expr) if let ExprKind::MacCall(_) = &expr.kind => {
1451 Some((true, expr.id))
1452 }
1453 _ => None,
1454 }
1455 }
1456 ExprKind::MacCall(_) => Some((already_stripped_block, self.id)),
1457 _ => None,
1458 }
1459 }
1460
1461 pub fn to_bound(&self) -> Option<GenericBound> {
1462 match &self.kind {
1463 ExprKind::Path(None, path) => Some(GenericBound::Trait(PolyTraitRef::new(
1464 ThinVec::new(),
1465 path.clone(),
1466 TraitBoundModifiers::NONE,
1467 self.span,
1468 Parens::No,
1469 ))),
1470 _ => None,
1471 }
1472 }
1473
1474 pub fn peel_parens(&self) -> &Expr {
1475 let mut expr = self;
1476 while let ExprKind::Paren(inner) = &expr.kind {
1477 expr = inner;
1478 }
1479 expr
1480 }
1481
1482 pub fn peel_parens_and_refs(&self) -> &Expr {
1483 let mut expr = self;
1484 while let ExprKind::Paren(inner) | ExprKind::AddrOf(BorrowKind::Ref, _, inner) = &expr.kind
1485 {
1486 expr = inner;
1487 }
1488 expr
1489 }
1490
1491 pub fn to_ty(&self) -> Option<Box<Ty>> {
1493 let kind = match &self.kind {
1494 ExprKind::Path(qself, path) => TyKind::Path(qself.clone(), path.clone()),
1496 ExprKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
1497
1498 ExprKind::Paren(expr) => expr.to_ty().map(TyKind::Paren)?,
1499
1500 ExprKind::AddrOf(BorrowKind::Ref, mutbl, expr) => {
1501 expr.to_ty().map(|ty| TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }))?
1502 }
1503
1504 ExprKind::Repeat(expr, expr_len) => {
1505 expr.to_ty().map(|ty| TyKind::Array(ty, expr_len.clone()))?
1506 }
1507
1508 ExprKind::Array(exprs) if let [expr] = exprs.as_slice() => {
1509 expr.to_ty().map(TyKind::Slice)?
1510 }
1511
1512 ExprKind::Tup(exprs) => {
1513 let tys = exprs.iter().map(|expr| expr.to_ty()).collect::<Option<ThinVec<_>>>()?;
1514 TyKind::Tup(tys)
1515 }
1516
1517 ExprKind::Binary(binop, lhs, rhs) if binop.node == BinOpKind::Add => {
1521 let (Some(lhs), Some(rhs)) = (lhs.to_bound(), rhs.to_bound()) else {
1522 return None;
1523 };
1524 TyKind::TraitObject({
let len = [(), ()].len();
let mut vec = ::thin_vec::ThinVec::with_capacity(len);
vec.push(lhs);
vec.push(rhs);
vec
}thin_vec![lhs, rhs], TraitObjectSyntax::None)
1525 }
1526
1527 ExprKind::Underscore => TyKind::Infer,
1528
1529 _ => return None,
1531 };
1532
1533 Some(Box::new(Ty { kind, id: self.id, span: self.span }))
1534 }
1535
1536 pub fn precedence(&self) -> ExprPrecedence {
1537 fn prefix_attrs_precedence(attrs: &AttrVec) -> ExprPrecedence {
1538 for attr in attrs {
1539 if let AttrStyle::Outer = attr.style {
1540 return ExprPrecedence::Prefix;
1541 }
1542 }
1543 ExprPrecedence::Unambiguous
1544 }
1545
1546 match &self.kind {
1547 ExprKind::Closure(closure) => match closure.fn_decl.output {
1548 FnRetTy::Default(_) => ExprPrecedence::Jump,
1549 FnRetTy::Ty(_) => prefix_attrs_precedence(&self.attrs),
1550 },
1551
1552 ExprKind::Break(_ , value)
1553 | ExprKind::Ret(value)
1554 | ExprKind::Yield(YieldKind::Prefix(value))
1555 | ExprKind::Yeet(value) => match value {
1556 Some(_) => ExprPrecedence::Jump,
1557 None => prefix_attrs_precedence(&self.attrs),
1558 },
1559
1560 ExprKind::Become(_) => ExprPrecedence::Jump,
1561
1562 ExprKind::Range(..) => ExprPrecedence::Range,
1567
1568 ExprKind::Binary(op, ..) => op.node.precedence(),
1570 ExprKind::Cast(..) => ExprPrecedence::Cast,
1571
1572 ExprKind::Assign(..) | ExprKind::AssignOp(..) => ExprPrecedence::Assign,
1573
1574 ExprKind::AddrOf(..) => ExprPrecedence::Prefix,
1576
1577 ExprKind::Let(..) | ExprKind::Move(..) | ExprKind::Unary(..) => ExprPrecedence::Prefix,
1582
1583 ExprKind::Array(_)
1585 | ExprKind::Await(..)
1586 | ExprKind::Use(..)
1587 | ExprKind::Block(..)
1588 | ExprKind::Call(..)
1589 | ExprKind::ConstBlock(_)
1590 | ExprKind::Continue(..)
1591 | ExprKind::Field(..)
1592 | ExprKind::ForLoop { .. }
1593 | ExprKind::FormatArgs(..)
1594 | ExprKind::Gen(..)
1595 | ExprKind::If(..)
1596 | ExprKind::IncludedBytes(..)
1597 | ExprKind::Index(..)
1598 | ExprKind::InlineAsm(..)
1599 | ExprKind::Lit(_)
1600 | ExprKind::Loop(..)
1601 | ExprKind::MacCall(..)
1602 | ExprKind::Match(..)
1603 | ExprKind::MethodCall(..)
1604 | ExprKind::OffsetOf(..)
1605 | ExprKind::Paren(..)
1606 | ExprKind::Path(..)
1607 | ExprKind::Repeat(..)
1608 | ExprKind::Struct(..)
1609 | ExprKind::Try(..)
1610 | ExprKind::TryBlock(..)
1611 | ExprKind::Tup(_)
1612 | ExprKind::Type(..)
1613 | ExprKind::Underscore
1614 | ExprKind::UnsafeBinderCast(..)
1615 | ExprKind::While(..)
1616 | ExprKind::Yield(YieldKind::Postfix(..))
1617 | ExprKind::DirectConstArg(..)
1618 | ExprKind::Err(_)
1619 | ExprKind::Dummy => prefix_attrs_precedence(&self.attrs),
1620 }
1621 }
1622
1623 pub fn is_approximately_pattern(&self) -> bool {
1625 #[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!(
1626 &self.peel_parens().kind,
1627 ExprKind::Array(_)
1628 | ExprKind::Call(_, _)
1629 | ExprKind::Tup(_)
1630 | ExprKind::Lit(_)
1631 | ExprKind::Range(_, _, _)
1632 | ExprKind::Underscore
1633 | ExprKind::Path(_, _)
1634 | ExprKind::Struct(_)
1635 )
1636 }
1637
1638 pub fn dummy() -> Expr {
1642 Expr {
1643 id: DUMMY_NODE_ID,
1644 kind: ExprKind::Dummy,
1645 span: DUMMY_SP,
1646 attrs: ThinVec::new(),
1647 tokens: None,
1648 }
1649 }
1650}
1651
1652impl From<Box<Expr>> for Expr {
1653 fn from(value: Box<Expr>) -> Self {
1654 *value
1655 }
1656}
1657
1658#[derive(#[automatically_derived]
impl ::core::clone::Clone for ForLoop {
#[inline]
fn clone(&self) -> ForLoop {
ForLoop {
pat: ::core::clone::Clone::clone(&self.pat),
iter: ::core::clone::Clone::clone(&self.iter),
body: ::core::clone::Clone::clone(&self.body),
label: ::core::clone::Clone::clone(&self.label),
kind: ::core::clone::Clone::clone(&self.kind),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ForLoop {
fn encode(&self, __encoder: &mut __E) {
match *self {
ForLoop {
pat: ref __binding_0,
iter: ref __binding_1,
body: ref __binding_2,
label: ref __binding_3,
kind: ref __binding_4 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ForLoop {
fn decode(__decoder: &mut __D) -> Self {
ForLoop {
pat: ::rustc_serialize::Decodable::decode(__decoder),
iter: ::rustc_serialize::Decodable::decode(__decoder),
body: ::rustc_serialize::Decodable::decode(__decoder),
label: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ForLoop {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "ForLoop",
"pat", &self.pat, "iter", &self.iter, "body", &self.body, "label",
&self.label, "kind", &&self.kind)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ForLoop
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ForLoop {
pat: ref __binding_0,
iter: ref __binding_1,
body: ref __binding_2,
label: ref __binding_3,
kind: ref __binding_4 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ForLoop where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ForLoop {
pat: ref mut __binding_0,
iter: ref mut __binding_1,
body: ref mut __binding_2,
label: ref mut __binding_3,
kind: ref mut __binding_4 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
}
}
}
}
};Walkable)]
1659pub struct ForLoop {
1660 pub pat: Box<Pat>,
1661 pub iter: Box<Expr>,
1662 pub body: Box<Block>,
1663 pub label: Option<Label>,
1664 pub kind: ForLoopKind,
1665}
1666
1667#[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)]
1668pub struct Closure {
1669 pub binder: ClosureBinder,
1670 pub capture_clause: CaptureBy,
1671 pub constness: Const,
1672 pub coroutine_kind: Option<CoroutineKind>,
1673 pub movability: Movability,
1674 pub fn_decl: Box<FnDecl>,
1675 pub body: Box<Expr>,
1676 pub fn_decl_span: Span,
1678 pub fn_arg_span: Span,
1680}
1681
1682#[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)]
1684pub enum RangeLimits {
1685 HalfOpen,
1687 Closed,
1689}
1690
1691impl RangeLimits {
1692 pub fn as_str(&self) -> &'static str {
1693 match self {
1694 RangeLimits::HalfOpen => "..",
1695 RangeLimits::Closed => "..=",
1696 }
1697 }
1698}
1699
1700#[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)]
1702pub struct MethodCall {
1703 pub seg: PathSegment,
1705 pub receiver: Box<Expr>,
1707 pub args: ThinVec<Box<Expr>>,
1709 pub span: Span,
1712}
1713
1714#[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)]
1715pub enum StructRest {
1716 Base(Box<Expr>),
1718 Rest(Span),
1720 None,
1722 NoneWithError(ErrorGuaranteed),
1728}
1729
1730#[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)]
1731pub struct StructExpr {
1732 pub qself: Option<Box<QSelf>>,
1733 pub path: Path,
1734 pub fields: ThinVec<ExprField>,
1735 pub rest: StructRest,
1736}
1737
1738#[derive(#[automatically_derived]
impl ::core::clone::Clone for ExprKind {
#[inline]
fn clone(&self) -> ExprKind {
match self {
ExprKind::Array(__self_0) =>
ExprKind::Array(::core::clone::Clone::clone(__self_0)),
ExprKind::ConstBlock(__self_0) =>
ExprKind::ConstBlock(::core::clone::Clone::clone(__self_0)),
ExprKind::Call(__self_0, __self_1) =>
ExprKind::Call(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::MethodCall(__self_0) =>
ExprKind::MethodCall(::core::clone::Clone::clone(__self_0)),
ExprKind::Tup(__self_0) =>
ExprKind::Tup(::core::clone::Clone::clone(__self_0)),
ExprKind::Binary(__self_0, __self_1, __self_2) =>
ExprKind::Binary(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Unary(__self_0, __self_1) =>
ExprKind::Unary(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Move(__self_0, __self_1) =>
ExprKind::Move(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Lit(__self_0) =>
ExprKind::Lit(::core::clone::Clone::clone(__self_0)),
ExprKind::Cast(__self_0, __self_1) =>
ExprKind::Cast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Type(__self_0, __self_1) =>
ExprKind::Type(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Let(__self_0, __self_1, __self_2, __self_3) =>
ExprKind::Let(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2),
::core::clone::Clone::clone(__self_3)),
ExprKind::If(__self_0, __self_1, __self_2) =>
ExprKind::If(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::While(__self_0, __self_1, __self_2) =>
ExprKind::While(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::ForLoop(__self_0) =>
ExprKind::ForLoop(::core::clone::Clone::clone(__self_0)),
ExprKind::Loop(__self_0, __self_1, __self_2) =>
ExprKind::Loop(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Match(__self_0, __self_1, __self_2) =>
ExprKind::Match(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Closure(__self_0) =>
ExprKind::Closure(::core::clone::Clone::clone(__self_0)),
ExprKind::Block(__self_0, __self_1) =>
ExprKind::Block(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Gen(__self_0, __self_1, __self_2, __self_3) =>
ExprKind::Gen(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2),
::core::clone::Clone::clone(__self_3)),
ExprKind::Await(__self_0, __self_1) =>
ExprKind::Await(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Use(__self_0, __self_1) =>
ExprKind::Use(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::TryBlock(__self_0, __self_1) =>
ExprKind::TryBlock(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Assign(__self_0, __self_1, __self_2) =>
ExprKind::Assign(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::AssignOp(__self_0, __self_1, __self_2) =>
ExprKind::AssignOp(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Field(__self_0, __self_1) =>
ExprKind::Field(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Index(__self_0, __self_1, __self_2) =>
ExprKind::Index(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Range(__self_0, __self_1, __self_2) =>
ExprKind::Range(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Underscore => ExprKind::Underscore,
ExprKind::Path(__self_0, __self_1) =>
ExprKind::Path(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::AddrOf(__self_0, __self_1, __self_2) =>
ExprKind::AddrOf(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Break(__self_0, __self_1) =>
ExprKind::Break(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Continue(__self_0) =>
ExprKind::Continue(::core::clone::Clone::clone(__self_0)),
ExprKind::Ret(__self_0) =>
ExprKind::Ret(::core::clone::Clone::clone(__self_0)),
ExprKind::InlineAsm(__self_0) =>
ExprKind::InlineAsm(::core::clone::Clone::clone(__self_0)),
ExprKind::OffsetOf(__self_0, __self_1) =>
ExprKind::OffsetOf(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::MacCall(__self_0) =>
ExprKind::MacCall(::core::clone::Clone::clone(__self_0)),
ExprKind::Struct(__self_0) =>
ExprKind::Struct(::core::clone::Clone::clone(__self_0)),
ExprKind::Repeat(__self_0, __self_1) =>
ExprKind::Repeat(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Paren(__self_0) =>
ExprKind::Paren(::core::clone::Clone::clone(__self_0)),
ExprKind::Try(__self_0) =>
ExprKind::Try(::core::clone::Clone::clone(__self_0)),
ExprKind::Yield(__self_0) =>
ExprKind::Yield(::core::clone::Clone::clone(__self_0)),
ExprKind::Yeet(__self_0) =>
ExprKind::Yeet(::core::clone::Clone::clone(__self_0)),
ExprKind::Become(__self_0) =>
ExprKind::Become(::core::clone::Clone::clone(__self_0)),
ExprKind::IncludedBytes(__self_0) =>
ExprKind::IncludedBytes(::core::clone::Clone::clone(__self_0)),
ExprKind::FormatArgs(__self_0) =>
ExprKind::FormatArgs(::core::clone::Clone::clone(__self_0)),
ExprKind::UnsafeBinderCast(__self_0, __self_1, __self_2) =>
ExprKind::UnsafeBinderCast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::DirectConstArg(__self_0) =>
ExprKind::DirectConstArg(::core::clone::Clone::clone(__self_0)),
ExprKind::Err(__self_0) =>
ExprKind::Err(::core::clone::Clone::clone(__self_0)),
ExprKind::Dummy => ExprKind::Dummy,
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ExprKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ExprKind::Array(ref __binding_0) => { 0usize }
ExprKind::ConstBlock(ref __binding_0) => { 1usize }
ExprKind::Call(ref __binding_0, ref __binding_1) => {
2usize
}
ExprKind::MethodCall(ref __binding_0) => { 3usize }
ExprKind::Tup(ref __binding_0) => { 4usize }
ExprKind::Binary(ref __binding_0, ref __binding_1,
ref __binding_2) => {
5usize
}
ExprKind::Unary(ref __binding_0, ref __binding_1) => {
6usize
}
ExprKind::Move(ref __binding_0, ref __binding_1) => {
7usize
}
ExprKind::Lit(ref __binding_0) => { 8usize }
ExprKind::Cast(ref __binding_0, ref __binding_1) => {
9usize
}
ExprKind::Type(ref __binding_0, ref __binding_1) => {
10usize
}
ExprKind::Let(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
11usize
}
ExprKind::If(ref __binding_0, ref __binding_1,
ref __binding_2) => {
12usize
}
ExprKind::While(ref __binding_0, ref __binding_1,
ref __binding_2) => {
13usize
}
ExprKind::ForLoop(ref __binding_0) => { 14usize }
ExprKind::Loop(ref __binding_0, ref __binding_1,
ref __binding_2) => {
15usize
}
ExprKind::Match(ref __binding_0, ref __binding_1,
ref __binding_2) => {
16usize
}
ExprKind::Closure(ref __binding_0) => { 17usize }
ExprKind::Block(ref __binding_0, ref __binding_1) => {
18usize
}
ExprKind::Gen(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
19usize
}
ExprKind::Await(ref __binding_0, ref __binding_1) => {
20usize
}
ExprKind::Use(ref __binding_0, ref __binding_1) => {
21usize
}
ExprKind::TryBlock(ref __binding_0, ref __binding_1) => {
22usize
}
ExprKind::Assign(ref __binding_0, ref __binding_1,
ref __binding_2) => {
23usize
}
ExprKind::AssignOp(ref __binding_0, ref __binding_1,
ref __binding_2) => {
24usize
}
ExprKind::Field(ref __binding_0, ref __binding_1) => {
25usize
}
ExprKind::Index(ref __binding_0, ref __binding_1,
ref __binding_2) => {
26usize
}
ExprKind::Range(ref __binding_0, ref __binding_1,
ref __binding_2) => {
27usize
}
ExprKind::Underscore => { 28usize }
ExprKind::Path(ref __binding_0, ref __binding_1) => {
29usize
}
ExprKind::AddrOf(ref __binding_0, ref __binding_1,
ref __binding_2) => {
30usize
}
ExprKind::Break(ref __binding_0, ref __binding_1) => {
31usize
}
ExprKind::Continue(ref __binding_0) => { 32usize }
ExprKind::Ret(ref __binding_0) => { 33usize }
ExprKind::InlineAsm(ref __binding_0) => { 34usize }
ExprKind::OffsetOf(ref __binding_0, ref __binding_1) => {
35usize
}
ExprKind::MacCall(ref __binding_0) => { 36usize }
ExprKind::Struct(ref __binding_0) => { 37usize }
ExprKind::Repeat(ref __binding_0, ref __binding_1) => {
38usize
}
ExprKind::Paren(ref __binding_0) => { 39usize }
ExprKind::Try(ref __binding_0) => { 40usize }
ExprKind::Yield(ref __binding_0) => { 41usize }
ExprKind::Yeet(ref __binding_0) => { 42usize }
ExprKind::Become(ref __binding_0) => { 43usize }
ExprKind::IncludedBytes(ref __binding_0) => { 44usize }
ExprKind::FormatArgs(ref __binding_0) => { 45usize }
ExprKind::UnsafeBinderCast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
46usize
}
ExprKind::DirectConstArg(ref __binding_0) => { 47usize }
ExprKind::Err(ref __binding_0) => { 48usize }
ExprKind::Dummy => { 49usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ExprKind::Array(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::ConstBlock(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Call(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::MethodCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Tup(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Binary(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::Unary(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Move(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Lit(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Cast(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Type(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Let(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
ExprKind::If(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::While(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::ForLoop(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Loop(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::Match(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::Closure(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Block(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Gen(ref __binding_0, ref __binding_1,
ref __binding_2, ref __binding_3) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
ExprKind::Await(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Use(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::TryBlock(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Assign(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::AssignOp(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::Field(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Index(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::Range(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::Underscore => {}
ExprKind::Path(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::AddrOf(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::Break(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Continue(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Ret(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::InlineAsm(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::OffsetOf(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::MacCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Struct(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Repeat(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ExprKind::Paren(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Try(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Yield(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Yeet(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Become(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::IncludedBytes(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::FormatArgs(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::UnsafeBinderCast(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
ExprKind::DirectConstArg(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Err(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
ExprKind::Dummy => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ExprKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
ExprKind::Array(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
ExprKind::ConstBlock(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
ExprKind::Call(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
ExprKind::MethodCall(::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
ExprKind::Tup(::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
ExprKind::Binary(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
ExprKind::Unary(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
ExprKind::Move(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
ExprKind::Lit(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
ExprKind::Cast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
ExprKind::Type(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
ExprKind::Let(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
ExprKind::If(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
13usize => {
ExprKind::While(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
14usize => {
ExprKind::ForLoop(::rustc_serialize::Decodable::decode(__decoder))
}
15usize => {
ExprKind::Loop(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
16usize => {
ExprKind::Match(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
17usize => {
ExprKind::Closure(::rustc_serialize::Decodable::decode(__decoder))
}
18usize => {
ExprKind::Block(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
19usize => {
ExprKind::Gen(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
20usize => {
ExprKind::Await(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
21usize => {
ExprKind::Use(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
22usize => {
ExprKind::TryBlock(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
23usize => {
ExprKind::Assign(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
24usize => {
ExprKind::AssignOp(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
25usize => {
ExprKind::Field(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
26usize => {
ExprKind::Index(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
27usize => {
ExprKind::Range(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
28usize => { ExprKind::Underscore }
29usize => {
ExprKind::Path(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
30usize => {
ExprKind::AddrOf(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
31usize => {
ExprKind::Break(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
32usize => {
ExprKind::Continue(::rustc_serialize::Decodable::decode(__decoder))
}
33usize => {
ExprKind::Ret(::rustc_serialize::Decodable::decode(__decoder))
}
34usize => {
ExprKind::InlineAsm(::rustc_serialize::Decodable::decode(__decoder))
}
35usize => {
ExprKind::OffsetOf(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
36usize => {
ExprKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
37usize => {
ExprKind::Struct(::rustc_serialize::Decodable::decode(__decoder))
}
38usize => {
ExprKind::Repeat(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
39usize => {
ExprKind::Paren(::rustc_serialize::Decodable::decode(__decoder))
}
40usize => {
ExprKind::Try(::rustc_serialize::Decodable::decode(__decoder))
}
41usize => {
ExprKind::Yield(::rustc_serialize::Decodable::decode(__decoder))
}
42usize => {
ExprKind::Yeet(::rustc_serialize::Decodable::decode(__decoder))
}
43usize => {
ExprKind::Become(::rustc_serialize::Decodable::decode(__decoder))
}
44usize => {
ExprKind::IncludedBytes(::rustc_serialize::Decodable::decode(__decoder))
}
45usize => {
ExprKind::FormatArgs(::rustc_serialize::Decodable::decode(__decoder))
}
46usize => {
ExprKind::UnsafeBinderCast(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
47usize => {
ExprKind::DirectConstArg(::rustc_serialize::Decodable::decode(__decoder))
}
48usize => {
ExprKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
49usize => { ExprKind::Dummy }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ExprKind`, expected 0..50, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ExprKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ExprKind::Array(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Array",
&__self_0),
ExprKind::ConstBlock(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ConstBlock", &__self_0),
ExprKind::Call(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Call",
__self_0, &__self_1),
ExprKind::MethodCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MethodCall", &__self_0),
ExprKind::Tup(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Tup",
&__self_0),
ExprKind::Binary(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Binary",
__self_0, __self_1, &__self_2),
ExprKind::Unary(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Unary",
__self_0, &__self_1),
ExprKind::Move(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Move",
__self_0, &__self_1),
ExprKind::Lit(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Lit",
&__self_0),
ExprKind::Cast(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Cast",
__self_0, &__self_1),
ExprKind::Type(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Type",
__self_0, &__self_1),
ExprKind::Let(__self_0, __self_1, __self_2, __self_3) =>
::core::fmt::Formatter::debug_tuple_field4_finish(f, "Let",
__self_0, __self_1, __self_2, &__self_3),
ExprKind::If(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "If",
__self_0, __self_1, &__self_2),
ExprKind::While(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "While",
__self_0, __self_1, &__self_2),
ExprKind::ForLoop(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ForLoop", &__self_0),
ExprKind::Loop(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Loop",
__self_0, __self_1, &__self_2),
ExprKind::Match(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Match",
__self_0, __self_1, &__self_2),
ExprKind::Closure(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Closure", &__self_0),
ExprKind::Block(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Block",
__self_0, &__self_1),
ExprKind::Gen(__self_0, __self_1, __self_2, __self_3) =>
::core::fmt::Formatter::debug_tuple_field4_finish(f, "Gen",
__self_0, __self_1, __self_2, &__self_3),
ExprKind::Await(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Await",
__self_0, &__self_1),
ExprKind::Use(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Use",
__self_0, &__self_1),
ExprKind::TryBlock(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"TryBlock", __self_0, &__self_1),
ExprKind::Assign(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Assign",
__self_0, __self_1, &__self_2),
ExprKind::AssignOp(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f,
"AssignOp", __self_0, __self_1, &__self_2),
ExprKind::Field(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Field",
__self_0, &__self_1),
ExprKind::Index(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Index",
__self_0, __self_1, &__self_2),
ExprKind::Range(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Range",
__self_0, __self_1, &__self_2),
ExprKind::Underscore =>
::core::fmt::Formatter::write_str(f, "Underscore"),
ExprKind::Path(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Path",
__self_0, &__self_1),
ExprKind::AddrOf(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "AddrOf",
__self_0, __self_1, &__self_2),
ExprKind::Break(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Break",
__self_0, &__self_1),
ExprKind::Continue(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Continue", &__self_0),
ExprKind::Ret(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Ret",
&__self_0),
ExprKind::InlineAsm(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"InlineAsm", &__self_0),
ExprKind::OffsetOf(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"OffsetOf", __self_0, &__self_1),
ExprKind::MacCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MacCall", &__self_0),
ExprKind::Struct(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Struct",
&__self_0),
ExprKind::Repeat(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Repeat",
__self_0, &__self_1),
ExprKind::Paren(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Paren",
&__self_0),
ExprKind::Try(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Try",
&__self_0),
ExprKind::Yield(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Yield",
&__self_0),
ExprKind::Yeet(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Yeet",
&__self_0),
ExprKind::Become(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Become",
&__self_0),
ExprKind::IncludedBytes(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"IncludedBytes", &__self_0),
ExprKind::FormatArgs(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"FormatArgs", &__self_0),
ExprKind::UnsafeBinderCast(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f,
"UnsafeBinderCast", __self_0, __self_1, &__self_2),
ExprKind::DirectConstArg(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DirectConstArg", &__self_0),
ExprKind::Err(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Err",
&__self_0),
ExprKind::Dummy => ::core::fmt::Formatter::write_str(f, "Dummy"),
}
}
}Debug)]
1740pub enum ExprKind {
1741 Array(ThinVec<Box<Expr>>),
1743 ConstBlock(AnonConst),
1745 Call(Box<Expr>, ThinVec<Box<Expr>>),
1752 MethodCall(Box<MethodCall>),
1754 Tup(ThinVec<Box<Expr>>),
1756 Binary(BinOp, Box<Expr>, Box<Expr>),
1758 Unary(UnOp, Box<Expr>),
1760 Move(Box<Expr>, Span),
1762 Lit(token::Lit),
1764 Cast(Box<Expr>, Box<Ty>),
1766 Type(Box<Expr>, Box<Ty>),
1771 Let(Box<Pat>, Box<Expr>, Span, Recovered),
1776 If(Box<Expr>, Box<Block>, Option<Box<Expr>>),
1783 While(Box<Expr>, Box<Block>, Option<Label>),
1787 ForLoop(Box<ForLoop>),
1793 Loop(Box<Block>, Option<Label>, Span),
1797 Match(Box<Expr>, ThinVec<Arm>, MatchKind),
1799 Closure(Box<Closure>),
1801 Block(Box<Block>, Option<Label>),
1803 Gen(CaptureBy, Box<Block>, GenBlockKind, Span),
1809 Await(Box<Expr>, Span),
1811 Use(Box<Expr>, Span),
1813
1814 TryBlock(Box<Block>, Option<Box<Ty>>),
1822
1823 Assign(Box<Expr>, Box<Expr>, Span),
1826 AssignOp(AssignOp, Box<Expr>, Box<Expr>),
1830 Field(Box<Expr>, Ident),
1832 Index(Box<Expr>, Box<Expr>, Span),
1835 Range(Option<Box<Expr>>, Option<Box<Expr>>, RangeLimits),
1837 Underscore,
1839
1840 Path(Option<Box<QSelf>>, Path),
1845
1846 AddrOf(BorrowKind, Mutability, Box<Expr>),
1848 Break(Option<Label>, Option<Box<Expr>>),
1850 Continue(Option<Label>),
1852 Ret(Option<Box<Expr>>),
1854
1855 InlineAsm(Box<InlineAsm>),
1857
1858 OffsetOf(Box<Ty>, ThinVec<Ident>),
1863
1864 MacCall(Box<MacCall>),
1866
1867 Struct(Box<StructExpr>),
1871
1872 Repeat(Box<Expr>, AnonConst),
1877
1878 Paren(Box<Expr>),
1880
1881 Try(Box<Expr>),
1883
1884 Yield(YieldKind),
1886
1887 Yeet(Option<Box<Expr>>),
1890
1891 Become(Box<Expr>),
1895
1896 IncludedBytes(ByteSymbol),
1908
1909 FormatArgs(Box<FormatArgs>),
1911
1912 UnsafeBinderCast(UnsafeBinderCastKind, Box<Expr>, Option<Box<Ty>>),
1913
1914 DirectConstArg(Box<Expr>),
1916
1917 Err(ErrorGuaranteed),
1919
1920 Dummy,
1922}
1923
1924#[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)]
1926pub enum ForLoopKind {
1927 For,
1928 ForAwait,
1929}
1930
1931#[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)]
1933pub enum GenBlockKind {
1934 Async,
1935 Gen,
1936 AsyncGen,
1937}
1938
1939impl fmt::Display for GenBlockKind {
1940 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1941 self.modifier().fmt(f)
1942 }
1943}
1944
1945impl GenBlockKind {
1946 pub fn modifier(&self) -> &'static str {
1947 match self {
1948 GenBlockKind::Async => "async",
1949 GenBlockKind::Gen => "gen",
1950 GenBlockKind::AsyncGen => "async gen",
1951 }
1952 }
1953}
1954
1955#[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)]
1957#[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)]
1958pub enum UnsafeBinderCastKind {
1959 Wrap,
1961 Unwrap,
1963}
1964
1965#[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)]
1980pub struct QSelf {
1981 pub ty: Box<Ty>,
1982
1983 pub path_span: Span,
1987 pub position: usize,
1988}
1989
1990#[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)]
1992pub enum CaptureBy {
1993 Value {
1995 move_kw: Span,
1997 },
1998 Ref,
2000 Use {
2006 use_kw: Span,
2008 },
2009}
2010
2011#[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)]
2013pub enum ClosureBinder {
2014 NotPresent,
2016 For {
2018 span: Span,
2025
2026 generic_params: ThinVec<GenericParam>,
2033 },
2034}
2035
2036#[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)]
2039pub struct MacCall {
2040 pub path: Path,
2041 pub args: Box<DelimArgs>,
2042}
2043
2044impl MacCall {
2045 pub fn span(&self) -> Span {
2046 self.path.span.to(self.args.dspan.entire())
2047 }
2048}
2049
2050#[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)]
2052pub enum AttrArgs {
2053 Empty,
2055 Delimited(DelimArgs),
2057 Eq {
2059 eq_span: Span,
2061 expr: Box<Expr>,
2062 },
2063}
2064
2065impl AttrArgs {
2066 pub fn span(&self) -> Option<Span> {
2067 match self {
2068 AttrArgs::Empty => None,
2069 AttrArgs::Delimited(args) => Some(args.dspan.entire()),
2070 AttrArgs::Eq { eq_span, expr } => Some(eq_span.to(expr.span)),
2071 }
2072 }
2073
2074 pub fn inner_tokens(&self) -> TokenStream {
2077 match self {
2078 AttrArgs::Empty => TokenStream::default(),
2079 AttrArgs::Delimited(args) => args.tokens.clone(),
2080 AttrArgs::Eq { expr, .. } => TokenStream::from_ast(expr),
2081 }
2082 }
2083}
2084
2085#[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)]
2087pub struct DelimArgs {
2088 pub dspan: DelimSpan,
2089 pub delim: Delimiter, pub tokens: TokenStream,
2091}
2092
2093impl DelimArgs {
2094 pub fn need_semicolon(&self) -> bool {
2097 !#[allow(non_exhaustive_omitted_patterns)] match self {
DelimArgs { delim: Delimiter::Brace, .. } => true,
_ => false,
}matches!(self, DelimArgs { delim: Delimiter::Brace, .. })
2098 }
2099}
2100
2101#[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)]
2103pub struct MacroDef {
2104 pub body: Box<DelimArgs>,
2105 pub macro_rules: bool,
2107
2108 pub eii_declaration: Option<EiiDecl>,
2114}
2115
2116#[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)]
2117pub struct EiiDecl {
2118 pub foreign_item: Path,
2120 pub impl_unsafe: bool,
2121}
2122
2123#[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)]
2124#[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)]
2125pub enum StrStyle {
2126 Cooked,
2128 Raw(u8),
2132}
2133
2134#[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)]
2136pub enum MatchKind {
2137 Prefix,
2139 Postfix,
2141}
2142
2143#[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)]
2145pub enum YieldKind {
2146 Prefix(Option<Box<Expr>>),
2148 Postfix(Box<Expr>),
2150}
2151
2152impl YieldKind {
2153 pub const fn expr(&self) -> Option<&Box<Expr>> {
2157 match self {
2158 YieldKind::Prefix(expr) => expr.as_ref(),
2159 YieldKind::Postfix(expr) => Some(expr),
2160 }
2161 }
2162
2163 pub const fn expr_mut(&mut self) -> Option<&mut Box<Expr>> {
2165 match self {
2166 YieldKind::Prefix(expr) => expr.as_mut(),
2167 YieldKind::Postfix(expr) => Some(expr),
2168 }
2169 }
2170
2171 pub const fn same_kind(&self, other: &Self) -> bool {
2173 match (self, other) {
2174 (YieldKind::Prefix(_), YieldKind::Prefix(_)) => true,
2175 (YieldKind::Postfix(_), YieldKind::Postfix(_)) => true,
2176 _ => false,
2177 }
2178 }
2179}
2180
2181#[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)]
2183pub struct MetaItemLit {
2184 pub symbol: Symbol,
2186 pub suffix: Option<Symbol>,
2188 pub kind: LitKind,
2191 pub span: Span,
2192}
2193
2194#[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)]
2196pub struct StrLit {
2197 pub symbol: Symbol,
2199 pub suffix: Option<Symbol>,
2201 pub symbol_unescaped: Symbol,
2203 pub style: StrStyle,
2204 pub span: Span,
2205}
2206
2207impl StrLit {
2208 pub fn as_token_lit(&self) -> token::Lit {
2209 let token_kind = match self.style {
2210 StrStyle::Cooked => token::Str,
2211 StrStyle::Raw(n) => token::StrRaw(n),
2212 };
2213 token::Lit::new(token_kind, self.symbol, self.suffix)
2214 }
2215}
2216
2217#[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)]
2219#[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)]
2220pub enum LitIntType {
2221 Signed(IntTy),
2223 Unsigned(UintTy),
2225 Unsuffixed,
2227}
2228
2229#[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)]
2231#[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)]
2232pub enum LitFloatType {
2233 Suffixed(FloatTy),
2235 Unsuffixed,
2237}
2238
2239#[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)]
2246pub enum LitKind {
2247 Str(Symbol, StrStyle),
2250 ByteStr(ByteSymbol, StrStyle),
2253 CStr(ByteSymbol, StrStyle),
2257 Byte(u8),
2259 Char(char),
2261 Int(Pu128, LitIntType),
2263 Float(Symbol, LitFloatType),
2267 Bool(bool),
2269 Err(ErrorGuaranteed),
2271}
2272
2273impl LitKind {
2274 pub fn str(&self) -> Option<Symbol> {
2275 match *self {
2276 LitKind::Str(s, _) => Some(s),
2277 _ => None,
2278 }
2279 }
2280
2281 pub fn is_str(&self) -> bool {
2283 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::Str(..) => true,
_ => false,
}matches!(self, LitKind::Str(..))
2284 }
2285
2286 pub fn is_bytestr(&self) -> bool {
2288 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::ByteStr(..) => true,
_ => false,
}matches!(self, LitKind::ByteStr(..))
2289 }
2290
2291 pub fn is_numeric(&self) -> bool {
2293 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::Int(..) | LitKind::Float(..) => true,
_ => false,
}matches!(self, LitKind::Int(..) | LitKind::Float(..))
2294 }
2295
2296 pub fn is_unsuffixed(&self) -> bool {
2299 !self.is_suffixed()
2300 }
2301
2302 pub fn is_suffixed(&self) -> bool {
2304 match *self {
2305 LitKind::Int(_, LitIntType::Signed(..) | LitIntType::Unsigned(..))
2307 | LitKind::Float(_, LitFloatType::Suffixed(..)) => true,
2308 LitKind::Str(..)
2310 | LitKind::ByteStr(..)
2311 | LitKind::CStr(..)
2312 | LitKind::Byte(..)
2313 | LitKind::Char(..)
2314 | LitKind::Int(_, LitIntType::Unsuffixed)
2315 | LitKind::Float(_, LitFloatType::Unsuffixed)
2316 | LitKind::Bool(..)
2317 | LitKind::Err(_) => false,
2318 }
2319 }
2320}
2321
2322#[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)]
2325pub struct MutTy {
2326 pub ty: Box<Ty>,
2327 pub mutbl: Mutability,
2328}
2329
2330#[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)]
2333pub struct FnSig {
2334 pub header: FnHeader,
2335 pub decl: Box<FnDecl>,
2336 pub span: Span,
2337}
2338
2339impl FnSig {
2340 pub fn header_span(&self) -> Span {
2342 match self.header.ext {
2343 Extern::Implicit(span) | Extern::Explicit(_, span) => {
2344 return self.span.with_hi(span.hi());
2345 }
2346 Extern::None => {}
2347 }
2348
2349 match self.header.safety {
2350 Safety::Unsafe(span) | Safety::Safe(span) => return self.span.with_hi(span.hi()),
2351 Safety::Default => {}
2352 };
2353
2354 if let Some(coroutine_kind) = self.header.coroutine_kind {
2355 return self.span.with_hi(coroutine_kind.span().hi());
2356 }
2357
2358 if let Const::Yes(span) = self.header.constness {
2359 return self.span.with_hi(span.hi());
2360 }
2361
2362 self.span.shrink_to_lo()
2363 }
2364
2365 pub fn safety_span(&self) -> Span {
2367 match self.header.safety {
2368 Safety::Unsafe(span) | Safety::Safe(span) => span,
2369 Safety::Default => {
2370 if let Some(extern_span) = self.header.ext.span() {
2372 return extern_span.shrink_to_lo();
2373 }
2374
2375 self.header_span().shrink_to_hi()
2377 }
2378 }
2379 }
2380
2381 pub fn extern_span(&self) -> Span {
2383 self.header.ext.span().unwrap_or(self.safety_span().shrink_to_hi())
2384 }
2385}
2386
2387#[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)]
2398pub struct AssocItemConstraint {
2399 pub id: NodeId,
2400 pub ident: Ident,
2401 pub gen_args: Option<GenericArgs>,
2402 pub kind: AssocItemConstraintKind,
2403 pub span: Span,
2404}
2405
2406#[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)]
2407pub enum Term {
2408 Ty(Box<Ty>),
2409 Const(AnonConst),
2410}
2411
2412impl From<Box<Ty>> for Term {
2413 fn from(v: Box<Ty>) -> Self {
2414 Term::Ty(v)
2415 }
2416}
2417
2418impl From<AnonConst> for Term {
2419 fn from(v: AnonConst) -> Self {
2420 Term::Const(v)
2421 }
2422}
2423
2424#[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)]
2426pub enum AssocItemConstraintKind {
2427 Equality { term: Term },
2434 Bound {
2436 #[visitable(extra = BoundKind::Bound)]
2437 bounds: GenericBounds,
2438 },
2439}
2440
2441#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Ty {
fn encode(&self, __encoder: &mut __E) {
match *self {
Ty {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Ty {
fn decode(__decoder: &mut __D) -> Self {
Ty {
id: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Ty {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Ty", "id",
&self.id, "kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Ty where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Ty {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Ty where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Ty {
id: ref mut __binding_0,
kind: ref mut __binding_1,
span: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2442pub struct Ty {
2443 pub id: NodeId,
2444 pub kind: TyKind,
2445 pub span: Span,
2446}
2447
2448impl Clone for Ty {
2449 fn clone(&self) -> Self {
2450 ensure_sufficient_stack(|| Self { id: self.id, kind: self.kind.clone(), span: self.span })
2451 }
2452}
2453
2454impl From<Box<Ty>> for Ty {
2455 fn from(value: Box<Ty>) -> Self {
2456 *value
2457 }
2458}
2459
2460impl Ty {
2461 pub fn peel_refs(&self) -> &Self {
2462 let mut final_ty = self;
2463 while let TyKind::Ref(_, MutTy { ty, .. }) | TyKind::Ptr(MutTy { ty, .. }) = &final_ty.kind
2464 {
2465 final_ty = ty;
2466 }
2467 final_ty
2468 }
2469
2470 pub fn is_maybe_parenthesised_infer(&self) -> bool {
2471 match &self.kind {
2472 TyKind::Infer => true,
2473 TyKind::Paren(inner) => inner.is_maybe_parenthesised_infer(),
2474 _ => false,
2475 }
2476 }
2477}
2478
2479#[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)]
2480pub struct FnPtrTy {
2481 pub safety: Safety,
2482 pub ext: Extern,
2483 pub generic_params: ThinVec<GenericParam>,
2484 pub decl: Box<FnDecl>,
2485 pub decl_span: Span,
2488}
2489
2490#[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)]
2491pub struct UnsafeBinderTy {
2492 pub generic_params: ThinVec<GenericParam>,
2493 pub inner_ty: Box<Ty>,
2494}
2495
2496#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyKind {
#[inline]
fn clone(&self) -> TyKind {
match self {
TyKind::Slice(__self_0) =>
TyKind::Slice(::core::clone::Clone::clone(__self_0)),
TyKind::Array(__self_0, __self_1) =>
TyKind::Array(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::Ptr(__self_0) =>
TyKind::Ptr(::core::clone::Clone::clone(__self_0)),
TyKind::Ref(__self_0, __self_1) =>
TyKind::Ref(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::PinnedRef(__self_0, __self_1) =>
TyKind::PinnedRef(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::FnPtr(__self_0) =>
TyKind::FnPtr(::core::clone::Clone::clone(__self_0)),
TyKind::UnsafeBinder(__self_0) =>
TyKind::UnsafeBinder(::core::clone::Clone::clone(__self_0)),
TyKind::Never => TyKind::Never,
TyKind::Tup(__self_0) =>
TyKind::Tup(::core::clone::Clone::clone(__self_0)),
TyKind::Path(__self_0, __self_1) =>
TyKind::Path(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::TraitObject(__self_0, __self_1) =>
TyKind::TraitObject(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::ImplTrait(__self_0, __self_1) =>
TyKind::ImplTrait(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::Paren(__self_0) =>
TyKind::Paren(::core::clone::Clone::clone(__self_0)),
TyKind::Infer => TyKind::Infer,
TyKind::ImplicitSelf => TyKind::ImplicitSelf,
TyKind::MacCall(__self_0) =>
TyKind::MacCall(::core::clone::Clone::clone(__self_0)),
TyKind::CVarArgs => TyKind::CVarArgs,
TyKind::Pat(__self_0, __self_1) =>
TyKind::Pat(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::FieldOf(__self_0, __self_1, __self_2) =>
TyKind::FieldOf(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
TyKind::View(__self_0, __self_1) =>
TyKind::View(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
TyKind::DirectConstArg(__self_0) =>
TyKind::DirectConstArg(::core::clone::Clone::clone(__self_0)),
TyKind::Dummy => TyKind::Dummy,
TyKind::Err(__self_0) =>
TyKind::Err(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TyKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
TyKind::Slice(ref __binding_0) => { 0usize }
TyKind::Array(ref __binding_0, ref __binding_1) => {
1usize
}
TyKind::Ptr(ref __binding_0) => { 2usize }
TyKind::Ref(ref __binding_0, ref __binding_1) => { 3usize }
TyKind::PinnedRef(ref __binding_0, ref __binding_1) => {
4usize
}
TyKind::FnPtr(ref __binding_0) => { 5usize }
TyKind::UnsafeBinder(ref __binding_0) => { 6usize }
TyKind::Never => { 7usize }
TyKind::Tup(ref __binding_0) => { 8usize }
TyKind::Path(ref __binding_0, ref __binding_1) => { 9usize }
TyKind::TraitObject(ref __binding_0, ref __binding_1) => {
10usize
}
TyKind::ImplTrait(ref __binding_0, ref __binding_1) => {
11usize
}
TyKind::Paren(ref __binding_0) => { 12usize }
TyKind::Infer => { 13usize }
TyKind::ImplicitSelf => { 14usize }
TyKind::MacCall(ref __binding_0) => { 15usize }
TyKind::CVarArgs => { 16usize }
TyKind::Pat(ref __binding_0, ref __binding_1) => { 17usize }
TyKind::FieldOf(ref __binding_0, ref __binding_1,
ref __binding_2) => {
18usize
}
TyKind::View(ref __binding_0, ref __binding_1) => {
19usize
}
TyKind::DirectConstArg(ref __binding_0) => { 20usize }
TyKind::Dummy => { 21usize }
TyKind::Err(ref __binding_0) => { 22usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
TyKind::Slice(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Array(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::Ptr(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Ref(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::PinnedRef(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::FnPtr(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::UnsafeBinder(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Never => {}
TyKind::Tup(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Path(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::TraitObject(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::ImplTrait(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::Paren(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Infer => {}
TyKind::ImplicitSelf => {}
TyKind::MacCall(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::CVarArgs => {}
TyKind::Pat(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::FieldOf(ref __binding_0, ref __binding_1,
ref __binding_2) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
TyKind::View(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
TyKind::DirectConstArg(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
TyKind::Dummy => {}
TyKind::Err(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TyKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
TyKind::Slice(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
TyKind::Array(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
TyKind::Ptr(::rustc_serialize::Decodable::decode(__decoder))
}
3usize => {
TyKind::Ref(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
4usize => {
TyKind::PinnedRef(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
5usize => {
TyKind::FnPtr(::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
TyKind::UnsafeBinder(::rustc_serialize::Decodable::decode(__decoder))
}
7usize => { TyKind::Never }
8usize => {
TyKind::Tup(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
TyKind::Path(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
TyKind::TraitObject(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
TyKind::ImplTrait(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
TyKind::Paren(::rustc_serialize::Decodable::decode(__decoder))
}
13usize => { TyKind::Infer }
14usize => { TyKind::ImplicitSelf }
15usize => {
TyKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
16usize => { TyKind::CVarArgs }
17usize => {
TyKind::Pat(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
18usize => {
TyKind::FieldOf(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
19usize => {
TyKind::View(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
20usize => {
TyKind::DirectConstArg(::rustc_serialize::Decodable::decode(__decoder))
}
21usize => { TyKind::Dummy }
22usize => {
TyKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `TyKind`, expected 0..23, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TyKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TyKind::Slice(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Slice",
&__self_0),
TyKind::Array(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Array",
__self_0, &__self_1),
TyKind::Ptr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Ptr",
&__self_0),
TyKind::Ref(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Ref",
__self_0, &__self_1),
TyKind::PinnedRef(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"PinnedRef", __self_0, &__self_1),
TyKind::FnPtr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "FnPtr",
&__self_0),
TyKind::UnsafeBinder(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"UnsafeBinder", &__self_0),
TyKind::Never => ::core::fmt::Formatter::write_str(f, "Never"),
TyKind::Tup(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Tup",
&__self_0),
TyKind::Path(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Path",
__self_0, &__self_1),
TyKind::TraitObject(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"TraitObject", __self_0, &__self_1),
TyKind::ImplTrait(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"ImplTrait", __self_0, &__self_1),
TyKind::Paren(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Paren",
&__self_0),
TyKind::Infer => ::core::fmt::Formatter::write_str(f, "Infer"),
TyKind::ImplicitSelf =>
::core::fmt::Formatter::write_str(f, "ImplicitSelf"),
TyKind::MacCall(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MacCall", &__self_0),
TyKind::CVarArgs =>
::core::fmt::Formatter::write_str(f, "CVarArgs"),
TyKind::Pat(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Pat",
__self_0, &__self_1),
TyKind::FieldOf(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f,
"FieldOf", __self_0, __self_1, &__self_2),
TyKind::View(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "View",
__self_0, &__self_1),
TyKind::DirectConstArg(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DirectConstArg", &__self_0),
TyKind::Dummy => ::core::fmt::Formatter::write_str(f, "Dummy"),
TyKind::Err(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Err",
&__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for TyKind where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TyKind::Slice(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Array(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Ptr(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Ref(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (LifetimeCtxt::Ref))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::PinnedRef(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (LifetimeCtxt::Ref))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::FnPtr(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::UnsafeBinder(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Never => {}
TyKind::Tup(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Path(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::TraitObject(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, (BoundKind::TraitObject))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::ImplTrait(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, (BoundKind::Impl))) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Paren(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Infer => {}
TyKind::ImplicitSelf => {}
TyKind::MacCall(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::CVarArgs => {}
TyKind::Pat(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::FieldOf(ref __binding_0, ref __binding_1,
ref __binding_2) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::View(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{}
}
TyKind::DirectConstArg(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
TyKind::Dummy => {}
TyKind::Err(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TyKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TyKind::Slice(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Array(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::Ptr(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Ref(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (LifetimeCtxt::Ref))
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::PinnedRef(ref mut __binding_0, ref mut __binding_1)
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (LifetimeCtxt::Ref))
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::FnPtr(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::UnsafeBinder(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Never => {}
TyKind::Tup(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Path(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::TraitObject(ref mut __binding_0,
ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, (BoundKind::TraitObject))
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::ImplTrait(ref mut __binding_0, ref mut __binding_1)
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, (BoundKind::Impl))
}
}
TyKind::Paren(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Infer => {}
TyKind::ImplicitSelf => {}
TyKind::MacCall(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::CVarArgs => {}
TyKind::Pat(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
TyKind::FieldOf(ref mut __binding_0, ref mut __binding_1,
ref mut __binding_2) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
TyKind::View(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{}
}
TyKind::DirectConstArg(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
TyKind::Dummy => {}
TyKind::Err(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
2500pub enum TyKind {
2501 Slice(Box<Ty>),
2503 Array(Box<Ty>, AnonConst),
2505 Ptr(MutTy),
2507 Ref(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
2509 PinnedRef(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
2513 FnPtr(Box<FnPtrTy>),
2515 UnsafeBinder(Box<UnsafeBinderTy>),
2517 Never,
2519 Tup(ThinVec<Box<Ty>>),
2521 Path(Option<Box<QSelf>>, Path),
2526 TraitObject(#[visitable(extra = BoundKind::TraitObject)] GenericBounds, TraitObjectSyntax),
2529 ImplTrait(NodeId, #[visitable(extra = BoundKind::Impl)] GenericBounds),
2536 Paren(Box<Ty>),
2538 Infer,
2541 ImplicitSelf,
2543 MacCall(Box<MacCall>),
2545 CVarArgs,
2547 Pat(Box<Ty>, Box<TyPat>),
2550 FieldOf(Box<Ty>, Option<Ident>, Ident),
2555 View(Box<Ty>, #[visitable(ignore)] ThinVec<Ident>),
2557 DirectConstArg(Box<Expr>),
2559 Dummy,
2561 Err(ErrorGuaranteed),
2563}
2564
2565impl TyKind {
2566 pub fn is_implicit_self(&self) -> bool {
2567 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::ImplicitSelf => true,
_ => false,
}matches!(self, TyKind::ImplicitSelf)
2568 }
2569
2570 pub fn is_unit(&self) -> bool {
2571 #[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())
2572 }
2573
2574 pub fn is_simple_path(&self) -> Option<Symbol> {
2575 if let TyKind::Path(None, Path { segments, .. }) = &self
2576 && let [segment] = &segments[..]
2577 && segment.args.is_none()
2578 {
2579 Some(segment.ident.name)
2580 } else {
2581 None
2582 }
2583 }
2584
2585 pub fn maybe_scalar(&self) -> bool {
2593 let Some(ty_sym) = self.is_simple_path() else {
2594 return self.is_unit();
2596 };
2597 #[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!(
2598 ty_sym,
2599 sym::i8
2600 | sym::i16
2601 | sym::i32
2602 | sym::i64
2603 | sym::i128
2604 | sym::u8
2605 | sym::u16
2606 | sym::u32
2607 | sym::u64
2608 | sym::u128
2609 | sym::f16
2610 | sym::f32
2611 | sym::f64
2612 | sym::f128
2613 | sym::char
2614 | sym::bool
2615 )
2616 }
2617}
2618
2619#[derive(#[automatically_derived]
impl ::core::clone::Clone for TyPat {
#[inline]
fn clone(&self) -> TyPat {
TyPat {
id: ::core::clone::Clone::clone(&self.id),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for TyPat {
fn encode(&self, __encoder: &mut __E) {
match *self {
TyPat {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for TyPat {
fn decode(__decoder: &mut __D) -> Self {
TyPat {
id: ::rustc_serialize::Decodable::decode(__decoder),
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for TyPat {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "TyPat", "id",
&self.id, "kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for TyPat where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
TyPat {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for TyPat where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
TyPat {
id: ref mut __binding_0,
kind: ref mut __binding_1,
span: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
2621pub struct TyPat {
2622 pub id: NodeId,
2623 pub kind: TyPatKind,
2624 pub span: Span,
2625}
2626
2627#[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)]
2631pub enum TyPatKind {
2632 Range(Option<Box<AnonConst>>, Option<Box<AnonConst>>, Spanned<RangeEnd>),
2634
2635 NotNull,
2637
2638 Or(ThinVec<TyPat>),
2639
2640 Err(ErrorGuaranteed),
2642}
2643
2644#[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)]
2646#[repr(u8)]
2647pub enum TraitObjectSyntax {
2648 Dyn = 0,
2650 None = 1,
2651}
2652
2653unsafe impl Tag for TraitObjectSyntax {
2657 const BITS: u32 = 2;
2658
2659 fn into_usize(self) -> usize {
2660 self as u8 as usize
2661 }
2662
2663 unsafe fn from_usize(tag: usize) -> Self {
2664 match tag {
2665 0 => TraitObjectSyntax::Dyn,
2666 1 => TraitObjectSyntax::None,
2667 _ => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
2668 }
2669 }
2670}
2671
2672#[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)]
2673pub enum PreciseCapturingArg {
2674 Lifetime(#[visitable(extra = LifetimeCtxt::GenericArg)] Lifetime),
2676 Arg(Path, NodeId),
2678}
2679
2680#[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)]
2684pub enum InlineAsmRegOrRegClass {
2685 Reg(Symbol),
2686 RegClass(Symbol),
2687}
2688
2689#[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)]
2690pub struct InlineAsmOptions(u16);
2691impl 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! {
2692 impl InlineAsmOptions: u16 {
2693 const PURE = 1 << 0;
2694 const NOMEM = 1 << 1;
2695 const READONLY = 1 << 2;
2696 const PRESERVES_FLAGS = 1 << 3;
2697 const NORETURN = 1 << 4;
2698 const NOSTACK = 1 << 5;
2699 const ATT_SYNTAX = 1 << 6;
2700 const RAW = 1 << 7;
2701 const MAY_UNWIND = 1 << 8;
2702 }
2703}
2704
2705impl InlineAsmOptions {
2706 pub const COUNT: usize = Self::all().bits().count_ones() as usize;
2707
2708 pub const GLOBAL_OPTIONS: Self = Self::ATT_SYNTAX.union(Self::RAW);
2709 pub const NAKED_OPTIONS: Self = Self::ATT_SYNTAX.union(Self::RAW);
2710
2711 pub fn human_readable_names(&self) -> Vec<&'static str> {
2712 let mut options = ::alloc::vec::Vec::new()vec![];
2713
2714 if self.contains(InlineAsmOptions::PURE) {
2715 options.push("pure");
2716 }
2717 if self.contains(InlineAsmOptions::NOMEM) {
2718 options.push("nomem");
2719 }
2720 if self.contains(InlineAsmOptions::READONLY) {
2721 options.push("readonly");
2722 }
2723 if self.contains(InlineAsmOptions::PRESERVES_FLAGS) {
2724 options.push("preserves_flags");
2725 }
2726 if self.contains(InlineAsmOptions::NORETURN) {
2727 options.push("noreturn");
2728 }
2729 if self.contains(InlineAsmOptions::NOSTACK) {
2730 options.push("nostack");
2731 }
2732 if self.contains(InlineAsmOptions::ATT_SYNTAX) {
2733 options.push("att_syntax");
2734 }
2735 if self.contains(InlineAsmOptions::RAW) {
2736 options.push("raw");
2737 }
2738 if self.contains(InlineAsmOptions::MAY_UNWIND) {
2739 options.push("may_unwind");
2740 }
2741
2742 options
2743 }
2744}
2745
2746impl std::fmt::Debug for InlineAsmOptions {
2747 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2748 bitflags::parser::to_writer(self, f)
2749 }
2750}
2751
2752#[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)]
2753pub enum InlineAsmTemplatePiece {
2754 String(Cow<'static, str>),
2755 Placeholder { operand_idx: usize, modifier: Option<char>, span: Span },
2756}
2757
2758impl fmt::Display for InlineAsmTemplatePiece {
2759 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2760 match self {
2761 Self::String(s) => {
2762 for c in s.chars() {
2763 match c {
2764 '{' => f.write_str("{{")?,
2765 '}' => f.write_str("}}")?,
2766 _ => c.fmt(f)?,
2767 }
2768 }
2769 Ok(())
2770 }
2771 Self::Placeholder { operand_idx, modifier: Some(modifier), .. } => {
2772 f.write_fmt(format_args!("{{{0}:{1}}}", operand_idx, modifier))write!(f, "{{{operand_idx}:{modifier}}}")
2773 }
2774 Self::Placeholder { operand_idx, modifier: None, .. } => {
2775 f.write_fmt(format_args!("{{{0}}}", operand_idx))write!(f, "{{{operand_idx}}}")
2776 }
2777 }
2778 }
2779}
2780
2781impl InlineAsmTemplatePiece {
2782 pub fn to_string(s: &[Self]) -> String {
2784 use fmt::Write;
2785 let mut out = String::new();
2786 for p in s.iter() {
2787 let _ = out.write_fmt(format_args!("{0}", p))write!(out, "{p}");
2788 }
2789 out
2790 }
2791}
2792
2793#[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)]
2801pub struct InlineAsmSym {
2802 pub id: NodeId,
2803 pub qself: Option<Box<QSelf>>,
2804 pub path: Path,
2805}
2806
2807#[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)]
2811pub enum InlineAsmOperand {
2812 In {
2813 reg: InlineAsmRegOrRegClass,
2814 expr: Box<Expr>,
2815 },
2816 Out {
2817 reg: InlineAsmRegOrRegClass,
2818 late: bool,
2819 expr: Option<Box<Expr>>,
2820 },
2821 InOut {
2822 reg: InlineAsmRegOrRegClass,
2823 late: bool,
2824 expr: Box<Expr>,
2825 },
2826 SplitInOut {
2827 reg: InlineAsmRegOrRegClass,
2828 late: bool,
2829 in_expr: Box<Expr>,
2830 out_expr: Option<Box<Expr>>,
2831 },
2832 Const {
2833 anon_const: AnonConst,
2834 },
2835 Sym {
2836 sym: InlineAsmSym,
2837 },
2838 Label {
2839 block: Box<Block>,
2840 },
2841}
2842
2843impl InlineAsmOperand {
2844 pub fn reg(&self) -> Option<&InlineAsmRegOrRegClass> {
2845 match self {
2846 Self::In { reg, .. }
2847 | Self::Out { reg, .. }
2848 | Self::InOut { reg, .. }
2849 | Self::SplitInOut { reg, .. } => Some(reg),
2850 Self::Const { .. } | Self::Sym { .. } | Self::Label { .. } => None,
2851 }
2852 }
2853}
2854
2855#[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)]
2856pub enum AsmMacro {
2857 Asm,
2859 GlobalAsm,
2861 NakedAsm,
2863}
2864
2865impl AsmMacro {
2866 pub const fn macro_name(self) -> &'static str {
2867 match self {
2868 AsmMacro::Asm => "asm",
2869 AsmMacro::GlobalAsm => "global_asm",
2870 AsmMacro::NakedAsm => "naked_asm",
2871 }
2872 }
2873
2874 pub const fn is_supported_option(self, option: InlineAsmOptions) -> bool {
2875 match self {
2876 AsmMacro::Asm => true,
2877 AsmMacro::GlobalAsm => InlineAsmOptions::GLOBAL_OPTIONS.contains(option),
2878 AsmMacro::NakedAsm => InlineAsmOptions::NAKED_OPTIONS.contains(option),
2879 }
2880 }
2881
2882 pub const fn diverges(self, options: InlineAsmOptions) -> bool {
2883 match self {
2884 AsmMacro::Asm => options.contains(InlineAsmOptions::NORETURN),
2885 AsmMacro::GlobalAsm => true,
2886 AsmMacro::NakedAsm => true,
2887 }
2888 }
2889}
2890
2891#[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)]
2895pub struct InlineAsm {
2896 pub asm_macro: AsmMacro,
2897 pub template: Vec<InlineAsmTemplatePiece>,
2898 pub template_strs: Box<[(Symbol, Option<Symbol>, Span)]>,
2899 pub operands: Vec<(InlineAsmOperand, Span)>,
2900 pub clobber_abis: Vec<(Symbol, Span)>,
2901 #[visitable(ignore)]
2902 pub options: InlineAsmOptions,
2903 pub line_spans: Vec<Span>,
2904}
2905
2906#[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)]
2910pub struct Param {
2911 pub attrs: AttrVec,
2912 pub ty: Box<Ty>,
2913 pub pat: Box<Pat>,
2914 pub id: NodeId,
2915 pub span: Span,
2916 pub is_placeholder: bool,
2917}
2918
2919#[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)]
2923pub enum SelfKind {
2924 Value(Mutability),
2926 Region(Option<Lifetime>, Mutability),
2928 Pinned(Option<Lifetime>, Mutability),
2930 Explicit(Box<Ty>, Mutability),
2932}
2933
2934impl SelfKind {
2935 pub fn to_ref_suggestion(&self) -> String {
2936 match self {
2937 SelfKind::Region(None, mutbl) => mutbl.ref_prefix_str().to_string(),
2938 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()),
2939 SelfKind::Pinned(None, mutbl) => ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("&pin {0}", mutbl.ptr_str()))
})format!("&pin {}", mutbl.ptr_str()),
2940 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()),
2941 SelfKind::Value(_) | SelfKind::Explicit(_, _) => {
2942 {
::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")
2943 }
2944 }
2945 }
2946}
2947
2948pub type ExplicitSelf = Spanned<SelfKind>;
2949
2950impl Param {
2951 pub fn to_self(&self) -> Option<ExplicitSelf> {
2953 if let PatKind::Ident(BindingMode(ByRef::No, mutbl), ident, _) = self.pat.kind {
2954 if ident.name == kw::SelfLower {
2955 return match self.ty.kind {
2956 TyKind::ImplicitSelf => Some(respan(self.pat.span, SelfKind::Value(mutbl))),
2957 TyKind::Ref(lt, MutTy { ref ty, mutbl }) if ty.kind.is_implicit_self() => {
2958 Some(respan(self.pat.span, SelfKind::Region(lt, mutbl)))
2959 }
2960 TyKind::PinnedRef(lt, MutTy { ref ty, mutbl })
2961 if ty.kind.is_implicit_self() =>
2962 {
2963 Some(respan(self.pat.span, SelfKind::Pinned(lt, mutbl)))
2964 }
2965 _ => Some(respan(
2966 self.pat.span.to(self.ty.span),
2967 SelfKind::Explicit(self.ty.clone(), mutbl),
2968 )),
2969 };
2970 }
2971 }
2972 None
2973 }
2974
2975 pub fn is_self(&self) -> bool {
2977 if let PatKind::Ident(_, ident, _) = self.pat.kind {
2978 ident.name == kw::SelfLower
2979 } else {
2980 false
2981 }
2982 }
2983
2984 pub fn from_self(attrs: AttrVec, eself: ExplicitSelf, eself_ident: Ident) -> Param {
2986 let span = eself.span.to(eself_ident.span);
2987 let infer_ty =
2988 Box::new(Ty { id: DUMMY_NODE_ID, kind: TyKind::ImplicitSelf, span: eself_ident.span });
2989 let (mutbl, ty) = match eself.node {
2990 SelfKind::Explicit(ty, mutbl) => (mutbl, ty),
2991 SelfKind::Value(mutbl) => (mutbl, infer_ty),
2992 SelfKind::Region(lt, mutbl) => (
2993 Mutability::Not,
2994 Box::new(Ty {
2995 id: DUMMY_NODE_ID,
2996 kind: TyKind::Ref(lt, MutTy { ty: infer_ty, mutbl }),
2997 span,
2998 }),
2999 ),
3000 SelfKind::Pinned(lt, mutbl) => (
3001 mutbl,
3002 Box::new(Ty {
3003 id: DUMMY_NODE_ID,
3004 kind: TyKind::PinnedRef(lt, MutTy { ty: infer_ty, mutbl }),
3005 span,
3006 }),
3007 ),
3008 };
3009 Param {
3010 attrs,
3011 pat: Box::new(Pat {
3012 id: DUMMY_NODE_ID,
3013 kind: PatKind::Ident(BindingMode(ByRef::No, mutbl), eself_ident, None),
3014 span,
3015 }),
3016 span,
3017 ty,
3018 id: DUMMY_NODE_ID,
3019 is_placeholder: false,
3020 }
3021 }
3022}
3023
3024#[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)]
3031pub struct FnDecl {
3032 pub inputs: ThinVec<Param>,
3033 pub output: FnRetTy,
3034}
3035
3036impl FnDecl {
3037 pub fn has_self(&self) -> bool {
3038 self.inputs.get(0).is_some_and(Param::is_self)
3039 }
3040
3041 pub fn c_variadic(&self) -> bool {
3042 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))
3043 }
3044
3045 pub const NO_SPLATTED_ARG_INDEX: u8 = u8::MAX;
3050
3051 pub const MAX_VALID_SPLATTED_ARG_INDEX: u8 = Self::NO_SPLATTED_ARG_INDEX - 1;
3053
3054 pub fn splatted(&self) -> Option<u8> {
3056 self.inputs.iter().enumerate().find_map(|(index, arg)| {
3057 if index >= usize::from(Self::NO_SPLATTED_ARG_INDEX) {
3058 None
3061 } else {
3062 arg.attrs
3063 .iter()
3064 .any(|attr| attr.has_name(sym::splat))
3065 .then_some(u8::try_from(index).unwrap())
3066 }
3067 })
3068 }
3069}
3070
3071#[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)]
3073pub enum IsAuto {
3074 Yes,
3075 No,
3076}
3077
3078#[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)]
3080#[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)]
3081pub enum Safety {
3082 Unsafe(Span),
3084 Safe(Span),
3086 Default,
3089}
3090
3091#[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)]
3097pub enum CoroutineKind {
3098 Async { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3100 Gen { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3102 AsyncGen { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
3104}
3105
3106impl CoroutineKind {
3107 pub fn span(self) -> Span {
3108 match self {
3109 CoroutineKind::Async { span, .. } => span,
3110 CoroutineKind::Gen { span, .. } => span,
3111 CoroutineKind::AsyncGen { span, .. } => span,
3112 }
3113 }
3114
3115 pub fn as_str(self) -> &'static str {
3116 match self {
3117 CoroutineKind::Async { .. } => "async",
3118 CoroutineKind::Gen { .. } => "gen",
3119 CoroutineKind::AsyncGen { .. } => "async gen",
3120 }
3121 }
3122
3123 pub fn closure_id(self) -> NodeId {
3124 match self {
3125 CoroutineKind::Async { closure_id, .. }
3126 | CoroutineKind::Gen { closure_id, .. }
3127 | CoroutineKind::AsyncGen { closure_id, .. } => closure_id,
3128 }
3129 }
3130
3131 pub fn return_id(self) -> (NodeId, Span) {
3134 match self {
3135 CoroutineKind::Async { return_impl_trait_id, span, .. }
3136 | CoroutineKind::Gen { return_impl_trait_id, span, .. }
3137 | CoroutineKind::AsyncGen { return_impl_trait_id, span, .. } => {
3138 (return_impl_trait_id, span)
3139 }
3140 }
3141 }
3142}
3143
3144#[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)]
3145#[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)]
3146pub enum Const {
3147 Yes(Span),
3148 No,
3149}
3150
3151#[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)]
3154pub enum Defaultness {
3155 Implicit,
3161 Default(Span),
3163 Final(Span),
3165}
3166
3167#[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)]
3168pub enum ImplPolarity {
3169 Positive,
3171 Negative(Span),
3173}
3174
3175impl fmt::Debug for ImplPolarity {
3176 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
3177 match *self {
3178 ImplPolarity::Positive => "positive".fmt(f),
3179 ImplPolarity::Negative(_) => "negative".fmt(f),
3180 }
3181 }
3182}
3183
3184#[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)]
3186#[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)]
3187pub enum BoundPolarity {
3188 Positive,
3190 Negative(Span),
3192 Maybe(Span),
3194}
3195
3196impl BoundPolarity {
3197 pub fn as_str(self) -> &'static str {
3198 match self {
3199 Self::Positive => "",
3200 Self::Negative(_) => "!",
3201 Self::Maybe(_) => "?",
3202 }
3203 }
3204}
3205
3206#[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)]
3208#[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)]
3209pub enum BoundConstness {
3210 Never,
3212 Always(Span),
3214 Maybe(Span),
3216}
3217
3218impl BoundConstness {
3219 pub fn as_str(self) -> &'static str {
3220 match self {
3221 Self::Never => "",
3222 Self::Always(_) => "const",
3223 Self::Maybe(_) => "[const]",
3224 }
3225 }
3226}
3227
3228#[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)]
3230#[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)]
3231pub enum BoundAsyncness {
3232 Normal,
3234 Async(Span),
3236}
3237
3238impl BoundAsyncness {
3239 pub fn as_str(self) -> &'static str {
3240 match self {
3241 Self::Normal => "",
3242 Self::Async(_) => "async",
3243 }
3244 }
3245}
3246
3247#[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)]
3248pub enum FnRetTy {
3249 Default(Span),
3254 Ty(Box<Ty>),
3256}
3257
3258impl FnRetTy {
3259 pub fn span(&self) -> Span {
3260 match self {
3261 &FnRetTy::Default(span) => span,
3262 FnRetTy::Ty(ty) => ty.span,
3263 }
3264 }
3265}
3266
3267#[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)]
3268pub enum Inline {
3269 Yes,
3270 No { had_parse_error: Result<(), ErrorGuaranteed> },
3271}
3272
3273#[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)]
3275pub enum ModKind {
3276 Loaded(ThinVec<Box<Item>>, Inline, ModSpans),
3281 Unloaded,
3283}
3284
3285#[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)]
3286pub struct ModSpans {
3287 pub inner_span: Span,
3290 pub inject_use_span: Span,
3291}
3292
3293#[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)]
3297pub struct ForeignMod {
3298 pub extern_span: Span,
3300 pub safety: Safety,
3303 pub abi: Option<StrLit>,
3304 pub items: ThinVec<Box<ForeignItem>>,
3305}
3306
3307#[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)]
3308pub struct EnumDef {
3309 pub variants: ThinVec<Variant>,
3310}
3311
3312#[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)]
3314pub struct Variant {
3315 pub attrs: AttrVec,
3317 pub id: NodeId,
3319 pub span: Span,
3321 pub vis: Visibility,
3323 pub ident: Ident,
3325
3326 pub data: VariantData,
3328 pub disr_expr: Option<AnonConst>,
3330 pub is_placeholder: bool,
3332}
3333
3334#[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)]
3336pub enum UseTreeKind {
3337 Simple(Option<Ident>),
3339 Nested { items: ThinVec<(UseTree, NodeId)>, span: Span },
3348 Glob(Span),
3350}
3351
3352#[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)]
3355pub struct UseTree {
3356 pub prefix: Path,
3357 pub kind: UseTreeKind,
3358}
3359
3360impl UseTree {
3361 pub fn ident(&self) -> Ident {
3364 match self.kind {
3365 UseTreeKind::Simple(Some(rename)) => rename,
3366 UseTreeKind::Simple(None) => {
3367 self.prefix.segments.last().expect("empty prefix in a simple import").ident
3368 }
3369 _ => {
::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"),
3370 }
3371 }
3372
3373 pub fn span(&self) -> Span {
3377 self.prefix.span.to(self.hi_span())
3378 }
3379
3380 pub fn hi_span(&self) -> Span {
3386 match self.kind {
3387 UseTreeKind::Simple(None) => self.prefix.span,
3388 UseTreeKind::Simple(Some(name)) => name.span,
3389 UseTreeKind::Nested { span, .. } => span,
3390 UseTreeKind::Glob(span) => span,
3391 }
3392 }
3393}
3394
3395#[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)]
3399#[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)]
3400pub enum AttrStyle {
3401 Outer,
3402 Inner,
3403}
3404
3405pub type AttrVec = ThinVec<Attribute>;
3407
3408#[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)]
3410pub struct Attribute {
3411 pub kind: AttrKind,
3412 pub id: AttrId,
3413 pub style: AttrStyle,
3416 pub span: Span,
3417}
3418
3419#[derive(#[automatically_derived]
impl ::core::clone::Clone for AttrKind {
#[inline]
fn clone(&self) -> AttrKind {
match self {
AttrKind::Normal(__self_0) =>
AttrKind::Normal(::core::clone::Clone::clone(__self_0)),
AttrKind::Synthetic(__self_0) =>
AttrKind::Synthetic(::core::clone::Clone::clone(__self_0)),
AttrKind::DocComment(__self_0, __self_1) =>
AttrKind::DocComment(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AttrKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AttrKind::Normal(ref __binding_0) => { 0usize }
AttrKind::Synthetic(ref __binding_0) => { 1usize }
AttrKind::DocComment(ref __binding_0, ref __binding_1) => {
2usize
}
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
AttrKind::Normal(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AttrKind::Synthetic(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
AttrKind::DocComment(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AttrKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
AttrKind::Normal(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
AttrKind::Synthetic(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
AttrKind::DocComment(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `AttrKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AttrKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AttrKind::Normal(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Normal",
&__self_0),
AttrKind::Synthetic(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Synthetic", &__self_0),
AttrKind::DocComment(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"DocComment", __self_0, &__self_1),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AttrKind
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AttrKind::Normal(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
AttrKind::Synthetic(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
AttrKind::DocComment(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AttrKind where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AttrKind::Normal(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
AttrKind::Synthetic(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
AttrKind::DocComment(ref mut __binding_0,
ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3420pub enum AttrKind {
3421 Normal(Box<NormalAttr>),
3423
3424 Synthetic(Box<SyntheticAttr>),
3426
3427 DocComment(CommentKind, Symbol),
3431}
3432
3433#[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)]
3434pub struct NormalAttr {
3435 pub item: AttrItem,
3436 pub tokens: Option<LazyAttrTokenStream>,
3439}
3440
3441impl NormalAttr {
3442 pub fn from_ident(ident: Ident) -> Self {
3443 Self {
3444 item: AttrItem {
3445 unsafety: Safety::Default,
3446 path: Path::from_ident(ident),
3447 args: AttrArgs::Empty,
3448 span: ident.span,
3449 },
3450 tokens: None,
3451 }
3452 }
3453}
3454
3455#[derive(#[automatically_derived]
impl ::core::clone::Clone for AttrItem {
#[inline]
fn clone(&self) -> AttrItem {
AttrItem {
unsafety: ::core::clone::Clone::clone(&self.unsafety),
path: ::core::clone::Clone::clone(&self.path),
args: ::core::clone::Clone::clone(&self.args),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AttrItem {
fn encode(&self, __encoder: &mut __E) {
match *self {
AttrItem {
unsafety: ref __binding_0,
path: ref __binding_1,
args: ref __binding_2,
span: ref __binding_3 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for AttrItem {
fn decode(__decoder: &mut __D) -> Self {
AttrItem {
unsafety: ::rustc_serialize::Decodable::decode(__decoder),
path: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for AttrItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "AttrItem",
"unsafety", &self.unsafety, "path", &self.path, "args",
&self.args, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for AttrItem
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
AttrItem {
unsafety: ref __binding_0,
path: ref __binding_1,
args: ref __binding_2,
span: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for AttrItem where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
AttrItem {
unsafety: ref mut __binding_0,
path: ref mut __binding_1,
args: ref mut __binding_2,
span: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
3456pub struct AttrItem {
3457 pub unsafety: Safety,
3458 pub path: Path,
3459 pub args: AttrArgs,
3460 pub span: Span,
3469}
3470
3471#[derive(#[automatically_derived]
impl ::core::clone::Clone for SyntheticAttr {
#[inline]
fn clone(&self) -> SyntheticAttr {
match self {
SyntheticAttr::CfgTrace(__self_0) =>
SyntheticAttr::CfgTrace(::core::clone::Clone::clone(__self_0)),
SyntheticAttr::CfgAttrTrace => SyntheticAttr::CfgAttrTrace,
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for SyntheticAttr {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
SyntheticAttr::CfgTrace(ref __binding_0) => { 0usize }
SyntheticAttr::CfgAttrTrace => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
SyntheticAttr::CfgTrace(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
SyntheticAttr::CfgAttrTrace => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for SyntheticAttr {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
SyntheticAttr::CfgTrace(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { SyntheticAttr::CfgAttrTrace }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `SyntheticAttr`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for SyntheticAttr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
SyntheticAttr::CfgTrace(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"CfgTrace", &__self_0),
SyntheticAttr::CfgAttrTrace =>
::core::fmt::Formatter::write_str(f, "CfgAttrTrace"),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
SyntheticAttr {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
SyntheticAttr::CfgTrace(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
SyntheticAttr::CfgAttrTrace => {}
}
}
}
};StableHash)]
3476pub enum SyntheticAttr {
3477 CfgTrace(CfgEntry),
3486
3487 CfgAttrTrace,
3495}
3496
3497impl AttrItem {
3498 pub fn is_valid_for_outer_style(&self) -> bool {
3499 self.path == sym::cfg_attr
3500 || self.path == sym::cfg
3501 || self.path == sym::forbid
3502 || self.path == sym::warn
3503 || self.path == sym::allow
3504 || self.path == sym::deny
3505 || self.path == sym::expect
3506 }
3507}
3508
3509#[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)]
3516pub struct TraitRef {
3517 pub path: Path,
3518 pub ref_id: NodeId,
3519}
3520
3521#[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)]
3523pub enum Parens {
3524 Yes,
3525 No,
3526}
3527
3528#[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)]
3529pub struct PolyTraitRef {
3530 pub bound_generic_params: ThinVec<GenericParam>,
3532
3533 pub modifiers: TraitBoundModifiers,
3535
3536 pub trait_ref: TraitRef,
3538
3539 pub span: Span,
3540
3541 pub parens: Parens,
3544}
3545
3546impl PolyTraitRef {
3547 pub fn new(
3548 generic_params: ThinVec<GenericParam>,
3549 path: Path,
3550 modifiers: TraitBoundModifiers,
3551 span: Span,
3552 parens: Parens,
3553 ) -> Self {
3554 PolyTraitRef {
3555 bound_generic_params: generic_params,
3556 modifiers,
3557 trait_ref: TraitRef { path, ref_id: DUMMY_NODE_ID },
3558 span,
3559 parens,
3560 }
3561 }
3562}
3563
3564#[derive(#[automatically_derived]
impl ::core::clone::Clone for Visibility {
#[inline]
fn clone(&self) -> Visibility {
Visibility {
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Visibility {
fn encode(&self, __encoder: &mut __E) {
match *self {
Visibility { kind: ref __binding_0, span: ref __binding_1 }
=> {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Visibility {
fn decode(__decoder: &mut __D) -> Self {
Visibility {
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Visibility {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Visibility",
"kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Visibility
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Visibility { kind: ref __binding_0, span: ref __binding_1 }
=> {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Visibility where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Visibility {
kind: ref mut __binding_0, span: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3565pub struct Visibility {
3566 pub kind: VisibilityKind,
3567 pub span: Span,
3568}
3569
3570#[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)]
3571pub enum VisibilityKind {
3572 Public,
3573 Restricted { path: Box<Path>, id: NodeId, shorthand: bool },
3574 Inherited,
3575}
3576
3577impl VisibilityKind {
3578 pub fn is_pub(&self) -> bool {
3579 #[allow(non_exhaustive_omitted_patterns)] match self {
VisibilityKind::Public => true,
_ => false,
}matches!(self, VisibilityKind::Public)
3580 }
3581}
3582
3583#[derive(#[automatically_derived]
impl ::core::clone::Clone for ImplRestriction {
#[inline]
fn clone(&self) -> ImplRestriction {
ImplRestriction {
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ImplRestriction {
fn encode(&self, __encoder: &mut __E) {
match *self {
ImplRestriction {
kind: ref __binding_0, span: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ImplRestriction {
fn decode(__decoder: &mut __D) -> Self {
ImplRestriction {
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for ImplRestriction {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"ImplRestriction", "kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
ImplRestriction where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ImplRestriction {
kind: ref __binding_0, span: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ImplRestriction where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ImplRestriction {
kind: ref mut __binding_0, span: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3584pub struct ImplRestriction {
3585 pub kind: RestrictionKind,
3586 pub span: Span,
3587}
3588
3589#[derive(#[automatically_derived]
impl ::core::clone::Clone for MutRestriction {
#[inline]
fn clone(&self) -> MutRestriction {
MutRestriction {
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MutRestriction {
fn encode(&self, __encoder: &mut __E) {
match *self {
MutRestriction {
kind: ref __binding_0, span: ref __binding_1 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MutRestriction {
fn decode(__decoder: &mut __D) -> Self {
MutRestriction {
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MutRestriction {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"MutRestriction", "kind", &self.kind, "span", &&self.span)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
MutRestriction where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
MutRestriction {
kind: ref __binding_0, span: ref __binding_1 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for MutRestriction where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
MutRestriction {
kind: ref mut __binding_0, span: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
3590pub struct MutRestriction {
3591 pub kind: RestrictionKind,
3592 pub span: Span,
3593}
3594
3595#[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)]
3596pub enum RestrictionKind {
3597 Unrestricted,
3598 Restricted { path: Box<Path>, id: NodeId, shorthand: bool },
3599}
3600
3601#[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)]
3605pub struct FieldDef {
3606 pub attrs: AttrVec,
3607 pub id: NodeId,
3608 pub span: Span,
3609 pub vis: Visibility,
3610 pub mut_restriction: MutRestriction,
3611 pub safety: Safety,
3612 pub ident: Option<Ident>,
3613
3614 pub ty: Box<Ty>,
3615 pub default: Option<AnonConst>,
3616 pub is_placeholder: bool,
3617}
3618
3619#[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)]
3621pub enum Recovered {
3622 No,
3623 Yes(ErrorGuaranteed),
3624}
3625
3626#[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)]
3628pub enum VariantData {
3629 Struct { fields: ThinVec<FieldDef>, recovered: Recovered },
3633 Tuple(ThinVec<FieldDef>, NodeId),
3637 Unit(NodeId),
3641}
3642
3643impl VariantData {
3644 pub fn fields(&self) -> &[FieldDef] {
3646 match self {
3647 VariantData::Struct { fields, .. } | VariantData::Tuple(fields, _) => fields,
3648 _ => &[],
3649 }
3650 }
3651
3652 pub fn ctor_node_id(&self) -> Option<NodeId> {
3654 match *self {
3655 VariantData::Struct { .. } => None,
3656 VariantData::Tuple(_, id) | VariantData::Unit(id) => Some(id),
3657 }
3658 }
3659}
3660
3661#[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)]
3663pub struct Item<K = ItemKind> {
3664 pub attrs: AttrVec,
3665 pub id: NodeId,
3666 pub span: Span,
3667 pub vis: Visibility,
3668
3669 pub kind: K,
3670
3671 pub tokens: Option<LazyAttrTokenStream>,
3679}
3680
3681impl Item {
3682 pub fn span_with_attributes(&self) -> Span {
3684 self.attrs.iter().fold(self.span, |acc, attr| acc.to(attr.span))
3685 }
3686
3687 pub fn opt_generics(&self) -> Option<&Generics> {
3688 match &self.kind {
3689 ItemKind::ExternCrate(..)
3690 | ItemKind::ConstBlock(_)
3691 | ItemKind::Use(_)
3692 | ItemKind::Mod(..)
3693 | ItemKind::ForeignMod(_)
3694 | ItemKind::GlobalAsm(_)
3695 | ItemKind::MacCall(_)
3696 | ItemKind::Delegation(_)
3697 | ItemKind::DelegationMac(_)
3698 | ItemKind::MacroDef(..) => None,
3699 ItemKind::Static(_) => None,
3700 ItemKind::Const(i) => Some(&i.generics),
3701 ItemKind::Fn(i) => Some(&i.generics),
3702 ItemKind::TyAlias(i) => Some(&i.generics),
3703 ItemKind::TraitAlias(i) => Some(&i.generics),
3704
3705 ItemKind::Enum(_, generics, _)
3706 | ItemKind::Struct(_, generics, _)
3707 | ItemKind::Union(_, generics, _) => Some(&generics),
3708 ItemKind::Trait(i) => Some(&i.generics),
3709 ItemKind::Impl(i) => Some(&i.generics),
3710 }
3711 }
3712}
3713
3714impl Item<AssocItemKind> {
3715 pub fn opt_generics(&self) -> Option<&Generics> {
3716 match &self.kind {
3717 AssocItemKind::Fn(fun) => Some(&fun.generics),
3718 AssocItemKind::Const(ct) => Some(&ct.generics),
3719 AssocItemKind::Type(ty) => Some(&ty.generics),
3720 AssocItemKind::Delegation(..)
3721 | AssocItemKind::MacCall(_)
3722 | AssocItemKind::DelegationMac(_) => None,
3723 }
3724 }
3725}
3726
3727#[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)]
3729pub enum Extern {
3730 None,
3734 Implicit(Span),
3740 Explicit(StrLit, Span),
3744}
3745
3746impl Extern {
3747 pub fn from_abi(abi: Option<StrLit>, span: Span) -> Extern {
3748 match abi {
3749 Some(name) => Extern::Explicit(name, span),
3750 None => Extern::Implicit(span),
3751 }
3752 }
3753
3754 pub fn span(self) -> Option<Span> {
3755 match self {
3756 Extern::None => None,
3757 Extern::Implicit(span) | Extern::Explicit(_, span) => Some(span),
3758 }
3759 }
3760}
3761
3762#[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)]
3767pub struct FnHeader {
3768 pub constness: Const,
3770 pub coroutine_kind: Option<CoroutineKind>,
3772 pub safety: Safety,
3774 pub ext: Extern,
3776}
3777
3778impl FnHeader {
3779 pub fn has_qualifiers(&self) -> bool {
3781 let Self { safety, coroutine_kind, constness, ext } = self;
3782 #[allow(non_exhaustive_omitted_patterns)] match safety {
Safety::Unsafe(_) => true,
_ => false,
}matches!(safety, Safety::Unsafe(_))
3783 || coroutine_kind.is_some()
3784 || #[allow(non_exhaustive_omitted_patterns)] match constness {
Const::Yes(_) => true,
_ => false,
}matches!(constness, Const::Yes(_))
3785 || !#[allow(non_exhaustive_omitted_patterns)] match ext {
Extern::None => true,
_ => false,
}matches!(ext, Extern::None)
3786 }
3787}
3788
3789impl Default for FnHeader {
3790 fn default() -> FnHeader {
3791 FnHeader {
3792 safety: Safety::Default,
3793 coroutine_kind: None,
3794 constness: Const::No,
3795 ext: Extern::None,
3796 }
3797 }
3798}
3799
3800#[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)]
3801pub struct TraitAlias {
3802 pub constness: Const,
3803 pub ident: Ident,
3804 pub generics: Generics,
3805 #[visitable(extra = BoundKind::Bound)]
3806 pub bounds: GenericBounds,
3807}
3808
3809#[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)]
3810pub struct Trait {
3811 pub impl_restriction: ImplRestriction,
3812 pub constness: Const,
3813 pub safety: Safety,
3814 pub is_auto: IsAuto,
3815 pub ident: Ident,
3816 pub generics: Generics,
3817 #[visitable(extra = BoundKind::SuperTraits)]
3818 pub bounds: GenericBounds,
3819 #[visitable(extra = AssocCtxt::Trait)]
3820 pub items: ThinVec<Box<AssocItem>>,
3821}
3822
3823#[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)]
3824pub struct TyAlias {
3825 pub defaultness: Defaultness,
3826 pub ident: Ident,
3827 pub generics: Generics,
3828 pub after_where_clause: WhereClause,
3843 #[visitable(extra = BoundKind::Bound)]
3844 pub bounds: GenericBounds,
3845 pub ty: Option<Box<Ty>>,
3846}
3847
3848#[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)]
3849pub struct Impl {
3850 pub generics: Generics,
3851 pub constness: Const,
3852 pub of_trait: Option<Box<TraitImplHeader>>,
3853 pub self_ty: Box<Ty>,
3854 pub items: ThinVec<Box<AssocItem>>,
3855}
3856
3857#[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)]
3858pub struct TraitImplHeader {
3859 pub defaultness: Defaultness,
3860 pub safety: Safety,
3861 pub polarity: ImplPolarity,
3862 pub trait_ref: TraitRef,
3863}
3864
3865#[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)]
3866pub struct FnContract {
3867 pub declarations: ThinVec<Stmt>,
3870 pub requires: Option<Box<Expr>>,
3871 pub ensures: Option<Box<Expr>>,
3872}
3873
3874#[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)]
3875pub struct Fn {
3876 pub defaultness: Defaultness,
3877 pub ident: Ident,
3878 pub generics: Generics,
3879 pub sig: FnSig,
3880 pub contract: Option<Box<FnContract>>,
3881 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
3882 pub body: Option<Box<Block>>,
3883
3884 pub eii_impls: ThinVec<EiiImpl>,
3888}
3889
3890impl Fn {
3891 pub fn is_pin_drop_sugar(&self) -> bool {
3892 self.ident.name == sym::drop
3893 && self
3894 .sig
3895 .decl
3896 .inputs
3897 .first()
3898 .and_then(|param| param.to_self())
3899 .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)))
3900 }
3901}
3902
3903#[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)]
3904pub struct EiiImpl {
3905 pub node_id: NodeId,
3906 pub eii_macro_path: Path,
3907 pub known_eii_macro_resolution: Option<Path>,
3920 pub impl_safety: Safety,
3921 pub span: Span,
3922 pub inner_span: Span,
3923 pub is_default: bool,
3924}
3925
3926#[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)]
3927pub enum DelegationSource {
3928 Single,
3929 List(LocalExpnId),
3930 Glob,
3931}
3932
3933#[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)]
3934pub struct Delegation {
3935 pub id: NodeId,
3937 pub qself: Option<Box<QSelf>>,
3938 pub path: Path,
3939 pub ident: Ident,
3940 pub rename: Option<Ident>,
3941 pub body: Option<Box<Block>>,
3942 #[visitable(ignore)]
3944 pub source: DelegationSource,
3945}
3946
3947impl Delegation {
3948 pub fn last_segment_span(&self) -> Span {
3949 self.path.segments.last().unwrap().ident.span
3950 }
3951}
3952
3953#[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)]
3954pub enum DelegationSuffixes {
3955 List(ThinVec<(Ident, Option<Ident>)>),
3956 Glob(Span),
3957}
3958
3959#[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)]
3960pub struct DelegationMac {
3961 pub qself: Option<Box<QSelf>>,
3962 pub prefix: Path,
3963 pub suffixes: DelegationSuffixes,
3964 pub body: Option<Box<Block>>,
3965}
3966
3967#[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)]
3968pub struct StaticItem {
3969 pub ident: Ident,
3970 pub ty: Box<Ty>,
3971 pub safety: Safety,
3972 pub mutability: Mutability,
3973 pub expr: Option<Box<Expr>>,
3974 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
3975
3976 pub eii_impls: ThinVec<EiiImpl>,
3982}
3983
3984#[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)]
3985pub struct ConstItem {
3986 pub defaultness: Defaultness,
3987 pub ident: Ident,
3988 pub generics: Generics,
3989 pub ty: Box<Ty>,
3990 pub rhs_kind: ConstItemRhsKind,
3991 pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
3992}
3993
3994#[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)]
3995pub enum ConstItemRhsKind {
3996 Body { rhs: Option<Box<Expr>> },
3997 TypeConst { rhs: Option<AnonConst> },
3998}
3999
4000impl ConstItemRhsKind {
4001 pub fn new_body(rhs: Box<Expr>) -> Self {
4002 Self::Body { rhs: Some(rhs) }
4003 }
4004
4005 pub fn span(&self) -> Option<Span> {
4006 Some(self.expr()?.span)
4007 }
4008
4009 pub fn expr(&self) -> Option<&Expr> {
4010 match self {
4011 Self::Body { rhs: Some(body) } => Some(&body),
4012 Self::TypeConst { rhs: Some(anon) } => Some(&anon.value),
4013 _ => None,
4014 }
4015 }
4016
4017 pub fn has_expr(&self) -> bool {
4018 match self {
4019 Self::Body { rhs: Some(_) } => true,
4020 Self::TypeConst { rhs: Some(_) } => true,
4021 _ => false,
4022 }
4023 }
4024
4025 pub fn is_type_const(&self) -> bool {
4026 #[allow(non_exhaustive_omitted_patterns)] match self {
&Self::TypeConst { .. } => true,
_ => false,
}matches!(self, &Self::TypeConst { .. })
4027 }
4028}
4029
4030#[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)]
4031pub struct ConstBlockItem {
4032 pub id: NodeId,
4033 pub span: Span,
4034 pub block: Box<Block>,
4035}
4036
4037impl ConstBlockItem {
4038 pub const IDENT: Ident = Ident { name: kw::Underscore, span: DUMMY_SP };
4039}
4040
4041#[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)]
4042pub struct Guard {
4043 pub cond: Expr,
4044 pub span_with_leading_if: Span,
4045}
4046
4047impl Guard {
4048 pub fn span(&self) -> Span {
4049 self.cond.span
4050 }
4051}
4052
4053#[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)]
4055pub enum ItemKind {
4056 ExternCrate(Option<Symbol>, Ident),
4060 Use(UseTree),
4064 Static(Box<StaticItem>),
4068 Const(Box<ConstItem>),
4072 ConstBlock(ConstBlockItem),
4077 Fn(Box<Fn>),
4081 Mod(Safety, Ident, ModKind),
4087 ForeignMod(ForeignMod),
4091 GlobalAsm(Box<InlineAsm>),
4093 TyAlias(Box<TyAlias>),
4097 Enum(Ident, Generics, EnumDef),
4101 Struct(Ident, Generics, VariantData),
4105 Union(Ident, Generics, VariantData),
4109 Trait(Box<Trait>),
4113 TraitAlias(Box<TraitAlias>),
4117 Impl(Impl),
4121 MacCall(Box<MacCall>),
4125 MacroDef(Ident, MacroDef),
4127 Delegation(Box<Delegation>),
4131 DelegationMac(Box<DelegationMac>),
4134}
4135
4136impl ItemKind {
4137 pub fn ident(&self) -> Option<Ident> {
4138 match *self {
4139 ItemKind::ExternCrate(_, ident)
4140 | ItemKind::Static(StaticItem { ident, .. })
4141 | ItemKind::Const(ConstItem { ident, .. })
4142 | ItemKind::Fn(Fn { ident, .. })
4143 | ItemKind::Mod(_, ident, _)
4144 | ItemKind::TyAlias(TyAlias { ident, .. })
4145 | ItemKind::Enum(ident, ..)
4146 | ItemKind::Struct(ident, ..)
4147 | ItemKind::Union(ident, ..)
4148 | ItemKind::Trait(Trait { ident, .. })
4149 | ItemKind::TraitAlias(TraitAlias { ident, .. })
4150 | ItemKind::MacroDef(ident, _)
4151 | ItemKind::Delegation(Delegation { ident, .. }) => Some(ident),
4152
4153 ItemKind::ConstBlock(_) => Some(ConstBlockItem::IDENT),
4154
4155 ItemKind::Use(_)
4156 | ItemKind::ForeignMod(_)
4157 | ItemKind::GlobalAsm(_)
4158 | ItemKind::Impl(_)
4159 | ItemKind::MacCall(_)
4160 | ItemKind::DelegationMac(_) => None,
4161 }
4162 }
4163
4164 pub fn article(&self) -> &'static str {
4166 use ItemKind::*;
4167 match self {
4168 Use(..) | Static(..) | Const(..) | ConstBlock(..) | Fn(..) | Mod(..)
4169 | GlobalAsm(..) | TyAlias(..) | Struct(..) | Union(..) | Trait(..) | TraitAlias(..)
4170 | MacroDef(..) | Delegation(..) | DelegationMac(..) => "a",
4171 ExternCrate(..) | ForeignMod(..) | MacCall(..) | Enum(..) | Impl { .. } => "an",
4172 }
4173 }
4174
4175 pub fn descr(&self) -> &'static str {
4176 match self {
4177 ItemKind::ExternCrate(..) => "extern crate",
4178 ItemKind::Use(..) => "`use` import",
4179 ItemKind::Static(..) => "static item",
4180 ItemKind::Const(..) => "constant item",
4181 ItemKind::ConstBlock(..) => "const block",
4182 ItemKind::Fn(..) => "function",
4183 ItemKind::Mod(..) => "module",
4184 ItemKind::ForeignMod(..) => "extern block",
4185 ItemKind::GlobalAsm(..) => "global asm item",
4186 ItemKind::TyAlias(..) => "type alias",
4187 ItemKind::Enum(..) => "enum",
4188 ItemKind::Struct(..) => "struct",
4189 ItemKind::Union(..) => "union",
4190 ItemKind::Trait(..) => "trait",
4191 ItemKind::TraitAlias(..) => "trait alias",
4192 ItemKind::MacCall(..) => "item macro invocation",
4193 ItemKind::MacroDef(..) => "macro definition",
4194 ItemKind::Impl { .. } => "implementation",
4195 ItemKind::Delegation(..) => "delegated function",
4196 ItemKind::DelegationMac(..) => "delegation",
4197 }
4198 }
4199
4200 pub fn generics(&self) -> Option<&Generics> {
4201 match self {
4202 Self::Fn(Fn { generics, .. })
4203 | Self::TyAlias(TyAlias { generics, .. })
4204 | Self::Const(ConstItem { generics, .. })
4205 | Self::Enum(_, generics, _)
4206 | Self::Struct(_, generics, _)
4207 | Self::Union(_, generics, _)
4208 | Self::Trait(Trait { generics, .. })
4209 | Self::TraitAlias(TraitAlias { generics, .. })
4210 | Self::Impl(Impl { generics, .. }) => Some(generics),
4211
4212 Self::ExternCrate(..)
4213 | Self::Use(..)
4214 | Self::Static(..)
4215 | Self::ConstBlock(..)
4216 | Self::Mod(..)
4217 | Self::ForeignMod(..)
4218 | Self::GlobalAsm(..)
4219 | Self::MacCall(..)
4220 | Self::MacroDef(..)
4221 | Self::Delegation(..)
4222 | Self::DelegationMac(..) => None,
4223 }
4224 }
4225}
4226
4227pub type AssocItem = Item<AssocItemKind>;
4230
4231#[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)]
4239pub enum AssocItemKind {
4240 Const(Box<ConstItem>),
4243 Fn(Box<Fn>),
4245 Type(Box<TyAlias>),
4247 MacCall(Box<MacCall>),
4249 Delegation(Box<Delegation>),
4251 DelegationMac(Box<DelegationMac>),
4253}
4254
4255impl AssocItemKind {
4256 pub fn ident(&self) -> Option<Ident> {
4257 match *self {
4258 AssocItemKind::Const(ConstItem { ident, .. })
4259 | AssocItemKind::Fn(Fn { ident, .. })
4260 | AssocItemKind::Type(TyAlias { ident, .. })
4261 | AssocItemKind::Delegation(Delegation { ident, .. }) => Some(ident),
4262
4263 AssocItemKind::MacCall(_) | AssocItemKind::DelegationMac(_) => None,
4264 }
4265 }
4266
4267 pub fn defaultness(&self) -> Defaultness {
4268 match *self {
4269 Self::Const(ConstItem { defaultness, .. })
4270 | Self::Fn(Fn { defaultness, .. })
4271 | Self::Type(TyAlias { defaultness, .. }) => defaultness,
4272 Self::MacCall(..) | Self::Delegation(..) | Self::DelegationMac(..) => {
4273 Defaultness::Implicit
4274 }
4275 }
4276 }
4277}
4278
4279impl From<AssocItemKind> for ItemKind {
4280 fn from(assoc_item_kind: AssocItemKind) -> ItemKind {
4281 match assoc_item_kind {
4282 AssocItemKind::Const(item) => ItemKind::Const(item),
4283 AssocItemKind::Fn(fn_kind) => ItemKind::Fn(fn_kind),
4284 AssocItemKind::Type(ty_alias_kind) => ItemKind::TyAlias(ty_alias_kind),
4285 AssocItemKind::MacCall(a) => ItemKind::MacCall(a),
4286 AssocItemKind::Delegation(delegation) => ItemKind::Delegation(delegation),
4287 AssocItemKind::DelegationMac(delegation) => ItemKind::DelegationMac(delegation),
4288 }
4289 }
4290}
4291
4292impl TryFrom<ItemKind> for AssocItemKind {
4293 type Error = ItemKind;
4294
4295 fn try_from(item_kind: ItemKind) -> Result<AssocItemKind, ItemKind> {
4296 Ok(match item_kind {
4297 ItemKind::Const(item) => AssocItemKind::Const(item),
4298 ItemKind::Fn(fn_kind) => AssocItemKind::Fn(fn_kind),
4299 ItemKind::TyAlias(ty_kind) => AssocItemKind::Type(ty_kind),
4300 ItemKind::MacCall(a) => AssocItemKind::MacCall(a),
4301 ItemKind::Delegation(d) => AssocItemKind::Delegation(d),
4302 ItemKind::DelegationMac(d) => AssocItemKind::DelegationMac(d),
4303 _ => return Err(item_kind),
4304 })
4305 }
4306}
4307
4308#[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)]
4310pub enum ForeignItemKind {
4311 Static(Box<StaticItem>),
4313 Fn(Box<Fn>),
4315 TyAlias(Box<TyAlias>),
4317 MacCall(Box<MacCall>),
4319}
4320
4321impl ForeignItemKind {
4322 pub fn ident(&self) -> Option<Ident> {
4323 match *self {
4324 ForeignItemKind::Static(StaticItem { ident, .. })
4325 | ForeignItemKind::Fn(Fn { ident, .. })
4326 | ForeignItemKind::TyAlias(TyAlias { ident, .. }) => Some(ident),
4327
4328 ForeignItemKind::MacCall(_) => None,
4329 }
4330 }
4331}
4332
4333impl From<ForeignItemKind> for ItemKind {
4334 fn from(foreign_item_kind: ForeignItemKind) -> ItemKind {
4335 match foreign_item_kind {
4336 ForeignItemKind::Static(static_foreign_item) => ItemKind::Static(static_foreign_item),
4337 ForeignItemKind::Fn(fn_kind) => ItemKind::Fn(fn_kind),
4338 ForeignItemKind::TyAlias(ty_alias_kind) => ItemKind::TyAlias(ty_alias_kind),
4339 ForeignItemKind::MacCall(a) => ItemKind::MacCall(a),
4340 }
4341 }
4342}
4343
4344impl TryFrom<ItemKind> for ForeignItemKind {
4345 type Error = ItemKind;
4346
4347 fn try_from(item_kind: ItemKind) -> Result<ForeignItemKind, ItemKind> {
4348 Ok(match item_kind {
4349 ItemKind::Static(static_item) => ForeignItemKind::Static(static_item),
4350 ItemKind::Fn(fn_kind) => ForeignItemKind::Fn(fn_kind),
4351 ItemKind::TyAlias(ty_alias_kind) => ForeignItemKind::TyAlias(ty_alias_kind),
4352 ItemKind::MacCall(a) => ForeignItemKind::MacCall(a),
4353 _ => return Err(item_kind),
4354 })
4355 }
4356}
4357
4358pub type ForeignItem = Item<ForeignItemKind>;
4359
4360#[derive(#[automatically_derived]
impl ::core::fmt::Debug for AstOwner {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AstOwner::NonOwner =>
::core::fmt::Formatter::write_str(f, "NonOwner"),
AstOwner::NestedUseTree(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"NestedUseTree", &__self_0),
AstOwner::Crate(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Crate",
&__self_0),
AstOwner::Item(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Item",
&__self_0),
AstOwner::TraitItem(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TraitItem", &__self_0),
AstOwner::ImplItem(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ImplItem", &__self_0),
AstOwner::ForeignItem(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ForeignItem", &__self_0),
}
}
}Debug)]
4364pub enum AstOwner {
4365 NonOwner,
4367 NestedUseTree(LocalDefId),
4370 Crate(Box<Crate>),
4371 Item(Box<Item>),
4372 TraitItem(Box<AssocItem>),
4373 ImplItem(Box<AssocItem>),
4374 ForeignItem(Box<ForeignItem>),
4375}
4376
4377#[cfg(target_pointer_width = "64")]
4379mod size_asserts {
4380 use rustc_data_structures::static_assert_size;
4381
4382 use super::*;
4383 const _: [(); 72] = [(); ::std::mem::size_of::<AssocItem>()];static_assert_size!(AssocItem, 72);
4385 const _: [(); 16] = [(); ::std::mem::size_of::<AssocItemKind>()];static_assert_size!(AssocItemKind, 16);
4386 const _: [(); 16] = [(); ::std::mem::size_of::<AttrKind>()];static_assert_size!(AttrKind, 16);
4387 const _: [(); 32] = [(); ::std::mem::size_of::<Attribute>()];static_assert_size!(Attribute, 32);
4388 const _: [(); 24] = [(); ::std::mem::size_of::<Block>()];static_assert_size!(Block, 24);
4389 const _: [(); 64] = [(); ::std::mem::size_of::<Expr>()];static_assert_size!(Expr, 64);
4390 const _: [(); 32] = [(); ::std::mem::size_of::<ExprKind>()];static_assert_size!(ExprKind, 32);
4391 const _: [(); 192] = [(); ::std::mem::size_of::<Fn>()];static_assert_size!(Fn, 192);
4392 const _: [(); 24] = [(); ::std::mem::size_of::<FnDecl>()];static_assert_size!(FnDecl, 24);
4393 const _: [(); 76] = [(); ::std::mem::size_of::<FnHeader>()];static_assert_size!(FnHeader, 76);
4394 const _: [(); 96] = [(); ::std::mem::size_of::<FnSig>()];static_assert_size!(FnSig, 96);
4395 const _: [(); 72] = [(); ::std::mem::size_of::<ForeignItem>()];static_assert_size!(ForeignItem, 72);
4396 const _: [(); 16] = [(); ::std::mem::size_of::<ForeignItemKind>()];static_assert_size!(ForeignItemKind, 16);
4397 const _: [(); 24] = [(); ::std::mem::size_of::<GenericArg>()];static_assert_size!(GenericArg, 24);
4398 const _: [(); 40] = [(); ::std::mem::size_of::<GenericArgs>()];static_assert_size!(GenericArgs, 40);
4399 const _: [(); 80] = [(); ::std::mem::size_of::<GenericBound>()];static_assert_size!(GenericBound, 80);
4400 const _: [(); 80] = [(); ::std::mem::size_of::<GenericParam>()];static_assert_size!(GenericParam, 80);
4401 const _: [(); 40] = [(); ::std::mem::size_of::<Generics>()];static_assert_size!(Generics, 40);
4402 const _: [(); 80] = [(); ::std::mem::size_of::<Impl>()];static_assert_size!(Impl, 80);
4403 const _: [(); 144] = [(); ::std::mem::size_of::<Item>()];static_assert_size!(Item, 144);
4404 const _: [(); 88] = [(); ::std::mem::size_of::<ItemKind>()];static_assert_size!(ItemKind, 88);
4405 const _: [(); 16] = [(); ::std::mem::size_of::<Lifetime>()];static_assert_size!(Lifetime, 16);
4406 const _: [(); 24] = [(); ::std::mem::size_of::<LitKind>()];static_assert_size!(LitKind, 24);
4407 const _: [(); 96] = [(); ::std::mem::size_of::<Local>()];static_assert_size!(Local, 96);
4408 const _: [(); 80] = [(); ::std::mem::size_of::<MetaItem>()];static_assert_size!(MetaItem, 80);
4409 const _: [(); 40] = [(); ::std::mem::size_of::<MetaItemKind>()];static_assert_size!(MetaItemKind, 40);
4410 const _: [(); 40] = [(); ::std::mem::size_of::<MetaItemLit>()];static_assert_size!(MetaItemLit, 40);
4411 const _: [(); 80] = [(); ::std::mem::size_of::<NormalAttr>()];static_assert_size!(NormalAttr, 80);
4412 const _: [(); 40] = [(); ::std::mem::size_of::<Param>()];static_assert_size!(Param, 40);
4413 const _: [(); 64] = [(); ::std::mem::size_of::<Pat>()];static_assert_size!(Pat, 64);
4414 const _: [(); 48] = [(); ::std::mem::size_of::<PatKind>()];static_assert_size!(PatKind, 48);
4415 const _: [(); 16] = [(); ::std::mem::size_of::<Path>()];static_assert_size!(Path, 16);
4416 const _: [(); 24] = [(); ::std::mem::size_of::<PathSegment>()];static_assert_size!(PathSegment, 24);
4417 const _: [(); 24] = [(); ::std::mem::size_of::<QSelf>()];static_assert_size!(QSelf, 24);
4418 const _: [(); 32] = [(); ::std::mem::size_of::<Stmt>()];static_assert_size!(Stmt, 32);
4419 const _: [(); 16] = [(); ::std::mem::size_of::<StmtKind>()];static_assert_size!(StmtKind, 16);
4420 const _: [(); 64] = [(); ::std::mem::size_of::<TraitImplHeader>()];static_assert_size!(TraitImplHeader, 64);
4421 const _: [(); 56] = [(); ::std::mem::size_of::<Ty>()];static_assert_size!(Ty, 56);
4422 const _: [(); 40] = [(); ::std::mem::size_of::<TyKind>()];static_assert_size!(TyKind, 40);
4423 }