1use std::borrow::{Borrow, Cow};
22use std::{cmp, fmt};
23
24pub use GenericArgs::*;
25pub use UnsafeSource::*;
26pub use rustc_ast_ir::{FloatTy, IntTy, Movability, Mutability, Pinnedness, UintTy};
27use rustc_data_structures::packed::Pu128;
28use rustc_data_structures::stable_hash::{StableHash, StableHashCtxt, StableHasher};
29use rustc_data_structures::tagged_ptr::Tag;
30use rustc_macros::{Decodable, Encodable, StableHash, Walkable};
31pub use rustc_span::AttrId;
32use rustc_span::def_id::LocalDefId;
33use rustc_span::{
34 ByteSymbol, DUMMY_SP, ErrorGuaranteed, Ident, LocalExpnId, Span, Spanned, Symbol, kw, respan,
35 sym,
36};
37use thin_vec::{ThinVec, thin_vec};
38
39use crate::attr::data_structures::CfgEntry;
40pub use crate::format::*;
41use crate::token::{self, CommentKind, Delimiter};
42use crate::tokenstream::{DelimSpan, LazyAttrTokenStream, TokenStream};
43use crate::util::parser::{ExprPrecedence, Fixity};
44use crate::visit::{AssocCtxt, BoundKind, LifetimeCtxt};
45
46#[derive(#[automatically_derived]
impl ::core::clone::Clone for Label {
#[inline]
fn clone(&self) -> Label {
let _: ::core::clone::AssertParamIsClone<Ident>;
*self
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Label {
fn encode(&self, __encoder: &mut __E) {
let Label { ident: ref __binding_0 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Label {
fn decode(__decoder: &mut __D) -> Self {
Label {
ident: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::marker::Copy for Label { }Copy, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for Label {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
Label { ident: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, #[automatically_derived]
impl ::core::cmp::Eq for Label {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for Label {
#[inline]
fn eq(&self, other: &Label) -> bool { self.ident == other.ident }
}PartialEq, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Label where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Label { ident: ref __binding_0 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Label where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Label { ident: ref mut __binding_0 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
57pub struct Label {
58 pub ident: Ident,
59}
60
61impl fmt::Debug for Label {
62 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
63 f.write_fmt(format_args!("label({0:?})", self.ident))write!(f, "label({:?})", self.ident)
64 }
65}
66
67#[derive(#[automatically_derived]
impl ::core::clone::Clone for Lifetime {
#[inline]
fn clone(&self) -> Lifetime {
let _: ::core::clone::AssertParamIsClone<NodeId>;
let _: ::core::clone::AssertParamIsClone<Ident>;
*self
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Lifetime {
fn encode(&self, __encoder: &mut __E) {
let Lifetime { id: ref __binding_0, ident: ref __binding_1 } =
*self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Lifetime {
fn decode(__decoder: &mut __D) -> Self {
Lifetime {
id: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::marker::Copy for Lifetime { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for Lifetime {
#[inline]
fn eq(&self, other: &Lifetime) -> bool {
self.id == other.id && self.ident == other.ident
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for Lifetime {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<NodeId>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for Lifetime {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.id, state);
::core::hash::Hash::hash(&self.ident, state)
}
}Hash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Lifetime
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Lifetime { id: ref __binding_0, ident: ref __binding_1 } =>
{
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Lifetime where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Lifetime {
id: ref mut __binding_0, ident: ref mut __binding_1 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
70pub struct Lifetime {
71 pub id: NodeId,
72 pub ident: Ident,
73}
74
75impl fmt::Debug for Lifetime {
76 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
77 f.write_fmt(format_args!("lifetime({0}: {1})", self.id, self))write!(f, "lifetime({}: {})", self.id, self)
78 }
79}
80
81impl fmt::Display for Lifetime {
82 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
83 f.write_fmt(format_args!("{0}", self.ident.name))write!(f, "{}", self.ident.name)
84 }
85}
86
87#[derive(#[automatically_derived]
impl ::core::clone::Clone for Path {
#[inline]
fn clone(&self) -> Path {
Path {
span: ::core::clone::Clone::clone(&self.span),
segments: ::core::clone::Clone::clone(&self.segments),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Path {
fn encode(&self, __encoder: &mut __E) {
let Path { span: ref __binding_0, segments: ref __binding_1
} = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for Path {
fn decode(__decoder: &mut __D) -> Self {
Path {
span: ::rustc_serialize::Decodable::decode(__decoder),
segments: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for Path {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Path", "span",
&self.span, "segments", &&self.segments)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for Path where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
Path { span: ref __binding_0, segments: ref __binding_1 } =>
{
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for Path where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
Path {
span: ref mut __binding_0, segments: ref mut __binding_1 }
=> {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
94pub struct Path {
95 pub span: Span,
96 pub segments: ThinVec<PathSegment>,
99}
100
101impl PartialEq<Symbol> for Path {
103 #[inline]
104 fn eq(&self, name: &Symbol) -> bool {
105 if let [segment] = self.segments.as_ref()
106 && segment == name
107 {
108 true
109 } else {
110 false
111 }
112 }
113}
114
115impl PartialEq<&[Symbol]> for Path {
117 #[inline]
118 fn eq(&self, names: &&[Symbol]) -> bool {
119 self.segments.iter().eq(*names)
120 }
121}
122
123impl StableHash for Path {
124 fn stable_hash<Hcx: StableHashCtxt>(&self, hcx: &mut Hcx, hasher: &mut StableHasher) {
125 self.segments.len().stable_hash(hcx, hasher);
126 for segment in &self.segments {
127 segment.ident.stable_hash(hcx, hasher);
128 }
129 }
130}
131
132impl Path {
133 pub fn from_ident(ident: Ident) -> Path {
136 Path { segments: {
let len = [()].len();
let mut vec = ::thin_vec::ThinVec::with_capacity(len);
vec.push(PathSegment::from_ident(ident));
vec
}thin_vec![PathSegment::from_ident(ident)], span: ident.span }
137 }
138
139 pub fn is_global(&self) -> bool {
140 self.segments.first().is_some_and(|segment| segment.ident.name == kw::PathRoot)
141 }
142
143 pub fn is_single_argless_ident(&self) -> bool {
146 self.segments.len() == 1 && self.segments[0].args.is_none()
147 }
148
149 pub fn as_single_argless_ident(&self) -> Option<Ident> {
151 self.is_single_argless_ident().then(|| self.segments[0].ident)
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) {
let PathSegment {
ident: ref __binding_0,
id: ref __binding_1,
args: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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) {
let AngleBracketedArgs {
span: ref __binding_0, args: ref __binding_1 } = *self;
::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) {
let ParenthesizedArgs {
span: ref __binding_0,
inputs: ref __binding_1,
inputs_span: ref __binding_2,
output: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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<Param>,
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.ty)))
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) {
let TraitBoundModifiers {
constness: ref __binding_0,
asyncness: ref __binding_1,
polarity: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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) {
let 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 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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) {
let Generics {
params: ref __binding_0,
where_clause: ref __binding_1,
span: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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) {
let WhereClause {
has_where_token: ref __binding_0,
predicates: ref __binding_1,
span: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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) {
let WherePredicate {
attrs: ref __binding_0,
kind: ref __binding_1,
id: ref __binding_2,
span: ref __binding_3,
is_placeholder: ref __binding_4 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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) {
let WhereBoundPredicate {
bound_generic_params: ref __binding_0,
bounded_ty: ref __binding_1,
bounds: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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) {
let WhereRegionPredicate {
lifetime: ref __binding_0, bounds: ref __binding_1 } =
*self;
::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) {
let WhereEqPredicate {
lhs_ty: ref __binding_0, rhs_ty: ref __binding_1 } = *self;
::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) {
let Crate {
id: ref __binding_0,
attrs: ref __binding_1,
items: ref __binding_2,
spans: ref __binding_3,
is_placeholder: ref __binding_4 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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) {
let MetaItem {
unsafety: ref __binding_0,
path: ref __binding_1,
kind: ref __binding_2,
span: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
568pub struct MetaItem {
569 pub unsafety: Safety,
570 pub path: Path,
571 pub kind: MetaItemKind,
572 pub span: Span,
573}
574
575#[derive(#[automatically_derived]
impl ::core::clone::Clone for MetaItemKind {
#[inline]
fn clone(&self) -> MetaItemKind {
match self {
MetaItemKind::Word => MetaItemKind::Word,
MetaItemKind::List(__self_0) =>
MetaItemKind::List(::core::clone::Clone::clone(__self_0)),
MetaItemKind::NameValue(__self_0) =>
MetaItemKind::NameValue(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MetaItemKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MetaItemKind::Word => { 0usize }
MetaItemKind::List(ref __binding_0) => { 1usize }
MetaItemKind::NameValue(ref __binding_0) => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MetaItemKind::Word => {}
MetaItemKind::List(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
MetaItemKind::NameValue(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MetaItemKind {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { MetaItemKind::Word }
1usize => {
MetaItemKind::List(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => {
MetaItemKind::NameValue(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MetaItemKind`, expected 0..3, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MetaItemKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
MetaItemKind::Word =>
::core::fmt::Formatter::write_str(f, "Word"),
MetaItemKind::List(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "List",
&__self_0),
MetaItemKind::NameValue(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"NameValue", &__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_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)]
577pub enum MetaItemKind {
578 Word,
582
583 List(ThinVec<MetaItemInner>),
587
588 NameValue(MetaItemLit),
592}
593
594#[derive(#[automatically_derived]
impl ::core::clone::Clone for MetaItemInner {
#[inline]
fn clone(&self) -> MetaItemInner {
match self {
MetaItemInner::MetaItem(__self_0) =>
MetaItemInner::MetaItem(::core::clone::Clone::clone(__self_0)),
MetaItemInner::Lit(__self_0) =>
MetaItemInner::Lit(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MetaItemInner {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
MetaItemInner::MetaItem(ref __binding_0) => { 0usize }
MetaItemInner::Lit(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
MetaItemInner::MetaItem(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
MetaItemInner::Lit(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MetaItemInner {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
MetaItemInner::MetaItem(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
MetaItemInner::Lit(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `MetaItemInner`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MetaItemInner {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
MetaItemInner::MetaItem(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MetaItem", &__self_0),
MetaItemInner::Lit(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Lit",
&__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_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)]
598pub enum MetaItemInner {
599 MetaItem(MetaItem),
601
602 Lit(MetaItemLit),
606}
607
608#[derive(#[automatically_derived]
impl ::core::clone::Clone for Block {
#[inline]
fn clone(&self) -> Block {
Block {
stmts: ::core::clone::Clone::clone(&self.stmts),
id: ::core::clone::Clone::clone(&self.id),
rules: ::core::clone::Clone::clone(&self.rules),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Block {
fn encode(&self, __encoder: &mut __E) {
let Block {
stmts: ref __binding_0,
id: ref __binding_1,
rules: ref __binding_2,
span: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
612pub struct Block {
613 pub stmts: ThinVec<Stmt>,
615 pub id: NodeId,
616 pub rules: BlockCheckMode,
618 pub span: Span,
619}
620
621#[derive(#[automatically_derived]
impl ::core::clone::Clone for Pat {
#[inline]
fn clone(&self) -> Pat {
Pat {
id: ::core::clone::Clone::clone(&self.id),
kind: ::core::clone::Clone::clone(&self.kind),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Pat {
fn encode(&self, __encoder: &mut __E) {
let Pat {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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)]
625pub struct Pat {
626 pub id: NodeId,
627 pub kind: PatKind,
628 pub span: Span,
629}
630
631impl Pat {
632 pub fn to_ty(&self) -> Option<Box<Ty>> {
635 let kind = match &self.kind {
636 PatKind::Missing => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
637 PatKind::Wild => TyKind::Infer,
639 PatKind::Ident(BindingMode::NONE, ident, None) => {
641 TyKind::Path(None, Path::from_ident(*ident))
642 }
643 PatKind::Path(qself, path) => TyKind::Path(qself.clone(), path.clone()),
644 PatKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
645 PatKind::Ref(pat, pinned, mutbl) => pat.to_ty().map(|ty| match pinned {
647 Pinnedness::Not => TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }),
648 Pinnedness::Pinned => TyKind::PinnedRef(None, MutTy { ty, mutbl: *mutbl }),
649 })?,
650 PatKind::Slice(pats) if let [pat] = pats.as_slice() => {
653 pat.to_ty().map(TyKind::Slice)?
654 }
655 PatKind::Tuple(pats) => {
658 let tys = pats.iter().map(|pat| pat.to_ty()).collect::<Option<ThinVec<_>>>()?;
659 TyKind::Tup(tys)
660 }
661 _ => return None,
662 };
663
664 Some(Box::new(Ty { kind, id: self.id, span: self.span }))
665 }
666
667 pub fn walk<'ast>(&'ast self, it: &mut impl FnMut(&'ast Pat) -> bool) {
671 if !it(self) {
672 return;
673 }
674
675 match &self.kind {
676 PatKind::Ident(_, _, Some(p)) => p.walk(it),
678
679 PatKind::Struct(_, _, fields, _) => fields.iter().for_each(|field| field.pat.walk(it)),
681
682 PatKind::TupleStruct(_, _, s)
684 | PatKind::Tuple(s)
685 | PatKind::Slice(s)
686 | PatKind::Or(s) => s.iter().for_each(|p| p.walk(it)),
687
688 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) {
let 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 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_6,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for PatField {
fn decode(__decoder: &mut __D) -> Self {
PatField {
ident: ::rustc_serialize::Decodable::decode(__decoder),
pat: ::rustc_serialize::Decodable::decode(__decoder),
is_shorthand: ::rustc_serialize::Decodable::decode(__decoder),
attrs: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for PatField {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["ident", "pat", "is_shorthand", "attrs", "id", "span",
"is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.ident, &self.pat, &self.is_shorthand, &self.attrs,
&self.id, &self.span, &&self.is_placeholder];
::core::fmt::Formatter::debug_struct_fields_finish(f, "PatField",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for PatField
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
PatField {
ident: ref __binding_0,
pat: ref __binding_1,
is_shorthand: ref __binding_2,
attrs: ref __binding_3,
id: ref __binding_4,
span: ref __binding_5,
is_placeholder: ref __binding_6 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for PatField where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
PatField {
ident: ref mut __binding_0,
pat: ref mut __binding_1,
is_shorthand: ref mut __binding_2,
attrs: ref mut __binding_3,
id: ref mut __binding_4,
span: ref mut __binding_5,
is_placeholder: ref mut __binding_6 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
}
}
}
}
};Walkable)]
779pub struct PatField {
780 pub ident: Ident,
782 pub pat: Box<Pat>,
784 pub is_shorthand: bool,
785 pub attrs: AttrVec,
786 pub id: NodeId,
787 pub span: Span,
788 pub is_placeholder: bool,
789}
790
791#[derive(#[automatically_derived]
impl ::core::clone::Clone for ByRef {
#[inline]
fn clone(&self) -> ByRef {
let _: ::core::clone::AssertParamIsClone<Pinnedness>;
let _: ::core::clone::AssertParamIsClone<Mutability>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ByRef { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for ByRef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ByRef::Yes(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Yes",
__self_0, &__self_1),
ByRef::No => ::core::fmt::Formatter::write_str(f, "No"),
}
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for ByRef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Pinnedness>;
let _: ::core::cmp::AssertParamIsEq<Mutability>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for ByRef {
#[inline]
fn eq(&self, other: &ByRef) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ByRef::Yes(__self_0, __self_1),
ByRef::Yes(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq)]
792#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for ByRef {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => { 0usize }
ByRef::No => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
ByRef::No => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for ByRef {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
ByRef::Yes(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { ByRef::No }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `ByRef`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for ByRef {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
ByRef::No => {}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for ByRef where
__V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
ByRef::Yes(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
ByRef::No => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for ByRef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
ByRef::Yes(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
ByRef::No => {}
}
}
}
};Walkable)]
793pub enum ByRef {
794 Yes(Pinnedness, Mutability),
795 No,
796}
797
798impl ByRef {
799 #[must_use]
800 pub fn cap_ref_mutability(mut self, mutbl: Mutability) -> Self {
801 if let ByRef::Yes(_, old_mutbl) = &mut self {
802 *old_mutbl = cmp::min(*old_mutbl, mutbl);
803 }
804 self
805 }
806}
807
808#[derive(#[automatically_derived]
impl ::core::clone::Clone for BindingMode {
#[inline]
fn clone(&self) -> BindingMode {
let _: ::core::clone::AssertParamIsClone<ByRef>;
let _: ::core::clone::AssertParamIsClone<Mutability>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for BindingMode { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for BindingMode {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field2_finish(f, "BindingMode",
&self.0, &&self.1)
}
}Debug, #[automatically_derived]
impl ::core::cmp::Eq for BindingMode {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ByRef>;
let _: ::core::cmp::AssertParamIsEq<Mutability>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialEq for BindingMode {
#[inline]
fn eq(&self, other: &BindingMode) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq)]
815#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BindingMode {
fn encode(&self, __encoder: &mut __E) {
let BindingMode(ref __binding_0, ref __binding_1) = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for BindingMode {
fn decode(__decoder: &mut __D) -> Self {
BindingMode(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for BindingMode
{
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
BindingMode(ref __binding_0, ref __binding_1) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
{ __binding_1.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for BindingMode
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
BindingMode(ref __binding_0, ref __binding_1) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for BindingMode where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
BindingMode(ref mut __binding_0, ref mut __binding_1) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
}
}
}
};Walkable)]
816pub struct BindingMode(pub ByRef, pub Mutability);
817
818impl BindingMode {
819 pub const NONE: Self = Self(ByRef::No, Mutability::Not);
820 pub const REF: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Not), Mutability::Not);
821 pub const REF_PIN: Self =
822 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Not), Mutability::Not);
823 pub const MUT: Self = Self(ByRef::No, Mutability::Mut);
824 pub const REF_MUT: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Mut), Mutability::Not);
825 pub const REF_PIN_MUT: Self =
826 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Mut), Mutability::Not);
827 pub const MUT_REF: Self = Self(ByRef::Yes(Pinnedness::Not, Mutability::Not), Mutability::Mut);
828 pub const MUT_REF_PIN: Self =
829 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Not), Mutability::Mut);
830 pub const MUT_REF_MUT: Self =
831 Self(ByRef::Yes(Pinnedness::Not, Mutability::Mut), Mutability::Mut);
832 pub const MUT_REF_PIN_MUT: Self =
833 Self(ByRef::Yes(Pinnedness::Pinned, Mutability::Mut), Mutability::Mut);
834
835 pub fn prefix_str(self) -> &'static str {
836 match self {
837 Self::NONE => "",
838 Self::REF => "ref ",
839 Self::REF_PIN => "ref pin const ",
840 Self::MUT => "mut ",
841 Self::REF_MUT => "ref mut ",
842 Self::REF_PIN_MUT => "ref pin mut ",
843 Self::MUT_REF => "mut ref ",
844 Self::MUT_REF_PIN => "mut ref pin ",
845 Self::MUT_REF_MUT => "mut ref mut ",
846 Self::MUT_REF_PIN_MUT => "mut ref pin mut ",
847 }
848 }
849}
850
851#[derive(#[automatically_derived]
impl ::core::clone::Clone for RangeEnd {
#[inline]
fn clone(&self) -> RangeEnd {
let _: ::core::clone::AssertParamIsClone<RangeSyntax>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for RangeEnd { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for RangeEnd {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RangeEnd::Included(ref __binding_0) => { 0usize }
RangeEnd::Excluded => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
RangeEnd::Included(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
RangeEnd::Excluded => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for RangeEnd {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
RangeEnd::Included(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => { RangeEnd::Excluded }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RangeEnd`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for RangeEnd {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
RangeEnd::Included(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Included", &__self_0),
RangeEnd::Excluded =>
::core::fmt::Formatter::write_str(f, "Excluded"),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for RangeEnd
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
RangeEnd::Included(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
RangeEnd::Excluded => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for RangeEnd where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
RangeEnd::Included(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
RangeEnd::Excluded => {}
}
}
}
};Walkable)]
852pub enum RangeEnd {
853 Included(RangeSyntax),
855 Excluded,
857}
858
859#[derive(#[automatically_derived]
impl ::core::clone::Clone for RangeSyntax {
#[inline]
fn clone(&self) -> RangeSyntax { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for RangeSyntax { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for RangeSyntax {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RangeSyntax::DotDotDot => { 0usize }
RangeSyntax::DotDotEq => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for RangeSyntax {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RangeSyntax::DotDotDot }
1usize => { RangeSyntax::DotDotEq }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RangeSyntax`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for RangeSyntax {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RangeSyntax::DotDotDot => "DotDotDot",
RangeSyntax::DotDotEq => "DotDotEq",
})
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for RangeSyntax
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
RangeSyntax::DotDotDot => {}
RangeSyntax::DotDotEq => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for RangeSyntax where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
RangeSyntax::DotDotDot => {}
RangeSyntax::DotDotEq => {}
}
}
}
};Walkable)]
860pub enum RangeSyntax {
861 DotDotDot,
863 DotDotEq,
865}
866
867#[derive(#[automatically_derived]
impl ::core::clone::Clone for PatKind {
#[inline]
fn clone(&self) -> PatKind {
match self {
PatKind::Missing => PatKind::Missing,
PatKind::Wild => PatKind::Wild,
PatKind::Ident(__self_0, __self_1, __self_2) =>
PatKind::Ident(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
PatKind::Struct(__self_0, __self_1, __self_2, __self_3) =>
PatKind::Struct(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2),
::core::clone::Clone::clone(__self_3)),
PatKind::TupleStruct(__self_0, __self_1, __self_2) =>
PatKind::TupleStruct(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
PatKind::Or(__self_0) =>
PatKind::Or(::core::clone::Clone::clone(__self_0)),
PatKind::Path(__self_0, __self_1) =>
PatKind::Path(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
PatKind::Tuple(__self_0) =>
PatKind::Tuple(::core::clone::Clone::clone(__self_0)),
PatKind::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::Deref(ref __binding_0) => { 8usize }
PatKind::Ref(ref __binding_0, ref __binding_1,
ref __binding_2) => {
9usize
}
PatKind::Expr(ref __binding_0) => { 10usize }
PatKind::Range(ref __binding_0, ref __binding_1,
ref __binding_2) => {
11usize
}
PatKind::Slice(ref __binding_0) => { 12usize }
PatKind::Rest => { 13usize }
PatKind::Never => { 14usize }
PatKind::Guard(ref __binding_0, ref __binding_1) => {
15usize
}
PatKind::Paren(ref __binding_0) => { 16usize }
PatKind::MacCall(ref __binding_0) => { 17usize }
PatKind::Err(ref __binding_0) => { 18usize }
};
::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::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::Deref(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => {
PatKind::Ref(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
10usize => {
PatKind::Expr(::rustc_serialize::Decodable::decode(__decoder))
}
11usize => {
PatKind::Range(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
12usize => {
PatKind::Slice(::rustc_serialize::Decodable::decode(__decoder))
}
13usize => { PatKind::Rest }
14usize => { PatKind::Never }
15usize => {
PatKind::Guard(::rustc_serialize::Decodable::decode(__decoder),
::rustc_serialize::Decodable::decode(__decoder))
}
16usize => {
PatKind::Paren(::rustc_serialize::Decodable::decode(__decoder))
}
17usize => {
PatKind::MacCall(::rustc_serialize::Decodable::decode(__decoder))
}
18usize => {
PatKind::Err(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `PatKind`, expected 0..19, 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::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::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::Deref(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Ref(ref mut __binding_0, ref mut __binding_1,
ref mut __binding_2) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
PatKind::Expr(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Range(ref mut __binding_0, ref mut __binding_1,
ref mut __binding_2) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
PatKind::Slice(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Rest => {}
PatKind::Never => {}
PatKind::Guard(ref mut __binding_0, ref mut __binding_1) =>
{
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
}
PatKind::Paren(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::MacCall(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
PatKind::Err(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
871pub enum PatKind {
872 Missing,
874
875 Wild,
877
878 Ident(BindingMode, Ident, Option<Box<Pat>>),
883
884 Struct(Option<Box<QSelf>>, Path, ThinVec<PatField>, PatFieldsRest),
886
887 TupleStruct(Option<Box<QSelf>>, Path, ThinVec<Pat>),
889
890 Or(ThinVec<Pat>),
893
894 Path(Option<Box<QSelf>>, Path),
899
900 Tuple(ThinVec<Pat>),
902
903 Deref(Box<Pat>),
905
906 Ref(Box<Pat>, Pinnedness, Mutability),
908
909 Expr(Box<Expr>),
911
912 Range(Option<Box<Expr>>, Option<Box<Expr>>, Spanned<RangeEnd>),
914
915 Slice(ThinVec<Pat>),
917
918 Rest,
931
932 Never,
934
935 Guard(Box<Pat>, Box<Guard>),
937
938 Paren(Box<Pat>),
940
941 MacCall(Box<MacCall>),
943
944 Err(ErrorGuaranteed),
946}
947
948#[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)]
950pub enum PatFieldsRest {
951 Rest(Span),
953 Recovered(ErrorGuaranteed),
955 None,
957}
958
959#[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)]
962#[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);
}
}
};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)]
963pub enum BorrowKind {
964 Ref,
968 Raw,
972 Pin,
976}
977
978#[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 {
static __NAMES: &str =
"AddSubMulDivRemAndOrBitXorBitAndBitOrShlShrEqLtLeNeGeGt";
static __OFFSET: [usize; 19] =
[0usize, 3usize, 6usize, 9usize, 12usize, 15usize, 18usize,
20usize, 26usize, 32usize, 37usize, 40usize, 43usize,
45usize, 47usize, 49usize, 51usize, 53usize, 55usize];
let __d = ::core::intrinsics::discriminant_value(self) as usize;
::core::fmt::Formatter::debug_c_like_enum_write_str(f, __NAMES,
&__OFFSET, __d)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for BinOpKind {
#[inline]
fn eq(&self, other: &BinOpKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for BinOpKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
BinOpKind::Add => { 0usize }
BinOpKind::Sub => { 1usize }
BinOpKind::Mul => { 2usize }
BinOpKind::Div => { 3usize }
BinOpKind::Rem => { 4usize }
BinOpKind::And => { 5usize }
BinOpKind::Or => { 6usize }
BinOpKind::BitXor => { 7usize }
BinOpKind::BitAnd => { 8usize }
BinOpKind::BitOr => { 9usize }
BinOpKind::Shl => { 10usize }
BinOpKind::Shr => { 11usize }
BinOpKind::Eq => { 12usize }
BinOpKind::Lt => { 13usize }
BinOpKind::Le => { 14usize }
BinOpKind::Ne => { 15usize }
BinOpKind::Ge => { 16usize }
BinOpKind::Gt => { 17usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};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)]
979pub enum BinOpKind {
980 Add,
982 Sub,
984 Mul,
986 Div,
988 Rem,
990 And,
992 Or,
994 BitXor,
996 BitAnd,
998 BitOr,
1000 Shl,
1002 Shr,
1004 Eq,
1006 Lt,
1008 Le,
1010 Ne,
1012 Ge,
1014 Gt,
1016}
1017
1018impl BinOpKind {
1019 pub fn as_str(&self) -> &'static str {
1020 use BinOpKind::*;
1021 match self {
1022 Add => "+",
1023 Sub => "-",
1024 Mul => "*",
1025 Div => "/",
1026 Rem => "%",
1027 And => "&&",
1028 Or => "||",
1029 BitXor => "^",
1030 BitAnd => "&",
1031 BitOr => "|",
1032 Shl => "<<",
1033 Shr => ">>",
1034 Eq => "==",
1035 Lt => "<",
1036 Le => "<=",
1037 Ne => "!=",
1038 Ge => ">=",
1039 Gt => ">",
1040 }
1041 }
1042
1043 pub fn is_lazy(&self) -> bool {
1044 #[allow(non_exhaustive_omitted_patterns)] match self {
BinOpKind::And | BinOpKind::Or => true,
_ => false,
}matches!(self, BinOpKind::And | BinOpKind::Or)
1045 }
1046
1047 pub fn precedence(&self) -> ExprPrecedence {
1048 use BinOpKind::*;
1049 match *self {
1050 Mul | Div | Rem => ExprPrecedence::Product,
1051 Add | Sub => ExprPrecedence::Sum,
1052 Shl | Shr => ExprPrecedence::Shift,
1053 BitAnd => ExprPrecedence::BitAnd,
1054 BitXor => ExprPrecedence::BitXor,
1055 BitOr => ExprPrecedence::BitOr,
1056 Lt | Gt | Le | Ge | Eq | Ne => ExprPrecedence::Compare,
1057 And => ExprPrecedence::LAnd,
1058 Or => ExprPrecedence::LOr,
1059 }
1060 }
1061
1062 pub fn fixity(&self) -> Fixity {
1063 use BinOpKind::*;
1064 match self {
1065 Eq | Ne | Lt | Le | Gt | Ge => Fixity::None,
1066 Add | Sub | Mul | Div | Rem | And | Or | BitXor | BitAnd | BitOr | Shl | Shr => {
1067 Fixity::Left
1068 }
1069 }
1070 }
1071
1072 pub fn is_comparison(self) -> bool {
1073 use BinOpKind::*;
1074 match self {
1075 Eq | Ne | Lt | Le | Gt | Ge => true,
1076 Add | Sub | Mul | Div | Rem | And | Or | BitXor | BitAnd | BitOr | Shl | Shr => false,
1077 }
1078 }
1079
1080 pub fn is_by_value(self) -> bool {
1082 !self.is_comparison()
1083 }
1084}
1085
1086pub type BinOp = Spanned<BinOpKind>;
1087
1088impl From<AssignOpKind> for BinOpKind {
1092 fn from(op: AssignOpKind) -> BinOpKind {
1093 match op {
1094 AssignOpKind::AddAssign => BinOpKind::Add,
1095 AssignOpKind::SubAssign => BinOpKind::Sub,
1096 AssignOpKind::MulAssign => BinOpKind::Mul,
1097 AssignOpKind::DivAssign => BinOpKind::Div,
1098 AssignOpKind::RemAssign => BinOpKind::Rem,
1099 AssignOpKind::BitXorAssign => BinOpKind::BitXor,
1100 AssignOpKind::BitAndAssign => BinOpKind::BitAnd,
1101 AssignOpKind::BitOrAssign => BinOpKind::BitOr,
1102 AssignOpKind::ShlAssign => BinOpKind::Shl,
1103 AssignOpKind::ShrAssign => BinOpKind::Shr,
1104 }
1105 }
1106}
1107
1108#[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 {
static __NAMES: &str =
"AddAssignSubAssignMulAssignDivAssignRemAssignBitXorAssignBitAndAssignBitOrAssignShlAssignShrAssign";
static __OFFSET: [usize; 11] =
[0usize, 9usize, 18usize, 27usize, 36usize, 45usize, 57usize,
69usize, 80usize, 89usize, 98usize];
let __d = ::core::intrinsics::discriminant_value(self) as usize;
::core::fmt::Formatter::debug_c_like_enum_write_str(f, __NAMES,
&__OFFSET, __d)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for AssignOpKind {
#[inline]
fn eq(&self, other: &AssignOpKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for AssignOpKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
AssignOpKind::AddAssign => { 0usize }
AssignOpKind::SubAssign => { 1usize }
AssignOpKind::MulAssign => { 2usize }
AssignOpKind::DivAssign => { 3usize }
AssignOpKind::RemAssign => { 4usize }
AssignOpKind::BitXorAssign => { 5usize }
AssignOpKind::BitAndAssign => { 6usize }
AssignOpKind::BitOrAssign => { 7usize }
AssignOpKind::ShlAssign => { 8usize }
AssignOpKind::ShrAssign => { 9usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};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)]
1109pub enum AssignOpKind {
1110 AddAssign,
1112 SubAssign,
1114 MulAssign,
1116 DivAssign,
1118 RemAssign,
1120 BitXorAssign,
1122 BitAndAssign,
1124 BitOrAssign,
1126 ShlAssign,
1128 ShrAssign,
1130}
1131
1132impl AssignOpKind {
1133 pub fn as_str(&self) -> &'static str {
1134 use AssignOpKind::*;
1135 match self {
1136 AddAssign => "+=",
1137 SubAssign => "-=",
1138 MulAssign => "*=",
1139 DivAssign => "/=",
1140 RemAssign => "%=",
1141 BitXorAssign => "^=",
1142 BitAndAssign => "&=",
1143 BitOrAssign => "|=",
1144 ShlAssign => "<<=",
1145 ShrAssign => ">>=",
1146 }
1147 }
1148
1149 pub fn is_by_value(self) -> bool {
1151 true
1152 }
1153}
1154
1155pub type AssignOp = Spanned<AssignOpKind>;
1156
1157#[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);
}
}
};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)]
1161pub enum UnOp {
1162 Deref,
1164 Not,
1166 Neg,
1168}
1169
1170impl UnOp {
1171 pub fn as_str(&self) -> &'static str {
1172 match self {
1173 UnOp::Deref => "*",
1174 UnOp::Not => "!",
1175 UnOp::Neg => "-",
1176 }
1177 }
1178
1179 pub fn is_by_value(self) -> bool {
1181 #[allow(non_exhaustive_omitted_patterns)] match self {
Self::Neg | Self::Not => true,
_ => false,
}matches!(self, Self::Neg | Self::Not)
1182 }
1183}
1184
1185#[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) {
let Stmt {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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) {
let MacCallStmt {
mac: ref __binding_0,
style: ref __binding_1,
attrs: ref __binding_2,
tokens: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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);
}
}
};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) {
let 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 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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) {
let 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 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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) {
let 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 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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);
}
}
};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) {
let AnonConst { id: ref __binding_0, value: ref __binding_1
} = *self;
::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)]
1386pub struct AnonConst {
1387 pub id: NodeId,
1388 pub value: Box<Expr>,
1389}
1390
1391#[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) {
let Expr {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2,
attrs: ref __binding_3,
tokens: ref __binding_4 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
1393pub struct Expr {
1394 pub id: NodeId,
1395 pub kind: ExprKind,
1396 pub span: Span,
1397 pub attrs: AttrVec,
1398 pub tokens: Option<LazyAttrTokenStream>,
1399}
1400
1401impl Expr {
1402 pub fn is_potential_trivial_const_arg(&self) -> bool {
1414 let this = self.maybe_unwrap_block();
1415 if let ExprKind::Path(None, path) = &this.kind
1416 && path.is_single_argless_ident()
1417 {
1418 true
1419 } else {
1420 false
1421 }
1422 }
1423
1424 pub fn maybe_unwrap_block(&self) -> &Expr {
1426 if let ExprKind::Block(block, None) = &self.kind
1427 && let [stmt] = block.stmts.as_slice()
1428 && let StmtKind::Expr(expr) = &stmt.kind
1429 {
1430 expr
1431 } else {
1432 self
1433 }
1434 }
1435
1436 pub fn optionally_braced_mac_call(
1442 &self,
1443 already_stripped_block: bool,
1444 ) -> Option<(bool, NodeId)> {
1445 match &self.kind {
1446 ExprKind::Block(block, None)
1447 if let [stmt] = &*block.stmts
1448 && !already_stripped_block =>
1449 {
1450 match &stmt.kind {
1451 StmtKind::MacCall(_) => Some((true, stmt.id)),
1452 StmtKind::Expr(expr) if let ExprKind::MacCall(_) = &expr.kind => {
1453 Some((true, expr.id))
1454 }
1455 _ => None,
1456 }
1457 }
1458 ExprKind::MacCall(_) => Some((already_stripped_block, self.id)),
1459 _ => None,
1460 }
1461 }
1462
1463 pub fn to_bound(&self) -> Option<GenericBound> {
1464 match &self.kind {
1465 ExprKind::Path(None, path) => Some(GenericBound::Trait(PolyTraitRef::new(
1466 ThinVec::new(),
1467 path.clone(),
1468 TraitBoundModifiers::NONE,
1469 self.span,
1470 Parens::No,
1471 ))),
1472 _ => None,
1473 }
1474 }
1475
1476 pub fn peel_parens(&self) -> &Expr {
1477 let mut expr = self;
1478 while let ExprKind::Paren(inner) = &expr.kind {
1479 expr = inner;
1480 }
1481 expr
1482 }
1483
1484 pub fn peel_parens_and_refs(&self) -> &Expr {
1485 let mut expr = self;
1486 while let ExprKind::Paren(inner) | ExprKind::AddrOf(BorrowKind::Ref, _, inner) = &expr.kind
1487 {
1488 expr = inner;
1489 }
1490 expr
1491 }
1492
1493 pub fn to_ty(&self) -> Option<Box<Ty>> {
1495 let kind = match &self.kind {
1496 ExprKind::Path(qself, path) => TyKind::Path(qself.clone(), path.clone()),
1498 ExprKind::MacCall(mac) => TyKind::MacCall(mac.clone()),
1499
1500 ExprKind::Paren(expr) => expr.to_ty().map(TyKind::Paren)?,
1501
1502 ExprKind::AddrOf(BorrowKind::Ref, mutbl, expr) => {
1503 expr.to_ty().map(|ty| TyKind::Ref(None, MutTy { ty, mutbl: *mutbl }))?
1504 }
1505
1506 ExprKind::Repeat(expr, expr_len) => {
1507 expr.to_ty().map(|ty| TyKind::Array(ty, expr_len.clone()))?
1508 }
1509
1510 ExprKind::Array(exprs) if let [expr] = exprs.as_slice() => {
1511 expr.to_ty().map(TyKind::Slice)?
1512 }
1513
1514 ExprKind::Tup(exprs) => {
1515 let tys = exprs.iter().map(|expr| expr.to_ty()).collect::<Option<ThinVec<_>>>()?;
1516 TyKind::Tup(tys)
1517 }
1518
1519 ExprKind::Binary(binop, lhs, rhs) if binop.node == BinOpKind::Add => {
1523 let (Some(lhs), Some(rhs)) = (lhs.to_bound(), rhs.to_bound()) else {
1524 return None;
1525 };
1526 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)
1527 }
1528
1529 ExprKind::Underscore => TyKind::Infer,
1530
1531 _ => return None,
1533 };
1534
1535 Some(Box::new(Ty { kind, id: self.id, span: self.span }))
1536 }
1537
1538 pub fn precedence(&self) -> ExprPrecedence {
1539 fn prefix_attrs_precedence(attrs: &AttrVec) -> ExprPrecedence {
1540 for attr in attrs {
1541 if let AttrStyle::Outer = attr.style {
1542 return ExprPrecedence::Prefix;
1543 }
1544 }
1545 ExprPrecedence::Unambiguous
1546 }
1547
1548 match &self.kind {
1549 ExprKind::Closure(closure) => match closure.fn_decl.output {
1550 FnRetTy::Default(_) => ExprPrecedence::Jump,
1551 FnRetTy::Ty(_) => prefix_attrs_precedence(&self.attrs),
1552 },
1553
1554 ExprKind::Break(_ , value)
1555 | ExprKind::Ret(value)
1556 | ExprKind::Yield(YieldKind::Prefix(value))
1557 | ExprKind::Yeet(value) => match value {
1558 Some(_) => ExprPrecedence::Jump,
1559 None => prefix_attrs_precedence(&self.attrs),
1560 },
1561
1562 ExprKind::Become(_) => ExprPrecedence::Jump,
1563
1564 ExprKind::Range(..) => ExprPrecedence::Range,
1569
1570 ExprKind::Binary(op, ..) => op.node.precedence(),
1572 ExprKind::Cast(..) => ExprPrecedence::Cast,
1573
1574 ExprKind::Assign(..) | ExprKind::AssignOp(..) => ExprPrecedence::Assign,
1575
1576 ExprKind::AddrOf(..) => ExprPrecedence::Prefix,
1578
1579 ExprKind::Let(..) | ExprKind::Move(..) | ExprKind::Unary(..) => ExprPrecedence::Prefix,
1584
1585 ExprKind::Array(_)
1587 | ExprKind::Await(..)
1588 | ExprKind::Use(..)
1589 | ExprKind::Block(..)
1590 | ExprKind::Call(..)
1591 | ExprKind::ConstBlock(_)
1592 | ExprKind::Continue(..)
1593 | ExprKind::Field(..)
1594 | ExprKind::ForLoop { .. }
1595 | ExprKind::FormatArgs(..)
1596 | ExprKind::Gen(..)
1597 | ExprKind::If(..)
1598 | ExprKind::IncludedBytes(..)
1599 | ExprKind::Index(..)
1600 | ExprKind::InlineAsm(..)
1601 | ExprKind::Lit(_)
1602 | ExprKind::Loop(..)
1603 | ExprKind::MacCall(..)
1604 | ExprKind::Match(..)
1605 | ExprKind::MethodCall(..)
1606 | ExprKind::OffsetOf(..)
1607 | ExprKind::Paren(..)
1608 | ExprKind::Path(..)
1609 | ExprKind::Repeat(..)
1610 | ExprKind::Struct(..)
1611 | ExprKind::Try(..)
1612 | ExprKind::TryBlock(..)
1613 | ExprKind::Tup(_)
1614 | ExprKind::Type(..)
1615 | ExprKind::Underscore
1616 | ExprKind::UnsafeBinderCast(..)
1617 | ExprKind::While(..)
1618 | ExprKind::Yield(YieldKind::Postfix(..))
1619 | ExprKind::DirectConstArg(..)
1620 | ExprKind::Err(_)
1621 | ExprKind::Dummy => prefix_attrs_precedence(&self.attrs),
1622 }
1623 }
1624
1625 pub fn is_approximately_pattern(&self) -> bool {
1627 #[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!(
1628 &self.peel_parens().kind,
1629 ExprKind::Array(_)
1630 | ExprKind::Call(_, _)
1631 | ExprKind::Tup(_)
1632 | ExprKind::Lit(_)
1633 | ExprKind::Range(_, _, _)
1634 | ExprKind::Underscore
1635 | ExprKind::Path(_, _)
1636 | ExprKind::Struct(_)
1637 )
1638 }
1639
1640 pub fn dummy() -> Expr {
1644 Expr {
1645 id: DUMMY_NODE_ID,
1646 kind: ExprKind::Dummy,
1647 span: DUMMY_SP,
1648 attrs: ThinVec::new(),
1649 tokens: None,
1650 }
1651 }
1652}
1653
1654impl From<Box<Expr>> for Expr {
1655 fn from(value: Box<Expr>) -> Self {
1656 *value
1657 }
1658}
1659
1660#[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) {
let ForLoop {
pat: ref __binding_0,
iter: ref __binding_1,
body: ref __binding_2,
label: ref __binding_3,
kind: ref __binding_4 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
1661pub struct ForLoop {
1662 pub pat: Box<Pat>,
1663 pub iter: Box<Expr>,
1664 pub body: Box<Block>,
1665 pub label: Option<Label>,
1666 pub kind: ForLoopKind,
1667}
1668
1669#[derive(#[automatically_derived]
impl ::core::clone::Clone for Closure {
#[inline]
fn clone(&self) -> Closure {
Closure {
binder: ::core::clone::Clone::clone(&self.binder),
capture_clause: ::core::clone::Clone::clone(&self.capture_clause),
constness: ::core::clone::Clone::clone(&self.constness),
coroutine_marker: ::core::clone::Clone::clone(&self.coroutine_marker),
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) {
let Closure {
binder: ref __binding_0,
capture_clause: ref __binding_1,
constness: ref __binding_2,
coroutine_marker: 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 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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_marker: ::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_marker",
"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_marker, &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_marker: 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_marker: ref mut __binding_3,
movability: ref mut __binding_4,
fn_decl: ref mut __binding_5,
body: ref mut __binding_6,
fn_decl_span: ref mut __binding_7,
fn_arg_span: ref mut __binding_8 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_7,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_8,
__visitor, ())
}
}
}
}
}
};Walkable)]
1670pub struct Closure {
1671 pub binder: ClosureBinder,
1672 pub capture_clause: CaptureBy,
1673 pub constness: Const,
1674 pub coroutine_marker: Option<CoroutineMarker>,
1675 pub movability: Movability,
1676 pub fn_decl: Box<FnDecl>,
1677 pub body: Box<Expr>,
1678 pub fn_decl_span: Span,
1680 pub fn_arg_span: Span,
1682}
1683
1684#[derive(#[automatically_derived]
impl ::core::marker::Copy for RangeLimits { }Copy, #[automatically_derived]
impl ::core::clone::Clone for RangeLimits {
#[inline]
fn clone(&self) -> RangeLimits { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for RangeLimits {
#[inline]
fn eq(&self, other: &RangeLimits) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for RangeLimits {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
RangeLimits::HalfOpen => { 0usize }
RangeLimits::Closed => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for RangeLimits {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { RangeLimits::HalfOpen }
1usize => { RangeLimits::Closed }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `RangeLimits`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for RangeLimits {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
RangeLimits::HalfOpen => "HalfOpen",
RangeLimits::Closed => "Closed",
})
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for RangeLimits
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
RangeLimits::HalfOpen => {}
RangeLimits::Closed => {}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for RangeLimits where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
RangeLimits::HalfOpen => {}
RangeLimits::Closed => {}
}
}
}
};Walkable)]
1686pub enum RangeLimits {
1687 HalfOpen,
1689 Closed,
1691}
1692
1693impl RangeLimits {
1694 pub fn as_str(&self) -> &'static str {
1695 match self {
1696 RangeLimits::HalfOpen => "..",
1697 RangeLimits::Closed => "..=",
1698 }
1699 }
1700}
1701
1702#[derive(#[automatically_derived]
impl ::core::clone::Clone for MethodCall {
#[inline]
fn clone(&self) -> MethodCall {
MethodCall {
seg: ::core::clone::Clone::clone(&self.seg),
receiver: ::core::clone::Clone::clone(&self.receiver),
args: ::core::clone::Clone::clone(&self.args),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for MethodCall {
fn encode(&self, __encoder: &mut __E) {
let MethodCall {
seg: ref __binding_0,
receiver: ref __binding_1,
args: ref __binding_2,
span: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for MethodCall {
fn decode(__decoder: &mut __D) -> Self {
MethodCall {
seg: ::rustc_serialize::Decodable::decode(__decoder),
receiver: ::rustc_serialize::Decodable::decode(__decoder),
args: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for MethodCall {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "MethodCall",
"seg", &self.seg, "receiver", &self.receiver, "args", &self.args,
"span", &&self.span)
}
}Debug)]
1704pub struct MethodCall {
1705 pub seg: PathSegment,
1707 pub receiver: Box<Expr>,
1709 pub args: ThinVec<Box<Expr>>,
1711 pub span: Span,
1714}
1715
1716#[derive(#[automatically_derived]
impl ::core::clone::Clone for StructRest {
#[inline]
fn clone(&self) -> StructRest {
match self {
StructRest::Base(__self_0) =>
StructRest::Base(::core::clone::Clone::clone(__self_0)),
StructRest::Rest(__self_0) =>
StructRest::Rest(::core::clone::Clone::clone(__self_0)),
StructRest::None => StructRest::None,
StructRest::NoneWithError(__self_0) =>
StructRest::NoneWithError(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for StructRest {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
StructRest::Base(ref __binding_0) => { 0usize }
StructRest::Rest(ref __binding_0) => { 1usize }
StructRest::None => { 2usize }
StructRest::NoneWithError(ref __binding_0) => { 3usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
StructRest::Base(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StructRest::Rest(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
StructRest::None => {}
StructRest::NoneWithError(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for StructRest {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
StructRest::Base(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
StructRest::Rest(::rustc_serialize::Decodable::decode(__decoder))
}
2usize => { StructRest::None }
3usize => {
StructRest::NoneWithError(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `StructRest`, expected 0..4, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for StructRest {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
StructRest::Base(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Base",
&__self_0),
StructRest::Rest(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Rest",
&__self_0),
StructRest::None => ::core::fmt::Formatter::write_str(f, "None"),
StructRest::NoneWithError(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"NoneWithError", &__self_0),
}
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for StructRest
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
StructRest::Base(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
StructRest::Rest(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
StructRest::None => {}
StructRest::NoneWithError(ref __binding_0) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for StructRest where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
StructRest::Base(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
StructRest::Rest(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
StructRest::None => {}
StructRest::NoneWithError(ref mut __binding_0) => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
}
}
}
}
};Walkable)]
1717pub enum StructRest {
1718 Base(Box<Expr>),
1720 Rest(Span),
1722 None,
1724 NoneWithError(ErrorGuaranteed),
1730}
1731
1732#[derive(#[automatically_derived]
impl ::core::clone::Clone for StructExpr {
#[inline]
fn clone(&self) -> StructExpr {
StructExpr {
qself: ::core::clone::Clone::clone(&self.qself),
path: ::core::clone::Clone::clone(&self.path),
fields: ::core::clone::Clone::clone(&self.fields),
rest: ::core::clone::Clone::clone(&self.rest),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for StructExpr {
fn encode(&self, __encoder: &mut __E) {
let StructExpr {
qself: ref __binding_0,
path: ref __binding_1,
fields: ref __binding_2,
rest: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for StructExpr {
fn decode(__decoder: &mut __D) -> Self {
StructExpr {
qself: ::rustc_serialize::Decodable::decode(__decoder),
path: ::rustc_serialize::Decodable::decode(__decoder),
fields: ::rustc_serialize::Decodable::decode(__decoder),
rest: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for StructExpr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "StructExpr",
"qself", &self.qself, "path", &self.path, "fields", &self.fields,
"rest", &&self.rest)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for StructExpr
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
StructExpr {
qself: ref __binding_0,
path: ref __binding_1,
fields: ref __binding_2,
rest: ref __binding_3 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for StructExpr where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
StructExpr {
qself: ref mut __binding_0,
path: ref mut __binding_1,
fields: ref mut __binding_2,
rest: ref mut __binding_3 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
}
}
}
}
};Walkable)]
1733pub struct StructExpr {
1734 pub qself: Option<Box<QSelf>>,
1735 pub path: Path,
1736 pub fields: ThinVec<ExprField>,
1737 pub rest: StructRest,
1738}
1739
1740#[derive(#[automatically_derived]
impl ::core::clone::Clone for ExprKind {
#[inline]
fn clone(&self) -> ExprKind {
match self {
ExprKind::Array(__self_0) =>
ExprKind::Array(::core::clone::Clone::clone(__self_0)),
ExprKind::ConstBlock(__self_0) =>
ExprKind::ConstBlock(::core::clone::Clone::clone(__self_0)),
ExprKind::Call(__self_0, __self_1) =>
ExprKind::Call(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::MethodCall(__self_0) =>
ExprKind::MethodCall(::core::clone::Clone::clone(__self_0)),
ExprKind::Tup(__self_0) =>
ExprKind::Tup(::core::clone::Clone::clone(__self_0)),
ExprKind::Binary(__self_0, __self_1, __self_2) =>
ExprKind::Binary(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::Unary(__self_0, __self_1) =>
ExprKind::Unary(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Move(__self_0, __self_1) =>
ExprKind::Move(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Lit(__self_0) =>
ExprKind::Lit(::core::clone::Clone::clone(__self_0)),
ExprKind::Cast(__self_0, __self_1) =>
ExprKind::Cast(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Type(__self_0, __self_1) =>
ExprKind::Type(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
ExprKind::Let(__self_0, __self_1, __self_2, __self_3) =>
ExprKind::Let(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2),
::core::clone::Clone::clone(__self_3)),
ExprKind::If(__self_0, __self_1, __self_2) =>
ExprKind::If(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::While(__self_0, __self_1, __self_2) =>
ExprKind::While(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1),
::core::clone::Clone::clone(__self_2)),
ExprKind::ForLoop(__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)]
1742pub enum ExprKind {
1743 Array(ThinVec<Box<Expr>>),
1745 ConstBlock(AnonConst),
1747 Call(Box<Expr>, ThinVec<Box<Expr>>),
1754 MethodCall(Box<MethodCall>),
1756 Tup(ThinVec<Box<Expr>>),
1758 Binary(BinOp, Box<Expr>, Box<Expr>),
1760 Unary(UnOp, Box<Expr>),
1762 Move(Box<Expr>, Span),
1764 Lit(token::Lit),
1766 Cast(Box<Expr>, Box<Ty>),
1768 Type(Box<Expr>, Box<Ty>),
1773 Let(Box<Pat>, Box<Expr>, Span, Recovered),
1778 If(Box<Expr>, Box<Block>, Option<Box<Expr>>),
1785 While(Box<Expr>, Box<Block>, Option<Label>),
1789 ForLoop(Box<ForLoop>),
1795 Loop(Box<Block>, Option<Label>, Span),
1799 Match(Box<Expr>, ThinVec<Arm>, MatchKind),
1801 Closure(Box<Closure>),
1803 Block(Box<Block>, Option<Label>),
1805 Gen(CaptureBy, Box<Block>, CoroutineKind, Span),
1811 Await(Box<Expr>, Span),
1813 Use(Box<Expr>, Span),
1815
1816 TryBlock(Box<Block>, Option<Box<Ty>>),
1824
1825 Assign(Box<Expr>, Box<Expr>, Span),
1828 AssignOp(AssignOp, Box<Expr>, Box<Expr>),
1832 Field(Box<Expr>, Ident),
1834 Index(Box<Expr>, Box<Expr>, Span),
1837 Range(Option<Box<Expr>>, Option<Box<Expr>>, RangeLimits),
1839 Underscore,
1841
1842 Path(Option<Box<QSelf>>, Path),
1847
1848 AddrOf(BorrowKind, Mutability, Box<Expr>),
1850 Break(Option<Label>, Option<Box<Expr>>),
1852 Continue(Option<Label>),
1854 Ret(Option<Box<Expr>>),
1856
1857 InlineAsm(Box<InlineAsm>),
1859
1860 OffsetOf(Box<Ty>, ThinVec<Ident>),
1865
1866 MacCall(Box<MacCall>),
1868
1869 Struct(Box<StructExpr>),
1873
1874 Repeat(Box<Expr>, AnonConst),
1879
1880 Paren(Box<Expr>),
1882
1883 Try(Box<Expr>),
1885
1886 Yield(YieldKind),
1888
1889 Yeet(Option<Box<Expr>>),
1892
1893 Become(Box<Expr>),
1897
1898 IncludedBytes(ByteSymbol),
1910
1911 FormatArgs(Box<FormatArgs>),
1913
1914 UnsafeBinderCast(UnsafeBinderCastKind, Box<Expr>, Option<Box<Ty>>),
1915
1916 DirectConstArg(Box<Expr>),
1918
1919 Err(ErrorGuaranteed),
1921
1922 Dummy,
1924}
1925
1926#[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);
}
}
};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)]
1928pub enum ForLoopKind {
1929 For,
1930 ForAwait,
1931}
1932
1933#[derive(#[automatically_derived]
impl ::core::clone::Clone for CoroutineKind {
#[inline]
fn clone(&self) -> CoroutineKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for CoroutineKind { }Copy, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for CoroutineKind {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
CoroutineKind::Async => { 0usize }
CoroutineKind::Gen => { 1usize }
CoroutineKind::AsyncGen => { 2usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
}
}
};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 }
1usize => { CoroutineKind::Gen }
2usize => { CoroutineKind::AsyncGen }
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 {
::core::fmt::Formatter::write_str(f,
match self {
CoroutineKind::Async => "Async",
CoroutineKind::Gen => "Gen",
CoroutineKind::AsyncGen => "AsyncGen",
})
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for CoroutineKind {
#[inline]
fn eq(&self, other: &CoroutineKind) -> 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 CoroutineKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, 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 => {}
CoroutineKind::Gen => {}
CoroutineKind::AsyncGen => {}
}
<__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 => {}
CoroutineKind::Gen => {}
CoroutineKind::AsyncGen => {}
}
}
}
};Walkable)]
1934pub enum CoroutineKind {
1935 Async,
1936 Gen,
1937 AsyncGen,
1938}
1939
1940impl fmt::Display for CoroutineKind {
1941 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1942 self.as_str().fmt(f)
1943 }
1944}
1945
1946impl CoroutineKind {
1947 pub fn is_gen(&self) -> bool {
1949 match self {
1950 CoroutineKind::Async => false,
1951 CoroutineKind::Gen | CoroutineKind::AsyncGen => true,
1952 }
1953 }
1954
1955 pub fn as_str(&self) -> &'static str {
1956 match self {
1957 CoroutineKind::Async => "async",
1958 CoroutineKind::Gen => "gen",
1959 CoroutineKind::AsyncGen => "async gen",
1960 }
1961 }
1962}
1963
1964#[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)]
1966#[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);
}
}
};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)]
1967pub enum UnsafeBinderCastKind {
1968 Wrap,
1970 Unwrap,
1972}
1973
1974#[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) {
let QSelf {
ty: ref __binding_0,
path_span: ref __binding_1,
position: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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)]
1990pub struct QSelf {
1991 pub ty: Box<Ty>,
1992
1993 pub path_span: Span,
1997 pub position: usize,
1998}
1999
2000#[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)]
2002pub enum CaptureBy {
2003 Value {
2005 move_kw: Span,
2007 },
2008 Ref,
2010 Use {
2016 use_kw: Span,
2018 },
2019}
2020
2021#[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)]
2023pub enum ClosureBinder {
2024 NotPresent,
2026 For {
2028 span: Span,
2035
2036 generic_params: ThinVec<GenericParam>,
2043 },
2044}
2045
2046#[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) {
let MacCall { path: ref __binding_0, args: ref __binding_1 } =
*self;
::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)]
2049pub struct MacCall {
2050 pub path: Path,
2051 pub args: Box<DelimArgs>,
2052}
2053
2054impl MacCall {
2055 pub fn span(&self) -> Span {
2056 self.path.span.to(self.args.dspan.entire())
2057 }
2058}
2059
2060#[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)]
2062pub enum AttrArgs {
2063 Empty,
2065 Delimited(DelimArgs),
2067 Eq {
2069 eq_span: Span,
2071 expr: Box<Expr>,
2072 },
2073}
2074
2075impl AttrArgs {
2076 pub fn span(&self) -> Option<Span> {
2077 match self {
2078 AttrArgs::Empty => None,
2079 AttrArgs::Delimited(args) => Some(args.dspan.entire()),
2080 AttrArgs::Eq { eq_span, expr } => Some(eq_span.to(expr.span)),
2081 }
2082 }
2083
2084 pub fn inner_tokens(&self) -> TokenStream {
2087 match self {
2088 AttrArgs::Empty => TokenStream::default(),
2089 AttrArgs::Delimited(args) => args.tokens.clone(),
2090 AttrArgs::Eq { expr, .. } => TokenStream::from_ast(expr),
2091 }
2092 }
2093}
2094
2095#[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) {
let DelimArgs {
dspan: ref __binding_0,
delim: ref __binding_1,
tokens: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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)]
2097pub struct DelimArgs {
2098 pub dspan: DelimSpan,
2099 pub delim: Delimiter, pub tokens: TokenStream,
2101}
2102
2103impl DelimArgs {
2104 pub fn need_semicolon(&self) -> bool {
2107 !#[allow(non_exhaustive_omitted_patterns)] match self {
DelimArgs { delim: Delimiter::Brace, .. } => true,
_ => false,
}matches!(self, DelimArgs { delim: Delimiter::Brace, .. })
2108 }
2109}
2110
2111#[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) {
let MacroDef {
body: ref __binding_0,
macro_rules: ref __binding_1,
eii_declaration: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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)]
2113pub struct MacroDef {
2114 pub body: Box<DelimArgs>,
2115 pub macro_rules: bool,
2117
2118 pub eii_declaration: Option<EiiDecl>,
2124}
2125
2126#[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) {
let EiiDecl {
foreign_item: ref __binding_0, impl_unsafe: ref __binding_1
} = *self;
::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)]
2127pub struct EiiDecl {
2128 pub foreign_item: Path,
2130 pub impl_unsafe: bool,
2131}
2132
2133#[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)]
2134#[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)]
2135pub enum StrStyle {
2136 Cooked,
2138 Raw(u8),
2142}
2143
2144#[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);
}
}
};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)]
2146pub enum MatchKind {
2147 Prefix,
2149 Postfix,
2151}
2152
2153#[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)]
2155pub enum YieldKind {
2156 Prefix(Option<Box<Expr>>),
2158 Postfix(Box<Expr>),
2160}
2161
2162impl YieldKind {
2163 pub const fn expr(&self) -> Option<&Box<Expr>> {
2167 match self {
2168 YieldKind::Prefix(expr) => expr.as_ref(),
2169 YieldKind::Postfix(expr) => Some(expr),
2170 }
2171 }
2172
2173 pub const fn expr_mut(&mut self) -> Option<&mut Box<Expr>> {
2175 match self {
2176 YieldKind::Prefix(expr) => expr.as_mut(),
2177 YieldKind::Postfix(expr) => Some(expr),
2178 }
2179 }
2180
2181 pub const fn same_kind(&self, other: &Self) -> bool {
2183 match (self, other) {
2184 (YieldKind::Prefix(_), YieldKind::Prefix(_)) => true,
2185 (YieldKind::Postfix(_), YieldKind::Postfix(_)) => true,
2186 _ => false,
2187 }
2188 }
2189}
2190
2191#[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) {
let MetaItemLit {
symbol: ref __binding_0,
suffix: ref __binding_1,
kind: ref __binding_2,
span: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
2193pub struct MetaItemLit {
2194 pub symbol: Symbol,
2196 pub suffix: Option<Symbol>,
2198 pub kind: LitKind,
2201 pub span: Span,
2202}
2203
2204#[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) {
let StrLit {
symbol: ref __binding_0,
suffix: ref __binding_1,
symbol_unescaped: ref __binding_2,
style: ref __binding_3,
span: ref __binding_4 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
2206pub struct StrLit {
2207 pub symbol: Symbol,
2209 pub suffix: Option<Symbol>,
2211 pub symbol_unescaped: Symbol,
2213 pub style: StrStyle,
2214 pub span: Span,
2215}
2216
2217impl StrLit {
2218 pub fn as_token_lit(&self) -> token::Lit {
2219 let token_kind = match self.style {
2220 StrStyle::Cooked => token::Str,
2221 StrStyle::Raw(n) => token::StrRaw(n),
2222 };
2223 token::Lit::new(token_kind, self.symbol, self.suffix)
2224 }
2225}
2226
2227#[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)]
2229#[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)]
2230pub enum LitIntType {
2231 Signed(IntTy),
2233 Unsigned(UintTy),
2235 Unsuffixed,
2237}
2238
2239#[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)]
2241#[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)]
2242pub enum LitFloatType {
2243 Suffixed(FloatTy),
2245 Unsuffixed,
2247}
2248
2249#[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)]
2256pub enum LitKind {
2257 Str(Symbol, StrStyle),
2260 ByteStr(ByteSymbol, StrStyle),
2263 CStr(ByteSymbol, StrStyle),
2267 Byte(u8),
2269 Char(char),
2271 Int(Pu128, LitIntType),
2273 Float(Symbol, LitFloatType),
2277 Bool(bool),
2279 Err(ErrorGuaranteed),
2281}
2282
2283impl LitKind {
2284 pub fn str(&self) -> Option<Symbol> {
2285 match *self {
2286 LitKind::Str(s, _) => Some(s),
2287 _ => None,
2288 }
2289 }
2290
2291 pub fn is_str(&self) -> bool {
2293 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::Str(..) => true,
_ => false,
}matches!(self, LitKind::Str(..))
2294 }
2295
2296 pub fn is_bytestr(&self) -> bool {
2298 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::ByteStr(..) => true,
_ => false,
}matches!(self, LitKind::ByteStr(..))
2299 }
2300
2301 pub fn is_numeric(&self) -> bool {
2303 #[allow(non_exhaustive_omitted_patterns)] match self {
LitKind::Int(..) | LitKind::Float(..) => true,
_ => false,
}matches!(self, LitKind::Int(..) | LitKind::Float(..))
2304 }
2305
2306 pub fn is_unsuffixed(&self) -> bool {
2309 !self.is_suffixed()
2310 }
2311
2312 pub fn is_suffixed(&self) -> bool {
2314 match *self {
2315 LitKind::Int(_, LitIntType::Signed(..) | LitIntType::Unsigned(..))
2317 | LitKind::Float(_, LitFloatType::Suffixed(..)) => true,
2318 LitKind::Str(..)
2320 | LitKind::ByteStr(..)
2321 | LitKind::CStr(..)
2322 | LitKind::Byte(..)
2323 | LitKind::Char(..)
2324 | LitKind::Int(_, LitIntType::Unsuffixed)
2325 | LitKind::Float(_, LitFloatType::Unsuffixed)
2326 | LitKind::Bool(..)
2327 | LitKind::Err(_) => false,
2328 }
2329 }
2330}
2331
2332#[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) {
let MutTy { ty: ref __binding_0, mutbl: ref __binding_1 } =
*self;
::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)]
2335pub struct MutTy {
2336 pub ty: Box<Ty>,
2337 pub mutbl: Mutability,
2338}
2339
2340#[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) {
let FnSig {
header: ref __binding_0,
decl: ref __binding_1,
span: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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)]
2343pub struct FnSig {
2344 pub header: FnHeader,
2345 pub decl: Box<FnDecl>,
2346 pub span: Span,
2347}
2348
2349impl FnSig {
2350 pub fn header_span(&self) -> Span {
2352 self.header.span().unwrap_or(self.span.shrink_to_lo())
2353 }
2354
2355 pub fn safety_span(&self) -> Span {
2357 match self.header.safety {
2358 Safety::Unsafe(span) | Safety::Safe(span) => span,
2359 Safety::Default => {
2360 if let Some(extern_span) = self.header.ext.span() {
2362 return extern_span.shrink_to_lo();
2363 }
2364
2365 self.header_span().shrink_to_hi()
2367 }
2368 }
2369 }
2370
2371 pub fn extern_span(&self) -> Span {
2373 self.header.ext.span().unwrap_or(self.safety_span().shrink_to_hi())
2374 }
2375
2376 pub fn as_borrowed(&self) -> BorrowedFnSig<'_> {
2377 BorrowedFnSig { header: self.header, decl: &self.decl, span: self.span }
2378 }
2379}
2380
2381#[derive(#[automatically_derived]
impl<'a> ::core::clone::Clone for BorrowedFnSig<'a> {
#[inline]
fn clone(&self) -> BorrowedFnSig<'a> {
BorrowedFnSig {
header: ::core::clone::Clone::clone(&self.header),
decl: ::core::clone::Clone::clone(&self.decl),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, #[automatically_derived]
impl<'a> ::core::fmt::Debug for BorrowedFnSig<'a> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "BorrowedFnSig",
"header", &self.header, "decl", &self.decl, "span", &&self.span)
}
}Debug)]
2384pub struct BorrowedFnSig<'a> {
2385 pub header: FnHeader,
2386 pub decl: &'a FnDecl,
2387 pub span: Span,
2388}
2389
2390#[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) {
let AssocItemConstraint {
id: ref __binding_0,
ident: ref __binding_1,
gen_args: ref __binding_2,
kind: ref __binding_3,
span: ref __binding_4 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
2401pub struct AssocItemConstraint {
2402 pub id: NodeId,
2403 pub ident: Ident,
2404 pub gen_args: Option<GenericArgs>,
2405 pub kind: AssocItemConstraintKind,
2406 pub span: Span,
2407}
2408
2409#[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)]
2410pub enum Term {
2411 Ty(Box<Ty>),
2412 Const(AnonConst),
2413}
2414
2415impl From<Box<Ty>> for Term {
2416 fn from(v: Box<Ty>) -> Self {
2417 Term::Ty(v)
2418 }
2419}
2420
2421impl From<AnonConst> for Term {
2422 fn from(v: AnonConst) -> Self {
2423 Term::Const(v)
2424 }
2425}
2426
2427#[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)]
2429pub enum AssocItemConstraintKind {
2430 Equality { term: Term },
2437 Bound {
2439 #[visitable(extra = BoundKind::Bound)]
2440 bounds: GenericBounds,
2441 },
2442}
2443
2444#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for Ty {
fn encode(&self, __encoder: &mut __E) {
let Ty {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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)]
2445pub struct Ty {
2446 pub id: NodeId,
2447 pub kind: TyKind,
2448 pub span: Span,
2449}
2450
2451impl Clone for Ty {
2452 fn clone(&self) -> Self {
2453 Self { id: self.id, kind: self.kind.clone(), span: self.span }
2454 }
2455}
2456
2457impl From<Box<Ty>> for Ty {
2458 fn from(value: Box<Ty>) -> Self {
2459 *value
2460 }
2461}
2462
2463impl Ty {
2464 pub fn peel_refs(&self) -> &Self {
2465 let mut final_ty = self;
2466 while let TyKind::Ref(_, MutTy { ty, .. }) | TyKind::Ptr(MutTy { ty, .. }) = &final_ty.kind
2467 {
2468 final_ty = ty;
2469 }
2470 final_ty
2471 }
2472
2473 pub fn is_maybe_parenthesised_infer(&self) -> bool {
2474 match &self.kind {
2475 TyKind::Infer => true,
2476 TyKind::Paren(inner) => inner.is_maybe_parenthesised_infer(),
2477 _ => false,
2478 }
2479 }
2480}
2481
2482#[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) {
let FnPtrTy {
safety: ref __binding_0,
ext: ref __binding_1,
generic_params: ref __binding_2,
decl: ref __binding_3,
decl_span: ref __binding_4 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
2483pub struct FnPtrTy {
2484 pub safety: Safety,
2485 pub ext: Extern,
2486 pub generic_params: ThinVec<GenericParam>,
2487 pub decl: Box<FnDecl>,
2488 pub decl_span: Span,
2491}
2492
2493impl FnPtrTy {
2494 pub fn header(&self) -> FnHeader {
2495 FnHeader {
2496 constness: Const::No,
2497 coroutine_marker: None,
2498 safety: self.safety,
2499 ext: self.ext,
2500 }
2501 }
2502
2503 pub fn as_borrowed_fn_sig<'a>(&'a self) -> BorrowedFnSig<'a> {
2504 BorrowedFnSig { header: self.header(), decl: &self.decl, span: self.decl_span }
2505 }
2506}
2507
2508#[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) {
let UnsafeBinderTy {
generic_params: ref __binding_0, inner_ty: ref __binding_1
} = *self;
::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)]
2509pub struct UnsafeBinderTy {
2510 pub generic_params: ThinVec<GenericParam>,
2511 pub inner_ty: Box<Ty>,
2512}
2513
2514#[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)]
2518pub enum TyKind {
2519 Slice(Box<Ty>),
2521 Array(Box<Ty>, AnonConst),
2523 Ptr(MutTy),
2525 Ref(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
2527 PinnedRef(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
2531 FnPtr(Box<FnPtrTy>),
2533 UnsafeBinder(Box<UnsafeBinderTy>),
2535 Never,
2537 Tup(ThinVec<Box<Ty>>),
2539 Path(Option<Box<QSelf>>, Path),
2544 TraitObject(#[visitable(extra = BoundKind::TraitObject)] GenericBounds, TraitObjectSyntax),
2547 ImplTrait(NodeId, #[visitable(extra = BoundKind::Impl)] GenericBounds),
2554 Paren(Box<Ty>),
2556 Infer,
2559 ImplicitSelf,
2561 MacCall(Box<MacCall>),
2563 CVarArgs,
2565 Pat(Box<Ty>, Box<TyPat>),
2568 FieldOf(Box<Ty>, Option<Ident>, Ident),
2573 View(Box<Ty>, #[visitable(ignore)] ThinVec<Ident>),
2575 DirectConstArg(Box<Expr>),
2577 Dummy,
2579 Err(ErrorGuaranteed),
2581}
2582
2583impl TyKind {
2584 pub fn is_implicit_self(&self) -> bool {
2585 #[allow(non_exhaustive_omitted_patterns)] match self {
TyKind::ImplicitSelf => true,
_ => false,
}matches!(self, TyKind::ImplicitSelf)
2586 }
2587
2588 pub fn is_unit(&self) -> bool {
2589 #[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())
2590 }
2591
2592 pub fn is_simple_path(&self) -> Option<Symbol> {
2593 if let TyKind::Path(None, Path { segments, .. }) = &self
2594 && let [segment] = &segments[..]
2595 && segment.args.is_none()
2596 {
2597 Some(segment.ident.name)
2598 } else {
2599 None
2600 }
2601 }
2602
2603 pub fn maybe_scalar(&self) -> bool {
2611 let Some(ty_sym) = self.is_simple_path() else {
2612 return self.is_unit();
2614 };
2615 #[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!(
2616 ty_sym,
2617 sym::i8
2618 | sym::i16
2619 | sym::i32
2620 | sym::i64
2621 | sym::i128
2622 | sym::u8
2623 | sym::u16
2624 | sym::u32
2625 | sym::u64
2626 | sym::u128
2627 | sym::f16
2628 | sym::f32
2629 | sym::f64
2630 | sym::f128
2631 | sym::char
2632 | sym::bool
2633 )
2634 }
2635}
2636
2637#[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) {
let TyPat {
id: ref __binding_0,
kind: ref __binding_1,
span: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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)]
2639pub struct TyPat {
2640 pub id: NodeId,
2641 pub kind: TyPatKind,
2642 pub span: Span,
2643}
2644
2645#[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)]
2649pub enum TyPatKind {
2650 Range(Option<Box<AnonConst>>, Option<Box<AnonConst>>, Spanned<RangeEnd>),
2652
2653 NotNull,
2655
2656 Or(ThinVec<TyPat>),
2657
2658 Err(ErrorGuaranteed),
2660}
2661
2662#[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);
}
}
};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)]
2664#[repr(u8)]
2665pub enum TraitObjectSyntax {
2666 Dyn = 0,
2668 None = 1,
2669}
2670
2671unsafe impl Tag for TraitObjectSyntax {
2675 const BITS: u32 = 2;
2676
2677 fn into_usize(self) -> usize {
2678 self as u8 as usize
2679 }
2680
2681 unsafe fn from_usize(tag: usize) -> Self {
2682 match tag {
2683 0 => TraitObjectSyntax::Dyn,
2684 1 => TraitObjectSyntax::None,
2685 _ => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
2686 }
2687 }
2688}
2689
2690#[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)]
2691pub enum PreciseCapturingArg {
2692 Lifetime(#[visitable(extra = LifetimeCtxt::GenericArg)] Lifetime),
2694 Arg(Path, NodeId),
2696}
2697
2698#[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)]
2702pub enum InlineAsmRegOrRegClass {
2703 Reg(Symbol),
2704 RegClass(Symbol),
2705}
2706
2707#[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) {
let InlineAsmOptions(ref __binding_0) = *self;
::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)]
2708pub struct InlineAsmOptions(u16);
2709impl 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! {
2710 impl InlineAsmOptions: u16 {
2711 const PURE = 1 << 0;
2712 const NOMEM = 1 << 1;
2713 const READONLY = 1 << 2;
2714 const PRESERVES_FLAGS = 1 << 3;
2715 const NORETURN = 1 << 4;
2716 const NOSTACK = 1 << 5;
2717 const ATT_SYNTAX = 1 << 6;
2718 const RAW = 1 << 7;
2719 const MAY_UNWIND = 1 << 8;
2720 }
2721}
2722
2723impl InlineAsmOptions {
2724 pub const COUNT: usize = Self::all().bits().count_ones() as usize;
2725
2726 pub const GLOBAL_OPTIONS: Self = Self::ATT_SYNTAX.union(Self::RAW);
2727 pub const NAKED_OPTIONS: Self = Self::ATT_SYNTAX.union(Self::RAW);
2728
2729 pub fn human_readable_names(&self) -> Vec<&'static str> {
2730 let mut options = ::alloc::vec::Vec::new()vec![];
2731
2732 if self.contains(InlineAsmOptions::PURE) {
2733 options.push("pure");
2734 }
2735 if self.contains(InlineAsmOptions::NOMEM) {
2736 options.push("nomem");
2737 }
2738 if self.contains(InlineAsmOptions::READONLY) {
2739 options.push("readonly");
2740 }
2741 if self.contains(InlineAsmOptions::PRESERVES_FLAGS) {
2742 options.push("preserves_flags");
2743 }
2744 if self.contains(InlineAsmOptions::NORETURN) {
2745 options.push("noreturn");
2746 }
2747 if self.contains(InlineAsmOptions::NOSTACK) {
2748 options.push("nostack");
2749 }
2750 if self.contains(InlineAsmOptions::ATT_SYNTAX) {
2751 options.push("att_syntax");
2752 }
2753 if self.contains(InlineAsmOptions::RAW) {
2754 options.push("raw");
2755 }
2756 if self.contains(InlineAsmOptions::MAY_UNWIND) {
2757 options.push("may_unwind");
2758 }
2759
2760 options
2761 }
2762}
2763
2764impl std::fmt::Debug for InlineAsmOptions {
2765 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2766 bitflags::parser::to_writer(self, f)
2767 }
2768}
2769
2770#[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)]
2771pub enum InlineAsmTemplatePiece {
2772 String(Cow<'static, str>),
2773 Placeholder { operand_idx: usize, modifier: Option<char>, span: Span },
2774}
2775
2776impl fmt::Display for InlineAsmTemplatePiece {
2777 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2778 match self {
2779 Self::String(s) => {
2780 for c in s.chars() {
2781 match c {
2782 '{' => f.write_str("{{")?,
2783 '}' => f.write_str("}}")?,
2784 _ => c.fmt(f)?,
2785 }
2786 }
2787 Ok(())
2788 }
2789 Self::Placeholder { operand_idx, modifier: Some(modifier), .. } => {
2790 f.write_fmt(format_args!("{{{0}:{1}}}", operand_idx, modifier))write!(f, "{{{operand_idx}:{modifier}}}")
2791 }
2792 Self::Placeholder { operand_idx, modifier: None, .. } => {
2793 f.write_fmt(format_args!("{{{0}}}", operand_idx))write!(f, "{{{operand_idx}}}")
2794 }
2795 }
2796 }
2797}
2798
2799impl InlineAsmTemplatePiece {
2800 pub fn to_string(s: &[Self]) -> String {
2802 use fmt::Write;
2803 let mut out = String::new();
2804 for p in s.iter() {
2805 let _ = out.write_fmt(format_args!("{0}", p))write!(out, "{p}");
2806 }
2807 out
2808 }
2809}
2810
2811#[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) {
let InlineAsmSym {
id: ref __binding_0,
qself: ref __binding_1,
path: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};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)]
2819pub struct InlineAsmSym {
2820 pub id: NodeId,
2821 pub qself: Option<Box<QSelf>>,
2822 pub path: Path,
2823}
2824
2825#[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)]
2829pub enum InlineAsmOperand {
2830 In {
2831 reg: InlineAsmRegOrRegClass,
2832 expr: Box<Expr>,
2833 },
2834 Out {
2835 reg: InlineAsmRegOrRegClass,
2836 late: bool,
2837 expr: Option<Box<Expr>>,
2838 },
2839 InOut {
2840 reg: InlineAsmRegOrRegClass,
2841 late: bool,
2842 expr: Box<Expr>,
2843 },
2844 SplitInOut {
2845 reg: InlineAsmRegOrRegClass,
2846 late: bool,
2847 in_expr: Box<Expr>,
2848 out_expr: Option<Box<Expr>>,
2849 },
2850 Const {
2851 anon_const: AnonConst,
2852 },
2853 Sym {
2854 sym: InlineAsmSym,
2855 },
2856 Label {
2857 block: Box<Block>,
2858 },
2859}
2860
2861impl InlineAsmOperand {
2862 pub fn reg(&self) -> Option<&InlineAsmRegOrRegClass> {
2863 match self {
2864 Self::In { reg, .. }
2865 | Self::Out { reg, .. }
2866 | Self::InOut { reg, .. }
2867 | Self::SplitInOut { reg, .. } => Some(reg),
2868 Self::Const { .. } | Self::Sym { .. } | Self::Label { .. } => None,
2869 }
2870 }
2871}
2872
2873#[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);
}
}
};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)]
2874pub enum AsmMacro {
2875 Asm,
2877 GlobalAsm,
2879 NakedAsm,
2881}
2882
2883impl AsmMacro {
2884 pub const fn macro_name(self) -> &'static str {
2885 match self {
2886 AsmMacro::Asm => "asm",
2887 AsmMacro::GlobalAsm => "global_asm",
2888 AsmMacro::NakedAsm => "naked_asm",
2889 }
2890 }
2891
2892 pub const fn is_supported_option(self, option: InlineAsmOptions) -> bool {
2893 match self {
2894 AsmMacro::Asm => true,
2895 AsmMacro::GlobalAsm => InlineAsmOptions::GLOBAL_OPTIONS.contains(option),
2896 AsmMacro::NakedAsm => InlineAsmOptions::NAKED_OPTIONS.contains(option),
2897 }
2898 }
2899
2900 pub const fn diverges(self, options: InlineAsmOptions) -> bool {
2901 match self {
2902 AsmMacro::Asm => options.contains(InlineAsmOptions::NORETURN),
2903 AsmMacro::GlobalAsm => true,
2904 AsmMacro::NakedAsm => true,
2905 }
2906 }
2907}
2908
2909#[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) {
let 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 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
2913pub struct InlineAsm {
2914 pub asm_macro: AsmMacro,
2915 pub template: Vec<InlineAsmTemplatePiece>,
2916 pub template_strs: Box<[(Symbol, Option<Symbol>, Span)]>,
2917 pub operands: Vec<(InlineAsmOperand, Span)>,
2918 pub clobber_abis: Vec<(Symbol, Span)>,
2919 #[visitable(ignore)]
2920 pub options: InlineAsmOptions,
2921 pub line_spans: Vec<Span>,
2922}
2923
2924#[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) {
let 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 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
2928pub struct Param {
2929 pub attrs: AttrVec,
2930 pub ty: Box<Ty>,
2931 pub pat: Box<Pat>,
2932 pub id: NodeId,
2933 pub span: Span,
2934 pub is_placeholder: bool,
2935}
2936
2937#[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)]
2941pub enum SelfKind {
2942 Value(Mutability),
2944 Region(Option<Lifetime>, Mutability),
2946 Pinned(Option<Lifetime>, Mutability),
2948 Explicit(Box<Ty>, Mutability),
2950}
2951
2952impl SelfKind {
2953 pub fn to_ref_suggestion(&self) -> String {
2954 match self {
2955 SelfKind::Region(None, mutbl) => mutbl.ref_prefix_str().to_string(),
2956 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()),
2957 SelfKind::Pinned(None, mutbl) => ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("&pin {0}", mutbl.ptr_str()))
})format!("&pin {}", mutbl.ptr_str()),
2958 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()),
2959 SelfKind::Value(_) | SelfKind::Explicit(_, _) => {
2960 {
::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")
2961 }
2962 }
2963 }
2964}
2965
2966pub type ExplicitSelf = Spanned<SelfKind>;
2967
2968impl Param {
2969 pub fn to_self(&self) -> Option<ExplicitSelf> {
2971 if let PatKind::Ident(BindingMode(ByRef::No, mutbl), ident, _) = self.pat.kind {
2972 if ident.name == kw::SelfLower {
2973 return match self.ty.kind {
2974 TyKind::ImplicitSelf => Some(respan(self.pat.span, SelfKind::Value(mutbl))),
2975 TyKind::Ref(lt, MutTy { ref ty, mutbl }) if ty.kind.is_implicit_self() => {
2976 Some(respan(self.pat.span, SelfKind::Region(lt, mutbl)))
2977 }
2978 TyKind::PinnedRef(lt, MutTy { ref ty, mutbl })
2979 if ty.kind.is_implicit_self() =>
2980 {
2981 Some(respan(self.pat.span, SelfKind::Pinned(lt, mutbl)))
2982 }
2983 _ => Some(respan(
2984 self.pat.span.to(self.ty.span),
2985 SelfKind::Explicit(self.ty.clone(), mutbl),
2986 )),
2987 };
2988 }
2989 }
2990 None
2991 }
2992
2993 pub fn is_self(&self) -> bool {
2995 if let PatKind::Ident(_, ident, _) = self.pat.kind {
2996 ident.name == kw::SelfLower
2997 } else {
2998 false
2999 }
3000 }
3001
3002 pub fn from_self(attrs: AttrVec, eself: ExplicitSelf, eself_ident: Ident) -> Param {
3004 let span = eself.span.to(eself_ident.span);
3005 let infer_ty =
3006 Box::new(Ty { id: DUMMY_NODE_ID, kind: TyKind::ImplicitSelf, span: eself_ident.span });
3007 let (mutbl, ty) = match eself.node {
3008 SelfKind::Explicit(ty, mutbl) => (mutbl, ty),
3009 SelfKind::Value(mutbl) => (mutbl, infer_ty),
3010 SelfKind::Region(lt, mutbl) => (
3011 Mutability::Not,
3012 Box::new(Ty {
3013 id: DUMMY_NODE_ID,
3014 kind: TyKind::Ref(lt, MutTy { ty: infer_ty, mutbl }),
3015 span,
3016 }),
3017 ),
3018 SelfKind::Pinned(lt, mutbl) => (
3019 Mutability::Not,
3020 Box::new(Ty {
3021 id: DUMMY_NODE_ID,
3022 kind: TyKind::PinnedRef(lt, MutTy { ty: infer_ty, mutbl }),
3023 span,
3024 }),
3025 ),
3026 };
3027 Param {
3028 attrs,
3029 pat: Box::new(Pat {
3030 id: DUMMY_NODE_ID,
3031 kind: PatKind::Ident(BindingMode(ByRef::No, mutbl), eself_ident, None),
3032 span,
3033 }),
3034 span,
3035 ty,
3036 id: DUMMY_NODE_ID,
3037 is_placeholder: false,
3038 }
3039 }
3040}
3041
3042#[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) {
let FnDecl { inputs: ref __binding_0, output: ref __binding_1
} = *self;
::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)]
3049pub struct FnDecl {
3050 pub inputs: ThinVec<Param>,
3051 pub output: FnRetTy,
3052}
3053
3054impl FnDecl {
3055 pub fn has_self(&self) -> bool {
3056 self.inputs.get(0).is_some_and(Param::is_self)
3057 }
3058
3059 pub fn c_variadic(&self) -> bool {
3060 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))
3061 }
3062
3063 pub const NO_SPLATTED_ARG_INDEX: u8 = u8::MAX;
3068
3069 pub const MAX_VALID_SPLATTED_ARG_INDEX: u8 = Self::NO_SPLATTED_ARG_INDEX - 1;
3071
3072 pub fn splatted(&self) -> Option<u8> {
3074 self.inputs.iter().enumerate().find_map(|(index, arg)| {
3075 if index >= usize::from(Self::NO_SPLATTED_ARG_INDEX) {
3076 None
3079 } else {
3080 arg.attrs
3081 .iter()
3082 .any(|attr| attr.has_name(sym::rustc_splat))
3083 .then_some(u8::try_from(index).unwrap())
3084 }
3085 })
3086 }
3087}
3088
3089#[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);
}
}
};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)]
3091pub enum IsAuto {
3092 Yes,
3093 No,
3094}
3095
3096#[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)]
3098#[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)]
3099pub enum Safety {
3100 Unsafe(Span),
3102 Safe(Span),
3104 Default,
3107}
3108
3109#[derive(#[automatically_derived]
impl ::core::marker::Copy for CoroutineMarker { }Copy, #[automatically_derived]
impl ::core::clone::Clone for CoroutineMarker {
#[inline]
fn clone(&self) -> CoroutineMarker {
let _: ::core::clone::AssertParamIsClone<CoroutineKind>;
let _: ::core::clone::AssertParamIsClone<Span>;
let _: ::core::clone::AssertParamIsClone<NodeId>;
*self
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for CoroutineMarker {
fn encode(&self, __encoder: &mut __E) {
let CoroutineMarker {
kind: ref __binding_0,
span: ref __binding_1,
closure_id: ref __binding_2,
return_impl_trait_id: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for CoroutineMarker {
fn decode(__decoder: &mut __D) -> Self {
CoroutineMarker {
kind: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
closure_id: ::rustc_serialize::Decodable::decode(__decoder),
return_impl_trait_id: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for CoroutineMarker {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f,
"CoroutineMarker", "kind", &self.kind, "span", &self.span,
"closure_id", &self.closure_id, "return_impl_trait_id",
&&self.return_impl_trait_id)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
CoroutineMarker where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
CoroutineMarker {
kind: ref __binding_0,
span: ref __binding_1,
closure_id: ref __binding_2,
return_impl_trait_id: 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 CoroutineMarker where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
CoroutineMarker {
kind: ref mut __binding_0,
span: ref mut __binding_1,
closure_id: ref mut __binding_2,
return_impl_trait_id: 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)]
3115pub struct CoroutineMarker {
3116 pub kind: CoroutineKind,
3117 pub span: Span,
3118 pub closure_id: NodeId,
3119 pub return_impl_trait_id: NodeId,
3121}
3122
3123impl CoroutineMarker {
3124 pub fn new(kind: CoroutineKind, span: Span) -> Self {
3125 Self { kind, span, closure_id: DUMMY_NODE_ID, return_impl_trait_id: DUMMY_NODE_ID }
3126 }
3127}
3128
3129#[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)]
3130#[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)]
3131pub enum Const {
3132 Yes(Span),
3133 No,
3134}
3135
3136#[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)]
3139pub enum Defaultness {
3140 Implicit,
3146 Default(Span),
3148 Final(Span),
3150}
3151
3152#[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)]
3153pub enum ImplPolarity {
3154 Positive,
3156 Negative(Span),
3158}
3159
3160impl fmt::Debug for ImplPolarity {
3161 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
3162 match *self {
3163 ImplPolarity::Positive => "positive".fmt(f),
3164 ImplPolarity::Negative(_) => "negative".fmt(f),
3165 }
3166 }
3167}
3168
3169#[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)]
3171#[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)]
3172pub enum BoundPolarity {
3173 Positive,
3175 Negative(Span),
3177 Maybe(Span),
3179}
3180
3181impl BoundPolarity {
3182 pub fn as_str(self) -> &'static str {
3183 match self {
3184 Self::Positive => "",
3185 Self::Negative(_) => "!",
3186 Self::Maybe(_) => "?",
3187 }
3188 }
3189}
3190
3191#[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)]
3193#[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)]
3194pub enum BoundConstness {
3195 Never,
3197 Always(Span),
3199 Maybe(Span),
3201}
3202
3203impl BoundConstness {
3204 pub fn as_str(self) -> &'static str {
3205 match self {
3206 Self::Never => "",
3207 Self::Always(_) => "const",
3208 Self::Maybe(_) => "[const]",
3209 }
3210 }
3211}
3212
3213#[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)]
3215#[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)]
3216pub enum BoundAsyncness {
3217 Normal,
3219 Async(Span),
3221}
3222
3223impl BoundAsyncness {
3224 pub fn as_str(self) -> &'static str {
3225 match self {
3226 Self::Normal => "",
3227 Self::Async(_) => "async",
3228 }
3229 }
3230}
3231
3232#[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)]
3233pub enum FnRetTy {
3234 Default(Span),
3239 Ty(Box<Ty>),
3241}
3242
3243impl FnRetTy {
3244 pub fn span(&self) -> Span {
3245 match self {
3246 &FnRetTy::Default(span) => span,
3247 FnRetTy::Ty(ty) => ty.span,
3248 }
3249 }
3250}
3251
3252#[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)]
3253pub enum Inline {
3254 Yes,
3255 No { had_parse_error: Result<(), ErrorGuaranteed> },
3256}
3257
3258#[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)]
3260pub enum ModKind {
3261 Loaded(ThinVec<Box<Item>>, Inline, ModSpans),
3266 Unloaded,
3268}
3269
3270#[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) {
let ModSpans {
inner_span: ref __binding_0,
inject_use_span: ref __binding_1 } = *self;
::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)]
3271pub struct ModSpans {
3272 pub inner_span: Span,
3275 pub inject_use_span: Span,
3276}
3277
3278#[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) {
let ForeignMod {
extern_span: ref __binding_0,
safety: ref __binding_1,
abi: ref __binding_2,
items: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
3282pub struct ForeignMod {
3283 pub extern_span: Span,
3285 pub safety: Safety,
3288 pub abi: Option<StrLit>,
3289 pub items: ThinVec<Box<ForeignItem>>,
3290}
3291
3292#[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) {
let EnumDef { variants: ref __binding_0 } = *self;
::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)]
3293pub struct EnumDef {
3294 pub variants: ThinVec<Variant>,
3295}
3296
3297#[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) {
let 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 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
3299pub struct Variant {
3300 pub attrs: AttrVec,
3302 pub id: NodeId,
3304 pub span: Span,
3306 pub vis: Visibility,
3308 pub ident: Ident,
3310
3311 pub data: VariantData,
3313 pub disr_expr: Option<AnonConst>,
3315 pub is_placeholder: bool,
3317}
3318
3319#[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)]
3321pub enum UseTreeKind {
3322 Simple(Option<Ident>),
3324 Nested { items: ThinVec<(UseTree, NodeId)>, span: Span },
3333 Glob(Span),
3335}
3336
3337#[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) {
let UseTree { prefix: ref __binding_0, kind: ref __binding_1
} = *self;
::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)]
3340pub struct UseTree {
3341 pub prefix: Path,
3342 pub kind: UseTreeKind,
3343}
3344
3345impl UseTree {
3346 pub fn ident(&self) -> Ident {
3349 match self.kind {
3350 UseTreeKind::Simple(Some(rename)) => rename,
3351 UseTreeKind::Simple(None) => {
3352 self.prefix.segments.last().expect("empty prefix in a simple import").ident
3353 }
3354 _ => {
::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"),
3355 }
3356 }
3357
3358 pub fn span(&self) -> Span {
3362 self.prefix.span.to(self.hi_span())
3363 }
3364
3365 pub fn hi_span(&self) -> Span {
3371 match self.kind {
3372 UseTreeKind::Simple(None) => self.prefix.span,
3373 UseTreeKind::Simple(Some(name)) => name.span,
3374 UseTreeKind::Nested { span, .. } => span,
3375 UseTreeKind::Glob(span) => span,
3376 }
3377 }
3378}
3379
3380#[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)]
3384#[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);
}
}
};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)]
3385pub enum AttrStyle {
3386 Outer,
3387 Inner,
3388}
3389
3390impl AttrStyle {
3391 pub fn line_doc_comment_prefix(self) -> &'static str {
3392 match self {
3393 AttrStyle::Outer => "///",
3394 AttrStyle::Inner => "//!",
3395 }
3396 }
3397}
3398
3399pub type AttrVec = ThinVec<Attribute>;
3401
3402#[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) {
let Attribute {
kind: ref __binding_0,
id: ref __binding_1,
style: ref __binding_2,
span: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
3404pub struct Attribute {
3405 pub kind: AttrKind,
3406 pub id: AttrId,
3407 pub style: AttrStyle,
3410
3411 pub span: Span,
3434}
3435
3436#[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)]
3437pub enum AttrKind {
3438 Normal(Box<NormalAttr>),
3440
3441 Synthetic(Box<SyntheticAttr>),
3443
3444 DocComment(CommentKind, Symbol),
3448}
3449
3450#[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) {
let NormalAttr {
item: ref __binding_0, tokens: ref __binding_1 } = *self;
::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)]
3451pub struct NormalAttr {
3452 pub item: AttrItem,
3453 pub tokens: Option<LazyAttrTokenStream>,
3456}
3457
3458impl NormalAttr {
3459 pub fn from_ident(ident: Ident) -> Self {
3460 Self {
3461 item: AttrItem {
3462 unsafety: Safety::Default,
3463 path: Path::from_ident(ident),
3464 args: AttrArgs::Empty,
3465 span: ident.span,
3466 },
3467 tokens: None,
3468 }
3469 }
3470}
3471
3472#[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) {
let AttrItem {
unsafety: ref __binding_0,
path: ref __binding_1,
args: ref __binding_2,
span: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
3473pub struct AttrItem {
3474 pub unsafety: Safety,
3475 pub path: Path,
3476 pub args: AttrArgs,
3477 pub span: Span,
3486}
3487
3488#[derive(#[automatically_derived]
impl ::core::clone::Clone for SyntheticAttr {
#[inline]
fn clone(&self) -> SyntheticAttr {
match self {
SyntheticAttr::CfgTrace(__self_0) =>
SyntheticAttr::CfgTrace(::core::clone::Clone::clone(__self_0)),
SyntheticAttr::CfgAttrTrace(__self_0) =>
SyntheticAttr::CfgAttrTrace(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for SyntheticAttr {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
SyntheticAttr::CfgTrace(ref __binding_0) => { 0usize }
SyntheticAttr::CfgAttrTrace(ref __binding_0) => { 1usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
SyntheticAttr::CfgTrace(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
SyntheticAttr::CfgAttrTrace(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for SyntheticAttr {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => {
SyntheticAttr::CfgTrace(::rustc_serialize::Decodable::decode(__decoder))
}
1usize => {
SyntheticAttr::CfgAttrTrace(::rustc_serialize::Decodable::decode(__decoder))
}
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `SyntheticAttr`, expected 0..2, actual {0}",
n));
}
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for SyntheticAttr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
SyntheticAttr::CfgTrace(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"CfgTrace", &__self_0),
SyntheticAttr::CfgAttrTrace(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"CfgAttrTrace", &__self_0),
}
}
}Debug, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
SyntheticAttr {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
SyntheticAttr::CfgTrace(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
SyntheticAttr::CfgAttrTrace(ref __binding_0) => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
3495pub enum SyntheticAttr {
3496 CfgTrace(CfgEntry),
3505
3506 CfgAttrTrace(CfgEntry),
3514}
3515
3516impl AttrItem {
3517 pub fn is_valid_for_outer_style(&self) -> bool {
3518 self.path == sym::cfg_attr
3519 || self.path == sym::cfg
3520 || self.path == sym::forbid
3521 || self.path == sym::warn
3522 || self.path == sym::allow
3523 || self.path == sym::deny
3524 || self.path == sym::expect
3525 }
3526}
3527
3528#[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) {
let TraitRef { path: ref __binding_0, ref_id: ref __binding_1
} = *self;
::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)]
3535pub struct TraitRef {
3536 pub path: Path,
3537 pub ref_id: NodeId,
3538}
3539
3540#[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);
}
}
};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)]
3542pub enum Parens {
3543 Yes,
3544 No,
3545}
3546
3547#[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) {
let PolyTraitRef {
bound_generic_params: ref __binding_0,
modifiers: ref __binding_1,
trait_ref: ref __binding_2,
span: ref __binding_3,
parens: ref __binding_4 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
3548pub struct PolyTraitRef {
3549 pub bound_generic_params: ThinVec<GenericParam>,
3551
3552 pub modifiers: TraitBoundModifiers,
3554
3555 pub trait_ref: TraitRef,
3557
3558 pub span: Span,
3559
3560 pub parens: Parens,
3563}
3564
3565impl PolyTraitRef {
3566 pub fn new(
3567 generic_params: ThinVec<GenericParam>,
3568 path: Path,
3569 modifiers: TraitBoundModifiers,
3570 span: Span,
3571 parens: Parens,
3572 ) -> Self {
3573 PolyTraitRef {
3574 bound_generic_params: generic_params,
3575 modifiers,
3576 trait_ref: TraitRef { path, ref_id: DUMMY_NODE_ID },
3577 span,
3578 parens,
3579 }
3580 }
3581}
3582
3583#[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) {
let Visibility { kind: ref __binding_0, span: ref __binding_1
} = *self;
::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)]
3584pub struct Visibility {
3585 pub kind: VisibilityKind,
3586 pub span: Span,
3587}
3588
3589#[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)]
3590pub enum VisibilityKind {
3591 Public,
3592 Restricted { path: Box<Path>, id: NodeId, shorthand: bool },
3593 Inherited,
3594}
3595
3596impl VisibilityKind {
3597 pub fn is_pub(&self) -> bool {
3598 #[allow(non_exhaustive_omitted_patterns)] match self {
VisibilityKind::Public => true,
_ => false,
}matches!(self, VisibilityKind::Public)
3599 }
3600}
3601
3602#[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) {
let ImplRestriction {
kind: ref __binding_0, span: ref __binding_1 } = *self;
::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)]
3603pub struct ImplRestriction {
3604 pub kind: RestrictionKind,
3605 pub span: Span,
3606}
3607
3608#[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) {
let MutRestriction {
kind: ref __binding_0, span: ref __binding_1 } = *self;
::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)]
3609pub struct MutRestriction {
3610 pub kind: RestrictionKind,
3611 pub span: Span,
3617}
3618
3619#[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)]
3620pub enum RestrictionKind {
3621 Unrestricted,
3622 Restricted { path: Box<Path>, id: NodeId, shorthand: bool },
3623}
3624
3625#[derive(#[automatically_derived]
impl ::core::clone::Clone for FieldDef {
#[inline]
fn clone(&self) -> FieldDef {
FieldDef {
attrs: ::core::clone::Clone::clone(&self.attrs),
id: ::core::clone::Clone::clone(&self.id),
span: ::core::clone::Clone::clone(&self.span),
vis: ::core::clone::Clone::clone(&self.vis),
extras: ::core::clone::Clone::clone(&self.extras),
ident: ::core::clone::Clone::clone(&self.ident),
ty: ::core::clone::Clone::clone(&self.ty),
is_placeholder: ::core::clone::Clone::clone(&self.is_placeholder),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for FieldDef {
fn encode(&self, __encoder: &mut __E) {
let FieldDef {
attrs: ref __binding_0,
id: ref __binding_1,
span: ref __binding_2,
vis: ref __binding_3,
extras: ref __binding_4,
ident: ref __binding_5,
ty: ref __binding_6,
is_placeholder: ref __binding_7 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_3,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_4,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_5,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_6,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_7,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for FieldDef {
fn decode(__decoder: &mut __D) -> Self {
FieldDef {
attrs: ::rustc_serialize::Decodable::decode(__decoder),
id: ::rustc_serialize::Decodable::decode(__decoder),
span: ::rustc_serialize::Decodable::decode(__decoder),
vis: ::rustc_serialize::Decodable::decode(__decoder),
extras: ::rustc_serialize::Decodable::decode(__decoder),
ident: ::rustc_serialize::Decodable::decode(__decoder),
ty: ::rustc_serialize::Decodable::decode(__decoder),
is_placeholder: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for FieldDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["attrs", "id", "span", "vis", "extras", "ident", "ty",
"is_placeholder"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.attrs, &self.id, &self.span, &self.vis, &self.extras,
&self.ident, &self.ty, &&self.is_placeholder];
::core::fmt::Formatter::debug_struct_fields_finish(f, "FieldDef",
names, values)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for FieldDef
where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
FieldDef {
attrs: ref __binding_0,
id: ref __binding_1,
span: ref __binding_2,
vis: ref __binding_3,
extras: ref __binding_4,
ident: ref __binding_5,
ty: ref __binding_6,
is_placeholder: ref __binding_7 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_3,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_4,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_5,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_6,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_7,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for FieldDef where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
FieldDef {
attrs: ref mut __binding_0,
id: ref mut __binding_1,
span: ref mut __binding_2,
vis: ref mut __binding_3,
extras: ref mut __binding_4,
ident: ref mut __binding_5,
ty: ref mut __binding_6,
is_placeholder: ref mut __binding_7 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_3,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_4,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_5,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_6,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_7,
__visitor, ())
}
}
}
}
}
};Walkable)]
3629pub struct FieldDef {
3630 pub attrs: AttrVec,
3631 pub id: NodeId,
3632 pub span: Span,
3633 pub vis: Visibility,
3634 pub extras: Option<Box<FieldDefExtras>>,
3635 pub ident: Option<Ident>,
3636
3637 pub ty: Box<Ty>,
3638 pub is_placeholder: bool,
3639}
3640
3641#[derive(#[automatically_derived]
impl ::core::clone::Clone for FieldDefExtras {
#[inline]
fn clone(&self) -> FieldDefExtras {
FieldDefExtras {
safety: ::core::clone::Clone::clone(&self.safety),
mut_restriction: ::core::clone::Clone::clone(&self.mut_restriction),
default: ::core::clone::Clone::clone(&self.default),
}
}
}Clone, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for FieldDefExtras {
fn encode(&self, __encoder: &mut __E) {
let FieldDefExtras {
safety: ref __binding_0,
mut_restriction: ref __binding_1,
default: ref __binding_2 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for FieldDefExtras {
fn decode(__decoder: &mut __D) -> Self {
FieldDefExtras {
safety: ::rustc_serialize::Decodable::decode(__decoder),
mut_restriction: ::rustc_serialize::Decodable::decode(__decoder),
default: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, #[automatically_derived]
impl ::core::fmt::Debug for FieldDefExtras {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"FieldDefExtras", "safety", &self.safety, "mut_restriction",
&self.mut_restriction, "default", &&self.default)
}
}Debug, const _: () =
{
impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for
FieldDefExtras where __V: crate::visit::Visitor<'__ast> {
fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
match *self {
FieldDefExtras {
safety: ref __binding_0,
mut_restriction: ref __binding_1,
default: ref __binding_2 } => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_0,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_1,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(crate::visit::Visitable::visit(__binding_2,
__visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
}
}
<__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
}
}
impl<__V> crate::mut_visit::MutWalkable<__V> for FieldDefExtras where
__V: crate::mut_visit::MutVisitor {
fn walk_mut(&mut self, __visitor: &mut __V) {
match *self {
FieldDefExtras {
safety: ref mut __binding_0,
mut_restriction: ref mut __binding_1,
default: ref mut __binding_2 } => {
{
crate::mut_visit::MutVisitable::visit_mut(__binding_0,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_1,
__visitor, ())
}
{
crate::mut_visit::MutVisitable::visit_mut(__binding_2,
__visitor, ())
}
}
}
}
}
};Walkable)]
3645pub struct FieldDefExtras {
3646 pub safety: Safety,
3647 pub mut_restriction: MutRestriction,
3648 pub default: Option<AnonConst>,
3649}
3650
3651impl FieldDef {
3652 pub fn mut_restriction(&self) -> &MutRestriction {
3653 static DEFAULT: MutRestriction =
3654 MutRestriction { kind: RestrictionKind::Unrestricted, span: DUMMY_SP };
3655
3656 self.extras.as_ref().map_or(&DEFAULT, |extras| &extras.mut_restriction)
3657 }
3658
3659 pub fn default_value(&self) -> Option<&AnonConst> {
3660 self.extras.as_ref().and_then(|e| e.default.as_ref())
3661 }
3662
3663 pub fn safety(&self) -> Safety {
3664 self.extras.as_ref().map_or(Safety::Default, |extras| extras.safety)
3665 }
3666}
3667#[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)]
3669pub enum Recovered {
3670 No,
3671 Yes(ErrorGuaranteed),
3672}
3673
3674#[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)]
3676pub enum VariantData {
3677 Struct { fields: ThinVec<FieldDef>, recovered: Recovered },
3681 Tuple(ThinVec<FieldDef>, NodeId),
3685 Unit(NodeId),
3689}
3690
3691impl VariantData {
3692 pub fn fields(&self) -> &[FieldDef] {
3694 match self {
3695 VariantData::Struct { fields, .. } | VariantData::Tuple(fields, _) => fields,
3696 _ => &[],
3697 }
3698 }
3699
3700 pub fn ctor_node_id(&self) -> Option<NodeId> {
3702 match *self {
3703 VariantData::Struct { .. } => None,
3704 VariantData::Tuple(_, id) | VariantData::Unit(id) => Some(id),
3705 }
3706 }
3707}
3708
3709#[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) {
let 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 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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)]
3711pub struct Item<K = ItemKind> {
3712 pub attrs: AttrVec,
3713 pub id: NodeId,
3714 pub span: Span,
3715 pub vis: Visibility,
3716
3717 pub kind: K,
3718
3719 pub tokens: Option<LazyAttrTokenStream>,
3727}
3728
3729impl Item {
3730 pub fn span_with_attributes(&self) -> Span {
3732 self.attrs.iter().fold(self.span, |acc, attr| acc.to(attr.span))
3733 }
3734
3735 pub fn opt_generics(&self) -> Option<&Generics> {
3736 self.kind.generics()
3737 }
3738}
3739
3740impl Item<AssocItemKind> {
3741 pub fn opt_generics(&self) -> Option<&Generics> {
3742 match &self.kind {
3743 AssocItemKind::Fn(fun) => Some(&fun.generics),
3744 AssocItemKind::Const(ct) => Some(&ct.generics),
3745 AssocItemKind::Type(ty) => Some(&ty.generics),
3746 AssocItemKind::Delegation(..)
3747 | AssocItemKind::MacCall(_)
3748 | AssocItemKind::DelegationMac(_) => None,
3749 }
3750 }
3751}
3752
3753#[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)]
3755pub enum Extern {
3756 None,
3760 Implicit(Span),
3766 Explicit(StrLit, Span),
3770}
3771
3772impl Extern {
3773 pub fn from_abi(abi: Option<StrLit>, span: Span) -> Extern {
3774 match abi {
3775 Some(name) => Extern::Explicit(name, span),
3776 None => Extern::Implicit(span),
3777 }
3778 }
3779
3780 pub fn span(self) -> Option<Span> {
3781 match self {
3782 Extern::None => None,
3783 Extern::Implicit(span) | Extern::Explicit(_, span) => Some(span),
3784 }
3785 }
3786}
3787
3788#[derive(#[automatically_derived]
impl ::core::clone::Clone for FnHeader {
#[inline]
fn clone(&self) -> FnHeader {
let _: ::core::clone::AssertParamIsClone<Const>;
let _: ::core::clone::AssertParamIsClone<Option<CoroutineMarker>>;
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) {
let FnHeader {
constness: ref __binding_0,
coroutine_marker: ref __binding_1,
safety: ref __binding_2,
ext: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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_marker: ::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_marker",
&self.coroutine_marker, "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_marker: 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_marker: 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)]
3793pub struct FnHeader {
3794 pub constness: Const,
3796 pub coroutine_marker: Option<CoroutineMarker>,
3798 pub safety: Safety,
3800 pub ext: Extern,
3802}
3803
3804impl FnHeader {
3805 pub fn has_qualifiers(&self) -> bool {
3807 let Self { safety, coroutine_marker, constness, ext } = self;
3808 #[allow(non_exhaustive_omitted_patterns)] match safety {
Safety::Unsafe(_) => true,
_ => false,
}matches!(safety, Safety::Unsafe(_))
3809 || coroutine_marker.is_some()
3810 || #[allow(non_exhaustive_omitted_patterns)] match constness {
Const::Yes(_) => true,
_ => false,
}matches!(constness, Const::Yes(_))
3811 || !#[allow(non_exhaustive_omitted_patterns)] match ext {
Extern::None => true,
_ => false,
}matches!(ext, Extern::None)
3812 }
3813
3814 pub fn span(&self) -> Option<Span> {
3815 let mut spans = smallvec::SmallVec::<[Span; 4]>::new();
3816
3817 match self.ext {
3818 Extern::Implicit(span) | Extern::Explicit(_, span) => spans.push(span),
3819 Extern::None => {}
3820 }
3821
3822 match self.safety {
3823 Safety::Unsafe(span) | Safety::Safe(span) => spans.push(span),
3824 Safety::Default => {}
3825 };
3826
3827 if let Some(coroutine_marker) = self.coroutine_marker {
3828 spans.push(coroutine_marker.span);
3829 }
3830
3831 if let Const::Yes(span) = self.constness {
3832 spans.push(span)
3833 }
3834
3835 spans.into_iter().reduce(Span::to)
3836 }
3837}
3838
3839impl Default for FnHeader {
3840 fn default() -> FnHeader {
3841 FnHeader {
3842 safety: Safety::Default,
3843 coroutine_marker: None,
3844 constness: Const::No,
3845 ext: Extern::None,
3846 }
3847 }
3848}
3849
3850#[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) {
let TraitAlias {
constness: ref __binding_0,
ident: ref __binding_1,
generics: ref __binding_2,
bounds: ref __binding_3 } = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_2,
__encoder);
::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))