Sha256: c38419499de0df73e007e39f3e78a1ba686a8bf2789f5a62b38923ea959fcf3e
Contents?: true
Size: 877 Bytes
Versions: 8
Compression:
Stored size: 877 Bytes
Contents
require 'set' module Yoda module Typing class Environment def initialize @binds = {} end # @param key [String, Symbol] def resolve(key) @binds[key.to_sym] end # @param key [String, Symbol] # @param type [Symbol, Model::Types::Base] def bind(key, type) key = key.to_sym type = (type.is_a?(Symbol) && resolve(type)) || type @binds.transform_values! { |value| value == key ? type : value } @binds[key] = type self end # @param signature [Model::FunctionSignatures::Base] # @return [self] def bind_method_parameters(signature) parameter_names = signature.parameters.parameter_names parameter_names.each do |name| bind(name.gsub(/:\Z/, ''), signature.parameter_type_of(name)) end end end end end
Version data entries
8 entries across 8 versions & 1 rubygems