Sha256: 9877c0b7bfe41e1b1aede6edf450bf2dbcc2e2fb4dbdc2f4a781a98d936a045d

Contents?: true

Size: 658 Bytes

Versions: 33

Compression:

Stored size: 658 Bytes

Contents

# frozen_string_literal: true

module Parser
  # Stack that holds names of current arguments,
  # i.e. while parsing
  #   def m1(a = (def m2(b = def m3(c = 1); end); end)); end
  #                                   ^
  # stack is [:a, :b, :c]
  #
  # Emulates `p->cur_arg` in MRI's parse.y
  #
  # @api private
  #
  class CurrentArgStack
    attr_reader :stack

    def initialize
      @stack = []
      freeze
    end

    def push(value)
      @stack << value
    end

    def set(value)
      pop
      push(value)
    end

    def pop
      @stack.pop
    end

    def reset
      @stack.clear
    end

    def top
      @stack.last
    end
  end
end

Version data entries

33 entries across 30 versions & 6 rubygems

Version Path
plaid-14.13.0 vendor/bundle/ruby/3.0.0/gems/parser-2.7.2.0/lib/parser/current_arg_stack.rb
plaid-14.12.1 vendor/bundle/ruby/3.0.0/gems/parser-2.7.2.0/lib/parser/current_arg_stack.rb
plaid-14.12.0 vendor/bundle/ruby/2.6.0/gems/parser-2.7.2.0/lib/parser/current_arg_stack.rb
plaid-14.11.1 vendor/bundle/ruby/2.6.0/gems/parser-2.7.2.0/lib/parser/current_arg_stack.rb
plaid-14.10.0 vendor/bundle/ruby/2.6.0/gems/parser-2.7.2.0/lib/parser/current_arg_stack.rb
plaid-14.7.0 vendor/bundle/ruby/2.6.0/gems/parser-2.7.2.0/lib/parser/current_arg_stack.rb
passbase-1.3.0 vendor/bundle/ruby/2.7.0/gems/parser-2.7.1.4/lib/parser/current_arg_stack.rb
passbase-1.2.0 vendor/bundle/ruby/2.7.0/gems/parser-2.7.1.4/lib/parser/current_arg_stack.rb
passbase-1.1.0 vendor/bundle/ruby/2.7.0/gems/parser-2.7.1.4/lib/parser/current_arg_stack.rb
passbase-1.0.3 vendor/bundle/ruby/2.7.0/gems/parser-2.7.1.4/lib/parser/current_arg_stack.rb
passbase-1.0.2 vendor/bundle/ruby/2.7.0/gems/parser-2.7.1.4/lib/parser/current_arg_stack.rb
passbase-1.0.1 vendor/bundle/ruby/2.7.0/gems/parser-2.7.1.4/lib/parser/current_arg_stack.rb
passbase-1.0.0 vendor/bundle/ruby/2.7.0/gems/parser-2.7.1.4/lib/parser/current_arg_stack.rb
parser-2.7.2.0 lib/parser/current_arg_stack.rb
parser-2.7.1.5 lib/parser/current_arg_stack.rb
grape-extra_validators-2.0.0 vendor/bundle/ruby/2.6.0/gems/parser-2.7.1.4/lib/parser/current_arg_stack.rb
grape-extra_validators-2.0.0 vendor/bundle/ruby/2.6.0/gems/parser-2.7.0.2/lib/parser/current_arg_stack.rb
files.com-1.0.1 vendor/bundle/ruby/2.5.0/gems/parser-2.7.1.4/lib/parser/current_arg_stack.rb
parser-2.7.1.4 lib/parser/current_arg_stack.rb
parser-2.7.1.3 lib/parser/current_arg_stack.rb