Class: Riml::Compiler::EstablishScopeVisitor

Inherits:
DrillDownVisitor show all
Defined in:
lib/compiler.rb

Instance Method Summary collapse

Methods inherited from DrillDownVisitor

#walk_node!

Constructor Details

#initialize(options) ⇒ EstablishScopeVisitor

Returns a new instance of EstablishScopeVisitor.



514
515
516
517
# File 'lib/compiler.rb', line 514

def initialize(options)
  @scope = options[:scope]
  @nested_function = options[:nested_function]
end

Instance Method Details

#establish_scope(node) ⇒ Object



523
524
525
526
527
528
529
530
# File 'lib/compiler.rb', line 523

def establish_scope(node)
  if node.scope && !@nested_function
    node.scope = node.scope.merge @scope
  else
    node.scope = @scope
  end
  walk_node!(node)
end

#visit(node) ⇒ Object



519
520
521
# File 'lib/compiler.rb', line 519

def visit(node)
  establish_scope(node)
end