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) -> Self {
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 {
Self::Trait => ::core::fmt::Formatter::write_str(f, "Trait"),
Self::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: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Impl { of_trait: __self_0 }, Self::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) {
match *self {
AssocCtxt::Trait => 0u8.stable_hash(__hcx, __hasher),
AssocCtxt::Impl { of_trait: ref __binding_0 } =>
1u8.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) -> Self {
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 {
Self::Free => ::core::fmt::Formatter::write_str(f, "Free"),
Self::Foreign => ::core::fmt::Formatter::write_str(f, "Foreign"),
Self::Assoc(__self_0) =>
::core::fmt::Formatter::debug_struct_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: &Self) -> bool {
::core::intrinsics::discriminant_value(self) ==
::core::intrinsics::discriminant_value(other) &&
match (self, other) {
(Self::Assoc(__self_0), Self::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) -> Self { *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) -> Self { *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: $SelfTy:ty, $vis:ident: &mut $vis_ty:ident| $block:block) => {
209 impl<$lt, $vis_ty: Visitor<$lt>> Visitable<$lt, $vis_ty> for $SelfTy {
210 type Extra = ();
211
212 #[inline]
213 fn visit(&$lt $self, $vis: &mut $vis_ty, _extra: Self::Extra) -> V::Result {
214 $block
215 }
216 }
217 };
218 (|&$lt:lifetime $self:ident: $SelfTy:ty, $vis:ident: &mut $vis_ty:ident,
220 $extra:ident: $ExtraTy:ty| $block:block) => {
221 impl<$lt, $vis_ty: Visitor<$lt>> Visitable<$lt, $vis_ty> for $SelfTy {
222 type Extra = $ExtraTy;
223
224 #[inline]
225 fn visit(&$lt $self, $vis: &mut $vis_ty, $extra: Self::Extra) -> V::Result {
226 $block
227 }
228 }
229 };
230}
231
232macro_rules! impl_walkable {
233 (|&$lt:lifetime $self:ident: $SelfTy:ty,
234 $vis:ident: &mut $vis_ty:ident| $block:block) => {
235 impl<$lt, $vis_ty: Visitor<$lt>> Walkable<$lt, $vis_ty> for $SelfTy {
236 fn walk_ref(&$lt $self, $vis: &mut $vis_ty) -> V::Result {
237 $block
238 }
239 }
240 };
241}
242
243macro_rules! impl_visitable_noop {
244 ($($Ty:ty,)*) => {
245 $(
246 impl_visitable!(|&'a self: $Ty, _vis: &mut V| {
247 V::Result::output()
248 });
249 )*
250 };
251}
252
253macro_rules! impl_visitable_list {
254 ($($Ty:ty,)*) => {
255 $(impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for $Ty
256 where
257 &'a $Ty: IntoIterator<Item = &'a T>,
258 T: 'a + Visitable<'a, V>,
259 {
260 type Extra = <T as Visitable<'a, V>>::Extra;
261
262 fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
263 for i in self {
264 try_visit!(i.visit(visitor, extra));
265 }
266 V::Result::output()
267 }
268 })*
269 };
270}
271
272macro_rules! impl_visitable_direct {
273 ($($Ty:ty,)*) => {
274 $(impl_visitable!(
275 |&'a self: $Ty, visitor: &mut V| {
276 Walkable::walk_ref(self, visitor)
277 }
278 );)*
279 };
280}
281
282macro_rules! fn_visit {
283 ($($visit:ident($Ty:ty $(, $extra:ident: $ExtraTy:ty)?) => $walk:ident;)*) => {
284 $(fn $visit(&mut self, node: &'a $Ty $(, $extra: $ExtraTy)?) -> Self::Result {
285 Walkable::walk_ref(node, self)
286 })*
287 };
288}
289
290macro_rules! impl_visitable_visit {
291 ($($visit:ident($Ty:ty $(, $extra:ident: $ExtraTy:ty)?) => $walk:ident;)*) => {
292 $(impl_visitable!(|&'a self: $Ty, visitor: &mut V $(, $extra: $ExtraTy)?| {
293 visitor.$visit(self $(, $extra)?)
294 });)*
295 };
296}
297
298macro_rules! fn_walk {
299 ($($visit:ident($Ty:ty $(, $extra:ident: $ExtraTy:ty)?) => $walk:ident;)*) => {
300 $(pub fn $walk<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a $Ty) -> V::Result {
301 Walkable::walk_ref(node, visitor)
302 })*
303 }
304}
305
306macro_rules! for_each_ast_visit_hook {
312 ($macro:ident!) => {
313 $macro! {
314 visit_anon_const(AnonConst) => walk_anon_const;
316 visit_arm(Arm) => walk_arm;
317 visit_assoc_item_constraint(AssocItemConstraint) => walk_assoc_item_constraint;
319 visit_attribute(Attribute) => walk_attribute;
320 visit_block(Block) => walk_block;
321 visit_capture_by(CaptureBy) => walk_capture_by;
322 visit_closure_binder(ClosureBinder) => walk_closure_binder;
323 visit_contract(FnContract) => walk_contract;
324 visit_coroutine_marker(CoroutineMarker) => walk_coroutine_marker;
325 visit_crate(Crate) => walk_crate;
326 visit_expr(Expr) => walk_expr;
327 visit_expr_field(ExprField) => walk_expr_field;
328 visit_field_def(FieldDef) => walk_field_def;
329 visit_field_def_extras(FieldDefExtras) => walk_field_def_extras;
330 visit_fn_decl(FnDecl) => walk_fn_decl;
331 visit_fn_header(FnHeader) => walk_fn_header;
332 visit_fn_ret_ty(FnRetTy) => walk_fn_ret_ty;
333 visit_foreign_mod(ForeignMod) => walk_foreign_mod;
335 visit_format_args(FormatArgs) => walk_format_args;
336 visit_generic_arg(GenericArg) => walk_generic_arg;
337 visit_generic_args(GenericArgs) => walk_generic_args;
338 visit_generic_param(GenericParam) => walk_generic_param;
339 visit_generics(Generics) => walk_generics;
340 visit_impl_restriction(ImplRestriction) => walk_impl_restriction;
341 visit_inline_asm(InlineAsm) => walk_inline_asm;
342 visit_inline_asm_sym(InlineAsmSym) => walk_inline_asm_sym;
343 visit_label(Label) => walk_label;
345 visit_lifetime(Lifetime, _ctxt: LifetimeCtxt) => walk_lifetime;
346 visit_local(Local) => walk_local;
347 visit_mac_call(MacCall) => walk_mac;
348 visit_macro_def(MacroDef) => walk_macro_def;
349 visit_mut_restriction(MutRestriction) => walk_mut_restriction;
350 visit_param(Param) => walk_param;
351 visit_param_bound(GenericBound, _ctxt: BoundKind) => walk_param_bound;
352 visit_pat(Pat) => walk_pat;
353 visit_pat_field(PatField) => walk_pat_field;
354 visit_path(Path) => walk_path;
355 visit_path_segment(PathSegment) => walk_path_segment;
356 visit_poly_trait_ref(PolyTraitRef) => walk_poly_trait_ref;
357 visit_precise_capturing_arg(PreciseCapturingArg) => walk_precise_capturing_arg;
358 visit_qself(QSelf) => walk_qself;
359 visit_test_binder_body(TestBinderBody) => walk_test_binder_body;
360 visit_test_binder_bound_type_constraint(TestBinderBoundTypeConstraint) =>
361 walk_test_binder_bound_type_constraint;
362 visit_test_binder_constraint(TestBinderConstraint) => walk_test_binder_constraint;
363 visit_test_binder_constraints(TestBinderConstraints) => walk_test_binder_constraints;
364 visit_test_binder_exists(TestBinderExists) => walk_test_binder_exists;
365 visit_test_binder_forall(TestBinderForall) => walk_test_binder_forall;
366 visit_test_binder_item(TestBinderItem) => walk_test_binder_item;
367 visit_trait_ref(TraitRef) => walk_trait_ref;
368 visit_ty(Ty) => walk_ty;
369 visit_ty_pat(TyPat) => walk_ty_pat;
370 visit_use_tree(UseTree) => walk_use_tree;
371 visit_use_tree_and_id(UseTreeAndId) => walk_use_tree_and_id;
372 visit_variant(Variant) => walk_variant;
373 visit_variant_data(VariantData) => walk_variant_data;
374 visit_vis(Visibility) => walk_vis;
375 visit_where_predicate(WherePredicate) => walk_where_predicate;
376 visit_where_predicate_kind(WherePredicateKind) => walk_where_predicate_kind;
377 }
379 };
380}
381pub(crate) use for_each_ast_visit_hook;
382
383macro_rules! common_visitor_and_walkers {
384 ($(($mut:ident))? $Visitor:ident$(<$lt:lifetime>)?) => {
385 $(${ignore($lt)}
386 #[derive(Copy, Clone)]
387 )?
388 #[derive(Debug)]
389 pub enum FnKind<'a> {
390 Fn(FnCtxt, &'a $($mut)? Visibility, &'a $($mut)? Fn),
392
393 Closure(
395 &'a $($mut)? ClosureBinder,
396 &'a $($mut)? Option<CoroutineMarker>,
397 &'a $($mut)? Box<FnDecl>,
398 &'a $($mut)? Box<Expr>,
399 ),
400 }
401
402 impl<'a> FnKind<'_> {
403 pub fn header(&'a $($mut)? self) -> Option<&'a $($mut)? FnHeader> {
404 match *self {
405 FnKind::Fn(_, _, Fn { sig, .. }) => Some(&$($mut)? sig.header),
406 FnKind::Closure(..) => None,
407 }
408 }
409
410 pub fn ident(&'a $($mut)? self) -> Option<&'a $($mut)? Ident> {
411 match self {
412 FnKind::Fn(_, _, Fn { ident, .. }) => Some(ident),
413 _ => None,
414 }
415 }
416
417 pub fn decl(&'a $($mut)? self) -> &'a $($mut)? FnDecl {
418 match self {
419 FnKind::Fn(_, _, Fn { sig, .. }) => &$($mut)? sig.decl,
420 FnKind::Closure(_, _, decl, _) => decl,
421 }
422 }
423
424 pub fn ctxt(&self) -> Option<FnCtxt> {
425 match self {
426 FnKind::Fn(ctxt, ..) => Some(*ctxt),
427 FnKind::Closure(..) => None,
428 }
429 }
430 }
431
432 impl_visitable_noop! {
434 AttrId,
436 GeneratedAttr,
437 Movability,
438 Mutability,
439 Pinnedness,
440 Result<(), rustc_span::ErrorGuaranteed>,
441 Symbol,
442 SyntheticAttr,
443 bool,
444 char,
445 crate::token::CommentKind,
446 crate::token::Delimiter,
447 crate::token::Lit,
448 crate::token::LitKind,
449 crate::tokenstream::LazyTokenStream,
450 crate::tokenstream::TokenStream,
451 rustc_data_structures::fx::FxHashMap<Symbol, usize>,
452 rustc_span::ByteSymbol,
453 rustc_span::ErrorGuaranteed,
454 std::borrow::Cow<'_, str>,
455 u8,
456 usize,
457 }
459 $(${ignore($lt)} impl_visitable_noop! { Span, })?
461
462 impl_visitable_list! {
466 ThinVec<(Ident, Option<Ident>)>,
468 ThinVec<(NodeId, Path)>,
469 ThinVec<AngleBracketedArg>,
470 ThinVec<Attribute>,
471 ThinVec<Box<Ty>>,
472 ThinVec<EiiImpl>,
473 ThinVec<GenericBound>,
474 ThinVec<Ident>,
475 ThinVec<Pat>,
476 ThinVec<PathSegment>,
477 ThinVec<PreciseCapturingArg>,
478 ThinVec<TestBinderConstraint>,
479 ThinVec<TestBinderExists>,
480 ThinVec<TestBinderForall>,
481 ThinVec<TyPat>,
482 ThinVec<UseTreeAndId>,
483 }
485
486 impl_visitable_direct! {
490 AngleBracketedArg,
492 AngleBracketedArgs,
493 AsmMacro,
494 AssignOpKind,
495 AssocItemConstraintKind,
496 AttrArgs,
497 AttrItem,
498 AttrKind,
499 AttrStyle,
500 BinOpKind,
501 BindingMode,
502 BlockCheckMode,
503 BorrowKind,
504 BoundAsyncness,
505 BoundConstness,
506 BoundPolarity,
507 ByRef,
508 Closure,
509 Const,
510 ConstBlockItem,
511 ConstItem,
512 CoroutineKind,
513 Defaultness,
514 Delegation,
515 DelegationMac,
516 DelegationSuffixes,
517 DelimArgs,
518 DelimSpan,
519 EiiDecl,
520 EiiImpl,
521 EnumDef,
522 Extern,
523 FnPtrTy,
524 ForLoopKind,
525 FormatArgPosition,
526 FormatArgsPiece,
527 FormatArgument,
528 FormatArgumentKind,
529 FormatArguments,
530 FormatPlaceholder,
531 GenericParamKind,
532 Guard,
533 Impl,
534 ImplPolarity,
535 Inline,
536 InlineAsmOperand,
537 InlineAsmRegOrRegClass,
538 InlineAsmTemplatePiece,
539 IsAuto,
540 LocalKind,
541 MacCallStmt,
542 MacStmtStyle,
543 MatchKind,
544 MethodCall,
545 ModKind,
546 ModSpans,
547 NormalAttr,
548 Parens,
549 ParenthesizedArgs,
550 PatFieldsRest,
551 PatKind,
552 RangeEnd,
553 RangeLimits,
554 RangeSyntax,
555 Recovered,
556 RestrictionKind,
557 Safety,
558 StaticItem,
559 StrLit,
560 StrStyle,
561 StructExpr,
562 StructRest,
563 Term,
564 TestBinderRegionEquality,
565 Trait,
566 TraitBoundModifiers,
567 TraitObjectSyntax,
568 TyAlias,
569 TyKind,
570 TyPatKind,
571 UnOp,
572 UnsafeBinderCastKind,
573 UnsafeBinderTy,
574 UnsafeSource,
575 UseTreeKind,
576 VisibilityKind,
577 WhereBoundPredicate,
578 WhereClause,
579 WhereRegionPredicate,
580 YieldKind,
581 }
583
584 #[doc = concat!(
588 " e.g., the `visit_item` method by default calls `visit"
589 $(, "_", stringify!($mut))?,
590 "::walk_item`."
591 )]
592 pub trait $Visitor<$($lt)?>: Sized $(${ignore($mut)} + MutVisitorResult<Result = ()>)? {
602 $(
603 ${ignore($lt)}
604 type Result: VisitorResult = ();
607 )?
608
609 fn visit_ident(&mut self, Ident { name: _, span }: &$($lt)? $($mut)? Ident)
637 -> Self::Result
638 {
639 visit_visitable!(self, span);
640 Self::Result::output()
641 }
642
643 crate::visit::for_each_ast_visit_hook! { fn_visit! }
644
645 fn visit_id(&mut self, _id: $(&$mut)? NodeId) -> Self::Result {
647 Self::Result::output()
648 }
649
650 fn visit_method_receiver_expr(&mut self, ex: &$($lt)? $($mut)? Expr) -> Self::Result {
653 self.visit_expr(ex)
654 }
655
656 fn visit_item(&mut self, item: &$($lt)? $($mut)? Item) -> Self::Result {
657 walk_item(self, item)
658 }
659
660 fn visit_foreign_item(&mut self, item: &$($lt)? $($mut)? ForeignItem) -> Self::Result {
661 walk_item(self, item)
662 }
663
664 fn visit_assoc_item(&mut self, item: &$($lt)? $($mut)? AssocItem, ctxt: AssocCtxt)
665 -> Self::Result
666 {
667 walk_assoc_item(self, item, ctxt)
668 }
669
670 fn visit_fn(
672 &mut self,
673 fk: FnKind<$($lt)? $(${ignore($mut)} '_)?>,
674 _: &AttrVec,
675 _: Span,
676 _: NodeId,
677 ) -> Self::Result {
678 walk_fn(self, fk)
679 }
680
681 $(
683 fn visit_stmt(&mut self, s: &$lt Stmt) -> Self::Result {
684 walk_stmt(self, s)
685 }
686 )?
687
688 $(
690 #[inline]
693 fn visit_span(&mut self, _sp: &$mut Span) {
694 }
696
697 fn flat_map_foreign_item(&mut self, ni: Box<ForeignItem>)
698 -> SmallVec<[Box<ForeignItem>; 1]>
699 {
700 walk_flat_map_foreign_item(self, ni)
701 }
702
703 fn flat_map_item(&mut self, i: Box<Item>) -> SmallVec<[Box<Item>; 1]> {
704 walk_flat_map_item(self, i)
705 }
706
707 fn flat_map_field_def(&mut self, fd: FieldDef) -> SmallVec<[FieldDef; 1]> {
708 walk_flat_map_field_def(self, fd)
709 }
710
711 fn flat_map_assoc_item(
712 &mut self,
713 i: Box<AssocItem>,
714 ctxt: AssocCtxt,
715 ) -> SmallVec<[Box<AssocItem>; 1]> {
716 walk_flat_map_assoc_item(self, i, ctxt)
717 }
718
719 fn flat_map_stmt(&mut self, s: Stmt) -> SmallVec<[Stmt; 1]> {
720 walk_flat_map_stmt(self, s)
721 }
722
723 fn flat_map_arm(&mut self, arm: Arm) -> SmallVec<[Arm; 1]> {
724 walk_flat_map_arm(self, arm)
725 }
726
727 fn filter_map_expr(&mut self, e: Box<Expr>) -> Option<Box<Expr>> {
728 walk_filter_map_expr(self, e)
729 }
730
731 fn flat_map_variant(&mut self, v: Variant) -> SmallVec<[Variant; 1]> {
732 walk_flat_map_variant(self, v)
733 }
734
735 fn flat_map_param(&mut self, param: Param) -> SmallVec<[Param; 1]> {
736 walk_flat_map_param(self, param)
737 }
738
739 fn flat_map_generic_param(&mut self, param: GenericParam)
740 -> SmallVec<[GenericParam; 1]>
741 {
742 walk_flat_map_generic_param(self, param)
743 }
744
745 fn flat_map_expr_field(&mut self, f: ExprField) -> SmallVec<[ExprField; 1]> {
746 walk_flat_map_expr_field(self, f)
747 }
748
749 fn flat_map_where_predicate(
750 &mut self,
751 where_predicate: WherePredicate,
752 ) -> SmallVec<[WherePredicate; 1]> {
753 walk_flat_map_where_predicate(self, where_predicate)
754 }
755
756 fn flat_map_pat_field(&mut self, fp: PatField) -> SmallVec<[PatField; 1]> {
757 walk_flat_map_pat_field(self, fp)
758 }
759 )?
760 }
761
762 crate::visit::for_each_ast_visit_hook! { impl_visitable_visit! }
763
764 impl_visitable!(|&$($lt)? $($mut)? self: Ident, visitor: &mut V| {
765 visitor.visit_ident(self)
766 });
767
768 $(
769 impl_visitable!(
770 |&$lt self: NodeId, visitor: &mut V| {
771 visitor.visit_id(*self)
772 }
773 );
774 )?
775 $(
776 impl_visitable!(
777 |&$mut self: NodeId, visitor: &mut V| {
778 visitor.visit_id(self)
779 }
780 );
781
782 impl_visitable!(|&mut self: Span, visitor: &mut V| {
783 visitor.visit_span(self)
784 });
785 )?
786
787 impl_visitable!(|&$($lt)? $($mut)? self: Item, vis: &mut V| {
788 vis.visit_item(self)
789 });
790 impl_visitable!(|&$($lt)? $($mut)? self: ForeignItem, vis: &mut V| {
791 vis.visit_foreign_item(self)
792 });
793 impl_visitable!(|&$($lt)? $($mut)? self: AssocItem, vis: &mut V, ctxt: AssocCtxt| {
794 vis.visit_assoc_item(self, ctxt)
795 });
796
797 pub trait WalkItemKind {
798 type Ctxt;
799 fn walk<$($lt,)? V: $Visitor$(<$lt>)?>(
800 &$($lt)? $($mut)? self,
801 attrs: &AttrVec,
802 span: Span,
803 id: NodeId,
804 visibility: &$($lt)? $($mut)? Visibility,
805 ctxt: Self::Ctxt,
806 vis: &mut V,
807 ) -> V::Result;
808 }
809
810 fn walk_item_inner<$($lt,)? K: WalkItemKind, V: $Visitor$(<$lt>)?>(
811 visitor: &mut V,
812 item: &$($lt)? $($mut)? Item<K>,
813 ctxt: K::Ctxt,
814 ) -> V::Result {
815 let Item { attrs, id, kind, vis, span, tokens: _ } = item;
816 visit_visitable!(visitor, id, attrs, vis);
817 try_visit!(kind.walk(attrs, *span, *id, vis, ctxt, visitor));
818 visit_visitable!(visitor, span);
819 V::Result::output()
820 }
821
822 pub fn walk_item<$($lt,)? K: WalkItemKind<Ctxt = ()>, V: $Visitor$(<$lt>)?>(
824 visitor: &mut V,
825 item: &$($lt)? $($mut)? Item<K>,
826 ) -> V::Result {
827 walk_item_inner(visitor, item, ())
828 }
829
830 pub fn walk_assoc_item<$($lt,)? K: WalkItemKind<Ctxt = AssocCtxt>, V: $Visitor$(<$lt>)?>(
832 visitor: &mut V,
833 item: &$($lt)? $($mut)? Item<K>,
834 ctxt: AssocCtxt,
835 ) -> V::Result {
836 walk_item_inner(visitor, item, ctxt)
837 }
838
839 impl WalkItemKind for ItemKind {
840 type Ctxt = ();
841 fn walk<$($lt,)? V: $Visitor$(<$lt>)?>(
842 &$($lt)? $($mut)? self,
843 attrs: &AttrVec,
844 span: Span,
845 id: NodeId,
846 visibility: &$($lt)? $($mut)? Visibility,
847 _ctxt: Self::Ctxt,
848 vis: &mut V,
849 ) -> V::Result {
850 match self {
851 ItemKind::Fn(func) => {
852 let kind = FnKind::Fn(FnCtxt::Free, visibility, &$($mut)? *func);
853 try_visit!(vis.visit_fn(kind, attrs, span, id));
854 }
855 ItemKind::ExternCrate(orig_name, ident) =>
856 visit_visitable!(vis, orig_name, ident),
857 ItemKind::Use(use_tree) =>
858 visit_visitable!(vis, use_tree),
859 ItemKind::Static(item) =>
860 visit_visitable!(vis, item),
861 ItemKind::ConstBlock(item) =>
862 visit_visitable!(vis, item),
863 ItemKind::Const(item) =>
864 visit_visitable!(vis, item),
865 ItemKind::Mod(safety, ident, mod_kind) =>
866 visit_visitable!(vis, safety, ident, mod_kind),
867 ItemKind::ForeignMod(nm) =>
868 visit_visitable!(vis, nm),
869 ItemKind::GlobalAsm(asm) =>
870 visit_visitable!(vis, asm),
871 ItemKind::TyAlias(ty_alias) =>
872 visit_visitable!(vis, ty_alias),
873 ItemKind::Enum(ident, generics, enum_definition) =>
874 visit_visitable!(vis, ident, generics, enum_definition),
875 ItemKind::Struct(ident, generics, variant_data)
876 | ItemKind::Union(ident, generics, variant_data) =>
877 visit_visitable!(vis, ident, generics, variant_data),
878 ItemKind::Impl(impl_) =>
879 visit_visitable!(vis, impl_),
880 ItemKind::Trait(trait_) =>
881 visit_visitable!(vis, trait_),
882 ItemKind::TraitAlias(TraitAlias { constness, ident, generics, bounds }) => {
883 visit_visitable!(vis, constness, ident, generics);
884 visit_visitable_with!(vis, bounds, BoundKind::Bound)
885 }
886 ItemKind::MacCall(m) =>
887 visit_visitable!(vis, m),
888 ItemKind::MacroDef(ident, def) =>
889 visit_visitable!(vis, ident, def),
890 ItemKind::Delegation(delegation) =>
891 visit_visitable!(vis, delegation),
892 ItemKind::DelegationMac(dm) =>
893 visit_visitable!(vis, dm),
894 ItemKind::TestBinderConstraints(item) =>
895 visit_visitable!(vis, item),
896 }
897 V::Result::output()
898 }
899 }
900
901 impl WalkItemKind for AssocItemKind {
902 type Ctxt = AssocCtxt;
903 fn walk<$($lt,)? V: $Visitor$(<$lt>)?>(
904 &$($lt)? $($mut)? self,
905 attrs: &AttrVec,
906 span: Span,
907 id: NodeId,
908 visibility: &$($lt)? $($mut)? Visibility,
909 ctxt: Self::Ctxt,
910 vis: &mut V,
911 ) -> V::Result {
912 match self {
913 AssocItemKind::Const(item) =>
914 visit_visitable!(vis, item),
915 AssocItemKind::Fn(func) => {
916 let kind = FnKind::Fn(FnCtxt::Assoc(ctxt), visibility, &$($mut)? *func);
917 try_visit!(vis.visit_fn(kind, attrs, span, id))
918 }
919 AssocItemKind::Type(alias) =>
920 visit_visitable!(vis, alias),
921 AssocItemKind::MacCall(mac) =>
922 visit_visitable!(vis, mac),
923 AssocItemKind::Delegation(delegation) =>
924 visit_visitable!(vis, delegation),
925 AssocItemKind::DelegationMac(dm) =>
926 visit_visitable!(vis, dm),
927 }
928 V::Result::output()
929 }
930 }
931
932 impl WalkItemKind for ForeignItemKind {
933 type Ctxt = ();
934 fn walk<$($lt,)? V: $Visitor$(<$lt>)?>(
935 &$($lt)? $($mut)? self,
936 attrs: &AttrVec,
937 span: Span,
938 id: NodeId,
939 visibility: &$($lt)? $($mut)? Visibility,
940 _ctxt: Self::Ctxt,
941 vis: &mut V,
942 ) -> V::Result {
943 match self {
944 ForeignItemKind::Static(item) =>
945 visit_visitable!(vis, item),
946 ForeignItemKind::Fn(func) => {
947 let kind = FnKind::Fn(FnCtxt::Foreign, visibility, &$($mut)? *func);
948 try_visit!(vis.visit_fn(kind, attrs, span, id))
949 }
950 ForeignItemKind::TyAlias(alias) =>
951 visit_visitable!(vis, alias),
952 ForeignItemKind::MacCall(mac) =>
953 visit_visitable!(vis, mac),
954 }
955 V::Result::output()
956 }
957 }
958
959 pub fn walk_fn<$($lt,)? V: $Visitor$(<$lt>)?>(
960 vis: &mut V,
961 kind: FnKind<$($lt)? $(${ignore($mut)} '_)?>,
962 ) -> V::Result {
963 match kind {
964 FnKind::Fn(
965 _ctxt,
966 _vis,
968 Fn {
969 defaultness,
970 ident,
971 sig,
972 generics,
973 contract,
974 body,
975 define_opaque,
976 eii_impl,
977 },
978 ) => {
979 let FnSig { header, decl, span } = sig;
980 visit_visitable!(vis,
981 defaultness, ident, header, generics, decl,
982 contract, body, span, define_opaque, eii_impl
983 );
984 }
985 FnKind::Closure(binder, coroutine_marker, decl, body) =>
986 visit_visitable!(vis, binder, coroutine_marker, decl, body),
987 }
988 V::Result::output()
989 }
990
991 impl_walkable!(|&$($lt)? $($mut)? self: Impl, vis: &mut V| {
992 let Impl { generics, of_trait, self_ty, items, constness: _ } = self;
993 try_visit!(vis.visit_generics(generics));
994 if let Some(of_trait) = of_trait {
995 let TraitImplHeader { defaultness, safety, polarity, trait_ref } = of_trait;
996 visit_visitable!(vis, defaultness, safety, polarity, trait_ref);
997 }
998 try_visit!(vis.visit_ty(self_ty));
999 visit_visitable_with!(vis, items, AssocCtxt::Impl { of_trait: of_trait.is_some() });
1000 V::Result::output()
1001 });
1002
1003 impl_walkable!(|&$($lt)? $($mut)? self: MethodCall, vis: &mut V| {
1005 let MethodCall { seg, receiver, args, span } = self;
1006 try_visit!(vis.visit_method_receiver_expr(receiver));
1007 visit_visitable!(vis, seg, args, span);
1008 V::Result::output()
1009 });
1010
1011 impl_walkable!(|&$($lt)? $($mut)? self: Expr, vis: &mut V| {
1012 let Expr { id, kind, span, attrs, tokens: _ } = self;
1013 visit_visitable!(vis, id, attrs);
1014 match kind {
1015 ExprKind::Array(exprs) =>
1016 visit_visitable!(vis, exprs),
1017 ExprKind::ConstBlock(anon_const) =>
1018 visit_visitable!(vis, anon_const),
1019 ExprKind::Repeat(element, count) =>
1020 visit_visitable!(vis, element, count),
1021 ExprKind::Struct(se) =>
1022 visit_visitable!(vis, se),
1023 ExprKind::Tup(exprs) =>
1024 visit_visitable!(vis, exprs),
1025 ExprKind::Call(callee_expression, arguments) =>
1026 visit_visitable!(vis, callee_expression, arguments),
1027 ExprKind::MethodCall(mc) =>
1028 visit_visitable!(vis, mc),
1029 ExprKind::Binary(op, lhs, rhs) =>
1030 visit_visitable!(vis, op, lhs, rhs),
1031 ExprKind::AddrOf(kind, mutbl, subexpression) =>
1032 visit_visitable!(vis, kind, mutbl, subexpression),
1033 ExprKind::Unary(op, subexpression) =>
1034 visit_visitable!(vis, op, subexpression),
1035 ExprKind::Cast(subexpression, typ) | ExprKind::Type(subexpression, typ) =>
1036 visit_visitable!(vis, subexpression, typ),
1037 ExprKind::Let(pat, expr, span, _recovered) =>
1038 visit_visitable!(vis, pat, expr, span),
1039 ExprKind::If(head_expression, if_block, optional_else) =>
1040 visit_visitable!(vis, head_expression, if_block, optional_else),
1041 ExprKind::While(subexpression, block, opt_label) =>
1042 visit_visitable!(vis, subexpression, block, opt_label),
1043 ExprKind::ForLoop(ForLoop { pat, iter, body, label, kind }) =>
1044 visit_visitable!(vis, pat, iter, body, label, kind),
1045 ExprKind::Loop(block, opt_label, span) =>
1046 visit_visitable!(vis, block, opt_label, span),
1047 ExprKind::Match(subexpression, arms, kind) =>
1048 visit_visitable!(vis, subexpression, arms, kind),
1049 ExprKind::Closure(Closure {
1050 binder,
1051 capture_clause,
1052 coroutine_marker,
1053 constness,
1054 movability,
1055 fn_decl,
1056 body,
1057 fn_decl_span,
1058 fn_arg_span,
1059 }) => {
1060 visit_visitable!(vis, constness, movability, capture_clause);
1061 let kind = FnKind::Closure(binder, coroutine_marker, fn_decl, body);
1062 try_visit!(vis.visit_fn(kind, attrs, *span, *id));
1063 visit_visitable!(vis, fn_decl_span, fn_arg_span);
1064 }
1065 ExprKind::Block(block, opt_label) =>
1066 visit_visitable!(vis, block, opt_label),
1067 ExprKind::Gen(capt, body, kind, decl_span) =>
1068 visit_visitable!(vis, capt, body, kind, decl_span),
1069 ExprKind::Await(expr, span)
1070 | ExprKind::Move(expr, span)
1071 | ExprKind::Use(expr, span) =>
1072 visit_visitable!(vis, expr, span),
1073 ExprKind::Assign(lhs, rhs, span) =>
1074 visit_visitable!(vis, lhs, rhs, span),
1075 ExprKind::AssignOp(op, lhs, rhs) =>
1076 visit_visitable!(vis, op, lhs, rhs),
1077 ExprKind::Field(subexpression, ident) =>
1078 visit_visitable!(vis, subexpression, ident),
1079 ExprKind::Index(main_expression, index_expression, span) =>
1080 visit_visitable!(vis, main_expression, index_expression, span),
1081 ExprKind::Range(start, end, limit) =>
1082 visit_visitable!(vis, start, end, limit),
1083 ExprKind::Underscore => {}
1084 ExprKind::Path(maybe_qself, path) =>
1085 visit_visitable!(vis, maybe_qself, path),
1086 ExprKind::Break(opt_label, opt_expr) =>
1087 visit_visitable!(vis, opt_label, opt_expr),
1088 ExprKind::Continue(opt_label) =>
1089 visit_visitable!(vis, opt_label),
1090 ExprKind::Ret(optional_expression) | ExprKind::Yeet(optional_expression) =>
1091 visit_visitable!(vis, optional_expression),
1092 ExprKind::Become(expr) =>
1093 visit_visitable!(vis, expr),
1094 ExprKind::MacCall(mac) =>
1095 visit_visitable!(vis, mac),
1096 ExprKind::Paren(subexpression) =>
1097 visit_visitable!(vis, subexpression),
1098 ExprKind::InlineAsm(asm) =>
1099 visit_visitable!(vis, asm),
1100 ExprKind::FormatArgs(f) =>
1101 visit_visitable!(vis, f),
1102 ExprKind::OffsetOf(container, fields) =>
1103 visit_visitable!(vis, container, fields),
1104 ExprKind::Yield(kind) =>
1105 visit_visitable!(vis, kind),
1106 ExprKind::Try(subexpression) =>
1107 visit_visitable!(vis, subexpression),
1108 ExprKind::TryBlock(body, optional_type) =>
1109 visit_visitable!(vis, body, optional_type),
1110 ExprKind::Lit(token) =>
1111 visit_visitable!(vis, token),
1112 ExprKind::IncludedBytes(bytes) =>
1113 visit_visitable!(vis, bytes),
1114 ExprKind::UnsafeBinderCast(kind, expr, ty) =>
1115 visit_visitable!(vis, kind, expr, ty),
1116 ExprKind::GcaMacro(expr) =>
1117 visit_visitable!(vis, expr),
1118 ExprKind::Err(_guar) => {}
1119 ExprKind::Dummy => {}
1120 }
1121
1122 visit_visitable!(vis, span);
1123 V::Result::output()
1124 });
1125
1126 crate::visit::for_each_ast_visit_hook! { fn_walk! }
1127 };
1128}
1129pub(crate) use common_visitor_and_walkers;
1130
1131pub 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 {
Self::Fn(__self_0, __self_1, __self_2) =>
::core::fmt::Formatter::debug_struct_field3_finish(f, "Fn",
__self_0, __self_1, &__self_2),
Self::Closure(__self_0, __self_1, __self_2, __self_3) =>
::core::fmt::Formatter::debug_struct_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) -> Self {
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,
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AttrId {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GeneratedAttr {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Movability {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Mutability {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Pinnedness {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for
Result<(), rustc_span::ErrorGuaranteed> {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Symbol {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for SyntheticAttr {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for bool {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for char {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for crate::token::CommentKind {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for crate::token::Delimiter {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for crate::token::Lit {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for crate::token::LitKind {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for
crate::tokenstream::LazyTokenStream {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for crate::tokenstream::TokenStream
{
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for
rustc_data_structures::fx::FxHashMap<Symbol, usize> {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for rustc_span::ByteSymbol {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for rustc_span::ErrorGuaranteed {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for std::borrow::Cow<'_, str> {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for u8 {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for usize {
type Extra = ();
#[inline]
fn visit(&'a self, _vis: &mut V, _extra: Self::Extra) -> V::Result {
{ V::Result::output() }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Span {
type Extra = ();
#[inline]
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<(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;
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;
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<AngleBracketedArg>
where &'a ThinVec<AngleBracketedArg>: IntoIterator<Item = &'a T>, T: 'a +
Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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<UseTreeAndId> where
&'a ThinVec<UseTreeAndId>: IntoIterator<Item = &'a T>, T: 'a +
Visitable<'a, V> {
type Extra = <T as Visitable<'a, V>>::Extra;
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>> Visitable<'a, V> for AngleBracketedArg {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AngleBracketedArgs {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AsmMacro {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AssignOpKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AssocItemConstraintKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AttrArgs {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AttrItem {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AttrKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AttrStyle {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BinOpKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BindingMode {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BlockCheckMode {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BorrowKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BoundAsyncness {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BoundConstness {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for BoundPolarity {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ByRef {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Closure {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Const {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ConstBlockItem {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ConstItem {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for CoroutineKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Defaultness {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Delegation {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for DelegationMac {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for DelegationSuffixes {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for DelimArgs {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for DelimSpan {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for EiiDecl {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for EiiImpl {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for EnumDef {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Extern {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FnPtrTy {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ForLoopKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArgPosition {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArgsPiece {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArgument {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArgumentKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArguments {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatPlaceholder {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GenericParamKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Guard {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Impl {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ImplPolarity {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Inline {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for InlineAsmOperand {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for InlineAsmRegOrRegClass {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for InlineAsmTemplatePiece {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for IsAuto {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for LocalKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MacCallStmt {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MacStmtStyle {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MatchKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MethodCall {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ModKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ModSpans {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for NormalAttr {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Parens {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ParenthesizedArgs {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PatFieldsRest {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PatKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for RangeEnd {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for RangeLimits {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for RangeSyntax {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Recovered {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for RestrictionKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Safety {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for StaticItem {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for StrLit {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for StrStyle {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for StructExpr {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for StructRest {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Term {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderRegionEquality {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Trait {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TraitBoundModifiers {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TraitObjectSyntax {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TyAlias {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TyKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TyPatKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UnOp {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UnsafeBinderCastKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UnsafeBinderTy {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UnsafeSource {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UseTreeKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for VisibilityKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WhereBoundPredicate {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WhereClause {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WhereRegionPredicate {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ Walkable::walk_ref(self, visitor) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for YieldKind {
type Extra = ();
#[inline]
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 {
{
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 {
Walkable::walk_ref(node, self)
}
fn visit_arm(&mut self, node: &'a Arm) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_assoc_item_constraint(&mut self, node: &'a AssocItemConstraint)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_attribute(&mut self, node: &'a Attribute) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_block(&mut self, node: &'a Block) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_capture_by(&mut self, node: &'a CaptureBy) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_closure_binder(&mut self, node: &'a ClosureBinder)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_contract(&mut self, node: &'a FnContract) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_coroutine_marker(&mut self, node: &'a CoroutineMarker)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_crate(&mut self, node: &'a Crate) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_expr(&mut self, node: &'a Expr) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_expr_field(&mut self, node: &'a ExprField) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_field_def(&mut self, node: &'a FieldDef) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_field_def_extras(&mut self, node: &'a FieldDefExtras)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_fn_decl(&mut self, node: &'a FnDecl) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_fn_header(&mut self, node: &'a FnHeader) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_fn_ret_ty(&mut self, node: &'a FnRetTy) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_foreign_mod(&mut self, node: &'a ForeignMod) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_format_args(&mut self, node: &'a FormatArgs) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_generic_arg(&mut self, node: &'a GenericArg) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_generic_args(&mut self, node: &'a GenericArgs) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_generic_param(&mut self, node: &'a GenericParam)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_generics(&mut self, node: &'a Generics) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_impl_restriction(&mut self, node: &'a ImplRestriction)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_inline_asm(&mut self, node: &'a InlineAsm) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_inline_asm_sym(&mut self, node: &'a InlineAsmSym)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_label(&mut self, node: &'a Label) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_lifetime(&mut self, node: &'a Lifetime, _ctxt: LifetimeCtxt)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_local(&mut self, node: &'a Local) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_mac_call(&mut self, node: &'a MacCall) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_macro_def(&mut self, node: &'a MacroDef) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_mut_restriction(&mut self, node: &'a MutRestriction)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_param(&mut self, node: &'a Param) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_param_bound(&mut self, node: &'a GenericBound, _ctxt: BoundKind)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_pat(&mut self, node: &'a Pat) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_pat_field(&mut self, node: &'a PatField) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_path(&mut self, node: &'a Path) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_path_segment(&mut self, node: &'a PathSegment) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_poly_trait_ref(&mut self, node: &'a PolyTraitRef)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_precise_capturing_arg(&mut self, node: &'a PreciseCapturingArg)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_qself(&mut self, node: &'a QSelf) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_test_binder_body(&mut self, node: &'a TestBinderBody)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_test_binder_bound_type_constraint(&mut self,
node: &'a TestBinderBoundTypeConstraint) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_test_binder_constraint(&mut self, node: &'a TestBinderConstraint)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_test_binder_constraints(&mut self,
node: &'a TestBinderConstraints) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_test_binder_exists(&mut self, node: &'a TestBinderExists)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_test_binder_forall(&mut self, node: &'a TestBinderForall)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_test_binder_item(&mut self, node: &'a TestBinderItem)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_trait_ref(&mut self, node: &'a TraitRef) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_ty(&mut self, node: &'a Ty) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_ty_pat(&mut self, node: &'a TyPat) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_use_tree(&mut self, node: &'a UseTree) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_use_tree_and_id(&mut self, node: &'a UseTreeAndId)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_variant(&mut self, node: &'a Variant) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_variant_data(&mut self, node: &'a VariantData) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_vis(&mut self, node: &'a Visibility) -> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_where_predicate(&mut self, node: &'a WherePredicate)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_where_predicate_kind(&mut self, node: &'a WherePredicateKind)
-> Self::Result {
Walkable::walk_ref(node, self)
}
fn visit_id(&mut self, _id: NodeId) -> Self::Result {
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 {
walk_item(self, item)
}
fn visit_foreign_item(&mut self, item: &'a ForeignItem) -> Self::Result {
walk_item(self, item)
}
fn visit_assoc_item(&mut self, item: &'a AssocItem, ctxt: AssocCtxt)
-> Self::Result {
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)
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AnonConst {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_anon_const(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Arm {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_arm(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AssocItemConstraint {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_assoc_item_constraint(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Attribute {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_attribute(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Block {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_block(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for CaptureBy {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_capture_by(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ClosureBinder {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_closure_binder(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FnContract {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_contract(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for CoroutineMarker {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_coroutine_marker(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Crate {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_crate(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Expr {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_expr(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ExprField {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_expr_field(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FieldDef {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_field_def(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FieldDefExtras {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_field_def_extras(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FnDecl {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_fn_decl(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FnHeader {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_fn_header(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FnRetTy {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_fn_ret_ty(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ForeignMod {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_foreign_mod(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for FormatArgs {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_format_args(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GenericArg {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_generic_arg(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GenericArgs {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_generic_args(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GenericParam {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_generic_param(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Generics {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_generics(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ImplRestriction {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_impl_restriction(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for InlineAsm {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_inline_asm(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for InlineAsmSym {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_inline_asm_sym(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Label {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_label(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Lifetime {
type Extra = LifetimeCtxt;
#[inline]
fn visit(&'a self, visitor: &mut V, _ctxt: Self::Extra) -> V::Result {
{ visitor.visit_lifetime(self, _ctxt) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Local {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_local(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MacCall {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_mac_call(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MacroDef {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_macro_def(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for MutRestriction {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_mut_restriction(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Param {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_param(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for GenericBound {
type Extra = BoundKind;
#[inline]
fn visit(&'a self, visitor: &mut V, _ctxt: Self::Extra) -> V::Result {
{ visitor.visit_param_bound(self, _ctxt) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Pat {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_pat(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PatField {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_pat_field(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Path {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_path(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PathSegment {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_path_segment(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PolyTraitRef {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_poly_trait_ref(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for PreciseCapturingArg {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_precise_capturing_arg(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for QSelf {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_qself(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderBody {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_test_binder_body(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderBoundTypeConstraint {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_test_binder_bound_type_constraint(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderConstraint {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_test_binder_constraint(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderConstraints {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_test_binder_constraints(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderExists {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_test_binder_exists(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderForall {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_test_binder_forall(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TestBinderItem {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_test_binder_item(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TraitRef {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_trait_ref(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Ty {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_ty(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for TyPat {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_ty_pat(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UseTree {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_use_tree(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for UseTreeAndId {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_use_tree_and_id(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Variant {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_variant(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for VariantData {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_variant_data(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Visibility {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_vis(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WherePredicate {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_where_predicate(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for WherePredicateKind {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_where_predicate_kind(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Ident {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_ident(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for NodeId {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: Self::Extra) -> V::Result {
{ visitor.visit_id(*self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for Item {
type Extra = ();
#[inline]
fn visit(&'a self, vis: &mut V, _extra: Self::Extra) -> V::Result {
{ vis.visit_item(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ForeignItem {
type Extra = ();
#[inline]
fn visit(&'a self, vis: &mut V, _extra: Self::Extra) -> V::Result {
{ vis.visit_foreign_item(self) }
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for AssocItem {
type Extra = AssocCtxt;
#[inline]
fn visit(&'a self, vis: &mut V, ctxt: Self::Extra) -> V::Result {
{ vis.visit_assoc_item(self, ctxt) }
}
}
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;
}
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::GcaMacro(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_impl_restriction<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a ImplRestriction) -> 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_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<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Param)
-> 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_pat<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Pat)
-> 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_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_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_constraint<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a TestBinderConstraint)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_test_binder_constraints<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a TestBinderConstraints)
-> 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_test_binder_item<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a TestBinderItem) -> 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<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a Ty)
-> 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_use_tree<'a, V: Visitor<'a>>(visitor: &mut V, node: &'a UseTree)
-> V::Result {
Walkable::walk_ref(node, visitor)
}
pub fn walk_use_tree_and_id<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a UseTreeAndId) -> 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_variant_data<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a VariantData) -> 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<'a,
V: Visitor<'a>>(visitor: &mut V, node: &'a WherePredicate) -> 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)
}common_visitor_and_walkers!(Visitor<'a>);
1132
1133macro_rules! generate_list_visit_fns {
1134 ($($visit_fn:ident, $Ty:ty $(, $extra:ident: $ExtraTy:ty)?;)+) => {
1135 $(impl_visitable!(|&'a self: ThinVec<$Ty>, visitor: &mut V $(, $extra: $ExtraTy)?| {
1136 walk_list!(visitor, $visit_fn, self $(, $extra)?);
1137 V::Result::output()
1138 });)+
1139 }
1140}
1141
1142impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Arm> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Box<Expr>> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<ExprField> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<FieldDef> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Box<ForeignItem>> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<GenericParam> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Box<Item>> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Param> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<PatField> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Stmt> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<Variant> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}
impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<WherePredicate> {
type Extra = ();
#[inline]
fn visit(&'a self, visitor: &mut V, _extra: 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()
}
}
}generate_list_visit_fns! {
1143 visit_arm, Arm;
1145 visit_assoc_item, Box<AssocItem>, ctxt: AssocCtxt;
1146 visit_expr, Box<Expr>;
1147 visit_expr_field, ExprField;
1148 visit_field_def, FieldDef;
1149 visit_foreign_item, Box<ForeignItem>;
1150 visit_generic_param, GenericParam;
1151 visit_item, Box<Item>;
1152 visit_param, Param;
1153 visit_pat_field, PatField;
1154 visit_stmt, Stmt;
1155 visit_variant, Variant;
1156 visit_where_predicate, WherePredicate;
1157 }
1159
1160pub fn walk_stmt<'a, V: Visitor<'a>>(visitor: &mut V, statement: &'a Stmt) -> V::Result {
1161 let Stmt { id, kind, span: _ } = statement;
1162 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));
1163 match kind {
1164 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)),
1165 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)),
1166 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)),
1167 StmtKind::Empty => {}
1168 StmtKind::MacCall(mac) => {
1169 let MacCallStmt { mac, attrs, style: _, tokens: _ } = &**mac;
1170 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);
1171 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));
1172 }
1173 }
1174 V::Result::output()
1175}