module RSpec::Sorbet::InstanceDoubles

def allow_instance_doubles!

def allow_instance_doubles!
  T::Configuration.inline_type_error_handler = proc do |error|
    inline_type_error_handler(error)
  end
  T::Configuration.call_validation_error_handler = proc do |signature, opts|
    call_validation_error_handler(signature, opts)
  end
end

def call_validation_error_handler(_signature, opts)

def call_validation_error_handler(_signature, opts)
  raise TypeError, opts[:pretty_message] unless message_is_whitelisted?(opts[:message])
end

def inline_type_error_handler(error)

def inline_type_error_handler(error)
  raise error unless error.is_a?(TypeError) && message_is_whitelisted?(error.message)
end

def message_is_whitelisted?(message)

def message_is_whitelisted?(message)
  WHITELISTED_ERROR_MESSAGES.any? do |whitelisted_message|
    message.include?(whitelisted_message)
  end
end