123456789_123456789_123456789_123456789_123456789_

Module: RBS::Test::Errors

Constant Summary

Class Method Summary

Class Method Details

.format_param(param)

[ GitHub ]

  
# File 'lib/rbs/test/errors.rb', line 24

def self.format_param(param)
  if param.name
    "`#{param.type}` (#{param.name})"
  else
    "`#{param.type}`"
  end
end

.inspect_(obj)

[ GitHub ]

  
# File 'lib/rbs/test/errors.rb', line 35

def self.inspect_(obj)
  if RESPOND_TO.bind_call(obj, :inspect)
    obj.inspect
  else
    Test::INSPECT.bind(obj).call     # For the case inspect is not defined (like BasicObject)
  end
end

.method_tag(error)

[ GitHub ]

  
# File 'lib/rbs/test/errors.rb', line 43

def self.method_tag(error)
  if error.klass.singleton_class?
    name = inspect_(error.klass).sub(/\A#<Class:(.*)>\z/, '\1')
    method_name = ".#{error.method_name}"
  else
    name = error.klass.name
    method_name = "##{error.method_name}"
  end
  "[#{name}#{method_name}]"
end

.to_string(error)

[ GitHub ]

  
# File 'lib/rbs/test/errors.rb', line 54

def self.to_string(error)
  case error
  when ArgumentTypeError
    "#{method_tag(error)} ArgumentTypeError: expected #{format_param error.param} but given `#{inspect_(error.value)}`"
  when BlockArgumentTypeError
    "#{method_tag(error)} BlockArgumentTypeError: expected #{format_param error.param} but given `#{inspect_(error.value)}`"
  when ArgumentError
    "#{method_tag(error)} ArgumentError: expected method type #{error.method_type}"
  when BlockArgumentError
    "#{method_tag(error)} BlockArgumentError: expected method type #{error.method_type}"
  when ReturnTypeError
    "#{method_tag(error)} ReturnTypeError: expected `#{error.type}` but returns `#{inspect_(error.value)}`"
  when BlockReturnTypeError
    "#{method_tag(error)} BlockReturnTypeError: expected `#{error.type}` but returns `#{inspect_(error.value)}`"
  when UnexpectedBlockError
    "#{method_tag(error)} UnexpectedBlockError: unexpected block is given for `#{error.method_type}`"
  when MissingBlockError
    "#{method_tag(error)} MissingBlockError: required block is missing for `#{error.method_type}`"
  when UnresolvedOverloadingError
    "#{method_tag(error)} UnresolvedOverloadingError: couldn't find a suitable overloading"
  else
    raise "Unexpected error: #{inspect_(error)}"
  end
end