Skip to content

Commit 9f6994b

Browse files
committed
Split up visit_path so MutVisitor has a path_segment method just like the immutable visitor
1 parent 7235b1c commit 9f6994b

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

compiler/rustc_ast/src/mut_visit.rs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,10 @@ pub trait MutVisitor: Sized {
207207
noop_visit_path(p, self);
208208
}
209209

210+
fn flat_map_path_segment(&mut self, p: PathSegment) -> SmallVec<[PathSegment; 1]> {
211+
noop_flat_map_path_segment(p, self)
212+
}
213+
210214
fn visit_qself(&mut self, qs: &mut Option<P<QSelf>>) {
211215
noop_visit_qself(qs, self);
212216
}
@@ -554,12 +558,19 @@ fn noop_visit_ident<T: MutVisitor>(Ident { name: _, span }: &mut Ident, vis: &mu
554558
vis.visit_span(span);
555559
}
556560

561+
fn noop_flat_map_path_segment<T: MutVisitor>(
562+
mut segment: PathSegment,
563+
vis: &mut T,
564+
) -> SmallVec<[PathSegment; 1]> {
565+
let PathSegment { ident, id, args } = &mut segment;
566+
vis.visit_id(id);
567+
vis.visit_ident(ident);
568+
visit_opt(args, |args| vis.visit_generic_args(args));
569+
smallvec![segment]
570+
}
571+
557572
fn noop_visit_path<T: MutVisitor>(Path { segments, span, tokens }: &mut Path, vis: &mut T) {
558-
for PathSegment { ident, id, args } in segments {
559-
vis.visit_id(id);
560-
vis.visit_ident(ident);
561-
visit_opt(args, |args| vis.visit_generic_args(args));
562-
}
573+
segments.flat_map_in_place(|segment| vis.flat_map_path_segment(segment));
563574
visit_lazy_tts(tokens, vis);
564575
vis.visit_span(span);
565576
}

0 commit comments

Comments
 (0)