1use std::ops::DerefMut;
11use std::panic;
12
13use rustc_data_structures::flat_map_in_place::FlatMapInPlace;
14use rustc_span::{Ident, Span, Spanned, Symbol};
15use smallvec::{SmallVec, smallvec};
16use thin_vec::ThinVec;
17
18use crate::ast::*;
19use crate::tokenstream::*;
20use crate::visit::{AssocCtxt, BoundKind, FnCtxt, LifetimeCtxt, VisitorResult, try_visit};
21
22mod sealed {
23 use rustc_ast_ir::visit::VisitorResult;
24
25 pub trait MutVisitorResult {
27 type Result: VisitorResult;
28 }
29
30 impl<T> MutVisitorResult for T {
31 type Result = ();
32 }
33}
34
35use sealed::MutVisitorResult;
36
37pub(crate) trait MutVisitable<V: MutVisitor> {
38 type Extra: Copy;
39 fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra);
40}
41
42impl<V: MutVisitor, T: ?Sized> MutVisitable<V> for Box<T>
43where
44 T: MutVisitable<V>,
45{
46 type Extra = T::Extra;
47 fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
48 (**self).visit_mut(visitor, extra)
49 }
50}
51
52impl<V: MutVisitor, T> MutVisitable<V> for Option<T>
53where
54 T: MutVisitable<V>,
55{
56 type Extra = T::Extra;
57 fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
58 if let Some(this) = self {
59 this.visit_mut(visitor, extra)
60 }
61 }
62}
63
64impl<V: MutVisitor, T> MutVisitable<V> for Spanned<T>
65where
66 T: MutVisitable<V>,
67{
68 type Extra = T::Extra;
69 fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
70 let Spanned { span, node } = self;
71 span.visit_mut(visitor, ());
72 node.visit_mut(visitor, extra);
73 }
74}
75
76impl<V: MutVisitor, T> MutVisitable<V> for [T]
77where
78 T: MutVisitable<V>,
79{
80 type Extra = T::Extra;
81 fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
82 for item in self {
83 item.visit_mut(visitor, extra);
84 }
85 }
86}
87
88impl<V: MutVisitor, T> MutVisitable<V> for Vec<T>
89where
90 T: MutVisitable<V>,
91{
92 type Extra = T::Extra;
93 fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
94 for item in self {
95 item.visit_mut(visitor, extra);
96 }
97 }
98}
99
100impl<V: MutVisitor, T1, T2> MutVisitable<V> for (T1, T2)
101where
102 T1: MutVisitable<V, Extra = ()>,
103 T2: MutVisitable<V, Extra = ()>,
104{
105 type Extra = ();
106 fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
107 self.0.visit_mut(visitor, extra);
108 self.1.visit_mut(visitor, extra);
109 }
110}
111
112impl<V: MutVisitor, T1, T2, T3> MutVisitable<V> for (T1, T2, T3)
113where
114 T1: MutVisitable<V, Extra = ()>,
115 T2: MutVisitable<V, Extra = ()>,
116 T3: MutVisitable<V, Extra = ()>,
117{
118 type Extra = ();
119 fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
120 self.0.visit_mut(visitor, extra);
121 self.1.visit_mut(visitor, extra);
122 self.2.visit_mut(visitor, extra);
123 }
124}
125
126impl<V: MutVisitor, T1, T2, T3, T4> MutVisitable<V> for (T1, T2, T3, T4)
127where
128 T1: MutVisitable<V, Extra = ()>,
129 T2: MutVisitable<V, Extra = ()>,
130 T3: MutVisitable<V, Extra = ()>,
131 T4: MutVisitable<V, Extra = ()>,
132{
133 type Extra = ();
134 fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
135 self.0.visit_mut(visitor, extra);
136 self.1.visit_mut(visitor, extra);
137 self.2.visit_mut(visitor, extra);
138 self.3.visit_mut(visitor, extra);
139 }
140}
141
142pub trait MutWalkable<V: MutVisitor> {
143 fn walk_mut(&mut self, visitor: &mut V);
144}
145
146macro_rules! visit_visitable {
147 ($visitor:expr, $($expr:expr),* $(,)?) => {{
148 $(MutVisitable::visit_mut($expr, $visitor, ());)*
149 }};
150}
151
152macro_rules! visit_visitable_with {
153 ($visitor:expr, $expr:expr, $extra:expr $(,)?) => {
154 MutVisitable::visit_mut($expr, $visitor, $extra)
155 };
156}
157
158macro_rules! impl_visitable {
159 (|&mut $self:ident: $self_ty:ty,
160 $vis:ident: &mut $vis_ty:ident,
161 $extra:ident: $extra_ty:ty| $block:block) => {
162 #[allow(unused_parens, non_local_definitions)]
163 impl<$vis_ty: MutVisitor> MutVisitable<$vis_ty> for $self_ty {
164 type Extra = $extra_ty;
165 fn visit_mut(&mut $self, $vis: &mut $vis_ty, $extra: Self::Extra) -> V::Result {
166 $block
167 }
168 }
169 };
170}
171
172macro_rules! impl_walkable {
173 (|&mut $self:ident: $self_ty:ty,
174 $vis:ident: &mut $vis_ty:ident| $block:block) => {
175 impl<$vis_ty: MutVisitor> MutWalkable<$vis_ty> for $self_ty {
176 fn walk_mut(&mut $self, $vis: &mut $vis_ty) -> V::Result {
177 $block
178 }
179 }
180 };
181}
182
183macro_rules! impl_visitable_noop {
184 ($($ty:ty,)*) => {
185 $(
186 impl_visitable!(|&mut self: $ty, _vis: &mut V, _extra: ()| {});
187 )*
188 };
189}
190
191macro_rules! impl_visitable_list {
192 ($($ty:ty,)*) => {
193 $(impl<V: MutVisitor, T> MutVisitable<V> for $ty
194 where
195 for<'a> &'a mut $ty: IntoIterator<Item = &'a mut T>,
196 T: MutVisitable<V>,
197 {
198 type Extra = <T as MutVisitable<V>>::Extra;
199
200 #[inline]
201 fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
202 for i in self {
203 i.visit_mut(visitor, extra);
204 }
205 }
206 })*
207 }
208}
209
210macro_rules! impl_visitable_direct {
211 ($($ty:ty,)*) => {
212 $(impl_visitable!(
213 |&mut self: $ty, visitor: &mut V, _extra: ()| {
214 MutWalkable::walk_mut(self, visitor)
215 }
216 );)*
217 }
218}
219
220macro_rules! impl_visitable_calling_walkable {
221 (
222 $( fn $method:ident($ty:ty $(, $extra_name:ident: $extra_ty:ty)?); )*
223 ) => {
224 $(fn $method(&mut self, node: &mut $ty $(, $extra_name:$extra_ty)?) {
225 impl_visitable!(|&mut self: $ty, visitor: &mut V, extra: ($($extra_ty)?)| {
226 let ($($extra_name)?) = extra;
227 visitor.$method(self $(, $extra_name)?);
228 });
229 MutWalkable::walk_mut(node, self)
230 })*
231 }
232}
233
234macro_rules! define_named_walk {
235 ($Visitor:ident
236 $( pub fn $method:ident($ty:ty); )*
237 ) => {
238 $(pub fn $method<V: $Visitor>(visitor: &mut V, node: &mut $ty) {
239 MutWalkable::walk_mut(node, visitor)
240 })*
241 };
242}
243
244pub enum FnKind<'a> {
Fn(FnCtxt, &'a mut Visibility, &'a mut Fn),
Closure(&'a mut ClosureBinder, &'a mut Option<CoroutineMarker>,
&'a mut Box<FnDecl>, &'a mut Box<Expr>),
}
#[automatically_derived]
impl<'a> ::core::fmt::Debug for FnKind<'a> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
FnKind::Fn(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_tuple_field3_finish(f, "Fn",
__self_0, __self_1, &__self_2),
FnKind::Closure(__self_0, __self_1, __self_2, __self_3) =>
::core::fmt::Formatter::debug_tuple_field4_finish(f,
"Closure", __self_0, __self_1, __self_2, &__self_3),
}
}
}
impl<'a> FnKind<'_> {
pub fn header(&'a mut self) -> Option<&'a mut FnHeader> {
match *self {
FnKind::Fn(_, _, Fn { sig, .. }) => Some(&mut sig.header),
FnKind::Closure(..) => None,
}
}
pub fn ident(&'a mut self) -> Option<&'a mut Ident> {
match self {
FnKind::Fn(_, _, Fn { ident, .. }) => Some(ident),
_ => None,
}
}
pub fn decl(&'a mut self) -> &'a mut FnDecl {
match self {
FnKind::Fn(_, _, Fn { sig, .. }) => &mut sig.decl,
FnKind::Closure(_, _, decl, _) => decl,
}
}
pub fn ctxt(&self) -> Option<FnCtxt> {
match self {
FnKind::Fn(ctxt, ..) => Some(*ctxt),
FnKind::Closure(..) => None,
}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AttrId {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for bool {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for rustc_span::ByteSymbol {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for char {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for crate::token::CommentKind {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for crate::token::Delimiter {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for crate::token::Lit {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for crate::token::LitKind {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for
crate::tokenstream::LazyAttrTokenStream {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for crate::tokenstream::TokenStream {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Movability {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Mutability {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Pinnedness {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for
Result<(), rustc_span::ErrorGuaranteed> {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for
rustc_data_structures::fx::FxHashMap<Symbol, usize> {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for rustc_span::ErrorGuaranteed {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for std::borrow::Cow<'_, str> {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Symbol {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for SyntheticAttr {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for u8 {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for usize {
type Extra = ();
fn visit_mut(&mut self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{}
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<AngleBracketedArg> where
for<'a> &'a mut ThinVec<AngleBracketedArg>: IntoIterator<Item =
&'a mut T>, T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<Attribute> where
for<'a> &'a mut ThinVec<Attribute>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<GenericBound> where
for<'a> &'a mut ThinVec<GenericBound>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<Ident> where
for<'a> &'a mut ThinVec<Ident>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<(Ident, Option<Ident>)>
where
for<'a> &'a mut ThinVec<(Ident,
Option<Ident>)>: IntoIterator<Item = &'a mut T>, T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<(NodeId, Path)> where
for<'a> &'a mut ThinVec<(NodeId, Path)>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<PathSegment> where
for<'a> &'a mut ThinVec<PathSegment>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<PreciseCapturingArg> where
for<'a> &'a mut ThinVec<PreciseCapturingArg>: IntoIterator<Item =
&'a mut T>, T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<Pat> where
for<'a> &'a mut ThinVec<Pat>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<TestBinderConstraint> where
for<'a> &'a mut ThinVec<TestBinderConstraint>: IntoIterator<Item =
&'a mut T>, T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<TestBinderExists> where
for<'a> &'a mut ThinVec<TestBinderExists>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<TestBinderForall> where
for<'a> &'a mut ThinVec<TestBinderForall>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<Box<Ty>> where
for<'a> &'a mut ThinVec<Box<Ty>>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<TyPat> where
for<'a> &'a mut ThinVec<TyPat>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<EiiImpl> where
for<'a> &'a mut ThinVec<EiiImpl>: IntoIterator<Item = &'a mut T>,
T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AngleBracketedArg {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AngleBracketedArgs {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AsmMacro {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AssignOpKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AssocItemConstraintKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AttrArgs {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AttrItem {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AttrKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AttrStyle {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FnPtrTy {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for BindingMode {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for CoroutineKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for RangeLimits {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for UnsafeBinderCastKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for BinOpKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for BlockCheckMode {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for BorrowKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for BoundAsyncness {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for BoundConstness {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for BoundPolarity {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ByRef {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Closure {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Const {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ConstBlockItem {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ConstItem {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Defaultness {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Delegation {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for DelegationMac {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for DelegationSuffixes {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for DelimArgs {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for DelimSpan {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for EnumDef {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Extern {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ForLoopKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FormatArgPosition {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FormatArgsPiece {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FormatArgument {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FormatArgumentKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FormatArguments {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FormatPlaceholder {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for GenericParamKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Guard {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Impl {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ImplPolarity {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Inline {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for InlineAsmOperand {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for InlineAsmRegOrRegClass {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for InlineAsmTemplatePiece {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for IsAuto {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for LocalKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for MacCallStmt {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for MacStmtStyle {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for MatchKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for MethodCall {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ModKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ModSpans {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for MutTy {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for NormalAttr {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Parens {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ParenthesizedArgs {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for PatFieldsRest {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for PatKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for RangeEnd {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for RangeSyntax {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Recovered {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for RestrictionKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Safety {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for StaticItem {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for StrLit {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for StrStyle {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for StructExpr {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for StructRest {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Term {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Trait {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TraitBoundModifiers {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TraitObjectSyntax {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TyAlias {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TyKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TyPatKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for UnOp {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for UnsafeBinderTy {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for UnsafeSource {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for UseTreeKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for VisibilityKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for WhereBoundPredicate {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for WhereClause {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for WhereEqPredicate {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for WhereRegionPredicate {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for YieldKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for EiiDecl {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for EiiImpl {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ MutWalkable::walk_mut(self, visitor) }
}
}
#[doc =
" e.g., the `visit_item` method by default calls `visit_mut::walk_item`."]
pub trait MutVisitor: Sized + MutVisitorResult<Result = ()> {
fn visit_ident(&mut self, Ident { name: _, span }: &mut Ident)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Ident {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ visitor.visit_ident(self) }
}
}
{ MutVisitable::visit_mut(span, self, ()); };
Self::Result::output()
}
fn visit_anon_const(&mut self, node: &mut AnonConst) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AnonConst {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_anon_const(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_arm(&mut self, node: &mut Arm) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Arm {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_arm(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_assoc_item_constraint(&mut self,
node: &mut AssocItemConstraint) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AssocItemConstraint {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_assoc_item_constraint(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_attribute(&mut self, node: &mut Attribute) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Attribute {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_attribute(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_block(&mut self, node: &mut Block) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Block {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_block(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_capture_by(&mut self, node: &mut CaptureBy) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for CaptureBy {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_capture_by(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_closure_binder(&mut self, node: &mut ClosureBinder) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ClosureBinder {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_closure_binder(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_contract(&mut self, node: &mut FnContract) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FnContract {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_contract(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_coroutine_marker(&mut self, node: &mut CoroutineMarker) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for CoroutineMarker {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_coroutine_marker(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_crate(&mut self, node: &mut Crate) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Crate {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_crate(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_expr(&mut self, node: &mut Expr) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Expr {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_expr(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_expr_field(&mut self, node: &mut ExprField) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ExprField {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_expr_field(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_field_def(&mut self, node: &mut FieldDef) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FieldDef {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_field_def(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_field_def_extras(&mut self, node: &mut FieldDefExtras) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FieldDefExtras {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_field_def_extras(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_fn_decl(&mut self, node: &mut FnDecl) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FnDecl {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_fn_decl(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_fn_header(&mut self, node: &mut FnHeader) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FnHeader {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_fn_header(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_fn_ret_ty(&mut self, node: &mut FnRetTy) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FnRetTy {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_fn_ret_ty(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_foreign_mod(&mut self, node: &mut ForeignMod) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ForeignMod {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_foreign_mod(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_format_args(&mut self, node: &mut FormatArgs) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for FormatArgs {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_format_args(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_generic_arg(&mut self, node: &mut GenericArg) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for GenericArg {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_generic_arg(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_generic_args(&mut self, node: &mut GenericArgs) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for GenericArgs {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_generic_args(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_generic_param(&mut self, node: &mut GenericParam) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for GenericParam {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_generic_param(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_generics(&mut self, node: &mut Generics) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Generics {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_generics(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_inline_asm(&mut self, node: &mut InlineAsm) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for InlineAsm {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_inline_asm(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_inline_asm_sym(&mut self, node: &mut InlineAsmSym) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for InlineAsmSym {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_inline_asm_sym(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_impl_restriction(&mut self, node: &mut ImplRestriction) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ImplRestriction {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_impl_restriction(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_label(&mut self, node: &mut Label) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Label {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_label(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_lifetime(&mut self, node: &mut Lifetime, _ctxt: LifetimeCtxt) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Lifetime {
type Extra = (LifetimeCtxt);
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let (_ctxt) = extra; visitor.visit_lifetime(self, _ctxt); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_local(&mut self, node: &mut Local) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Local {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_local(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_mac_call(&mut self, node: &mut MacCall) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for MacCall {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_mac_call(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_macro_def(&mut self, node: &mut MacroDef) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for MacroDef {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_macro_def(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_mut_restriction(&mut self, node: &mut MutRestriction) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for MutRestriction {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_mut_restriction(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_param_bound(&mut self, node: &mut GenericBound,
_ctxt: BoundKind) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for GenericBound {
type Extra = (BoundKind);
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{
let (_ctxt) = extra;
visitor.visit_param_bound(self, _ctxt);
}
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_param(&mut self, node: &mut Param) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Param {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_param(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_pat_field(&mut self, node: &mut PatField) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for PatField {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_pat_field(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_path(&mut self, node: &mut Path) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Path {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_path(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_path_segment(&mut self, node: &mut PathSegment) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for PathSegment {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_path_segment(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_pat(&mut self, node: &mut Pat) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Pat {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_pat(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_poly_trait_ref(&mut self, node: &mut PolyTraitRef) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for PolyTraitRef {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_poly_trait_ref(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_precise_capturing_arg(&mut self,
node: &mut PreciseCapturingArg) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for PreciseCapturingArg {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_precise_capturing_arg(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_qself(&mut self, node: &mut QSelf) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for QSelf {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_qself(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_test_binder_body(&mut self, node: &mut TestBinderBody) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TestBinderBody {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_test_binder_body(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_test_binder_constraint(&mut self,
node: &mut TestBinderConstraint) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TestBinderConstraint {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{
let () = extra;
visitor.visit_test_binder_constraint(self);
}
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_test_binder_bound_type_constraint(&mut self,
node: &mut TestBinderBoundTypeConstraint) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TestBinderBoundTypeConstraint
{
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{
let () = extra;
visitor.visit_test_binder_bound_type_constraint(self);
}
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_test_binder_constraints(&mut self,
node: &mut TestBinderConstraints) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TestBinderConstraints {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{
let () = extra;
visitor.visit_test_binder_constraints(self);
}
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_test_binder_exists(&mut self, node: &mut TestBinderExists) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TestBinderExists {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_test_binder_exists(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_test_binder_forall(&mut self, node: &mut TestBinderForall) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TestBinderForall {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_test_binder_forall(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_trait_ref(&mut self, node: &mut TraitRef) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TraitRef {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_trait_ref(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_ty_pat(&mut self, node: &mut TyPat) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for TyPat {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_ty_pat(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_ty(&mut self, node: &mut Ty) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Ty {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_ty(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_use_tree(&mut self, node: &mut UseTree) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for UseTree {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_use_tree(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_variant_data(&mut self, node: &mut VariantData) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for VariantData {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_variant_data(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_variant(&mut self, node: &mut Variant) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Variant {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_variant(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_vis(&mut self, node: &mut Visibility) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Visibility {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_vis(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_where_predicate_kind(&mut self, node: &mut WherePredicateKind) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for WherePredicateKind {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_where_predicate_kind(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_where_predicate(&mut self, node: &mut WherePredicate) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for WherePredicate {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_where_predicate(self); }
}
}
MutWalkable::walk_mut(node, self)
}
fn visit_id(&mut self, _id: &mut NodeId) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for NodeId {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ visitor.visit_id(self) }
}
}
Self::Result::output()
}
fn visit_method_receiver_expr(&mut self, ex: &mut Expr) -> Self::Result {
self.visit_expr(ex)
}
fn visit_item(&mut self, item: &mut Item) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Item {
type Extra = ();
fn visit_mut(&mut self, vis: &mut V, _extra: Self::Extra)
-> V::Result {
{ vis.visit_item(self) }
}
}
walk_item(self, item)
}
fn visit_foreign_item(&mut self, item: &mut ForeignItem) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for ForeignItem {
type Extra = ();
fn visit_mut(&mut self, vis: &mut V, _extra: Self::Extra)
-> V::Result {
{ vis.visit_foreign_item(self) }
}
}
walk_item(self, item)
}
fn visit_assoc_item(&mut self, item: &mut AssocItem, ctxt: AssocCtxt)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for AssocItem {
type Extra = AssocCtxt;
fn visit_mut(&mut self, vis: &mut V, ctxt: Self::Extra)
-> V::Result {
{ vis.visit_assoc_item(self, ctxt) }
}
}
walk_assoc_item(self, item, ctxt)
}
fn visit_fn(&mut self, fk: FnKind<'_>, _: &AttrVec, _: Span, _: NodeId)
-> Self::Result {
walk_fn(self, fk)
}
#[inline]
fn visit_span(&mut self, _sp: &mut Span) {
#[allow(unused_parens, non_local_definitions)]
impl<V: MutVisitor> MutVisitable<V> for Span {
type Extra = ();
fn visit_mut(&mut self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ visitor.visit_span(self) }
}
}
}
fn flat_map_foreign_item(&mut self, ni: Box<ForeignItem>)
-> SmallVec<[Box<ForeignItem>; 1]> {
walk_flat_map_foreign_item(self, ni)
}
fn flat_map_item(&mut self, i: Box<Item>) -> SmallVec<[Box<Item>; 1]> {
walk_flat_map_item(self, i)
}
fn flat_map_field_def(&mut self, fd: FieldDef)
-> SmallVec<[FieldDef; 1]> {
walk_flat_map_field_def(self, fd)
}
fn flat_map_assoc_item(&mut self, i: Box<AssocItem>, ctxt: AssocCtxt)
-> SmallVec<[Box<AssocItem>; 1]> {
walk_flat_map_assoc_item(self, i, ctxt)
}
fn flat_map_stmt(&mut self, s: Stmt) -> SmallVec<[Stmt; 1]> {
walk_flat_map_stmt(self, s)
}
fn flat_map_arm(&mut self, arm: Arm) -> SmallVec<[Arm; 1]> {
walk_flat_map_arm(self, arm)
}
fn filter_map_expr(&mut self, e: Box<Expr>) -> Option<Box<Expr>> {
walk_filter_map_expr(self, e)
}
fn flat_map_variant(&mut self, v: Variant) -> SmallVec<[Variant; 1]> {
walk_flat_map_variant(self, v)
}
fn flat_map_param(&mut self, param: Param) -> SmallVec<[Param; 1]> {
walk_flat_map_param(self, param)
}
fn flat_map_generic_param(&mut self, param: GenericParam)
-> SmallVec<[GenericParam; 1]> {
walk_flat_map_generic_param(self, param)
}
fn flat_map_expr_field(&mut self, f: ExprField)
-> SmallVec<[ExprField; 1]> {
walk_flat_map_expr_field(self, f)
}
fn flat_map_where_predicate(&mut self, where_predicate: WherePredicate)
-> SmallVec<[WherePredicate; 1]> {
walk_flat_map_where_predicate(self, where_predicate)
}
fn flat_map_pat_field(&mut self, fp: PatField)
-> SmallVec<[PatField; 1]> {
walk_flat_map_pat_field(self, fp)
}
}
pub trait WalkItemKind {
type Ctxt;
fn walk<V: MutVisitor>(&mut self, attrs: &AttrVec, span: Span, id: NodeId,
visibility: &mut Visibility, ctxt: Self::Ctxt, vis: &mut V)
-> V::Result;
}
impl<V: MutVisitor, T> MutVisitable<V> for ThinVec<(UseTree, NodeId)> where
for<'a> &'a mut ThinVec<(UseTree,
NodeId)>: IntoIterator<Item = &'a mut T>, T: MutVisitable<V> {
type Extra = <T as MutVisitable<V>>::Extra;
#[inline]
fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
for i in self { i.visit_mut(visitor, extra); }
}
}
fn walk_item_inner<K: WalkItemKind,
V: MutVisitor>(visitor: &mut V, item: &mut Item<K>, ctxt: K::Ctxt)
-> V::Result {
let Item { attrs, id, kind, vis, span, tokens: _ } = item;
{
MutVisitable::visit_mut(id, visitor, ());
MutVisitable::visit_mut(attrs, visitor, ());
MutVisitable::visit_mut(vis, visitor, ());
};
match ::rustc_ast_ir::visit::VisitorResult::branch(kind.walk(attrs, *span,
*id, vis, ctxt, visitor)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
{ MutVisitable::visit_mut(span, visitor, ()); };
V::Result::output()
}
pub fn walk_item<K: WalkItemKind<Ctxt = ()>,
V: MutVisitor>(visitor: &mut V, item: &mut Item<K>) -> V::Result {
walk_item_inner(visitor, item, ())
}
pub fn walk_assoc_item<K: WalkItemKind<Ctxt = AssocCtxt>,
V: MutVisitor>(visitor: &mut V, item: &mut Item<K>, ctxt: AssocCtxt)
-> V::Result {
walk_item_inner(visitor, item, ctxt)
}
impl WalkItemKind for ItemKind {
type Ctxt = ();
fn walk<V: MutVisitor>(&mut self, attrs: &AttrVec, span: Span, id: NodeId,
visibility: &mut Visibility, _ctxt: Self::Ctxt, vis: &mut V)
-> V::Result {
match self {
ItemKind::Fn(func) => {
let kind = FnKind::Fn(FnCtxt::Free, visibility, &mut *func);
match ::rustc_ast_ir::visit::VisitorResult::branch(vis.visit_fn(kind,
attrs, span, id)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::ExternCrate(orig_name, ident) => {
MutVisitable::visit_mut(orig_name, vis, ());
MutVisitable::visit_mut(ident, vis, ());
}
ItemKind::Use(use_tree) => {
MutVisitable::visit_mut(use_tree, vis, ());
}
ItemKind::Static(item) => {
MutVisitable::visit_mut(item, vis, ());
}
ItemKind::ConstBlock(item) => {
MutVisitable::visit_mut(item, vis, ());
}
ItemKind::Const(item) => {
MutVisitable::visit_mut(item, vis, ());
}
ItemKind::Mod(safety, ident, mod_kind) => {
MutVisitable::visit_mut(safety, vis, ());
MutVisitable::visit_mut(ident, vis, ());
MutVisitable::visit_mut(mod_kind, vis, ());
}
ItemKind::ForeignMod(nm) => {
MutVisitable::visit_mut(nm, vis, ());
}
ItemKind::GlobalAsm(asm) => {
MutVisitable::visit_mut(asm, vis, ());
}
ItemKind::TyAlias(ty_alias) => {
MutVisitable::visit_mut(ty_alias, vis, ());
}
ItemKind::Enum(ident, generics, enum_definition) => {
MutVisitable::visit_mut(ident, vis, ());
MutVisitable::visit_mut(generics, vis, ());
MutVisitable::visit_mut(enum_definition, vis, ());
}
ItemKind::Struct(ident, generics, variant_data) |
ItemKind::Union(ident, generics, variant_data) => {
MutVisitable::visit_mut(ident, vis, ());
MutVisitable::visit_mut(generics, vis, ());
MutVisitable::visit_mut(variant_data, vis, ());
}
ItemKind::Impl(impl_) => {
MutVisitable::visit_mut(impl_, vis, ());
}
ItemKind::Trait(trait_) => {
MutVisitable::visit_mut(trait_, vis, ());
}
ItemKind::TraitAlias(TraitAlias {
constness, ident, generics, bounds }) => {
{
MutVisitable::visit_mut(constness, vis, ());
MutVisitable::visit_mut(ident, vis, ());
MutVisitable::visit_mut(generics, vis, ());
};
MutVisitable::visit_mut(bounds, vis, BoundKind::Bound)
}
ItemKind::MacCall(m) => { MutVisitable::visit_mut(m, vis, ()); }
ItemKind::MacroDef(ident, def) => {
MutVisitable::visit_mut(ident, vis, ());
MutVisitable::visit_mut(def, vis, ());
}
ItemKind::Delegation(delegation) => {
MutVisitable::visit_mut(delegation, vis, ());
}
ItemKind::DelegationMac(dm) => {
MutVisitable::visit_mut(dm, vis, ());
}
ItemKind::TestBinderConstraints(item) => {
MutVisitable::visit_mut(item, vis, ());
}
}
V::Result::output()
}
}
impl WalkItemKind for AssocItemKind {
type Ctxt = AssocCtxt;
fn walk<V: MutVisitor>(&mut self, attrs: &AttrVec, span: Span, id: NodeId,
visibility: &mut Visibility, ctxt: Self::Ctxt, vis: &mut V)
-> V::Result {
match self {
AssocItemKind::Const(item) => {
MutVisitable::visit_mut(item, vis, ());
}
AssocItemKind::Fn(func) => {
let kind =
FnKind::Fn(FnCtxt::Assoc(ctxt), visibility, &mut *func);
match ::rustc_ast_ir::visit::VisitorResult::branch(vis.visit_fn(kind,
attrs, span, id)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
AssocItemKind::Type(alias) => {
MutVisitable::visit_mut(alias, vis, ());
}
AssocItemKind::MacCall(mac) => {
MutVisitable::visit_mut(mac, vis, ());
}
AssocItemKind::Delegation(delegation) => {
MutVisitable::visit_mut(delegation, vis, ());
}
AssocItemKind::DelegationMac(dm) => {
MutVisitable::visit_mut(dm, vis, ());
}
}
V::Result::output()
}
}
impl WalkItemKind for ForeignItemKind {
type Ctxt = ();
fn walk<V: MutVisitor>(&mut self, attrs: &AttrVec, span: Span, id: NodeId,
visibility: &mut Visibility, _ctxt: Self::Ctxt, vis: &mut V)
-> V::Result {
match self {
ForeignItemKind::Static(item) => {
MutVisitable::visit_mut(item, vis, ());
}
ForeignItemKind::Fn(func) => {
let kind =
FnKind::Fn(FnCtxt::Foreign, visibility, &mut *func);
match ::rustc_ast_ir::visit::VisitorResult::branch(vis.visit_fn(kind,
attrs, span, id)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
ForeignItemKind::TyAlias(alias) => {
MutVisitable::visit_mut(alias, vis, ());
}
ForeignItemKind::MacCall(mac) => {
MutVisitable::visit_mut(mac, vis, ());
}
}
V::Result::output()
}
}
pub fn walk_fn<V: MutVisitor>(vis: &mut V, kind: FnKind<'_>) -> V::Result {
match kind {
FnKind::Fn(_ctxt, _vis, Fn {
defaultness,
ident,
sig,
generics,
contract,
body,
define_opaque,
eii_impl }) => {
let FnSig { header, decl, span } = sig;
{
MutVisitable::visit_mut(defaultness, vis, ());
MutVisitable::visit_mut(ident, vis, ());
MutVisitable::visit_mut(header, vis, ());
MutVisitable::visit_mut(generics, vis, ());
MutVisitable::visit_mut(decl, vis, ());
MutVisitable::visit_mut(contract, vis, ());
MutVisitable::visit_mut(body, vis, ());
MutVisitable::visit_mut(span, vis, ());
MutVisitable::visit_mut(define_opaque, vis, ());
MutVisitable::visit_mut(eii_impl, vis, ());
};
}
FnKind::Closure(binder, coroutine_marker, decl, body) => {
MutVisitable::visit_mut(binder, vis, ());
MutVisitable::visit_mut(coroutine_marker, vis, ());
MutVisitable::visit_mut(decl, vis, ());
MutVisitable::visit_mut(body, vis, ());
}
}
V::Result::output()
}
impl<V: MutVisitor> MutWalkable<V> for Impl {
fn walk_mut(&mut self, vis: &mut V) -> V::Result {
{
let Impl { generics, of_trait, self_ty, items, constness: _ } =
self;
match ::rustc_ast_ir::visit::VisitorResult::branch(vis.visit_generics(generics))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
if let Some(of_trait) = of_trait {
let TraitImplHeader { defaultness, safety, polarity, trait_ref
} = of_trait;
{
MutVisitable::visit_mut(defaultness, vis, ());
MutVisitable::visit_mut(safety, vis, ());
MutVisitable::visit_mut(polarity, vis, ());
MutVisitable::visit_mut(trait_ref, vis, ());
};
}
match ::rustc_ast_ir::visit::VisitorResult::branch(vis.visit_ty(self_ty))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
MutVisitable::visit_mut(items, vis,
AssocCtxt::Impl { of_trait: of_trait.is_some() });
V::Result::output()
}
}
}
impl<V: MutVisitor> MutWalkable<V> for MethodCall {
fn walk_mut(&mut self, vis: &mut V) -> V::Result {
{
let MethodCall { seg, receiver, args, span } = self;
match ::rustc_ast_ir::visit::VisitorResult::branch(vis.visit_method_receiver_expr(receiver))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
{
MutVisitable::visit_mut(seg, vis, ());
MutVisitable::visit_mut(args, vis, ());
MutVisitable::visit_mut(span, vis, ());
};
V::Result::output()
}
}
}
impl<V: MutVisitor> MutWalkable<V> for Expr {
fn walk_mut(&mut self, vis: &mut V) -> V::Result {
{
let Expr { id, kind, span, attrs, tokens: _ } = self;
{
MutVisitable::visit_mut(id, vis, ());
MutVisitable::visit_mut(attrs, vis, ());
};
match kind {
ExprKind::Array(exprs) => {
MutVisitable::visit_mut(exprs, vis, ());
}
ExprKind::ConstBlock(anon_const) => {
MutVisitable::visit_mut(anon_const, vis, ());
}
ExprKind::Repeat(element, count) => {
MutVisitable::visit_mut(element, vis, ());
MutVisitable::visit_mut(count, vis, ());
}
ExprKind::Struct(se) => {
MutVisitable::visit_mut(se, vis, ());
}
ExprKind::Tup(exprs) => {
MutVisitable::visit_mut(exprs, vis, ());
}
ExprKind::Call(callee_expression, arguments) => {
MutVisitable::visit_mut(callee_expression, vis, ());
MutVisitable::visit_mut(arguments, vis, ());
}
ExprKind::MethodCall(mc) => {
MutVisitable::visit_mut(mc, vis, ());
}
ExprKind::Binary(op, lhs, rhs) => {
MutVisitable::visit_mut(op, vis, ());
MutVisitable::visit_mut(lhs, vis, ());
MutVisitable::visit_mut(rhs, vis, ());
}
ExprKind::AddrOf(kind, mutbl, subexpression) => {
MutVisitable::visit_mut(kind, vis, ());
MutVisitable::visit_mut(mutbl, vis, ());
MutVisitable::visit_mut(subexpression, vis, ());
}
ExprKind::Unary(op, subexpression) => {
MutVisitable::visit_mut(op, vis, ());
MutVisitable::visit_mut(subexpression, vis, ());
}
ExprKind::Cast(subexpression, typ) |
ExprKind::Type(subexpression, typ) => {
MutVisitable::visit_mut(subexpression, vis, ());
MutVisitable::visit_mut(typ, vis, ());
}
ExprKind::Let(pat, expr, span, _recovered) => {
MutVisitable::visit_mut(pat, vis, ());
MutVisitable::visit_mut(expr, vis, ());
MutVisitable::visit_mut(span, vis, ());
}
ExprKind::If(head_expression, if_block, optional_else) => {
MutVisitable::visit_mut(head_expression, vis, ());
MutVisitable::visit_mut(if_block, vis, ());
MutVisitable::visit_mut(optional_else, vis, ());
}
ExprKind::While(subexpression, block, opt_label) => {
MutVisitable::visit_mut(subexpression, vis, ());
MutVisitable::visit_mut(block, vis, ());
MutVisitable::visit_mut(opt_label, vis, ());
}
ExprKind::ForLoop(ForLoop { pat, iter, body, label, kind }) =>
{
MutVisitable::visit_mut(pat, vis, ());
MutVisitable::visit_mut(iter, vis, ());
MutVisitable::visit_mut(body, vis, ());
MutVisitable::visit_mut(label, vis, ());
MutVisitable::visit_mut(kind, vis, ());
}
ExprKind::Loop(block, opt_label, span) => {
MutVisitable::visit_mut(block, vis, ());
MutVisitable::visit_mut(opt_label, vis, ());
MutVisitable::visit_mut(span, vis, ());
}
ExprKind::Match(subexpression, arms, kind) => {
MutVisitable::visit_mut(subexpression, vis, ());
MutVisitable::visit_mut(arms, vis, ());
MutVisitable::visit_mut(kind, vis, ());
}
ExprKind::Closure(Closure {
binder,
capture_clause,
coroutine_marker,
constness,
movability,
fn_decl,
body,
fn_decl_span,
fn_arg_span }) => {
{
MutVisitable::visit_mut(constness, vis, ());
MutVisitable::visit_mut(movability, vis, ());
MutVisitable::visit_mut(capture_clause, vis, ());
};
let kind =
FnKind::Closure(binder, coroutine_marker, fn_decl, body);
match ::rustc_ast_ir::visit::VisitorResult::branch(vis.visit_fn(kind,
attrs, *span, *id)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
{
MutVisitable::visit_mut(fn_decl_span, vis, ());
MutVisitable::visit_mut(fn_arg_span, vis, ());
};
}
ExprKind::Block(block, opt_label) => {
MutVisitable::visit_mut(block, vis, ());
MutVisitable::visit_mut(opt_label, vis, ());
}
ExprKind::Gen(capt, body, kind, decl_span) => {
MutVisitable::visit_mut(capt, vis, ());
MutVisitable::visit_mut(body, vis, ());
MutVisitable::visit_mut(kind, vis, ());
MutVisitable::visit_mut(decl_span, vis, ());
}
ExprKind::Await(expr, span) | ExprKind::Move(expr, span) |
ExprKind::Use(expr, span) => {
MutVisitable::visit_mut(expr, vis, ());
MutVisitable::visit_mut(span, vis, ());
}
ExprKind::Assign(lhs, rhs, span) => {
MutVisitable::visit_mut(lhs, vis, ());
MutVisitable::visit_mut(rhs, vis, ());
MutVisitable::visit_mut(span, vis, ());
}
ExprKind::AssignOp(op, lhs, rhs) => {
MutVisitable::visit_mut(op, vis, ());
MutVisitable::visit_mut(lhs, vis, ());
MutVisitable::visit_mut(rhs, vis, ());
}
ExprKind::Field(subexpression, ident) => {
MutVisitable::visit_mut(subexpression, vis, ());
MutVisitable::visit_mut(ident, vis, ());
}
ExprKind::Index(main_expression, index_expression, span) => {
MutVisitable::visit_mut(main_expression, vis, ());
MutVisitable::visit_mut(index_expression, vis, ());
MutVisitable::visit_mut(span, vis, ());
}
ExprKind::Range(start, end, limit) => {
MutVisitable::visit_mut(start, vis, ());
MutVisitable::visit_mut(end, vis, ());
MutVisitable::visit_mut(limit, vis, ());
}
ExprKind::Underscore => {}
ExprKind::Path(maybe_qself, path) => {
MutVisitable::visit_mut(maybe_qself, vis, ());
MutVisitable::visit_mut(path, vis, ());
}
ExprKind::Break(opt_label, opt_expr) => {
MutVisitable::visit_mut(opt_label, vis, ());
MutVisitable::visit_mut(opt_expr, vis, ());
}
ExprKind::Continue(opt_label) => {
MutVisitable::visit_mut(opt_label, vis, ());
}
ExprKind::Ret(optional_expression) |
ExprKind::Yeet(optional_expression) => {
MutVisitable::visit_mut(optional_expression, vis, ());
}
ExprKind::Become(expr) => {
MutVisitable::visit_mut(expr, vis, ());
}
ExprKind::MacCall(mac) => {
MutVisitable::visit_mut(mac, vis, ());
}
ExprKind::Paren(subexpression) => {
MutVisitable::visit_mut(subexpression, vis, ());
}
ExprKind::InlineAsm(asm) => {
MutVisitable::visit_mut(asm, vis, ());
}
ExprKind::FormatArgs(f) => {
MutVisitable::visit_mut(f, vis, ());
}
ExprKind::OffsetOf(container, fields) => {
MutVisitable::visit_mut(container, vis, ());
MutVisitable::visit_mut(fields, vis, ());
}
ExprKind::Yield(kind) => {
MutVisitable::visit_mut(kind, vis, ());
}
ExprKind::Try(subexpression) => {
MutVisitable::visit_mut(subexpression, vis, ());
}
ExprKind::TryBlock(body, optional_type) => {
MutVisitable::visit_mut(body, vis, ());
MutVisitable::visit_mut(optional_type, vis, ());
}
ExprKind::Lit(token) => {
MutVisitable::visit_mut(token, vis, ());
}
ExprKind::IncludedBytes(bytes) => {
MutVisitable::visit_mut(bytes, vis, ());
}
ExprKind::UnsafeBinderCast(kind, expr, ty) => {
MutVisitable::visit_mut(kind, vis, ());
MutVisitable::visit_mut(expr, vis, ());
MutVisitable::visit_mut(ty, vis, ());
}
ExprKind::DirectConstArg(expr) => {
MutVisitable::visit_mut(expr, vis, ());
}
ExprKind::Err(_guar) => {}
ExprKind::Dummy => {}
}
{ MutVisitable::visit_mut(span, vis, ()); };
V::Result::output()
}
}
}
pub fn walk_anon_const<V: MutVisitor>(visitor: &mut V, node: &mut AnonConst) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_arm<V: MutVisitor>(visitor: &mut V, node: &mut Arm) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_assoc_item_constraint<V: MutVisitor>(visitor: &mut V,
node: &mut AssocItemConstraint) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_attribute<V: MutVisitor>(visitor: &mut V, node: &mut Attribute) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_block<V: MutVisitor>(visitor: &mut V, node: &mut Block) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_capture_by<V: MutVisitor>(visitor: &mut V, node: &mut CaptureBy) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_closure_binder<V: MutVisitor>(visitor: &mut V,
node: &mut ClosureBinder) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_contract<V: MutVisitor>(visitor: &mut V, node: &mut FnContract) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_coroutine_marker<V: MutVisitor>(visitor: &mut V,
node: &mut CoroutineMarker) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_crate<V: MutVisitor>(visitor: &mut V, node: &mut Crate) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_expr<V: MutVisitor>(visitor: &mut V, node: &mut Expr) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_expr_field<V: MutVisitor>(visitor: &mut V, node: &mut ExprField) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_field_def<V: MutVisitor>(visitor: &mut V, node: &mut FieldDef) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_field_def_extras<V: MutVisitor>(visitor: &mut V,
node: &mut FieldDefExtras) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_fn_decl<V: MutVisitor>(visitor: &mut V, node: &mut FnDecl) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_fn_header<V: MutVisitor>(visitor: &mut V, node: &mut FnHeader) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_fn_ret_ty<V: MutVisitor>(visitor: &mut V, node: &mut FnRetTy) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_foreign_mod<V: MutVisitor>(visitor: &mut V,
node: &mut ForeignMod) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_format_args<V: MutVisitor>(visitor: &mut V,
node: &mut FormatArgs) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_generic_arg<V: MutVisitor>(visitor: &mut V,
node: &mut GenericArg) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_generic_args<V: MutVisitor>(visitor: &mut V,
node: &mut GenericArgs) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_generic_param<V: MutVisitor>(visitor: &mut V,
node: &mut GenericParam) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_generics<V: MutVisitor>(visitor: &mut V, node: &mut Generics) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_inline_asm<V: MutVisitor>(visitor: &mut V, node: &mut InlineAsm) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_inline_asm_sym<V: MutVisitor>(visitor: &mut V,
node: &mut InlineAsmSym) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_impl_restriction<V: MutVisitor>(visitor: &mut V,
node: &mut ImplRestriction) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_label<V: MutVisitor>(visitor: &mut V, node: &mut Label) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_lifetime<V: MutVisitor>(visitor: &mut V, node: &mut Lifetime) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_local<V: MutVisitor>(visitor: &mut V, node: &mut Local) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_mac<V: MutVisitor>(visitor: &mut V, node: &mut MacCall) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_macro_def<V: MutVisitor>(visitor: &mut V, node: &mut MacroDef) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_mut_restriction<V: MutVisitor>(visitor: &mut V,
node: &mut MutRestriction) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_param_bound<V: MutVisitor>(visitor: &mut V,
node: &mut GenericBound) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_param<V: MutVisitor>(visitor: &mut V, node: &mut Param) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_pat_field<V: MutVisitor>(visitor: &mut V, node: &mut PatField) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_path<V: MutVisitor>(visitor: &mut V, node: &mut Path) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_path_segment<V: MutVisitor>(visitor: &mut V,
node: &mut PathSegment) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_pat<V: MutVisitor>(visitor: &mut V, node: &mut Pat) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_poly_trait_ref<V: MutVisitor>(visitor: &mut V,
node: &mut PolyTraitRef) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_precise_capturing_arg<V: MutVisitor>(visitor: &mut V,
node: &mut PreciseCapturingArg) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_qself<V: MutVisitor>(visitor: &mut V, node: &mut QSelf) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_test_binder_body<V: MutVisitor>(visitor: &mut V,
node: &mut TestBinderBody) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_test_binder_constraint<V: MutVisitor>(visitor: &mut V,
node: &mut TestBinderConstraint) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_test_binder_bound_type_constraint<V: MutVisitor>(visitor: &mut V,
node: &mut TestBinderBoundTypeConstraint) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_test_binder_exists<V: MutVisitor>(visitor: &mut V,
node: &mut TestBinderExists) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_test_binder_forall<V: MutVisitor>(visitor: &mut V,
node: &mut TestBinderForall) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_trait_ref<V: MutVisitor>(visitor: &mut V, node: &mut TraitRef) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_ty_pat<V: MutVisitor>(visitor: &mut V, node: &mut TyPat) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_ty<V: MutVisitor>(visitor: &mut V, node: &mut Ty) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_use_tree<V: MutVisitor>(visitor: &mut V, node: &mut UseTree) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_variant_data<V: MutVisitor>(visitor: &mut V,
node: &mut VariantData) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_variant<V: MutVisitor>(visitor: &mut V, node: &mut Variant) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_vis<V: MutVisitor>(visitor: &mut V, node: &mut Visibility) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_where_predicate_kind<V: MutVisitor>(visitor: &mut V,
node: &mut WherePredicateKind) {
MutWalkable::walk_mut(node, visitor)
}
pub fn walk_where_predicate<V: MutVisitor>(visitor: &mut V,
node: &mut WherePredicate) {
MutWalkable::walk_mut(node, visitor)
}super::common_visitor_and_walkers!((mut) MutVisitor);
245
246macro_rules! generate_flat_map_visitor_fns {
247 ($($flat_map_fn:ident, $Ty:ty $(, $param:ident: $ParamTy:ty)?;)+) => {
248 $(
249 #[allow(unused_parens)]
250 impl<V: MutVisitor> MutVisitable<V> for ThinVec<$Ty> {
251 type Extra = ($($ParamTy)?);
252
253 #[inline]
254 fn visit_mut(&mut self, visitor: &mut V, ($($param)?): Self::Extra) -> V::Result {
255 self.flat_map_in_place(|value| visitor.$flat_map_fn(value $(, $param)?));
256 }
257 }
258 )+
259 }
260}
261
262#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<Box<Item>> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.flat_map_item(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<Box<ForeignItem>> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.flat_map_foreign_item(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<GenericParam> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.flat_map_generic_param(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<Stmt> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.flat_map_stmt(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<Box<Expr>> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.filter_map_expr(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<ExprField> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.flat_map_expr_field(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<PatField> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.flat_map_pat_field(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<Variant> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.flat_map_variant(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<Box<AssocItem>> {
type Extra = (AssocCtxt);
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (ctxt): Self::Extra)
-> V::Result {
self.flat_map_in_place(|value|
visitor.flat_map_assoc_item(value, ctxt));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<WherePredicate> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value|
visitor.flat_map_where_predicate(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<Param> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.flat_map_param(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<FieldDef> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.flat_map_field_def(value));
}
}
#[allow(unused_parens)]
impl<V: MutVisitor> MutVisitable<V> for ThinVec<Arm> {
type Extra = ();
#[inline]
fn visit_mut(&mut self, visitor: &mut V, (): Self::Extra) -> V::Result {
self.flat_map_in_place(|value| visitor.flat_map_arm(value));
}
}generate_flat_map_visitor_fns! {
263 flat_map_item, Box<Item>;
264 flat_map_foreign_item, Box<ForeignItem>;
265 flat_map_generic_param, GenericParam;
266 flat_map_stmt, Stmt;
267 filter_map_expr, Box<Expr>; flat_map_expr_field, ExprField;
269 flat_map_pat_field, PatField;
270 flat_map_variant, Variant;
271 flat_map_assoc_item, Box<AssocItem>, ctxt: AssocCtxt;
272 flat_map_where_predicate, WherePredicate;
273 flat_map_param, Param;
274 flat_map_field_def, FieldDef;
275 flat_map_arm, Arm;
276}
277
278pub fn walk_flat_map_pat_field<T: MutVisitor>(
279 vis: &mut T,
280 mut fp: PatField,
281) -> SmallVec<[PatField; 1]> {
282 vis.visit_pat_field(&mut fp);
283 {
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(fp);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[fp])))
}
}smallvec![fp]
284}
285
286macro_rules! generate_walk_flat_map_fns {
287 ($($fn_name:ident($Ty:ty$(,$extra_name:ident: $ExtraTy:ty)*) => $visit_fn_name:ident;)+) => {$(
288 pub fn $fn_name<V: MutVisitor>(
289 vis: &mut V,
290 mut value: $Ty
291 $(,$extra_name: $ExtraTy)*
292 ) -> SmallVec<[$Ty; 1]> {
293 vis.$visit_fn_name(&mut value$(,$extra_name)*);
294 smallvec![value]
295 }
296 )+};
297}
298
299pub fn walk_flat_map_arm<V: MutVisitor>(vis: &mut V, mut value: Arm)
-> SmallVec<[Arm; 1]> {
vis.visit_arm(&mut value);
{
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(value);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[value])))
}
}
}
pub fn walk_flat_map_variant<V: MutVisitor>(vis: &mut V, mut value: Variant)
-> SmallVec<[Variant; 1]> {
vis.visit_variant(&mut value);
{
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(value);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[value])))
}
}
}
pub fn walk_flat_map_param<V: MutVisitor>(vis: &mut V, mut value: Param)
-> SmallVec<[Param; 1]> {
vis.visit_param(&mut value);
{
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(value);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[value])))
}
}
}
pub fn walk_flat_map_generic_param<V: MutVisitor>(vis: &mut V,
mut value: GenericParam) -> SmallVec<[GenericParam; 1]> {
vis.visit_generic_param(&mut value);
{
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(value);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[value])))
}
}
}
pub fn walk_flat_map_where_predicate<V: MutVisitor>(vis: &mut V,
mut value: WherePredicate) -> SmallVec<[WherePredicate; 1]> {
vis.visit_where_predicate(&mut value);
{
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(value);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[value])))
}
}
}
pub fn walk_flat_map_field_def<V: MutVisitor>(vis: &mut V,
mut value: FieldDef) -> SmallVec<[FieldDef; 1]> {
vis.visit_field_def(&mut value);
{
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(value);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[value])))
}
}
}
pub fn walk_flat_map_expr_field<V: MutVisitor>(vis: &mut V,
mut value: ExprField) -> SmallVec<[ExprField; 1]> {
vis.visit_expr_field(&mut value);
{
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(value);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[value])))
}
}
}
pub fn walk_flat_map_item<V: MutVisitor>(vis: &mut V, mut value: Box<Item>)
-> SmallVec<[Box<Item>; 1]> {
vis.visit_item(&mut value);
{
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(value);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[value])))
}
}
}
pub fn walk_flat_map_foreign_item<V: MutVisitor>(vis: &mut V,
mut value: Box<ForeignItem>) -> SmallVec<[Box<ForeignItem>; 1]> {
vis.visit_foreign_item(&mut value);
{
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(value);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[value])))
}
}
}
pub fn walk_flat_map_assoc_item<V: MutVisitor>(vis: &mut V,
mut value: Box<AssocItem>, ctxt: AssocCtxt)
-> SmallVec<[Box<AssocItem>; 1]> {
vis.visit_assoc_item(&mut value, ctxt);
{
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(value);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[value])))
}
}
}generate_walk_flat_map_fns! {
300 walk_flat_map_arm(Arm) => visit_arm;
301 walk_flat_map_variant(Variant) => visit_variant;
302 walk_flat_map_param(Param) => visit_param;
303 walk_flat_map_generic_param(GenericParam) => visit_generic_param;
304 walk_flat_map_where_predicate(WherePredicate) => visit_where_predicate;
305 walk_flat_map_field_def(FieldDef) => visit_field_def;
306 walk_flat_map_expr_field(ExprField) => visit_expr_field;
307 walk_flat_map_item(Box<Item>) => visit_item;
308 walk_flat_map_foreign_item(Box<ForeignItem>) => visit_foreign_item;
309 walk_flat_map_assoc_item(Box<AssocItem>, ctxt: AssocCtxt) => visit_assoc_item;
310}
311
312pub fn walk_filter_map_expr<T: MutVisitor>(vis: &mut T, mut e: Box<Expr>) -> Option<Box<Expr>> {
313 vis.visit_expr(&mut e);
314 Some(e)
315}
316
317pub fn walk_flat_map_stmt<T: MutVisitor>(
318 vis: &mut T,
319 Stmt { kind, span, mut id }: Stmt,
320) -> SmallVec<[Stmt; 1]> {
321 vis.visit_id(&mut id);
322 let mut stmts: SmallVec<[Stmt; 1]> = walk_flat_map_stmt_kind(vis, kind)
323 .into_iter()
324 .map(|kind| Stmt { id, kind, span })
325 .collect();
326 match &mut stmts[..] {
327 [] => {}
328 [stmt] => vis.visit_span(&mut stmt.span),
329 _ => {
::core::panicking::panic_fmt(format_args!("cloning statement `NodeId`s is prohibited by default, the visitor should implement custom statement visiting"));
}panic!(
330 "cloning statement `NodeId`s is prohibited by default, \
331 the visitor should implement custom statement visiting"
332 ),
333 }
334 stmts
335}
336
337pub fn walk_flat_map_stmt_kind<T: MutVisitor>(
338 vis: &mut T,
339 kind: StmtKind,
340) -> SmallVec<[StmtKind; 1]> {
341 match kind {
342 StmtKind::Let(mut local) => {
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(StmtKind::Let({ vis.visit_local(&mut local); local }));
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[StmtKind::Let({ vis.visit_local(&mut local); local })])))
}
}smallvec![StmtKind::Let({
343 vis.visit_local(&mut local);
344 local
345 })],
346 StmtKind::Item(item) => vis.flat_map_item(item).into_iter().map(StmtKind::Item).collect(),
347 StmtKind::Expr(expr) => vis.filter_map_expr(expr).into_iter().map(StmtKind::Expr).collect(),
348 StmtKind::Semi(expr) => vis.filter_map_expr(expr).into_iter().map(StmtKind::Semi).collect(),
349 StmtKind::Empty => {
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(StmtKind::Empty);
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[StmtKind::Empty])))
}
}smallvec![StmtKind::Empty],
350 StmtKind::MacCall(mut mac) => {
351 let MacCallStmt { mac: mac_, style: _, attrs, tokens: _ } = mac.deref_mut();
352 for attr in attrs {
353 vis.visit_attribute(attr);
354 }
355 vis.visit_mac_call(mac_);
356 {
let count = 0usize + 1usize;
let mut vec = ::smallvec::SmallVec::new();
if count <= vec.inline_size() {
vec.push(StmtKind::MacCall(mac));
vec
} else {
::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[StmtKind::MacCall(mac)])))
}
}smallvec![StmtKind::MacCall(mac)]
357 }
358 }
359}