class Ikra::RubyIntegration::SymbolicCycleFinder

This visitor traverses the tree of symbolically executed parallel operations. It raises an exception, if an array command was generated by symbolic execution/interpretation of `send_node`.

Public Class Methods

new(send_node) click to toggle source
# File lib/ruby_core/array_command.rb, line 16
def initialize(send_node)
    @send_node = send_node
end
raise_on_cycle(command, send_node) click to toggle source
# File lib/ruby_core/array_command.rb, line 11
def self.raise_on_cycle(command, send_node)
    visitor = self.new(send_node)
    command.accept(visitor)
end

Public Instance Methods

visit_array_command(node) click to toggle source
Calls superclass method
# File lib/ruby_core/array_command.rb, line 20
def visit_array_command(node)
    if node.generator_node == @send_node
        raise CycleDetectedError.new(node: node)
    else
        # No cycle found yet, check dependent computations
        super
    end
end