class RBS::VarianceCalculator::Result - rbs: Ruby Standard Library Documentation

# class RBS::VarianceCalculator::Result

### Attributes

result[R]

### Public Class Methods

new(variables:) click to toggle source

    # File rbs-3.8.0/lib/rbs/variance_calculator.rb, line 8
    def initialize(variables:)
      @result = {}
      variables.each do |x|
        result[x] = :unused
      end
    end

### Public Instance Methods

compatible?(var, with_annotation:) click to toggle source

    # File rbs-3.8.0/lib/rbs/variance_calculator.rb, line 45
    def compatible?(var, with_annotation:)
      variance = result[var]

      case
      when variance == :unused
        true
      when with_annotation == :invariant
        true
      when variance == with_annotation
        true
      else
        false
      end
    end

contravariant(x) click to toggle source

    # File rbs-3.8.0/lib/rbs/variance_calculator.rb, line 24
    def contravariant(x)
      case result[x]
      when :unused
        result[x] = :contravariant
      when :covariant
        result[x] = :invariant
      end
    end

covariant(x) click to toggle source

    # File rbs-3.8.0/lib/rbs/variance_calculator.rb, line 15
    def covariant(x)
      case result[x]
      when :unused
        result[x] = :covariant
      when :contravariant
        result[x] = :invariant
      end
    end

each(&block) click to toggle source

    # File rbs-3.8.0/lib/rbs/variance_calculator.rb, line 37
    def each(&block)
      result.each(&block)
    end

include?(name) click to toggle source

    # File rbs-3.8.0/lib/rbs/variance_calculator.rb, line 41
    def include?(name)
      result.key?(name)
    end

incompatible?(params) click to toggle source

    # File rbs-3.8.0/lib/rbs/variance_calculator.rb, line 60
    def incompatible?(params)
      # @type set: Hash[Symbol]
      set = Set[]

      params.each do |param|
        unless compatible?(param.name, with_annotation: param.variance)
          set << param.name
        end
      end

      unless set.empty?
        set
      end
    end

invariant(x) click to toggle source

    # File rbs-3.8.0/lib/rbs/variance_calculator.rb, line 33
    def invariant(x)
      result[x] = :invariant
    end