Class: ADSL::Parser::ASTTypecheckResolveContext::ASTStackFrame

Inherits:
ActiveSupport::OrderedHash
  • Object
show all
Defined in:
lib/adsl/parser/ast_nodes.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeASTStackFrame

Returns a new instance of ASTStackFrame.



349
350
351
352
353
# File 'lib/adsl/parser/ast_nodes.rb', line 349

def initialize
  super
  @var_write_listeners = []
  @var_read_listeners = []
end

Instance Attribute Details

#var_read_listenersObject

Returns the value of attribute var_read_listeners.



347
348
349
# File 'lib/adsl/parser/ast_nodes.rb', line 347

def var_read_listeners
  @var_read_listeners
end

#var_write_listenersObject

Returns the value of attribute var_write_listeners.



346
347
348
# File 'lib/adsl/parser/ast_nodes.rb', line 346

def var_write_listeners
  @var_write_listeners
end

Instance Method Details

#cloneObject



389
390
391
# File 'lib/adsl/parser/ast_nodes.rb', line 389

def clone
  dup
end

#dupObject



379
380
381
382
383
384
385
386
387
# File 'lib/adsl/parser/ast_nodes.rb', line 379

def dup
  other = ASTStackFrame.new
  self.each do |key, val|
    other[key] = val.dup
  end
  other.var_write_listeners = @var_write_listeners.dup
  other.var_read_listeners = @var_read_listeners.dup
  other
end

#fire_read_event(name) ⇒ Object



372
373
374
375
376
377
# File 'lib/adsl/parser/ast_nodes.rb', line 372

def fire_read_event(name)
  listeners = @var_read_listeners
  listeners.each do |listener|
    listener.call name
  end
end

#fire_write_event(name) ⇒ Object



365
366
367
368
369
370
# File 'lib/adsl/parser/ast_nodes.rb', line 365

def fire_write_event(name)
  listeners = @var_write_listeners
  listeners.each do |listener|
    listener.call name
  end
end

#on_var_read(&block) ⇒ Object



355
356
357
358
# File 'lib/adsl/parser/ast_nodes.rb', line 355

def on_var_read(&block)
  listeners = @var_read_listeners
  listeners.push block
end

#on_var_write(&block) ⇒ Object



360
361
362
363
# File 'lib/adsl/parser/ast_nodes.rb', line 360

def on_var_write(&block)
  listeners = @var_write_listeners
  listeners.push block
end