pub trait ExpressionFolder<'i, T: FoldableExpression<'i>> {
type Error;
// Required methods
fn fold_identifier(
&mut self,
name: &'i str,
span: Span<'i>,
) -> Result<T, Self::Error>;
fn fold_function_call(
&mut self,
function: Box<FunctionCallNode<'i, T>>,
span: Span<'i>,
) -> Result<T, Self::Error>;
// Provided method
fn fold_expression(
&mut self,
node: ExpressionNode<'i, T>,
) -> Result<ExpressionNode<'i, T>, Self::Error> { ... }
}
Expand description
Visitor-like interface to transform AST nodes recursively.
Required Associated Types§
Required Methods§
Sourcefn fold_identifier(
&mut self,
name: &'i str,
span: Span<'i>,
) -> Result<T, Self::Error>
fn fold_identifier( &mut self, name: &'i str, span: Span<'i>, ) -> Result<T, Self::Error>
Transforms identifier.
Sourcefn fold_function_call(
&mut self,
function: Box<FunctionCallNode<'i, T>>,
span: Span<'i>,
) -> Result<T, Self::Error>
fn fold_function_call( &mut self, function: Box<FunctionCallNode<'i, T>>, span: Span<'i>, ) -> Result<T, Self::Error>
Transforms function call.
Provided Methods§
Sourcefn fold_expression(
&mut self,
node: ExpressionNode<'i, T>,
) -> Result<ExpressionNode<'i, T>, Self::Error>
fn fold_expression( &mut self, node: ExpressionNode<'i, T>, ) -> Result<ExpressionNode<'i, T>, Self::Error>
Transforms the expression node
. By default, inner items are
transformed recursively.