class Ikra::Symbolic::ReduceInput

Similar to [SingleInput], but two values are passed to the block.

Public Instance Methods

accept(visitor) click to toggle source
# File lib/symbolic/input_visitor.rb, line 31
def accept(visitor)
    visitor.visit_reduce_input(self, pattern: pattern)
end
get_parameters(parent_command:, start_eat_params_offset: 0) click to toggle source
# File lib/types/inference/input_inference.rb, line 18
def get_parameters(parent_command:, start_eat_params_offset: 0)
    # TODO: Fix type inference (sometimes type has to be expanded)

    return [
        Translator::Variable.new(
            name: parent_command.block_parameter_names[start_eat_params_offset],
            type: command.result_type),
        Translator::Variable.new(
            name: parent_command.block_parameter_names[start_eat_params_offset + 1],
            type: command.result_type)]
end
translate_input(parent_command:, command_translator:, start_eat_params_offset: 0) click to toggle source
# File lib/translator/input_translator.rb, line 25
def translate_input(parent_command:, command_translator:, start_eat_params_offset: 0)
    # Translate input using visitor
    input_command_translation_result = command_translator.translate_input(self)

    # TODO: Fix type inference (sometimes type has to be expanded)
    parameters = [
        Translator::Variable.new(
            name: parent_command.block_parameter_names[start_eat_params_offset],
            type: input_command_translation_result.result_type),
        Translator::Variable.new(
            name: parent_command.block_parameter_names[start_eat_params_offset + 1],
            type: input_command_translation_result.result_type)]

    return Translator::InputTranslationResult.new(
        parameters: parameters,
        command_translation_result: input_command_translation_result)
end