class TypedRb::TypeCheckError

Attributes

node[R]

Public Class Methods

new(msg, node = nil) click to toggle source
Calls superclass method
# File lib/typed/types.rb, line 5
def initialize(msg, node = nil)
  super(build_message_error(msg, node))
  @node = node
end

Private Instance Methods

build_message_error(msg, nodes) click to toggle source
# File lib/typed/types.rb, line 12
    def build_message_error(msg, nodes)
      file = $TYPECHECK_FILE || 'NO FILE'
      if nodes && nodes.is_a?(Array)
        num_columns = (nodes.last.loc.column - 2)
        num_columns = num_columns < 0 ? 0 : num_columns
        "\n  #{msg}\n...\n>>>#{file}:#{nodes.first.loc.line}\n#{'=' * (nodes.first.loc.column - 2)}> #{nodes.first.loc.expression.source}\n\
##{file}:#{nodes.last.loc.line}\n#{'=' * num_columns}> #{nodes.last.loc.expression.source}\n...\n"
      elsif nodes
        line = nodes.loc.line
        num_columns = (nodes.loc.column - 2)
        num_columns = num_columns < 0 ? 0 : num_columns

        "\n>>>#{file}:#{line}\n  #{msg}\n...\n#{'=' * num_columns}> #{nodes.loc.expression.source}\n...\n"
      else
        msg
      end
    end