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