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

.to_string(error)

[ GitHub ]

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

def self.to_string(error)
  name = if error.klass.singleton_class?
    inspect_(error.klass).sub(/\A#<Class:(.*)>\z/, '\1')
  else
    error.klass.name
  end
  method = "#{name}#{error.method_name}"
  case error
  when ArgumentTypeError
    "[#{method}] ArgumentTypeError: expected #{format_param error.param} but given `#{inspect_(error.value)}`"
  when BlockArgumentTypeError
    "[#{method}] BlockArgumentTypeError: expected #{format_param error.param} but given `#{inspect_(error.value)}`"
  when ArgumentError
    "[#{method}] ArgumentError: expected method type #{error.method_type}"
  when BlockArgumentError
    "[#{method}] BlockArgumentError: expected method type #{error.method_type}"
  when ReturnTypeError
    "[#{method}] ReturnTypeError: expected `#{error.type}` but returns `#{inspect_(error.value)}`"
  when BlockReturnTypeError
    "[#{method}] BlockReturnTypeError: expected `#{error.type}` but returns `#{inspect_(error.value)}`"
  when UnexpectedBlockError
    "[#{method}] UnexpectedBlockError: unexpected block is given for `#{error.method_type}`"
  when MissingBlockError
    "[#{method}] MissingBlockError: required block is missing for `#{error.method_type}`"
  when UnresolvedOverloadingError
    "[#{method}] UnresolvedOverloadingError: couldn't find a suitable overloading"
  else
    raise "Unexpected error: #{inspect_(error)}"
  end
end