Trait leo_ast::reducer::ReconstructingReducer[][src]

pub trait ReconstructingReducer {
Show 45 methods fn in_circuit(&self) -> bool;
fn swap_in_circuit(&mut self); fn reduce_type(
        &mut self,
        _type_: &Type,
        new: Type,
        _span: &Span
    ) -> Result<Type, ReducerError> { ... }
fn reduce_expression(
        &mut self,
        _expression: &Expression,
        new: Expression
    ) -> Result<Expression, ReducerError> { ... }
fn reduce_identifier(
        &mut self,
        identifier: &Identifier
    ) -> Result<Identifier, ReducerError> { ... }
fn reduce_group_tuple(
        &mut self,
        group_tuple: &GroupTuple
    ) -> Result<GroupTuple, ReducerError> { ... }
fn reduce_group_value(
        &mut self,
        _group_value: &GroupValue,
        new: GroupValue
    ) -> Result<GroupValue, ReducerError> { ... }
fn reduce_string(
        &mut self,
        string: &[Char],
        span: &Span
    ) -> Result<Expression, ReducerError> { ... }
fn reduce_value(
        &mut self,
        _value: &ValueExpression,
        new: Expression
    ) -> Result<Expression, ReducerError> { ... }
fn reduce_binary(
        &mut self,
        binary: &BinaryExpression,
        left: Expression,
        right: Expression,
        op: BinaryOperation
    ) -> Result<BinaryExpression, ReducerError> { ... }
fn reduce_unary(
        &mut self,
        unary: &UnaryExpression,
        inner: Expression,
        op: UnaryOperation
    ) -> Result<UnaryExpression, ReducerError> { ... }
fn reduce_ternary(
        &mut self,
        ternary: &TernaryExpression,
        condition: Expression,
        if_true: Expression,
        if_false: Expression
    ) -> Result<TernaryExpression, ReducerError> { ... }
fn reduce_cast(
        &mut self,
        cast: &CastExpression,
        inner: Expression,
        target_type: Type
    ) -> Result<CastExpression, ReducerError> { ... }
fn reduce_array_inline(
        &mut self,
        array_inline: &ArrayInlineExpression,
        elements: Vec<SpreadOrExpression>
    ) -> Result<ArrayInlineExpression, ReducerError> { ... }
fn reduce_array_init(
        &mut self,
        array_init: &ArrayInitExpression,
        element: Expression
    ) -> Result<ArrayInitExpression, ReducerError> { ... }
fn reduce_array_access(
        &mut self,
        array_access: &ArrayAccessExpression,
        array: Expression,
        index: Expression
    ) -> Result<ArrayAccessExpression, ReducerError> { ... }
fn reduce_array_range_access(
        &mut self,
        array_rage_access: &ArrayRangeAccessExpression,
        array: Expression,
        left: Option<Expression>,
        right: Option<Expression>
    ) -> Result<ArrayRangeAccessExpression, ReducerError> { ... }
fn reduce_tuple_init(
        &mut self,
        tuple_init: &TupleInitExpression,
        elements: Vec<Expression>
    ) -> Result<TupleInitExpression, ReducerError> { ... }
fn reduce_tuple_access(
        &mut self,
        tuple_access: &TupleAccessExpression,
        tuple: Expression
    ) -> Result<TupleAccessExpression, ReducerError> { ... }
fn reduce_circuit_implied_variable_definition(
        &mut self,
        _variable: &CircuitImpliedVariableDefinition,
        identifier: Identifier,
        expression: Option<Expression>
    ) -> Result<CircuitImpliedVariableDefinition, ReducerError> { ... }
fn reduce_circuit_init(
        &mut self,
        circuit_init: &CircuitInitExpression,
        name: Identifier,
        members: Vec<CircuitImpliedVariableDefinition>
    ) -> Result<CircuitInitExpression, ReducerError> { ... }
fn reduce_circuit_member_access(
        &mut self,
        circuit_member_access: &CircuitMemberAccessExpression,
        circuit: Expression,
        name: Identifier
    ) -> Result<CircuitMemberAccessExpression, ReducerError> { ... }
fn reduce_circuit_static_fn_access(
        &mut self,
        circuit_static_fn_access: &CircuitStaticFunctionAccessExpression,
        circuit: Expression,
        name: Identifier
    ) -> Result<CircuitStaticFunctionAccessExpression, ReducerError> { ... }
fn reduce_call(
        &mut self,
        call: &CallExpression,
        function: Expression,
        arguments: Vec<Expression>
    ) -> Result<CallExpression, ReducerError> { ... }
fn reduce_statement(
        &mut self,
        _statement: &Statement,
        new: Statement
    ) -> Result<Statement, ReducerError> { ... }
fn reduce_return(
        &mut self,
        return_statement: &ReturnStatement,
        expression: Expression
    ) -> Result<ReturnStatement, ReducerError> { ... }
fn reduce_variable_name(
        &mut self,
        variable_name: &VariableName,
        identifier: Identifier
    ) -> Result<VariableName, ReducerError> { ... }
fn reduce_definition(
        &mut self,
        definition: &DefinitionStatement,
        variable_names: Vec<VariableName>,
        type_: Option<Type>,
        value: Expression
    ) -> Result<DefinitionStatement, ReducerError> { ... }
fn reduce_assignee_access(
        &mut self,
        _access: &AssigneeAccess,
        new: AssigneeAccess
    ) -> Result<AssigneeAccess, ReducerError> { ... }
fn reduce_assignee(
        &mut self,
        assignee: &Assignee,
        identifier: Identifier,
        accesses: Vec<AssigneeAccess>
    ) -> Result<Assignee, ReducerError> { ... }
fn reduce_assign(
        &mut self,
        assign: &AssignStatement,
        assignee: Assignee,
        value: Expression
    ) -> Result<AssignStatement, ReducerError> { ... }
fn reduce_conditional(
        &mut self,
        conditional: &ConditionalStatement,
        condition: Expression,
        block: Block,
        statement: Option<Statement>
    ) -> Result<ConditionalStatement, ReducerError> { ... }
fn reduce_iteration(
        &mut self,
        iteration: &IterationStatement,
        variable: Identifier,
        start: Expression,
        stop: Expression,
        block: Block
    ) -> Result<IterationStatement, ReducerError> { ... }
fn reduce_console(
        &mut self,
        console: &ConsoleStatement,
        function: ConsoleFunction
    ) -> Result<ConsoleStatement, ReducerError> { ... }
fn reduce_expression_statement(
        &mut self,
        expression_statement: &ExpressionStatement,
        expression: Expression
    ) -> Result<ExpressionStatement, ReducerError> { ... }
fn reduce_block(
        &mut self,
        block: &Block,
        statements: Vec<Statement>
    ) -> Result<Block, ReducerError> { ... }
fn reduce_program(
        &mut self,
        program: &Program,
        expected_input: Vec<FunctionInput>,
        imports: Vec<ImportStatement>,
        circuits: IndexMap<Identifier, Circuit>,
        functions: IndexMap<Identifier, Function>,
        global_consts: IndexMap<String, DefinitionStatement>
    ) -> Result<Program, ReducerError> { ... }
fn reduce_function_input_variable(
        &mut self,
        variable: &FunctionInputVariable,
        identifier: Identifier,
        type_: Type
    ) -> Result<FunctionInputVariable, ReducerError> { ... }
fn reduce_function_input(
        &mut self,
        _input: &FunctionInput,
        new: FunctionInput
    ) -> Result<FunctionInput, ReducerError> { ... }
fn reduce_package_or_packages(
        &mut self,
        _package_or_packages: &PackageOrPackages,
        new: PackageOrPackages
    ) -> Result<PackageOrPackages, ReducerError> { ... }
fn reduce_import(
        &mut self,
        import: &ImportStatement,
        package_or_packages: PackageOrPackages
    ) -> Result<ImportStatement, ReducerError> { ... }
fn reduce_circuit_member(
        &mut self,
        _circuit_member: &CircuitMember,
        new: CircuitMember
    ) -> Result<CircuitMember, ReducerError> { ... }
fn reduce_circuit(
        &mut self,
        _circuit: &Circuit,
        circuit_name: Identifier,
        members: Vec<CircuitMember>
    ) -> Result<Circuit, ReducerError> { ... }
fn reduce_annotation(
        &mut self,
        annotation: &Annotation,
        name: Identifier
    ) -> Result<Annotation, ReducerError> { ... }
fn reduce_function(
        &mut self,
        function: &Function,
        identifier: Identifier,
        annotations: Vec<Annotation>,
        input: Vec<FunctionInput>,
        output: Option<Type>,
        block: Block
    ) -> Result<Function, ReducerError> { ... }
}

Required methods

Provided methods

Implementors