From bf693a6694624c2897be27974442445bcd97f671 Mon Sep 17 00:00:00 2001 From: Neil Mitchell Date: Sun, 19 Jun 2022 23:54:04 -0700 Subject: [PATCH] Add Visit::visit_children Summary: Useful in general. Reviewed By: stepancheg Differential Revision: D37270377 fbshipit-source-id: 1b4df108e047f79083e76776dd72e10b33ee39a2 --- starlark-rust/starlark/src/syntax/uniplate.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/starlark-rust/starlark/src/syntax/uniplate.rs b/starlark-rust/starlark/src/syntax/uniplate.rs index 67efa337a2b..4df10661c71 100644 --- a/starlark-rust/starlark/src/syntax/uniplate.rs +++ b/starlark-rust/starlark/src/syntax/uniplate.rs @@ -36,6 +36,16 @@ pub(crate) enum VisitMut<'a, P: AstPayload> { Expr(&'a mut AstExprP

), } +impl<'a, P: AstPayload> Visit<'a, P> { + #[allow(dead_code)] + pub(crate) fn visit_children(&self, mut f: impl FnMut(Visit<'a, P>)) { + match self { + Self::Stmt(x) => x.visit_children(f), + Self::Expr(x) => x.visit_expr(|x| f(Visit::Expr(x))), + } + } +} + impl StmtP

{ pub(crate) fn visit_children<'a>(&'a self, mut f: impl FnMut(Visit<'a, P>)) { match self {