mirror of
https://github.com/powdr-labs/powdr.git
synced 2026-04-20 03:03:25 -04:00
Merge pull request #688 from powdr-labs/visitor_for_fun_val_def
Visitor for FunctionValueDefinition
This commit is contained in:
@@ -79,3 +79,35 @@ impl<Expr: ExpressionVisitable<Expr>> ExpressionVisitable<Expr> for Identity<Exp
|
||||
.try_for_each(move |item| item.visit_expressions(f, o))
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> ExpressionVisitable<Expression<T>> for FunctionValueDefinition<T> {
|
||||
fn visit_expressions_mut<F, B>(&mut self, f: &mut F, o: VisitOrder) -> ControlFlow<B>
|
||||
where
|
||||
F: FnMut(&mut Expression<T>) -> ControlFlow<B>,
|
||||
{
|
||||
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<F, B>(&self, f: &mut F, o: VisitOrder) -> ControlFlow<B>
|
||||
where
|
||||
F: FnMut(&Expression<T>) -> ControlFlow<B>,
|
||||
{
|
||||
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)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user