Trait ExpressionFolder

Source
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§

Source

type Error

Transform error.

Required Methods§

Source

fn fold_identifier( &mut self, name: &'i str, span: Span<'i>, ) -> Result<T, Self::Error>

Transforms identifier.

Source

fn fold_function_call( &mut self, function: Box<FunctionCallNode<'i, T>>, span: Span<'i>, ) -> Result<T, Self::Error>

Transforms function call.

Provided Methods§

Source

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.

Implementors§