Class: Mirah::Util::ProcessErrors::ErrorCollector

Inherits:
NodeScanner
  • Object
show all
Defined in:
lib/mirah/util/process_errors.rb

Instance Method Summary collapse

Constructor Details

#initialize(typer) ⇒ ErrorCollector

Returns a new instance of ErrorCollector.



48
49
50
51
52
# File 'lib/mirah/util/process_errors.rb', line 48

def initialize(typer)
  super()
  @errors = {}
  @typer = typer
end

Instance Method Details

#errorsObject



73
74
75
# File 'lib/mirah/util/process_errors.rb', line 73

def errors
  @errors.values
end

#exitDefault(node, arg) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/mirah/util/process_errors.rb', line 53

def exitDefault(node, arg)
  type = @typer.getInferredType(node)
  type = type.resolve if type
  if (type && type.isError)
    @errors[type] ||= begin
      if type.message.size == 1
        m = type.message[0]
        if m.size == 1
          m << node rescue nil
        elsif m.size == 2 && m[1] == nil
          m[1] = node.position rescue nil
        end
      elsif type.message.size == 0
        type.message << ["Error", node.position]
      end
      type
    end
  end
  nil
end