Sha256: 1ce7601c85e316ff5e5e066cbe7c9b170256d380b20471f52cccbddd40b85019

Contents?: true

Size: 782 Bytes

Versions: 4

Compression:

Stored size: 782 Bytes

Contents

module Yoda
  module Typing
    class Inferencer
      class ArgumentsBinder
        # @return [Types::Generator]
        attr_reader :generator

        # @param generator [Types::Generator]
        def initialize(generator:)
          @generator = generator
        end

        # @param types [Array<RBS::MethodTypej>]
        # @param arguments [Model::Parameters]
        # @return [Hash{ Symbol => Types::Type }]
        def bind(types:, arguments:)
          binds = types.map { |type| ParameterBinder.new(arguments).bind(type: type, generator: generator) }
          # @todo Select only one signature to bind arguments
          binds.reduce({}) { |memo, bind| memo.merge!(bind.to_h) { |_key, v1, v2| generator.union_type(v1, v2) } }
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/typing/inferencer/arguments_binder.rb
yoda-language-server-0.10.0 lib/yoda/typing/inferencer/arguments_binder.rb
yoda-language-server-0.9.0 lib/yoda/typing/inferencer/arguments_binder.rb
yoda-language-server-0.8.0 lib/yoda/typing/inferencer/arguments_binder.rb