class Ikra::AST::LexicalVariablesEnumerator

Visitor for determining the names all lexical variables that are accessed by a block (or method??). Lexical variables that are in scope are determined when translating the Ruby code and passed to this visitor. TODO(matthias): Does a method have access to lexical variables?

Attributes

lexical_variables[R]

Public Class Methods

new(lexical_var_names) click to toggle source
# File lib/ast/lexical_variables_enumerator.rb, line 13
def initialize(lexical_var_names)
    @lexical_var_names = lexical_var_names
    @lexical_variables = Set.new
end

Public Instance Methods

add_lvar_access(identifier) click to toggle source

Register usage of lexical variable

# File lib/ast/lexical_variables_enumerator.rb, line 19
def add_lvar_access(identifier)
    if @lexical_var_names.include?(identifier)
        @lexical_variables.add(identifier)
    end
end
visit_lvar_read_node(node) click to toggle source
# File lib/ast/lexical_variables_enumerator.rb, line 25
def visit_lvar_read_node(node)
    add_lvar_access(node.identifier)
end
visit_lvar_write_node(node) click to toggle source
Calls superclass method
# File lib/ast/lexical_variables_enumerator.rb, line 29
def visit_lvar_write_node(node)
    add_lvar_access(node.identifier)
    super(node)
end