Module: Mirah::Util::ProcessErrors

Included in:
Generator, Parser
Defined in:
lib/mirah/util/process_errors.rb

Defined Under Namespace

Classes: ErrorCollector

Instance Method Summary collapse

Instance Method Details

#process_errors(errors) ⇒ Object

errors - array of NodeErrors



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/mirah/util/process_errors.rb', line 22

def process_errors(errors)
  errors.each do |ex|
    if ex.kind_of?(ErrorType)
      ex.message.each do |pair|
        message, position = pair.to_a
        if position
          Mirah.print_error(message, position)
        else
          puts message
        end
      end if ex.message
    else
      puts ex
      if ex.respond_to?(:node) && ex.node
        Mirah.print_error(ex.message, ex.position)
      else
        puts ex.message
      end
      error(ex.backtrace.join("\n")) if self.logging?
    end
  end
  throw :exit, 1 unless errors.empty?
end

#process_inference_errors(typer, nodes) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/mirah/util/process_errors.rb', line 78

def process_inference_errors(typer, nodes)
  errors = []
  nodes.each do |ast|
    collector = ErrorCollector.new(typer)
    ast.accept(collector, nil)
    errors.concat(collector.errors)
  end
  failed = !errors.empty?
  if failed
    if block_given?
      yield(errors)
    else
      puts "Inference Error:"
      process_errors(errors)
    end
  end
end