1pub use rustc_ast_ir::visit::VisitorResult;
17pub use rustc_ast_ir::{try_visit, visit_opt, walk_list, walk_visitable_list};
18use rustc_macros::StableHash;
19use rustc_span::{Ident, Span, Spanned, Symbol};
20use thin_vec::ThinVec;
21
22use crate::ast::*;
23use crate::tokenstream::DelimSpan;
24
25#[derive(#[automatically_derived]
impl ::core::marker::Copy for AssocCtxt { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for AssocCtxt { }
#[automatically_derived]
impl ::core::clone::Clone for AssocCtxt {
#[inline]
fn clone(&self) -> AssocCtxt {
let _: ::core::clone::AssertParamIsClone<bool>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for AssocCtxt {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AssocCtxt::Trait => ::core::fmt::Formatter::write_str(f, "Trait"),
AssocCtxt::Impl { of_trait: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Impl",
"of_trait", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for AssocCtxt { }
#[automatically_derived]
impl ::core::cmp::PartialEq for AssocCtxt {
#[inline]
fn eq(&self, other: &AssocCtxt) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(AssocCtxt::Impl { of_trait: __self_0 }, AssocCtxt::Impl {
of_trait: __arg1_0 }) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for AssocCtxt {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for AssocCtxt {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
match *self {
AssocCtxt::Trait => {}
AssocCtxt::Impl { of_trait: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
26pub enum AssocCtxt {
27 Trait,
28 Impl { of_trait: bool },
29}
30
31#[derive(#[automatically_derived]
impl ::core::marker::Copy for FnCtxt { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for FnCtxt { }
#[automatically_derived]
impl ::core::clone::Clone for FnCtxt {
#[inline]
fn clone(&self) -> FnCtxt {
let _: ::core::clone::AssertParamIsClone<AssocCtxt>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for FnCtxt {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
FnCtxt::Free => ::core::fmt::Formatter::write_str(f, "Free"),
FnCtxt::Foreign =>
::core::fmt::Formatter::write_str(f, "Foreign"),
FnCtxt::Assoc(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Assoc",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for FnCtxt { }
#[automatically_derived]
impl ::core::cmp::PartialEq for FnCtxt {
#[inline]
fn eq(&self, other: &FnCtxt) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(FnCtxt::Assoc(__self_0), FnCtxt::Assoc(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq)]
32pub enum FnCtxt {
33 Free,
34 Foreign,
35 Assoc(AssocCtxt),
36}
37
38#[derive(#[automatically_derived]
impl ::core::marker::Copy for BoundKind { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for BoundKind { }
#[automatically_derived]
impl ::core::clone::Clone for BoundKind {
#[inline]
fn clone(&self) -> BoundKind { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for BoundKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
BoundKind::Bound => "Bound",
BoundKind::Impl => "Impl",
BoundKind::TraitObject => "TraitObject",
BoundKind::SuperTraits => "SuperTraits",
})
}
}Debug)]
39pub enum BoundKind {
40 Bound,
43
44 Impl,
47
48 TraitObject,
51
52 SuperTraits,
55}
56impl BoundKind {
57 pub fn descr(self) -> &'static str {
58 match self {
59 BoundKind::Bound => "bounds",
60 BoundKind::Impl => "`impl Trait`",
61 BoundKind::TraitObject => "`dyn` trait object bounds",
62 BoundKind::SuperTraits => "supertrait bounds",
63 }
64 }
65}
66
67#[derive(#[automatically_derived]
impl ::core::marker::Copy for LifetimeCtxt { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for LifetimeCtxt { }
#[automatically_derived]
impl ::core::clone::Clone for LifetimeCtxt {
#[inline]
fn clone(&self) -> LifetimeCtxt { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for LifetimeCtxt {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
LifetimeCtxt::Ref => "Ref",
LifetimeCtxt::Bound => "Bound",
LifetimeCtxt::GenericArg => "GenericArg",
})
}
}Debug)]
68pub enum LifetimeCtxt {
69 Ref,
71 Bound,
73 GenericArg,
75}
76
77pub(crate) trait Visitable<'a, V: Visitor<'a>> {
78 type Extra: Copy;
79
80 #[must_use]
81 fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result;
82}
83
84impl<'a, V: Visitor<'a>, T: ?Sized> Visitable<'a, V> for Box<T>
85where
86 T: Visitable<'a, V>,
87{
88 type Extra = T::Extra;
89 fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
90 (**self).visit(visitor, extra)
91 }
92}
93
94impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for Option<T>
95where
96 T: Visitable<'a, V>,
97{
98 type Extra = T::Extra;
99 fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
100 if let Some(this) = self {
101 match ::rustc_ast_ir::visit::VisitorResult::branch(this.visit(visitor, extra))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(this.visit(visitor, extra));
102 }
103 V::Result::output()
104 }
105}
106
107impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for Spanned<T>
108where
109 T: Visitable<'a, V>,
110{
111 type Extra = T::Extra;
112 fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
113 let Spanned { span: _, node } = self;
114 node.visit(visitor, extra)
115 }
116}
117
118impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for [T]
119where
120 T: Visitable<'a, V>,
121{
122 type Extra = T::Extra;
123 fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
124 for item in self {
125 match ::rustc_ast_ir::visit::VisitorResult::branch(item.visit(visitor, extra))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(item.visit(visitor, extra));
126 }
127 V::Result::output()
128 }
129}
130
131impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for Vec<T>
132where
133 T: Visitable<'a, V>,
134{
135 type Extra = T::Extra;
136 fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
137 for item in self {
138 match ::rustc_ast_ir::visit::VisitorResult::branch(item.visit(visitor, extra))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(item.visit(visitor, extra));
139 }
140 V::Result::output()
141 }
142}
143
144impl<'a, V: Visitor<'a>, T1, T2> Visitable<'a, V> for (T1, T2)
145where
146 T1: Visitable<'a, V, Extra = ()>,
147 T2: Visitable<'a, V, Extra = ()>,
148{
149 type Extra = ();
150 fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
151 match ::rustc_ast_ir::visit::VisitorResult::branch(self.0.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(self.0.visit(visitor, extra));
152 match ::rustc_ast_ir::visit::VisitorResult::branch(self.1.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(self.1.visit(visitor, extra));
153 V::Result::output()
154 }
155}
156
157impl<'a, V: Visitor<'a>, T1, T2, T3> Visitable<'a, V> for (T1, T2, T3)
158where
159 T1: Visitable<'a, V, Extra = ()>,
160 T2: Visitable<'a, V, Extra = ()>,
161 T3: Visitable<'a, V, Extra = ()>,
162{
163 type Extra = ();
164 fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
165 match ::rustc_ast_ir::visit::VisitorResult::branch(self.0.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(self.0.visit(visitor, extra));
166 match ::rustc_ast_ir::visit::VisitorResult::branch(self.1.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(self.1.visit(visitor, extra));
167 match ::rustc_ast_ir::visit::VisitorResult::branch(self.2.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(self.2.visit(visitor, extra));
168 V::Result::output()
169 }
170}
171
172impl<'a, V: Visitor<'a>, T1, T2, T3, T4> Visitable<'a, V> for (T1, T2, T3, T4)
173where
174 T1: Visitable<'a, V, Extra = ()>,
175 T2: Visitable<'a, V, Extra = ()>,
176 T3: Visitable<'a, V, Extra = ()>,
177 T4: Visitable<'a, V, Extra = ()>,
178{
179 type Extra = ();
180 fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
181 match ::rustc_ast_ir::visit::VisitorResult::branch(self.0.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(self.0.visit(visitor, extra));
182 match ::rustc_ast_ir::visit::VisitorResult::branch(self.1.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(self.1.visit(visitor, extra));
183 match ::rustc_ast_ir::visit::VisitorResult::branch(self.2.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(self.2.visit(visitor, extra));
184 match ::rustc_ast_ir::visit::VisitorResult::branch(self.3.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(self.3.visit(visitor, extra));
185 V::Result::output()
186 }
187}
188
189pub(crate) trait Walkable<'a, V: Visitor<'a>> {
190 #[must_use]
191 fn walk_ref(&'a self, visitor: &mut V) -> V::Result;
192}
193
194macro_rules! visit_visitable {
195 ($visitor:expr, $($expr:expr),* $(,)?) => {{
196 $(try_visit!(Visitable::visit($expr, $visitor, ()));)*
197 }};
198}
199
200macro_rules! visit_visitable_with {
201 ($visitor:expr, $expr:expr, $extra:expr $(,)?) => {
202 try_visit!(Visitable::visit($expr, $visitor, $extra))
203 };
204}
205
206macro_rules! impl_visitable {
207 (|&$lt:lifetime $self:ident: $self_ty:ty,
208 $vis:ident: &mut $vis_ty:ident,
209 $extra:ident: $extra_ty:ty| $block:block) => {
210 #[allow(unused_parens, non_local_definitions)]
211 impl<$lt, $vis_ty: Visitor<$lt>> Visitable<$lt, $vis_ty> for $self_ty {
212 type Extra = $extra_ty;
213 fn visit(&$lt $self, $vis: &mut $vis_ty, $extra: Self::Extra) -> V::Result {
214 $block
215 }
216 }
217 };
218}
219
220macro_rules! impl_walkable {
221 (|&$lt:lifetime $self:ident: $self_ty:ty,
222 $vis:ident: &mut $vis_ty:ident| $block:block) => {
223 impl<$lt, $vis_ty: Visitor<$lt>> Walkable<$lt, $vis_ty> for $self_ty {
224 fn walk_ref(&$lt $self, $vis: &mut $vis_ty) -> V::Result {
225 $block
226 }
227 }
228 };
229}
230
231macro_rules! impl_visitable_noop {
232 (<$lt:lifetime> $($ty:ty,)*) => {
233 $(
234 impl_visitable!(|&$lt self: $ty, _vis: &mut V, _extra: ()| {
235 V::Result::output()
236 });
237 )*
238 };
239}
240
241macro_rules! impl_visitable_list {
242 (<$lt:lifetime> $($ty:ty,)*) => {
243 $(impl<$lt, V: Visitor<$lt>, T> Visitable<$lt, V> for $ty
244 where
245 &$lt $ty: IntoIterator<Item = &$lt T>,
246 T: $lt + Visitable<$lt, V>,
247 {
248 type Extra = <T as Visitable<$lt, V>>::Extra;
249
250 #[inline]
251 fn visit(&$lt self, visitor: &mut V, extra: Self::Extra) -> V::Result {
252 for i in self {
253 try_visit!(i.visit(visitor, extra));
254 }
255 V::Result::output()
256 }
257 })*
258 };
259}
260
261macro_rules! impl_visitable_direct {
262 (<$lt:lifetime> $($ty:ty,)*) => {
263 $(impl_visitable!(
264 |&$lt self: $ty, visitor: &mut V, _extra: ()| {
265 Walkable::walk_ref(self, visitor)
266 }
267 );)*
268 };
269}
270
271macro_rules! impl_visitable_calling_walkable {
272 (<$lt:lifetime>
273 $( fn $method:ident($ty:ty $(, $extra_name:ident: $extra_ty:ty)?); )*
274 ) => {
275 $(fn $method(&mut self, node: &$lt $ty $(, $extra_name:$extra_ty)?) -> Self::Result {
276 impl_visitable!(|&$lt self: $ty, visitor: &mut V, extra: ($($extra_ty)?)| {
277 let ($($extra_name)?) = extra;
278 visitor.$method(self $(, $extra_name)?)
279 });
280 Walkable::walk_ref(node, self)
281 })*
282 };
283}
284
285macro_rules! define_named_walk {
286 ($Visitor:ident<$lt:lifetime>
287 $( pub fn $method:ident($ty:ty); )*
288 ) => {
289 $(pub fn $method<$lt, V: $Visitor<$lt>>(visitor: &mut V, node: &$lt $ty) -> V::Result {
290 Walkable::walk_ref(node, visitor)
291 })*
292 };
293}
294
295#[macro_export]
296macro_rules! common_visitor_and_walkers {
297 ($(($mut: ident))? $Visitor:ident$(<$lt:lifetime>)?) => {
298 $(${ignore($lt)}
299 #[derive(Copy, Clone)]
300 )?
301 #[derive(Debug)]
302 pub enum FnKind<'a> {
303 Fn(FnCtxt, &'a $($mut)? Visibility, &'a $($mut)? Fn),
305
306 Closure(
308 &'a $($mut)? ClosureBinder,
309 &'a $($mut)? Option<CoroutineMarker>,
310 &'a $($mut)? Box<FnDecl>,
311 &'a $($mut)? Box<Expr>,
312 ),
313 }
314
315 impl<'a> FnKind<'_> {
316 pub fn header(&'a $($mut)? self) -> Option<&'a $($mut)? FnHeader> {
317 match *self {
318 FnKind::Fn(_, _, Fn { sig, .. }) => Some(&$($mut)? sig.header),
319 FnKind::Closure(..) => None,
320 }
321 }
322
323 pub fn ident(&'a $($mut)? self) -> Option<&'a $($mut)? Ident> {
324 match self {
325 FnKind::Fn(_, _, Fn { ident, .. }) => Some(ident),
326 _ => None,
327 }
328 }
329
330 pub fn decl(&'a $($mut)? self) -> &'a $($mut)? FnDecl {
331 match self {
332 FnKind::Fn(_, _, Fn { sig, .. }) => &$($mut)? sig.decl,
333 FnKind::Closure(_, _, decl, _) => decl,
334 }
335 }
336
337 pub fn ctxt(&self) -> Option<FnCtxt> {
338 match self {
339 FnKind::Fn(ctxt, ..) => Some(*ctxt),
340 FnKind::Closure(..) => None,
341 }
342 }
343 }
344
345 impl_visitable_noop!($(<$lt>)?
347 AttrId,
348 bool,
349 rustc_span::ByteSymbol,
350 char,
351 crate::token::CommentKind,
352 crate::token::Delimiter,
353 crate::token::Lit,
354 crate::token::LitKind,
355 crate::tokenstream::LazyAttrTokenStream,
356 crate::tokenstream::TokenStream,
357 Movability,
358 Mutability,
359 Pinnedness,
360 Result<(), rustc_span::ErrorGuaranteed>,
361 rustc_data_structures::fx::FxHashMap<Symbol, usize>,
362 rustc_span::ErrorGuaranteed,
363 std::borrow::Cow<'_, str>,
364 Symbol,
365 SyntheticAttr,
366 u8,
367 usize,
368 );
369 $(impl_visitable_noop!(<$lt> Span,);)?
371
372 impl_visitable_list!($(<$lt>)?
376 ThinVec<AngleBracketedArg>,
377 ThinVec<Attribute>,
378 ThinVec<GenericBound>,
379 ThinVec<Ident>,
380 ThinVec<(Ident, Option<Ident>)>,
381 ThinVec<(NodeId, Path)>,
382 ThinVec<PathSegment>,
383 ThinVec<PreciseCapturingArg>,
384 ThinVec<Pat>,
385 ThinVec<TestBinderConstraint>,
386 ThinVec<TestBinderExists>,
387 ThinVec<TestBinderForall>,
388 ThinVec<Box<Ty>>,
389 ThinVec<TyPat>,
390 ThinVec<EiiImpl>,
391 );
392
393 impl_visitable_direct!($(<$lt>)?
397 AngleBracketedArg,
398 AngleBracketedArgs,
399 AsmMacro,
400 AssignOpKind,
401 AssocItemConstraintKind,
402 AttrArgs,
403 AttrItem,
404 AttrKind,
405 AttrStyle,
406 FnPtrTy,
407 BindingMode,
408 CoroutineKind,
409 RangeLimits,
410 UnsafeBinderCastKind,
411 BinOpKind,
412 BlockCheckMode,
413 BorrowKind,
414 BoundAsyncness,
415 BoundConstness,
416 BoundPolarity,
417 ByRef,
418 Closure,
419 Const,
420 ConstBlockItem,
421 ConstItem,
422 Defaultness,
423 Delegation,
424 DelegationMac,
425 DelegationSuffixes,
426 DelimArgs,
427 DelimSpan,
428 EnumDef,
429 Extern,
430 ForLoopKind,
431 FormatArgPosition,
432 FormatArgsPiece,
433 FormatArgument,
434 FormatArgumentKind,
435 FormatArguments,
436 FormatPlaceholder,
437 GenericParamKind,
438 Guard,
439 Impl,
440 ImplPolarity,
441 Inline,
442 InlineAsmOperand,
443 InlineAsmRegOrRegClass,
444 InlineAsmTemplatePiece,
445 IsAuto,
446 LocalKind,
447 MacCallStmt,
448 MacStmtStyle,
449 MatchKind,
450 MethodCall,
451 ModKind,
452 ModSpans,
453 MutTy,
454 NormalAttr,
455 Parens,
456 ParenthesizedArgs,
457 PatFieldsRest,
458 PatKind,
459 RangeEnd,
460 RangeSyntax,
461 Recovered,
462 RestrictionKind,
463 Safety,
464 StaticItem,
465 StrLit,
466 StrStyle,
467 StructExpr,
468 StructRest,
469 Term,
470 Trait,
471 TraitBoundModifiers,
472 TraitObjectSyntax,
473 TyAlias,
474 TyKind,
475 TyPatKind,
476 UnOp,
477 UnsafeBinderTy,
478 UnsafeSource,
479 UseTreeKind,
480 VisibilityKind,
481 WhereBoundPredicate,
482 WhereClause,
483 WhereEqPredicate,
484 WhereRegionPredicate,
485 YieldKind,
486 EiiDecl,
487 EiiImpl,
488 );
489
490 #[doc = concat!(
494 " e.g., the `visit_item` method by default calls `visit"
495 $(, "_", stringify!($mut))?,
496 "::walk_item`."
497 )]
498 pub trait $Visitor<$($lt)?>: Sized $(${ignore($mut)} + MutVisitorResult<Result = ()>)? {
508 $(
509 ${ignore($lt)}
510 type Result: VisitorResult = ();
513 )?
514
515 fn visit_ident(&mut self, Ident { name: _, span }: &$($lt)? $($mut)? Ident)
543 -> Self::Result
544 {
545 impl_visitable!(|&$($lt)? $($mut)? self: Ident, visitor: &mut V, _extra: ()| {
546 visitor.visit_ident(self)
547 });
548 visit_visitable!(self, span);
549 Self::Result::output()
550 }
551
552 impl_visitable_calling_walkable!($(<$lt>)?
556 fn visit_anon_const(AnonConst);
557 fn visit_arm(Arm);
558 fn visit_assoc_item_constraint(AssocItemConstraint);
560 fn visit_attribute(Attribute);
561 fn visit_block(Block);
562 fn visit_capture_by(CaptureBy);
564 fn visit_closure_binder(ClosureBinder);
565 fn visit_contract(FnContract);
566 fn visit_coroutine_marker(CoroutineMarker);
567 fn visit_crate(Crate);
568 fn visit_expr(Expr);
569 fn visit_expr_field(ExprField);
570 fn visit_field_def(FieldDef);
571 fn visit_field_def_extras(FieldDefExtras);
572 fn visit_fn_decl(FnDecl);
573 fn visit_fn_header(FnHeader);
574 fn visit_fn_ret_ty(FnRetTy);
575 fn visit_foreign_mod(ForeignMod);
577 fn visit_format_args(FormatArgs);
578 fn visit_generic_arg(GenericArg);
579 fn visit_generic_args(GenericArgs);
580 fn visit_generic_param(GenericParam);
581 fn visit_generics(Generics);
582 fn visit_inline_asm(InlineAsm);
583 fn visit_inline_asm_sym(InlineAsmSym);
584 fn visit_impl_restriction(ImplRestriction);
585 fn visit_label(Label);
587 fn visit_lifetime(Lifetime, _ctxt: LifetimeCtxt);
588 fn visit_local(Local);
589 fn visit_mac_call(MacCall);
590 fn visit_macro_def(MacroDef);
591 fn visit_mut_restriction(MutRestriction);
592 fn visit_param_bound(GenericBound, _ctxt: BoundKind);
593 fn visit_param(Param);
594 fn visit_pat_field(PatField);
595 fn visit_path(Path);
596 fn visit_path_segment(PathSegment);
597 fn visit_pat(Pat);
598 fn visit_poly_trait_ref(PolyTraitRef);
599 fn visit_precise_capturing_arg(PreciseCapturingArg);
600 fn visit_qself(QSelf);
601 fn visit_test_binder_body(TestBinderBody);
602 fn visit_test_binder_constraint(TestBinderConstraint);
603 fn visit_test_binder_bound_type_constraint(TestBinderBoundTypeConstraint);
604 fn visit_test_binder_constraints(TestBinderConstraints);
605 fn visit_test_binder_exists(TestBinderExists);
606 fn visit_test_binder_forall(TestBinderForall);
607 fn visit_trait_ref(TraitRef);
608 fn visit_ty_pat(TyPat);
609 fn visit_ty(Ty);
610 fn visit_use_tree(UseTree);
611 fn visit_variant_data(VariantData);
612 fn visit_variant(Variant);
613 fn visit_vis(Visibility);
614 fn visit_where_predicate_kind(WherePredicateKind);
615 fn visit_where_predicate(WherePredicate);
616 );
617
618 fn visit_id(&mut self, _id: $(&$mut)? NodeId) -> Self::Result {
620 $(impl_visitable!(
621 |&$lt self: NodeId, visitor: &mut V, _extra: ()| {
622 visitor.visit_id(*self)
623 }
624 );)?
625 $(impl_visitable!(
626 |&$mut self: NodeId, visitor: &mut V, _extra: ()| {
627 visitor.visit_id(self)
628 }
629 );)?
630 Self::Result::output()
631 }
632
633 fn visit_method_receiver_expr(&mut self, ex: &$($lt)? $($mut)? Expr) -> Self::Result {
636 self.visit_expr(ex)
637 }
638
639 fn visit_item(&mut self, item: &$($lt)? $($mut)? Item) -> Self::Result {
640 impl_visitable!(|&$($lt)? $($mut)? self: Item, vis: &mut V, _extra: ()| {
641 vis.visit_item(self)
642 });
643 walk_item(self, item)
644 }
645
646 fn visit_foreign_item(&mut self, item: &$($lt)? $($mut)? ForeignItem) -> Self::Result {
647 impl_visitable!(|&$($lt)? $($mut)? self: ForeignItem, vis: &mut V, _extra: ()| {
648 vis.visit_foreign_item(self)
649 });
650 walk_item(self, item)
651 }
652
653 fn visit_assoc_item(&mut self, item: &$($lt)? $($mut)? AssocItem, ctxt: AssocCtxt)
654 -> Self::Result
655 {
656 impl_visitable!(|&$($lt)? $($mut)? self: AssocItem, vis: &mut V, ctxt: AssocCtxt| {
657 vis.visit_assoc_item(self, ctxt)
658 });
659 walk_assoc_item(self, item, ctxt)
660 }
661
662 fn visit_fn(
664 &mut self,
665 fk: FnKind<$($lt)? $(${ignore($mut)} '_)?>,
666 _: &AttrVec,
667 _: Span,
668 _: NodeId,
669 ) -> Self::Result {
670 walk_fn(self, fk)
671 }
672
673 $(
675 fn visit_stmt(&mut self, s: &$lt Stmt) -> Self::Result {
676 walk_stmt(self, s)
677 }
678
679 fn visit_nested_use_tree(&mut self, use_tree: &$lt UseTree, id: NodeId)
680 -> Self::Result
681 {
682 try_visit!(self.visit_id(id));
683 self.visit_use_tree(use_tree)
684 }
685 )?
686
687 $(
689 #[inline]
692 fn visit_span(&mut self, _sp: &$mut Span) {
693 impl_visitable!(|&mut self: Span, visitor: &mut V, _extra: ()| {
694 visitor.visit_span(self)
695 });
696 }
698
699 fn flat_map_foreign_item(&mut self, ni: Box<ForeignItem>)
700 -> SmallVec<[Box<ForeignItem>; 1]>
701 {
702 walk_flat_map_foreign_item(self, ni)
703 }
704
705 fn flat_map_item(&mut self, i: Box<Item>) -> SmallVec<[Box<Item>; 1]> {
706 walk_flat_map_item(self, i)
707 }
708
709 fn flat_map_field_def(&mut self, fd: FieldDef) -> SmallVec<[FieldDef; 1]> {
710 walk_flat_map_field_def(self, fd)
711 }
712
713 fn flat_map_assoc_item(
714 &mut self,
715 i: Box<AssocItem>,
716 ctxt: AssocCtxt,
717 ) -> SmallVec<[Box<AssocItem>; 1]> {
718 walk_flat_map_assoc_item(self, i, ctxt)
719 }
720
721 fn flat_map_stmt(&mut self, s: Stmt) -> SmallVec<[Stmt; 1]> {
722 walk_flat_map_stmt(self, s)
723 }
724
725 fn flat_map_arm(&mut self, arm: Arm) -> SmallVec<[Arm; 1]> {
726 walk_flat_map_arm(self, arm)
727 }
728
729 fn filter_map_expr(&mut self, e: Box<Expr>) -> Option<Box<Expr>> {
730 walk_filter_map_expr(self, e)
731 }
732
733 fn flat_map_variant(&mut self, v: Variant) -> SmallVec<[Variant; 1]> {
734 walk_flat_map_variant(self, v)
735 }
736
737 fn flat_map_param(&mut self, param: Param) -> SmallVec<[Param; 1]> {
738 walk_flat_map_param(self, param)
739 }
740
741 fn flat_map_generic_param(&mut self, param: GenericParam)
742 -> SmallVec<[GenericParam; 1]>
743 {
744 walk_flat_map_generic_param(self, param)
745 }
746
747 fn flat_map_expr_field(&mut self, f: ExprField) -> SmallVec<[ExprField; 1]> {
748 walk_flat_map_expr_field(self, f)
749 }
750
751 fn flat_map_where_predicate(
752 &mut self,
753 where_predicate: WherePredicate,
754 ) -> SmallVec<[WherePredicate; 1]> {
755 walk_flat_map_where_predicate(self, where_predicate)
756 }
757
758 fn flat_map_pat_field(&mut self, fp: PatField) -> SmallVec<[PatField; 1]> {
759 walk_flat_map_pat_field(self, fp)
760 }
761 )?
762 }
763
764 pub trait WalkItemKind {
765 type Ctxt;
766 fn walk<$($lt,)? V: $Visitor$(<$lt>)?>(
767 &$($lt)? $($mut)? self,
768 attrs: &AttrVec,
769 span: Span,
770 id: NodeId,
771 visibility: &$($lt)? $($mut)? Visibility,
772 ctxt: Self::Ctxt,
773 vis: &mut V,
774 ) -> V::Result;
775 }
776
777 $(impl_visitable!(|&$lt self: ThinVec<(UseTree, NodeId)>, vis: &mut V, _extra: ()| {
778 for (nested_tree, nested_id) in self {
779 try_visit!(vis.visit_nested_use_tree(nested_tree, *nested_id));
780 }
781 V::Result::output()
782 });)?
783 $(${ignore($mut)} impl_visitable_list!(ThinVec<(UseTree, NodeId)>,);)?
784
785 fn walk_item_inner<$($lt,)? K: WalkItemKind, V: $Visitor$(<$lt>)?>(
786 visitor: &mut V,
787 item: &$($lt)? $($mut)? Item<K>,
788 ctxt: K::Ctxt,
789 ) -> V::Result {
790 let Item { attrs, id, kind, vis, span, tokens: _ } = item;
791 visit_visitable!(visitor, id, attrs, vis);
792 try_visit!(kind.walk(attrs, *span, *id, vis, ctxt, visitor));
793 visit_visitable!(visitor, span);
794 V::Result::output()
795 }
796
797 pub fn walk_item<$($lt,)? K: WalkItemKind<Ctxt = ()>, V: $Visitor$(<$lt>)?>(
799 visitor: &mut V,
800 item: &$($lt)? $($mut)? Item<K>,
801 ) -> V::Result {
802 walk_item_inner(visitor, item, ())
803 }
804
805 pub fn walk_assoc_item<$($lt,)? K: WalkItemKind<Ctxt = AssocCtxt>, V: $Visitor$(<$lt>)?>(
807 visitor: &mut V,
808 item: &$($lt)? $($mut)? Item<K>,
809 ctxt: AssocCtxt,
810 ) -> V::Result {
811 walk_item_inner(visitor, item, ctxt)
812 }
813
814 impl WalkItemKind for ItemKind {
815 type Ctxt = ();
816 fn walk<$($lt,)? V: $Visitor$(<$lt>)?>(
817 &$($lt)? $($mut)? self,
818 attrs: &AttrVec,
819 span: Span,
820 id: NodeId,
821 visibility: &$($lt)? $($mut)? Visibility,
822 _ctxt: Self::Ctxt,
823 vis: &mut V,
824 ) -> V::Result {
825 match self {
826 ItemKind::Fn(func) => {
827 let kind = FnKind::Fn(FnCtxt::Free, visibility, &$($mut)? *func);
828 try_visit!(vis.visit_fn(kind, attrs, span, id));
829 }
830 ItemKind::ExternCrate(orig_name, ident) =>
831 visit_visitable!(vis, orig_name, ident),
832 ItemKind::Use(use_tree) =>
833 visit_visitable!(vis, use_tree),
834 ItemKind::Static(item) =>
835 visit_visitable!(vis, item),
836 ItemKind::ConstBlock(item) =>
837 visit_visitable!(vis, item),
838 ItemKind::Const(item) =>
839 visit_visitable!(vis, item),
840 ItemKind::Mod(safety, ident, mod_kind) =>
841 visit_visitable!(vis, safety, ident, mod_kind),
842 ItemKind::ForeignMod(nm) =>
843 visit_visitable!(vis, nm),
844 ItemKind::GlobalAsm(asm) =>
845 visit_visitable!(vis, asm),
846 ItemKind::TyAlias(ty_alias) =>
847 visit_visitable!(vis, ty_alias),
848 ItemKind::Enum(ident, generics, enum_definition) =>
849 visit_visitable!(vis, ident, generics, enum_definition),
850 ItemKind::Struct(ident, generics, variant_data)
851 | ItemKind::Union(ident, generics, variant_data) =>
852 visit_visitable!(vis, ident, generics, variant_data),
853 ItemKind::Impl(impl_) =>
854 visit_visitable!(vis, impl_),
855 ItemKind::Trait(trait_) =>
856 visit_visitable!(vis, trait_),
857 ItemKind::TraitAlias(TraitAlias { constness, ident, generics, bounds }) => {
858 visit_visitable!(vis, constness, ident, generics);
859 visit_visitable_with!(vis, bounds, BoundKind::Bound)
860 }
861 ItemKind::MacCall(m) =>
862 visit_visitable!(vis, m),
863 ItemKind::MacroDef(ident, def) =>
864 visit_visitable!(vis, ident, def),
865 ItemKind::Delegation(delegation) =>
866 visit_visitable!(vis, delegation),
867 ItemKind::DelegationMac(dm) =>
868 visit_visitable!(vis, dm),
869 ItemKind::TestBinderConstraints(item) =>
870 visit_visitable!(vis, item),
871 }
872 V::Result::output()
873 }
874 }
875
876 impl WalkItemKind for AssocItemKind {
877 type Ctxt = AssocCtxt;
878 fn walk<$($lt,)? V: $Visitor$(<$lt>)?>(
879 &$($lt)? $($mut)? self,
880 attrs: &AttrVec,
881 span: Span,
882 id: NodeId,
883 visibility: &$($lt)? $($mut)? Visibility,
884 ctxt: Self::Ctxt,
885 vis: &mut V,
886 ) -> V::Result {
887 match self {
888 AssocItemKind::Const(item) =>
889 visit_visitable!(vis, item),
890 AssocItemKind::Fn(func) => {
891 let kind = FnKind::Fn(FnCtxt::Assoc(ctxt), visibility, &$($mut)? *func);
892 try_visit!(vis.visit_fn(kind, attrs, span, id))
893 }
894 AssocItemKind::Type(alias) =>
895 visit_visitable!(vis, alias),
896 AssocItemKind::MacCall(mac) =>
897 visit_visitable!(vis, mac),
898 AssocItemKind::Delegation(delegation) =>
899 visit_visitable!(vis, delegation),
900 AssocItemKind::DelegationMac(dm) =>
901 visit_visitable!(vis, dm),
902 }
903 V::Result::output()
904 }
905 }
906
907 impl WalkItemKind for ForeignItemKind {
908 type Ctxt = ();
909 fn walk<$($lt,)? V: $Visitor$(<$lt>)?>(
910 &$($lt)? $($mut)? self,
911 attrs: &AttrVec,
912 span: Span,
913 id: NodeId,
914 visibility: &$($lt)? $($mut)? Visibility,
915 _ctxt: Self::Ctxt,
916 vis: &mut V,
917 ) -> V::Result {
918 match self {
919 ForeignItemKind::Static(item) =>
920 visit_visitable!(vis, item),
921 ForeignItemKind::Fn(func) => {
922 let kind = FnKind::Fn(FnCtxt::Foreign, visibility, &$($mut)? *func);
923 try_visit!(vis.visit_fn(kind, attrs, span, id))
924 }
925 ForeignItemKind::TyAlias(alias) =>
926 visit_visitable!(vis, alias),
927 ForeignItemKind::MacCall(mac) =>
928 visit_visitable!(vis, mac),
929 }
930 V::Result::output()
931 }
932 }
933
934 pub fn walk_fn<$($lt,)? V: $Visitor$(<$lt>)?>(
935 vis: &mut V,
936 kind: FnKind<$($lt)? $(${ignore($mut)} '_)?>,
937 ) -> V::Result {
938 match kind {
939 FnKind::Fn(
940 _ctxt,
941 _vis,
943 Fn {
944 defaultness,
945 ident,
946 sig,
947 generics,
948 contract,
949 body,
950 define_opaque,
951 eii_impl,
952 },
953 ) => {
954 let FnSig { header, decl, span } = sig;
955 visit_visitable!(vis,
956 defaultness, ident, header, generics, decl,
957 contract, body, span, define_opaque, eii_impl
958 );
959 }
960 FnKind::Closure(binder, coroutine_marker, decl, body) =>
961 visit_visitable!(vis, binder, coroutine_marker, decl, body),
962 }
963 V::Result::output()
964 }
965
966 impl_walkable!(|&$($lt)? $($mut)? self: Impl, vis: &mut V| {
967 let Impl { generics, of_trait, self_ty, items, constness: _ } = self;
968 try_visit!(vis.visit_generics(generics));
969 if let Some(of_trait) = of_trait {
970 let TraitImplHeader { defaultness, safety, polarity, trait_ref } = of_trait;
971 visit_visitable!(vis, defaultness, safety, polarity, trait_ref);
972 }
973 try_visit!(vis.visit_ty(self_ty));
974 visit_visitable_with!(vis, items, AssocCtxt::Impl { of_trait: of_trait.is_some() });
975 V::Result::output()
976 });
977
978 impl_walkable!(|&$($lt)? $($mut)? self: MethodCall, vis: &mut V| {
980 let MethodCall { seg, receiver, args, span } = self;
981 try_visit!(vis.visit_method_receiver_expr(receiver));
982 visit_visitable!(vis, seg, args, span);
983 V::Result::output()
984 });
985
986 impl_walkable!(|&$($lt)? $($mut)? self: Expr, vis: &mut V| {
987 let Expr { id, kind, span, attrs, tokens: _ } = self;
988 visit_visitable!(vis, id, attrs);
989 match kind {
990 ExprKind::Array(exprs) =>
991 visit_visitable!(vis, exprs),
992 ExprKind::ConstBlock(anon_const) =>
993 visit_visitable!(vis, anon_const),
994 ExprKind::Repeat(element, count) =>
995 visit_visitable!(vis, element, count),
996 ExprKind::Struct(se) =>
997 visit_visitable!(vis, se),
998 ExprKind::Tup(exprs) =>
999 visit_visitable!(vis, exprs),
1000 ExprKind::Call(callee_expression, arguments) =>
1001 visit_visitable!(vis, callee_expression, arguments),
1002 ExprKind::MethodCall(mc) =>
1003 visit_visitable!(vis, mc),
1004 ExprKind::Binary(op, lhs, rhs) =>
1005 visit_visitable!(vis, op, lhs, rhs),
1006 ExprKind::AddrOf(kind, mutbl, subexpression) =>
1007 visit_visitable!(vis, kind, mutbl, subexpression),
1008 ExprKind::Unary(op, subexpression) =>
1009 visit_visitable!(vis, op, subexpression),
1010 ExprKind::Cast(subexpression, typ) | ExprKind::Type(subexpression, typ) =>
1011 visit_visitable!(vis, subexpression, typ),
1012 ExprKind::Let(pat, expr, span, _recovered) =>
1013 visit_visitable!(vis, pat, expr, span),
1014 ExprKind::If(head_expression, if_block, optional_else) =>
1015 visit_visitable!(vis, head_expression, if_block, optional_else),
1016 ExprKind::While(subexpression, block, opt_label) =>
1017 visit_visitable!(vis, subexpression, block, opt_label),
1018 ExprKind::ForLoop(ForLoop { pat, iter, body, label, kind }) =>
1019 visit_visitable!(vis, pat, iter, body, label, kind),
1020 ExprKind::Loop(block, opt_label, span) =>
1021 visit_visitable!(vis, block, opt_label, span),
1022 ExprKind::Match(subexpression, arms, kind) =>
1023 visit_visitable!(vis, subexpression, arms, kind),
1024 ExprKind::Closure(Closure {
1025 binder,
1026 capture_clause,
1027 coroutine_marker,
1028 constness,
1029 movability,
1030 fn_decl,
1031 body,
1032 fn_decl_span,
1033 fn_arg_span,
1034 }) => {
1035 visit_visitable!(vis, constness, movability, capture_clause);
1036 let kind = FnKind::Closure(binder, coroutine_marker, fn_decl, body);
1037 try_visit!(vis.visit_fn(kind, attrs, *span, *id));
1038 visit_visitable!(vis, fn_decl_span, fn_arg_span);
1039 }
1040 ExprKind::Block(block, opt_label) =>
1041 visit_visitable!(vis, block, opt_label),
1042 ExprKind::Gen(capt, body, kind, decl_span) =>
1043 visit_visitable!(vis, capt, body, kind, decl_span),
1044 ExprKind::Await(expr, span)
1045 | ExprKind::Move(expr, span)
1046 | ExprKind::Use(expr, span) =>
1047 visit_visitable!(vis, expr, span),
1048 ExprKind::Assign(lhs, rhs, span) =>
1049 visit_visitable!(vis, lhs, rhs, span),
1050 ExprKind::AssignOp(op, lhs, rhs) =>
1051 visit_visitable!(vis, op, lhs, rhs),
1052 ExprKind::Field(subexpression, ident) =>
1053 visit_visitable!(vis, subexpression, ident),
1054 ExprKind::Index(main_expression, index_expression, span) =>
1055 visit_visitable!(vis, main_expression, index_expression, span),
1056 ExprKind::Range(start, end, limit) =>
1057 visit_visitable!(vis, start, end, limit),
1058 ExprKind::Underscore => {}
1059 ExprKind::Path(maybe_qself, path) =>
1060 visit_visitable!(vis, maybe_qself, path),
1061 ExprKind::Break(opt_label, opt_expr) =>
1062 visit_visitable!(vis, opt_label, opt_expr),
1063 ExprKind::Continue(opt_label) =>
1064 visit_visitable!(vis, opt_label),
1065 ExprKind::Ret(optional_expression) | ExprKind::Yeet(optional_expression) =>
1066 visit_visitable!(vis, optional_expression),
1067 ExprKind::Become(expr) =>
1068 visit_visitable!(vis, expr),
1069 ExprKind::MacCall(mac) =>
1070 visit_visitable!(vis, mac),
1071 ExprKind::Paren(subexpression) =>
1072 visit_visitable!(vis, subexpression),
1073 ExprKind::InlineAsm(asm) =>
1074 visit_visitable!(vis, asm),
1075 ExprKind::FormatArgs(f) =>
1076 visit_visitable!(vis, f),
1077 ExprKind::OffsetOf(container, fields) =>
1078 visit_visitable!(vis, container, fields),
1079 ExprKind::Yield(kind) =>
1080 visit_visitable!(vis, kind),
1081 ExprKind::Try(subexpression) =>
1082 visit_visitable!(vis, subexpression),
1083 ExprKind::TryBlock(body, optional_type) =>
1084 visit_visitable!(vis, body, optional_type),
1085 ExprKind::Lit(token) =>
1086 visit_visitable!(vis, token),
1087 ExprKind::IncludedBytes(bytes) =>
1088 visit_visitable!(vis, bytes),
1089 ExprKind::UnsafeBinderCast(kind, expr, ty) =>
1090 visit_visitable!(vis, kind, expr, ty),
1091 ExprKind::DirectConstArg(expr) =>
1092 visit_visitable!(vis, expr),
1093 ExprKind::Err(_guar) => {}
1094 ExprKind::Dummy => {}
1095 }
1096
1097 visit_visitable!(vis, span);
1098 V::Result::output()
1099 });
1100
1101 define_named_walk!($Visitor$(<$lt>)?
1102 pub fn walk_anon_const(AnonConst);
1103 pub fn walk_arm(Arm);
1104 pub fn walk_assoc_item_constraint(AssocItemConstraint);
1106 pub fn walk_attribute(Attribute);
1107 pub fn walk_block(Block);
1108 pub fn walk_capture_by(CaptureBy);
1110 pub fn walk_closure_binder(ClosureBinder);
1111 pub fn walk_contract(FnContract);
1112 pub fn walk_coroutine_marker(CoroutineMarker);
1113 pub fn walk_crate(Crate);
1114 pub fn walk_expr(Expr);
1115 pub fn walk_expr_field(ExprField);
1116 pub fn walk_field_def(FieldDef);
1117 pub fn walk_field_def_extras(FieldDefExtras);
1118 pub fn walk_fn_decl(FnDecl);
1119 pub fn walk_fn_header(FnHeader);
1120 pub fn walk_fn_ret_ty(FnRetTy);
1121 pub fn walk_foreign_mod(ForeignMod);
1123 pub fn walk_format_args(FormatArgs);
1124 pub fn walk_generic_arg(GenericArg);
1125 pub fn walk_generic_args(GenericArgs);
1126 pub fn walk_generic_param(GenericParam);
1127 pub fn walk_generics(Generics);
1128 pub fn walk_inline_asm(InlineAsm);
1129 pub fn walk_inline_asm_sym(InlineAsmSym);
1130 pub fn walk_impl_restriction(ImplRestriction);
1131 pub fn walk_label(Label);
1133 pub fn walk_lifetime(Lifetime);
1134 pub fn walk_local(Local);
1135 pub fn walk_mac(MacCall);
1136 pub fn walk_macro_def(MacroDef);
1137 pub fn walk_mut_restriction(MutRestriction);
1138 pub fn walk_param_bound(GenericBound);
1139 pub fn walk_param(Param);
1140 pub fn walk_pat_field(PatField);
1141 pub fn walk_path(Path);
1142 pub fn walk_path_segment(PathSegment);
1143 pub fn walk_pat(Pat);
1144 pub fn walk_poly_trait_ref(PolyTraitRef);
1145 pub fn walk_precise_capturing_arg(PreciseCapturingArg);
1146 pub fn walk_qself(QSelf);
1147 pub fn walk_test_binder_body(TestBinderBody);
1148 pub fn walk_test_binder_constraint(TestBinderConstraint);
1149 pub fn walk_test_binder_bound_type_constraint(TestBinderBoundTypeConstraint);
1150 pub fn walk_test_binder_exists(TestBinderExists);
1151 pub fn walk_test_binder_forall(TestBinderForall);
1152 pub fn walk_trait_ref(TraitRef);
1153 pub fn walk_ty_pat(TyPat);
1154 pub fn walk_ty(Ty);
1155 pub fn walk_use_tree(UseTree);
1156 pub fn walk_variant_data(VariantData);
1157 pub fn walk_variant(Variant);
1158 pub fn walk_vis(Visibility);
1159 pub fn walk_where_predicate_kind(WherePredicateKind);
1160 pub fn walk_where_predicate(WherePredicate);
1161 );
1162 };
1163}
1164
1165pub enum FnKind<'a> {
Fn(FnCtxt, &'a Visibility, &'a Fn),
Closure(&'a ClosureBinder, &'a Option<CoroutineMarker>, &'a Box<FnDecl>,
&'a 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),
}
}
}
#[automatically_derived]
impl<'a> ::core::marker::Copy for FnKind<'a> { }
#[automatically_derived]
#[doc(hidden)]
unsafe impl<'a> ::core::clone::TrivialClone for FnKind<'a> { }
#[automatically_derived]
impl<'a> ::core::clone::Clone for FnKind<'a> {
#[inline]
fn clone(&self) -> FnKind<'a> {
let _: ::core::clone::AssertParamIsClone<FnCtxt>;
let _: ::core::clone::AssertParamIsClone<&'a Visibility>;
let _: ::core::clone::AssertParamIsClone<&'a Fn>;
let _: ::core::clone::AssertParamIsClone<&'a ClosureBinder>;
let _: ::core::clone::AssertParamIsClone<&'a Option<CoroutineMarker>>;
let _: ::core::clone::AssertParamIsClone<&'a Box<FnDecl>>;
let _: ::core::clone::AssertParamIsClone<&'a Box<Expr>>;
*self
}
}
impl<'a> FnKind<'_> {
pub fn header(&'a self) -> Option<&'a FnHeader> {
match *self {
FnKind::Fn(_, _, Fn { sig, .. }) => Some(&sig.header),
FnKind::Closure(..) => None,
}
}
pub fn ident(&'a self) -> Option<&'a Ident> {
match self {
FnKind::Fn(_, _, Fn { ident, .. }) => Some(ident),
_ => None,
}
}
pub fn decl(&'a self) -> &'a FnDecl {
match self {
FnKind::Fn(_, _, Fn { sig, .. }) => &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<'a, V: Visitor<'a>> Visitable<'a, V> for AttrId {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for bool {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for rustc_span::ByteSymbol {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for char {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for crate::token::CommentKind {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for crate::token::Delimiter {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for crate::token::Lit {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for crate::token::LitKind {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for
crate::tokenstream::LazyAttrTokenStream {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for crate::tokenstream::TokenStream
{
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Movability {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Mutability {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Pinnedness {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for
Result<(), rustc_span::ErrorGuaranteed> {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for
rustc_data_structures::fx::FxHashMap<Symbol, usize> {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for rustc_span::ErrorGuaranteed {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for std::borrow::Cow<'_, str> {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Symbol {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for SyntheticAttr {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for u8 {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for usize {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Span {
type Extra = ();
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<AngleBracketedArg>
where &'a ThinVec<AngleBracketedArg>: IntoIterator<Item = &'a T>, T: 'a +
Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<Attribute> where
&'a ThinVec<Attribute>: IntoIterator<Item = &'a T>, T: 'a +
Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<GenericBound> where
&'a ThinVec<GenericBound>: IntoIterator<Item = &'a T>, T: 'a +
Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<Ident> where
&'a ThinVec<Ident>: IntoIterator<Item = &'a T>, T: 'a + Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for
ThinVec<(Ident, Option<Ident>)> where
&'a ThinVec<(Ident, Option<Ident>)>: IntoIterator<Item = &'a T>, T: 'a +
Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<(NodeId, Path)> where
&'a ThinVec<(NodeId, Path)>: IntoIterator<Item = &'a T>, T: 'a +
Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<PathSegment> where
&'a ThinVec<PathSegment>: IntoIterator<Item = &'a T>, T: 'a +
Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<PreciseCapturingArg>
where &'a ThinVec<PreciseCapturingArg>: IntoIterator<Item = &'a T>,
T: 'a + Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<Pat> where
&'a ThinVec<Pat>: IntoIterator<Item = &'a T>, T: 'a + Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<TestBinderConstraint>
where &'a ThinVec<TestBinderConstraint>: IntoIterator<Item = &'a T>,
T: 'a + Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<TestBinderExists>
where &'a ThinVec<TestBinderExists>: IntoIterator<Item = &'a T>, T: 'a +
Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<TestBinderForall>
where &'a ThinVec<TestBinderForall>: IntoIterator<Item = &'a T>, T: 'a +
Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<Box<Ty>> where
&'a ThinVec<Box<Ty>>: IntoIterator<Item = &'a T>, T: 'a + Visitable<'a, V>
{
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<TyPat> where
&'a ThinVec<TyPat>: IntoIterator<Item = &'a T>, T: 'a + Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for ThinVec<EiiImpl> where
&'a ThinVec<EiiImpl>: IntoIterator<Item = &'a T>, T: 'a + Visitable<'a, V>
{
type Extra = <T as Visitable<'a, V>>::Extra;
#[inline]
fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
for i in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(i.visit(visitor,
extra)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AngleBracketedArg {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AngleBracketedArgs {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AsmMacro {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AssignOpKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AssocItemConstraintKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AttrArgs {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AttrItem {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AttrKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AttrStyle {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FnPtrTy {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BindingMode {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for CoroutineKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for RangeLimits {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UnsafeBinderCastKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BinOpKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BlockCheckMode {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BorrowKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BoundAsyncness {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BoundConstness {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BoundPolarity {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ByRef {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Closure {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Const {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ConstBlockItem {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ConstItem {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Defaultness {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Delegation {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for DelegationMac {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for DelegationSuffixes {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for DelimArgs {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for DelimSpan {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for EnumDef {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Extern {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ForLoopKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArgPosition {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArgsPiece {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArgument {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArgumentKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArguments {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatPlaceholder {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GenericParamKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Guard {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Impl {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ImplPolarity {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Inline {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for InlineAsmOperand {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for InlineAsmRegOrRegClass {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for InlineAsmTemplatePiece {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for IsAuto {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for LocalKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MacCallStmt {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MacStmtStyle {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MatchKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MethodCall {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ModKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ModSpans {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MutTy {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for NormalAttr {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Parens {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ParenthesizedArgs {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PatFieldsRest {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PatKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for RangeEnd {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for RangeSyntax {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Recovered {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for RestrictionKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Safety {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for StaticItem {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for StrLit {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for StrStyle {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for StructExpr {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for StructRest {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Term {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Trait {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TraitBoundModifiers {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TraitObjectSyntax {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TyAlias {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TyKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TyPatKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UnOp {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UnsafeBinderTy {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UnsafeSource {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UseTreeKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for VisibilityKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WhereBoundPredicate {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WhereClause {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WhereEqPredicate {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WhereRegionPredicate {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for YieldKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for EiiDecl {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for EiiImpl {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
#[doc = " e.g., the `visit_item` method by default calls `visit::walk_item`."]
pub trait Visitor<'a>: Sized {
type Result: VisitorResult = ();
fn visit_ident(&mut self, Ident { name: _, span }: &'a Ident)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Ident {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ visitor.visit_ident(self) }
}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(span,
self, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
Self::Result::output()
}
fn visit_anon_const(&mut self, node: &'a AnonConst) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AnonConst {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_anon_const(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_arm(&mut self, node: &'a Arm) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Arm {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_arm(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_assoc_item_constraint(&mut self, node: &'a AssocItemConstraint)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AssocItemConstraint {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_assoc_item_constraint(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_attribute(&mut self, node: &'a Attribute) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Attribute {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_attribute(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_block(&mut self, node: &'a Block) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Block {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_block(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_capture_by(&mut self, node: &'a CaptureBy) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for CaptureBy {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_capture_by(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_closure_binder(&mut self, node: &'a ClosureBinder)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ClosureBinder {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_closure_binder(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_contract(&mut self, node: &'a FnContract) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FnContract {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_contract(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_coroutine_marker(&mut self, node: &'a CoroutineMarker)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for CoroutineMarker {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_coroutine_marker(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_crate(&mut self, node: &'a Crate) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Crate {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_crate(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_expr(&mut self, node: &'a Expr) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Expr {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_expr(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_expr_field(&mut self, node: &'a ExprField) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ExprField {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_expr_field(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_field_def(&mut self, node: &'a FieldDef) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FieldDef {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_field_def(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_field_def_extras(&mut self, node: &'a FieldDefExtras)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FieldDefExtras {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_field_def_extras(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_fn_decl(&mut self, node: &'a FnDecl) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FnDecl {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_fn_decl(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_fn_header(&mut self, node: &'a FnHeader) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FnHeader {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_fn_header(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_fn_ret_ty(&mut self, node: &'a FnRetTy) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FnRetTy {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_fn_ret_ty(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_foreign_mod(&mut self, node: &'a ForeignMod) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ForeignMod {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_foreign_mod(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_format_args(&mut self, node: &'a FormatArgs) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArgs {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_format_args(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_generic_arg(&mut self, node: &'a GenericArg) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GenericArg {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_generic_arg(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_generic_args(&mut self, node: &'a GenericArgs) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GenericArgs {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_generic_args(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_generic_param(&mut self, node: &'a GenericParam)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GenericParam {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_generic_param(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_generics(&mut self, node: &'a Generics) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Generics {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_generics(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_inline_asm(&mut self, node: &'a InlineAsm) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for InlineAsm {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_inline_asm(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_inline_asm_sym(&mut self, node: &'a InlineAsmSym)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for InlineAsmSym {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_inline_asm_sym(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_impl_restriction(&mut self, node: &'a ImplRestriction)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ImplRestriction {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_impl_restriction(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_label(&mut self, node: &'a Label) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Label {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_label(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_lifetime(&mut self, node: &'a Lifetime, _ctxt: LifetimeCtxt)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Lifetime {
type Extra = (LifetimeCtxt);
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let (_ctxt) = extra; visitor.visit_lifetime(self, _ctxt) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_local(&mut self, node: &'a Local) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Local {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_local(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_mac_call(&mut self, node: &'a MacCall) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MacCall {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_mac_call(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_macro_def(&mut self, node: &'a MacroDef) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MacroDef {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_macro_def(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_mut_restriction(&mut self, node: &'a MutRestriction)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MutRestriction {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_mut_restriction(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_param_bound(&mut self, node: &'a GenericBound, _ctxt: BoundKind)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GenericBound {
type Extra = (BoundKind);
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{
let (_ctxt) = extra;
visitor.visit_param_bound(self, _ctxt)
}
}
}
Walkable::walk_ref(node, self)
}
fn visit_param(&mut self, node: &'a Param) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Param {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_param(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_pat_field(&mut self, node: &'a PatField) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PatField {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_pat_field(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_path(&mut self, node: &'a Path) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Path {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_path(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_path_segment(&mut self, node: &'a PathSegment) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PathSegment {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_path_segment(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_pat(&mut self, node: &'a Pat) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Pat {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_pat(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_poly_trait_ref(&mut self, node: &'a PolyTraitRef)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PolyTraitRef {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_poly_trait_ref(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_precise_capturing_arg(&mut self, node: &'a PreciseCapturingArg)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PreciseCapturingArg {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_precise_capturing_arg(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_qself(&mut self, node: &'a QSelf) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for QSelf {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_qself(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_test_binder_body(&mut self, node: &'a TestBinderBody)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderBody {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_test_binder_body(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_test_binder_constraint(&mut self, node: &'a TestBinderConstraint)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderConstraint {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_test_binder_constraint(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_test_binder_bound_type_constraint(&mut self,
node: &'a TestBinderBoundTypeConstraint) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for
TestBinderBoundTypeConstraint {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{
let () = extra;
visitor.visit_test_binder_bound_type_constraint(self)
}
}
}
Walkable::walk_ref(node, self)
}
fn visit_test_binder_constraints(&mut self,
node: &'a TestBinderConstraints) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderConstraints {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{
let () = extra;
visitor.visit_test_binder_constraints(self)
}
}
}
Walkable::walk_ref(node, self)
}
fn visit_test_binder_exists(&mut self, node: &'a TestBinderExists)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderExists {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_test_binder_exists(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_test_binder_forall(&mut self, node: &'a TestBinderForall)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderForall {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_test_binder_forall(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_trait_ref(&mut self, node: &'a TraitRef) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TraitRef {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_trait_ref(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_ty_pat(&mut self, node: &'a TyPat) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TyPat {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_ty_pat(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_ty(&mut self, node: &'a Ty) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Ty {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_ty(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_use_tree(&mut self, node: &'a UseTree) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UseTree {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_use_tree(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_variant_data(&mut self, node: &'a VariantData) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for VariantData {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_variant_data(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_variant(&mut self, node: &'a Variant) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Variant {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_variant(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_vis(&mut self, node: &'a Visibility) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Visibility {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_vis(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_where_predicate_kind(&mut self, node: &'a WherePredicateKind)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WherePredicateKind {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_where_predicate_kind(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_where_predicate(&mut self, node: &'a WherePredicate)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WherePredicate {
type Extra = ();
fn visit(&'a self, visitor: &mut V, extra: Self::Extra)
-> V::Result {
{ let () = extra; visitor.visit_where_predicate(self) }
}
}
Walkable::walk_ref(node, self)
}
fn visit_id(&mut self, _id: NodeId) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for NodeId {
type Extra = ();
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra)
-> V::Result {
{ visitor.visit_id(*self) }
}
}
Self::Result::output()
}
fn visit_method_receiver_expr(&mut self, ex: &'a Expr) -> Self::Result {
self.visit_expr(ex)
}
fn visit_item(&mut self, item: &'a Item) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Item {
type Extra = ();
fn visit(&'a self, vis: &mut V, _extra: Self::Extra)
-> V::Result {
{ vis.visit_item(self) }
}
}
walk_item(self, item)
}
fn visit_foreign_item(&mut self, item: &'a ForeignItem) -> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ForeignItem {
type Extra = ();
fn visit(&'a 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: &'a AssocItem, ctxt: AssocCtxt)
-> Self::Result {
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AssocItem {
type Extra = AssocCtxt;
fn visit(&'a 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<'a>, _: &AttrVec, _: Span, _: NodeId)
-> Self::Result {
walk_fn(self, fk)
}
fn visit_stmt(&mut self, s: &'a Stmt) -> Self::Result {
walk_stmt(self, s)
}
fn visit_nested_use_tree(&mut self, use_tree: &'a UseTree, id: NodeId)
-> Self::Result {
match ::rustc_ast_ir::visit::VisitorResult::branch(self.visit_id(id))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
self.visit_use_tree(use_tree)
}
}
pub trait WalkItemKind {
type Ctxt;
fn walk<'a,
V: Visitor<'a>>(&'a self, attrs: &AttrVec, span: Span, id: NodeId,
visibility: &'a Visibility, ctxt: Self::Ctxt, vis: &mut V)
-> V::Result;
}
#[allow(unused_parens, non_local_definitions)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<(UseTree, NodeId)> {
type Extra = ();
fn visit(&'a self, vis: &mut V, _extra: Self::Extra) -> V::Result {
{
for (nested_tree, nested_id) in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(vis.visit_nested_use_tree(nested_tree,
*nested_id)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
V::Result::output()
}
}
}
fn walk_item_inner<'a, K: WalkItemKind,
V: Visitor<'a>>(visitor: &mut V, item: &'a Item<K>, ctxt: K::Ctxt)
-> V::Result {
let Item { attrs, id, kind, vis, span, tokens: _ } = item;
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(id,
visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(attrs,
visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(vis,
visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
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);
}
};
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(span,
visitor, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
pub fn walk_item<'a, K: WalkItemKind<Ctxt = ()>,
V: Visitor<'a>>(visitor: &mut V, item: &'a Item<K>) -> V::Result {
walk_item_inner(visitor, item, ())
}
pub fn walk_assoc_item<'a, K: WalkItemKind<Ctxt = AssocCtxt>,
V: Visitor<'a>>(visitor: &mut V, item: &'a Item<K>, ctxt: AssocCtxt)
-> V::Result {
walk_item_inner(visitor, item, ctxt)
}
impl WalkItemKind for ItemKind {
type Ctxt = ();
fn walk<'a,
V: Visitor<'a>>(&'a self, attrs: &AttrVec, span: Span, id: NodeId,
visibility: &'a Visibility, _ctxt: Self::Ctxt, vis: &mut V)
-> V::Result {
match self {
ItemKind::Fn(func) => {
let kind = FnKind::Fn(FnCtxt::Free, visibility, &*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) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(orig_name,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(ident,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::Use(use_tree) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(use_tree,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::Static(item) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(item,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::ConstBlock(item) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(item,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::Const(item) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(item,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::Mod(safety, ident, mod_kind) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(safety,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(ident,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(mod_kind,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::ForeignMod(nm) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(nm,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::GlobalAsm(asm) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(asm,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::TyAlias(ty_alias) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(ty_alias,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::Enum(ident, generics, enum_definition) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(ident,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(generics,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(enum_definition,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::Struct(ident, generics, variant_data) |
ItemKind::Union(ident, generics, variant_data) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(ident,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(generics,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(variant_data,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::Impl(impl_) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(impl_,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::Trait(trait_) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(trait_,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::TraitAlias(TraitAlias {
constness, ident, generics, bounds }) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(constness,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(ident,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(generics,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(bounds,
vis, BoundKind::Bound)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}
}
ItemKind::MacCall(m) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(m,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::MacroDef(ident, def) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(ident,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(def,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::Delegation(delegation) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(delegation,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::DelegationMac(dm) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(dm,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ItemKind::TestBinderConstraints(item) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(item,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
}
V::Result::output()
}
}
impl WalkItemKind for AssocItemKind {
type Ctxt = AssocCtxt;
fn walk<'a,
V: Visitor<'a>>(&'a self, attrs: &AttrVec, span: Span, id: NodeId,
visibility: &'a Visibility, ctxt: Self::Ctxt, vis: &mut V)
-> V::Result {
match self {
AssocItemKind::Const(item) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(item,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
AssocItemKind::Fn(func) => {
let kind =
FnKind::Fn(FnCtxt::Assoc(ctxt), visibility, &*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) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(alias,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
AssocItemKind::MacCall(mac) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(mac,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
AssocItemKind::Delegation(delegation) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(delegation,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
AssocItemKind::DelegationMac(dm) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(dm,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
}
V::Result::output()
}
}
impl WalkItemKind for ForeignItemKind {
type Ctxt = ();
fn walk<'a,
V: Visitor<'a>>(&'a self, attrs: &AttrVec, span: Span, id: NodeId,
visibility: &'a Visibility, _ctxt: Self::Ctxt, vis: &mut V)
-> V::Result {
match self {
ForeignItemKind::Static(item) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(item,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ForeignItemKind::Fn(func) => {
let kind = FnKind::Fn(FnCtxt::Foreign, visibility, &*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) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(alias,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ForeignItemKind::MacCall(mac) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(mac,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
}
V::Result::output()
}
}
pub fn walk_fn<'a, V: Visitor<'a>>(vis: &mut V, kind: FnKind<'a>)
-> 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;
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(defaultness,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(ident,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(header,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(generics,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(decl,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(contract,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(body,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(define_opaque,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(eii_impl,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
}
FnKind::Closure(binder, coroutine_marker, decl, body) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(binder,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(coroutine_marker,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(decl,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(body,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
}
V::Result::output()
}
impl<'a, V: Visitor<'a>> Walkable<'a, V> for Impl {
fn walk_ref(&'a 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;
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(defaultness,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(safety,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(polarity,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(trait_ref,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
}
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);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(items,
vis, AssocCtxt::Impl { of_trait: of_trait.is_some() })) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
V::Result::output()
}
}
}
impl<'a, V: Visitor<'a>> Walkable<'a, V> for MethodCall {
fn walk_ref(&'a 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);
}
};
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(seg,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(args,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
}
impl<'a, V: Visitor<'a>> Walkable<'a, V> for Expr {
fn walk_ref(&'a self, vis: &mut V) -> V::Result {
{
let Expr { id, kind, span, attrs, tokens: _ } = self;
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(id,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(attrs,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
match kind {
ExprKind::Array(exprs) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(exprs,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::ConstBlock(anon_const) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(anon_const,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Repeat(element, count) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(element,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(count,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Struct(se) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(se,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Tup(exprs) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(exprs,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Call(callee_expression, arguments) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(callee_expression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(arguments,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::MethodCall(mc) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(mc,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Binary(op, lhs, rhs) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(op,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(lhs,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(rhs,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::AddrOf(kind, mutbl, subexpression) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(kind,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(mutbl,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(subexpression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Unary(op, subexpression) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(op,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(subexpression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Cast(subexpression, typ) |
ExprKind::Type(subexpression, typ) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(subexpression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(typ,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Let(pat, expr, span, _recovered) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(pat,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(expr,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::If(head_expression, if_block, optional_else) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(head_expression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(if_block,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(optional_else,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::While(subexpression, block, opt_label) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(subexpression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(block,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(opt_label,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::ForLoop(ForLoop { pat, iter, body, label, kind }) =>
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(pat,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(iter,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(body,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(label,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(kind,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Loop(block, opt_label, span) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(block,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(opt_label,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Match(subexpression, arms, kind) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(subexpression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(arms,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(kind,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Closure(Closure {
binder,
capture_clause,
coroutine_marker,
constness,
movability,
fn_decl,
body,
fn_decl_span,
fn_arg_span }) => {
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(constness,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(movability,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(capture_clause,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
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);
}
};
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(fn_decl_span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(fn_arg_span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
}
ExprKind::Block(block, opt_label) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(block,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(opt_label,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Gen(capt, body, kind, decl_span) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(capt,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(body,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(kind,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(decl_span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Await(expr, span) | ExprKind::Move(expr, span) |
ExprKind::Use(expr, span) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(expr,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Assign(lhs, rhs, span) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(lhs,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(rhs,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::AssignOp(op, lhs, rhs) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(op,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(lhs,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(rhs,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Field(subexpression, ident) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(subexpression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(ident,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Index(main_expression, index_expression, span) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(main_expression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(index_expression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Range(start, end, limit) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(start,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(end,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(limit,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Underscore => {}
ExprKind::Path(maybe_qself, path) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(maybe_qself,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(path,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Break(opt_label, opt_expr) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(opt_label,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(opt_expr,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Continue(opt_label) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(opt_label,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Ret(optional_expression) |
ExprKind::Yeet(optional_expression) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(optional_expression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Become(expr) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(expr,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::MacCall(mac) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(mac,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Paren(subexpression) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(subexpression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::InlineAsm(asm) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(asm,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::FormatArgs(f) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(f,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::OffsetOf(container, fields) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(container,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(fields,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Yield(kind) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(kind,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Try(subexpression) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(subexpression,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::TryBlock(body, optional_type) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(body,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(optional_type,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Lit(token) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(token,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::IncludedBytes(bytes) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(bytes,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::UnsafeBinderCast(kind, expr, ty) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(kind,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(expr,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(ty,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::DirectConstArg(expr) => {
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(expr,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
}
ExprKind::Err(_guar) => {}
ExprKind::Dummy => {}
}
{
match ::rustc_ast_ir::visit::VisitorResult::branch(Visitable::visit(span,
vis, ())) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
}
pub fn walk_anon_const<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a AnonConst) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_arm<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Arm)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_assoc_item_constraint<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a AssocItemConstraint)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_attribute<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a Attribute) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_block<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Block)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_capture_by<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a CaptureBy) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_closure_binder<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a ClosureBinder) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_contract<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a FnContract) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_coroutine_marker<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a CoroutineMarker) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_crate<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Crate)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_expr<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Expr)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_expr_field<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a ExprField) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_field_def<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a FieldDef)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_field_def_extras<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a FieldDefExtras) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_fn_decl<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a FnDecl)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_fn_header<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a FnHeader)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_fn_ret_ty<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a FnRetTy)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_foreign_mod<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a ForeignMod) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_format_args<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a FormatArgs) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_generic_arg<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a GenericArg) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_generic_args<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a GenericArgs) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_generic_param<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a GenericParam) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_generics<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Generics)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_inline_asm<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a InlineAsm) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_inline_asm_sym<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a InlineAsmSym) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_impl_restriction<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a ImplRestriction) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_label<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Label)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_lifetime<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Lifetime)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_local<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Local)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_mac<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a MacCall)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_macro_def<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a MacroDef)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_mut_restriction<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a MutRestriction) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_param_bound<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a GenericBound) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_param<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Param)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_pat_field<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a PatField)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_path<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Path)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_path_segment<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a PathSegment) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_pat<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Pat)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_poly_trait_ref<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a PolyTraitRef) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_precise_capturing_arg<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a PreciseCapturingArg)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_qself<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a QSelf)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_test_binder_body<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a TestBinderBody) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_test_binder_constraint<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a TestBinderConstraint)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_test_binder_bound_type_constraint<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a TestBinderBoundTypeConstraint)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_test_binder_exists<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a TestBinderExists)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_test_binder_forall<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a TestBinderForall)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_trait_ref<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a TraitRef)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_ty_pat<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a TyPat)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_ty<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Ty)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_use_tree<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a UseTree)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_variant_data<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a VariantData) -> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_variant<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Variant)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_vis<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Visibility)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_where_predicate_kind<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a WherePredicateKind)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_where_predicate<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a WherePredicate) -> V::Result {
Walkable::walk_ref(node, visitor)
}common_visitor_and_walkers!(Visitor<'a>);
1166
1167macro_rules! generate_list_visit_fns {
1168 ($($visit_fn:ident, $Ty:ty $(, $param:ident: $ParamTy:ty)?;)+) => {
1169 $(
1170 #[allow(unused_parens)]
1171 impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<$Ty> {
1172 type Extra = ($($ParamTy)?);
1173
1174 #[inline]
1175 fn visit(&'a self, visitor: &mut V, ($($param)?): Self::Extra) -> V::Result {
1176 walk_list!(visitor, $visit_fn, self $(, $param)?);
1177 V::Result::output()
1178 }
1179 }
1180 )+
1181 }
1182}
1183
1184#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Box<Item>> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_item(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Box<ForeignItem>> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_foreign_item(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<GenericParam> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_generic_param(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Stmt> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_stmt(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Box<Expr>> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_expr(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<ExprField> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_expr_field(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<PatField> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_pat_field(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Variant> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_variant(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Box<AssocItem>> {
type Extra = (AssocCtxt);
#[inline]
fn visit(&'a self, visitor: &mut V, (ctxt): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_assoc_item(elem,
ctxt)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<WherePredicate> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_where_predicate(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Param> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_param(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<FieldDef> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_field_def(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}
#[allow(unused_parens)]
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Arm> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, (): Self::Extra) -> V::Result {
for elem in self {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_arm(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};
V::Result::output()
}
}generate_list_visit_fns! {
1185 visit_item, Box<Item>;
1186 visit_foreign_item, Box<ForeignItem>;
1187 visit_generic_param, GenericParam;
1188 visit_stmt, Stmt;
1189 visit_expr, Box<Expr>;
1190 visit_expr_field, ExprField;
1191 visit_pat_field, PatField;
1192 visit_variant, Variant;
1193 visit_assoc_item, Box<AssocItem>, ctxt: AssocCtxt;
1194 visit_where_predicate, WherePredicate;
1195 visit_param, Param;
1196 visit_field_def, FieldDef;
1197 visit_arm, Arm;
1198}
1199
1200pub fn walk_stmt<'a, V: Visitor<'a>>(visitor: &mut V, statement: &'a Stmt) -> V::Result {
1201 let Stmt { id, kind, span: _ } = statement;
1202 match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_id(*id)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(visitor.visit_id(*id));
1203 match kind {
1204 StmtKind::Let(local) => match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_local(local))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}try_visit!(visitor.visit_local(local)),
1205 StmtKind::Item(item) => match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_item(item)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}try_visit!(visitor.visit_item(item)),
1206 StmtKind::Expr(expr) | StmtKind::Semi(expr) => match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_expr(expr)) {
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
}try_visit!(visitor.visit_expr(expr)),
1207 StmtKind::Empty => {}
1208 StmtKind::MacCall(mac) => {
1209 let MacCallStmt { mac, attrs, style: _, tokens: _ } = &**mac;
1210 for elem in attrs {
match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_attribute(elem))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};
};walk_list!(visitor, visit_attribute, attrs);
1211 match ::rustc_ast_ir::visit::VisitorResult::branch(visitor.visit_mac_call(mac))
{
core::ops::ControlFlow::Continue(()) =>
(),
#[allow(unreachable_code)]
core::ops::ControlFlow::Break(r) => {
return ::rustc_ast_ir::visit::VisitorResult::from_residual(r);
}
};try_visit!(visitor.visit_mac_call(mac));
1212 }
1213 }
1214 V::Result::output()
1215}