Sha256: 2997cbd6c549767da0916d8281636f5f1b9459aef93711769e62fd9d814d4d72

Contents?: true

Size: 1016 Bytes

Versions: 4

Compression:

Stored size: 1016 Bytes

Contents

module Yoda
  module Typing
    class Inferencer
      class Arguments
        # @param argument_nodes [Array<AST::Node>]
        # @param tracer [Tracer]
        def initialize(argument_nodes, tracer)
          @argument_nodes = argument_nodes
          @tracer = tracer
        end

        # @param signature [Model::FunctionSignatures::Base]
        # @return [Boolean]
        def accepted_by?(signature)
          signature.parameters
        end

        # @param nodes [Array<::AST::Node>]
        # @return [{Symbol => Types::Base}]
        def infer_argument_nodes(argument_nodes)
          argument_nodes.each_with_object({}) do |node, obj|
            case node.type
            when :splat
              # TODO
              infer(node)
            when :block_pass
              obj[:block_argument] = infer(node.children.first)
            else
              obj[:arguments] ||= []
              obj[:arguments].push(infer(node))
            end
          end
        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.rb
yoda-language-server-0.10.0 lib/yoda/typing/inferencer/arguments.rb
yoda-language-server-0.9.0 lib/yoda/typing/inferencer/arguments.rb
yoda-language-server-0.8.0 lib/yoda/typing/inferencer/arguments.rb