class RBS::Environment::MultiEntry - rbs: Ruby Standard Library Documentation

# class RBS::Environment::MultiEntry

### Constants

D

### Attributes

decls[R]
name[R]

### Public Class Methods

new(name:) click to toggle source

    # File rbs-3.8.0/lib/rbs/environment.rb, line 43
    def initialize(name:)
      @name = name
      @decls = []
    end

### Public Instance Methods

compatible_params?(ps1, ps2) click to toggle source

    # File rbs-3.8.0/lib/rbs/environment.rb, line 70
    def compatible_params?(ps1, ps2)
      if ps1.size == ps2.size
        ps1 == AST::TypeParam.rename(ps2, new_names: ps1.map(&:name))
      end
    end

insert(decl:, outer:) click to toggle source

    # File rbs-3.8.0/lib/rbs/environment.rb, line 48
    def insert(decl:, outer:)
      decls << D.new(decl: decl, outer: outer)
      @primary = nil
    end

primary() click to toggle source

    # File rbs-3.8.0/lib/rbs/environment.rb, line 80
    def primary
      raise "Not implemented"
    end

type_params() click to toggle source

    # File rbs-3.8.0/lib/rbs/environment.rb, line 76
    def type_params
      primary.decl.type_params
    end

validate_type_params() click to toggle source

    # File rbs-3.8.0/lib/rbs/environment.rb, line 53
    def validate_type_params
      unless decls.empty?
        hd_decl, *tl_decls = decls
        raise unless hd_decl

        hd_params = hd_decl.decl.type_params

        tl_decls.each do |tl_decl|
          tl_params = tl_decl.decl.type_params

          unless compatible_params?(hd_params, tl_params)
            raise GenericParameterMismatchError.new(name: name, decl: _ = tl_decl.decl)
          end
        end
      end
    end