From 48d6de72bd356bbf1f04f089efc016901fe1ac13 Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 10 Oct 2023 15:50:50 +0200 Subject: [PATCH] Visitor for FunctionValueDefinition --- ast/src/analyzed/visitor.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ast/src/analyzed/visitor.rs b/ast/src/analyzed/visitor.rs index 9d7d2094c..317a86a2b 100644 --- a/ast/src/analyzed/visitor.rs +++ b/ast/src/analyzed/visitor.rs @@ -79,3 +79,35 @@ impl ExpressionVisitable> for Identity { .try_for_each(move |item| item.visit_expressions(f, o)) } } + +impl ExpressionVisitable> for FunctionValueDefinition { + fn visit_expressions_mut(&mut self, f: &mut F, o: VisitOrder) -> ControlFlow + where + F: FnMut(&mut Expression) -> ControlFlow, + { + match self { + FunctionValueDefinition::Mapping(e) + | FunctionValueDefinition::Query(e) + | FunctionValueDefinition::Expression(e) => e.visit_expressions_mut(f, o), + FunctionValueDefinition::Array(array) => array + .iter_mut() + .flat_map(|a| a.pattern.iter_mut()) + .try_for_each(move |item| item.visit_expressions_mut(f, o)), + } + } + + fn visit_expressions(&self, f: &mut F, o: VisitOrder) -> ControlFlow + where + F: FnMut(&Expression) -> ControlFlow, + { + match self { + FunctionValueDefinition::Mapping(e) + | FunctionValueDefinition::Query(e) + | FunctionValueDefinition::Expression(e) => e.visit_expressions(f, o), + FunctionValueDefinition::Array(array) => array + .iter() + .flat_map(|a| a.pattern().iter()) + .try_for_each(move |item| item.visit_expressions(f, o)), + } + } +}