Sha256: 0a22063bb5b8b03501086a6791f6c894507917ab71912beda213c05b03a90ba1

Contents?: true

Size: 820 Bytes

Versions: 57

Compression:

Stored size: 820 Bytes

Contents

# typed: strict
# frozen_string_literal: true

module RubyLsp
  class ParameterScope
    extend T::Sig

    sig { returns(T.nilable(ParameterScope)) }
    attr_reader :parent

    sig { params(parent: T.nilable(ParameterScope)).void }
    def initialize(parent = nil)
      @parent = parent
      @parameters = T.let(Set.new, T::Set[Symbol])
    end

    sig { params(name: T.any(String, Symbol)).void }
    def <<(name)
      @parameters << name.to_sym
    end

    sig { params(name: T.any(Symbol, String)).returns(Symbol) }
    def type_for(name)
      parameter?(name) ? :parameter : :variable
    end

    sig { params(name: T.any(Symbol, String)).returns(T::Boolean) }
    def parameter?(name)
      sym = name.to_sym
      @parameters.include?(sym) || (!@parent.nil? && @parent.parameter?(sym))
    end
  end
end

Version data entries

57 entries across 57 versions & 2 rubygems

Version Path
ruby-lsp-0.18.3 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.18.2 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.18.1 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.18.0 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.17 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.16 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.15 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.14 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.13 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.12 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.11 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.10 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.9 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.8 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.7 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.6 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.5 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.4 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.3 lib/ruby_lsp/parameter_scope.rb
ruby-lsp-0.17.2 lib/ruby_lsp/parameter_scope.rb