class Overloader::Type::Checker

Attributes

klass[R]
type[R]

Public Class Methods

builder() click to toggle source
# File lib/overloader/type/checker.rb, line 18
def self.builder
  Ruby::Signature::DefinitionBuilder.new(env: env)
end
env() click to toggle source
# File lib/overloader/type/checker.rb, line 9
def self.env
  @env ||= begin
             loader = Ruby::Signature::EnvironmentLoader.new
             Ruby::Signature::Environment.new.tap do |env|
               loader.load(env: env)
             end
           end
end
new(type:, klass:) click to toggle source
# File lib/overloader/type/checker.rb, line 4
def initialize(type:, klass:)
  @type = type
  @klass = klass
end

Public Instance Methods

errors(method_name, *args) click to toggle source
# File lib/overloader/type/checker.rb, line 22
               def errors(method_name, *args)
  call = Ruby::Signature::Test::CallTrace.new(
    method_call: Ruby::Signature::Test::ArgumentsReturn.new(arguments: args, return_value: nil, exception: nil),
    block_calls: [],
    block_given: false,
  )
  errors = type_check.method_call(method_name, method_type, call, errors: [])

  errors.reject { |e| e.is_a?(Ruby::Signature::Test::Errors::ReturnTypeError) }
end

Private Instance Methods

method_type() click to toggle source
# File lib/overloader/type/checker.rb, line 33
        def method_type
  Ruby::Signature::Parser.parse_method_type(type)
end
type_check() click to toggle source
# File lib/overloader/type/checker.rb, line 37
        def type_check
  Ruby::Signature::Test::TypeCheck.new(self_class: klass, builder: self.class.builder)
end