Method: ADSL::Parser::ASTBlock#typecheck_and_resolve

Defined in:
lib/adsl/parser/ast_nodes.rb

#typecheck_and_resolve(context, open_subcontext = true) ⇒ Object



645
646
647
648
649
650
651
652
653
654
655
656
657
# File 'lib/adsl/parser/ast_nodes.rb', line 645

def typecheck_and_resolve(context, open_subcontext=true)
  context.push_frame if open_subcontext
  stmts = []
  @statements.each do |node|
    main_stmt = node.typecheck_and_resolve context
    stmts += context.pre_stmts
    stmts << main_stmt unless main_stmt.nil?
    context.pre_stmts = []
  end
  return ADSL::DS::DSBlock.new :statements => stmts.flatten
ensure
  context.pop_frame if open_subcontext
end