Sha256: 361f6422aaccc01f302e70def1edb16ee8c7bf090fc2bb97e33f1bebaccaef42

Contents?: true

Size: 1.42 KB

Versions: 4

Compression:

Stored size: 1.42 KB

Contents

module Yoda
  module Model
    module Values
      class UnionValue < Base
        # @return [Array<Values::Base>]
        attr_reader :values

        # @param values [Array<Values::Base>]
        def initialize(*values)
          @values = values
        end

        def referred_objects
          values.flat_map(&:referred_objects)
        end

        # @param name [String, Symbol]
        # @return [Array<FunctionSignatures::Wrapper>]
        def select_method(name, **kwargs)
          # Choose methods of shared ancestors
          values.first&.select_method(name, **kwargs) || []
        end

        # @param name [String, Symbol]
        # @return [RBS::Types::t]
        def select_constant_type(name, **kwargs)
          # Choose methods of shared ancestors
          values.first&.select_constant_type(name, **kwargs) || RBS::Types::Bases::Any.new(location: nil)
        end

        # @param name [String, Symbol]
        # @return [Array<String>]
        def select_constant_paths(name, **kwargs)
          # Choose methods of shared ancestors
          values.first&.select_constant_paths(name, **kwargs) || []
        end

        # @return [IntersectionValue]
        def singleton_class_value
          UnionValue.new(*values.map(&:singleton_class_value))
        end

        # @return [IntersectionValue]
        def instance_value
          UnionValue.new(*values.map(&:instance_value))
        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/model/values/union_value.rb
yoda-language-server-0.10.0 lib/yoda/model/values/union_value.rb
yoda-language-server-0.9.0 lib/yoda/model/values/union_value.rb
yoda-language-server-0.8.0 lib/yoda/model/values/union_value.rb