Module: T::Private::Casts

Defined in:
lib/types/private/casts.rb

Class Method Summary collapse

Class Method Details

.cast(value, type, cast_method:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/types/private/casts.rb', line 6

def self.cast(value, type, cast_method:)
  begin
    error = T::Utils.coerce(type).error_message_for_obj(value)
    return value unless error

    caller_loc = T.must(caller_locations(2..2)).first

    suffix = "Caller: #{T.must(caller_loc).path}:#{T.must(caller_loc).lineno}"

    raise TypeError.new("#{cast_method}: #{error}\n#{suffix}")
  rescue TypeError => e # raise into rescue to ensure e.backtrace is populated
    T::Configuration.inline_type_error_handler(e)
    value
  end
end