ruby-next-parser 3.2.2.0 → 3.4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/parser/ruby-next/AST_FORMAT.md +16 -6
 - data/lib/parser/ruby-next/ast/processor.rb +5 -3
 - data/lib/parser/ruby-next/builder.rb +0 -5
 - data/lib/parser/ruby-next/meta.rb +5 -3
 - data/lib/parser/ruby-next/parser_ext.rb +11 -10
 - data/lib/parser/ruby-next/version.rb +1 -1
 - data/lib/parser/rubynext.y +111 -161
 - metadata +6 -10
 - data/lib/parser/ruby-next/lexer-F0.rb +0 -12957
 - data/lib/parser/ruby-next/lexer-F1.rb +0 -14968
 - data/lib/parser/ruby-next/lexer.rl +0 -2103
 - data/lib/parser/rubynext.rb +0 -12743
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 599fb2ab28d4c14213e0f239c8c61f109bb99b250870c14473bd44b7d3bfb24c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: dfbdb998d62c61daa43db9ed88f50039b12b7c0689d8e39102f4270ef1640559
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: e7d9d5aa13d446c071d51b466bf00974eafa328fba0895a3b52d96bcc536d2128d7301e948cf5fcda778dffdd0b21df0ba6711bcef1efa2400b9ebd0cca9cd67
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: f0dfb8fc79df212ac1f1856ac11fd2b57b7530317cec3540fd1cef7d0235a5a1c9386a953f8299adae492688ced8d2792941d1b21e19fa644093e9c3c12f6004
         
     | 
| 
         @@ -1,14 +1,24 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Ruby Next AST format additions
         
     | 
| 
       2 
2 
     | 
    
         
             
            =======================
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            ###  
     | 
| 
      
 4 
     | 
    
         
            +
            ### Pattern matching non-local variables
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Format:
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            ~~~
         
     | 
| 
       9 
     | 
    
         
            -
            ( 
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
            (in_pattern
         
     | 
| 
      
 10 
     | 
    
         
            +
              (match_as
         
     | 
| 
      
 11 
     | 
    
         
            +
                (int 1),
         
     | 
| 
      
 12 
     | 
    
         
            +
                (match_var (ivar :@a))))
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            "in 1 => @a then true"
         
     | 
| 
      
 15 
     | 
    
         
            +
            ~~~
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            ~~~
         
     | 
| 
      
 18 
     | 
    
         
            +
            (in_pattern
         
     | 
| 
      
 19 
     | 
    
         
            +
              (match_as
         
     | 
| 
      
 20 
     | 
    
         
            +
                (int 1),
         
     | 
| 
      
 21 
     | 
    
         
            +
                (match_var (gvar :$a))))
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            "in 1 => $a then true"
         
     | 
| 
       14 
24 
     | 
    
         
             
            ~~~
         
     | 
| 
         @@ -6,11 +6,6 @@ require_relative "meta" 
     | 
|
| 
       6 
6 
     | 
    
         
             
            module Parser
         
     | 
| 
       7 
7 
     | 
    
         
             
              # Add RubyNext specific builder methods
         
     | 
| 
       8 
8 
     | 
    
         
             
              module Builders::Next
         
     | 
| 
       9 
     | 
    
         
            -
                def method_ref(receiver, dot_t, selector_t)
         
     | 
| 
       10 
     | 
    
         
            -
                  n(:meth_ref, [ receiver, value(selector_t).to_sym ],
         
     | 
| 
       11 
     | 
    
         
            -
                      send_map(receiver, dot_t, selector_t, nil, [], nil))
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
9 
     | 
    
         
             
                def match_var(var)
         
     | 
| 
       15 
10 
     | 
    
         
             
                  return super(var) unless var.is_a?(::Parser::AST::Node)
         
     | 
| 
       16 
11 
     | 
    
         | 
| 
         @@ -5,9 +5,11 @@ require "parser/meta" 
     | 
|
| 
       5 
5 
     | 
    
         
             
            module Parser
         
     | 
| 
       6 
6 
     | 
    
         
             
              # Parser metadata
         
     | 
| 
       7 
7 
     | 
    
         
             
              module Meta
         
     | 
| 
       8 
     | 
    
         
            -
                 
     | 
| 
      
 8 
     | 
    
         
            +
                # This is how you can add new node types to the parser
         
     | 
| 
      
 9 
     | 
    
         
            +
                #
         
     | 
| 
      
 10 
     | 
    
         
            +
                # NEXT_NODE_TYPES = (NODE_TYPES + %i[meth_ref]).to_set.freeze
         
     | 
| 
       9 
11 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
                remove_const(:NODE_TYPES)
         
     | 
| 
       11 
     | 
    
         
            -
                const_set(:NODE_TYPES, NEXT_NODE_TYPES)
         
     | 
| 
      
 12 
     | 
    
         
            +
                # remove_const(:NODE_TYPES)
         
     | 
| 
      
 13 
     | 
    
         
            +
                # const_set(:NODE_TYPES, NEXT_NODE_TYPES)
         
     | 
| 
       12 
14 
     | 
    
         
             
              end
         
     | 
| 
       13 
15 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,11 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            if RUBY_ENGINE == 'truffleruby'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            else
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            end
         
     | 
| 
      
 4 
     | 
    
         
            +
            # if RUBY_ENGINE == 'truffleruby'
         
     | 
| 
      
 5 
     | 
    
         
            +
            #   require_relative "lexer-F0"
         
     | 
| 
      
 6 
     | 
    
         
            +
            # else
         
     | 
| 
      
 7 
     | 
    
         
            +
            #   require_relative "lexer-F1"
         
     | 
| 
      
 8 
     | 
    
         
            +
            # end
         
     | 
| 
       9 
9 
     | 
    
         
             
            require_relative "builder"
         
     | 
| 
       10 
10 
     | 
    
         
             
            require_relative "ast/processor"
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
         @@ -18,11 +18,12 @@ module Parser 
     | 
|
| 
       18 
18 
     | 
    
         
             
                  # Extend builder
         
     | 
| 
       19 
19 
     | 
    
         
             
                  @builder.singleton_class.prepend(Builders::Next)
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                  #  
     | 
| 
       22 
     | 
    
         
            -
                   
     | 
| 
       23 
     | 
    
         
            -
                  @lexer 
     | 
| 
       24 
     | 
    
         
            -
                  @lexer. 
     | 
| 
       25 
     | 
    
         
            -
                  @lexer. 
     | 
| 
      
 21 
     | 
    
         
            +
                  # Here is how to use a custom lexer
         
     | 
| 
      
 22 
     | 
    
         
            +
                  #
         
     | 
| 
      
 23 
     | 
    
         
            +
                  # @lexer = Lexer::Next.new(version)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  # @lexer.diagnostics = @diagnostics
         
     | 
| 
      
 25 
     | 
    
         
            +
                  # @lexer.static_env  = @static_env
         
     | 
| 
      
 26 
     | 
    
         
            +
                  # @lexer.context     = @context
         
     | 
| 
       26 
27 
     | 
    
         | 
| 
       27 
28 
     | 
    
         
             
                  # Reset the state again
         
     | 
| 
       28 
29 
     | 
    
         
             
                  reset
         
     | 
    
        data/lib/parser/rubynext.y
    CHANGED
    
    | 
         @@ -18,7 +18,6 @@ token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS 
     | 
|
| 
       18 
18 
     | 
    
         
             
                  tSTRING_DVAR tSTRING_END tSTRING_DEND tSTRING tSYMBOL
         
     | 
| 
       19 
19 
     | 
    
         
             
                  tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG tCHARACTER
         
     | 
| 
       20 
20 
     | 
    
         
             
                  tRATIONAL tIMAGINARY tLABEL_END tANDDOT tBDOT2 tBDOT3
         
     | 
| 
       21 
     | 
    
         
            -
                  tMETHREF
         
     | 
| 
       22 
21 
     | 
    
         | 
| 
       23 
22 
     | 
    
         
             
            prechigh
         
     | 
| 
       24 
23 
     | 
    
         
             
              right    tBANG tTILDE tUPLUS
         
     | 
| 
         @@ -262,7 +261,7 @@ rule 
     | 
|
| 
       262 
261 
     | 
    
         
             
                                                val[0], val[1], val[2]),
         
     | 
| 
       263 
262 
     | 
    
         
             
                                              val[3], val[4])
         
     | 
| 
       264 
263 
     | 
    
         
             
                                }
         
     | 
| 
       265 
     | 
    
         
            -
                            | defn_head f_opt_paren_args tEQL  
     | 
| 
      
 264 
     | 
    
         
            +
                            | defn_head f_opt_paren_args tEQL endless_command
         
     | 
| 
       266 
265 
     | 
    
         
             
                                {
         
     | 
| 
       267 
266 
     | 
    
         
             
                                  def_t, (name_t, ctx) = val[0]
         
     | 
| 
       268 
267 
     | 
    
         
             
                                  endless_method_name(name_t)
         
     | 
| 
         @@ -274,25 +273,7 @@ rule 
     | 
|
| 
       274 
273 
     | 
    
         
             
                                  @current_arg_stack.pop
         
     | 
| 
       275 
274 
     | 
    
         
             
                                  @context.in_def = ctx.in_def
         
     | 
| 
       276 
275 
     | 
    
         
             
                                }
         
     | 
| 
       277 
     | 
    
         
            -
                            |  
     | 
| 
       278 
     | 
    
         
            -
                                {
         
     | 
| 
       279 
     | 
    
         
            -
                                  def_t, (name_t, ctx) = val[0]
         
     | 
| 
       280 
     | 
    
         
            -
                                  endless_method_name(name_t)
         
     | 
| 
       281 
     | 
    
         
            -
             
     | 
| 
       282 
     | 
    
         
            -
                                  rescue_body = @builder.rescue_body(val[4],
         
     | 
| 
       283 
     | 
    
         
            -
                                                    nil, nil, nil,
         
     | 
| 
       284 
     | 
    
         
            -
                                                    nil, val[5])
         
     | 
| 
       285 
     | 
    
         
            -
             
     | 
| 
       286 
     | 
    
         
            -
                                  method_body = @builder.begin_body(val[3], [ rescue_body ])
         
     | 
| 
       287 
     | 
    
         
            -
             
     | 
| 
       288 
     | 
    
         
            -
                                  result = @builder.def_endless_method(def_t, name_t,
         
     | 
| 
       289 
     | 
    
         
            -
                                             val[1], val[2], method_body)
         
     | 
| 
       290 
     | 
    
         
            -
             
     | 
| 
       291 
     | 
    
         
            -
                                  local_pop
         
     | 
| 
       292 
     | 
    
         
            -
                                  @current_arg_stack.pop
         
     | 
| 
       293 
     | 
    
         
            -
                                  @context.in_def = ctx.in_def
         
     | 
| 
       294 
     | 
    
         
            -
                                }
         
     | 
| 
       295 
     | 
    
         
            -
                            | defs_head f_opt_paren_args tEQL command
         
     | 
| 
      
 276 
     | 
    
         
            +
                            | defs_head f_opt_paren_args tEQL endless_command
         
     | 
| 
       296 
277 
     | 
    
         
             
                                {
         
     | 
| 
       297 
278 
     | 
    
         
             
                                  def_t, recv, dot_t, (name_t, ctx) = val[0]
         
     | 
| 
       298 
279 
     | 
    
         
             
                                  endless_method_name(name_t)
         
     | 
| 
         @@ -304,27 +285,23 @@ rule 
     | 
|
| 
       304 
285 
     | 
    
         
             
                                  @current_arg_stack.pop
         
     | 
| 
       305 
286 
     | 
    
         
             
                                  @context.in_def = ctx.in_def
         
     | 
| 
       306 
287 
     | 
    
         
             
                                }
         
     | 
| 
       307 
     | 
    
         
            -
                            |  
     | 
| 
      
 288 
     | 
    
         
            +
                            | backref tOP_ASGN command_rhs
         
     | 
| 
       308 
289 
     | 
    
         
             
                                {
         
     | 
| 
       309 
     | 
    
         
            -
                                   
     | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
      
 290 
     | 
    
         
            +
                                  @builder.op_assign(val[0], val[1], val[2])
         
     | 
| 
      
 291 
     | 
    
         
            +
                                }
         
     | 
| 
       311 
292 
     | 
    
         | 
| 
       312 
     | 
    
         
            -
             
     | 
| 
      
 293 
     | 
    
         
            +
             endless_command: command
         
     | 
| 
      
 294 
     | 
    
         
            +
                            | endless_command kRESCUE_MOD arg
         
     | 
| 
      
 295 
     | 
    
         
            +
                                {
         
     | 
| 
      
 296 
     | 
    
         
            +
                                  rescue_body = @builder.rescue_body(val[1],
         
     | 
| 
       313 
297 
     | 
    
         
             
                                                    nil, nil, nil,
         
     | 
| 
       314 
     | 
    
         
            -
                                                    nil, val[ 
     | 
| 
       315 
     | 
    
         
            -
             
     | 
| 
       316 
     | 
    
         
            -
                                  method_body = @builder.begin_body(val[3], [ rescue_body ])
         
     | 
| 
       317 
     | 
    
         
            -
             
     | 
| 
       318 
     | 
    
         
            -
                                  result = @builder.def_endless_singleton(def_t, recv, dot_t, name_t,
         
     | 
| 
       319 
     | 
    
         
            -
                                             val[1], val[2], method_body)
         
     | 
| 
      
 298 
     | 
    
         
            +
                                                    nil, val[2])
         
     | 
| 
       320 
299 
     | 
    
         | 
| 
       321 
     | 
    
         
            -
                                   
     | 
| 
       322 
     | 
    
         
            -
                                  @current_arg_stack.pop
         
     | 
| 
       323 
     | 
    
         
            -
                                  @context.in_def = ctx.in_def
         
     | 
| 
      
 300 
     | 
    
         
            +
                                  result = @builder.begin_body(val[0], [ rescue_body ])
         
     | 
| 
       324 
301 
     | 
    
         
             
                                }
         
     | 
| 
       325 
     | 
    
         
            -
                            |  
     | 
| 
      
 302 
     | 
    
         
            +
                            | kNOT opt_nl endless_command
         
     | 
| 
       326 
303 
     | 
    
         
             
                                {
         
     | 
| 
       327 
     | 
    
         
            -
                                  @builder. 
     | 
| 
      
 304 
     | 
    
         
            +
                                  result = @builder.not_op(val[0], nil, val[2], nil)
         
     | 
| 
       328 
305 
     | 
    
         
             
                                }
         
     | 
| 
       329 
306 
     | 
    
         | 
| 
       330 
307 
     | 
    
         
             
                 command_rhs: command_call =tOP_ASGN
         
     | 
| 
         @@ -355,39 +332,19 @@ rule 
     | 
|
| 
       355 
332 
     | 
    
         
             
                                {
         
     | 
| 
       356 
333 
     | 
    
         
             
                                  result = @builder.not_op(val[0], nil, val[1], nil)
         
     | 
| 
       357 
334 
     | 
    
         
             
                                }
         
     | 
| 
       358 
     | 
    
         
            -
                            | arg tASSOC
         
     | 
| 
       359 
     | 
    
         
            -
                                {
         
     | 
| 
       360 
     | 
    
         
            -
                                  @lexer.state = :expr_beg
         
     | 
| 
       361 
     | 
    
         
            -
                                  @lexer.command_start = false
         
     | 
| 
       362 
     | 
    
         
            -
                                  @pattern_variables.push
         
     | 
| 
       363 
     | 
    
         
            -
                                  @pattern_hash_keys.push
         
     | 
| 
       364 
     | 
    
         
            -
             
     | 
| 
       365 
     | 
    
         
            -
                                  result = @context.in_kwarg
         
     | 
| 
       366 
     | 
    
         
            -
                                  @context.in_kwarg = true
         
     | 
| 
       367 
     | 
    
         
            -
                                }
         
     | 
| 
       368 
     | 
    
         
            -
                              p_top_expr_body
         
     | 
| 
      
 335 
     | 
    
         
            +
                            | arg tASSOC p_in_kwarg p_pvtbl p_pktbl p_top_expr_body
         
     | 
| 
       369 
336 
     | 
    
         
             
                                {
         
     | 
| 
       370 
337 
     | 
    
         
             
                                  @pattern_variables.pop
         
     | 
| 
       371 
338 
     | 
    
         
             
                                  @pattern_hash_keys.pop
         
     | 
| 
       372 
339 
     | 
    
         
             
                                  @context.in_kwarg = val[2]
         
     | 
| 
       373 
     | 
    
         
            -
                                  result = @builder.match_pattern(val[0], val[1], val[ 
     | 
| 
      
 340 
     | 
    
         
            +
                                  result = @builder.match_pattern(val[0], val[1], val[5])
         
     | 
| 
       374 
341 
     | 
    
         
             
                                }
         
     | 
| 
       375 
     | 
    
         
            -
                            | arg kIN
         
     | 
| 
       376 
     | 
    
         
            -
                                {
         
     | 
| 
       377 
     | 
    
         
            -
                                  @lexer.state = :expr_beg
         
     | 
| 
       378 
     | 
    
         
            -
                                  @lexer.command_start = false
         
     | 
| 
       379 
     | 
    
         
            -
                                  @pattern_variables.push
         
     | 
| 
       380 
     | 
    
         
            -
                                  @pattern_hash_keys.push
         
     | 
| 
       381 
     | 
    
         
            -
             
     | 
| 
       382 
     | 
    
         
            -
                                  result = @context.in_kwarg
         
     | 
| 
       383 
     | 
    
         
            -
                                  @context.in_kwarg = true
         
     | 
| 
       384 
     | 
    
         
            -
                                }
         
     | 
| 
       385 
     | 
    
         
            -
                              p_top_expr_body
         
     | 
| 
      
 342 
     | 
    
         
            +
                            | arg kIN p_in_kwarg p_pvtbl p_pktbl p_top_expr_body
         
     | 
| 
       386 
343 
     | 
    
         
             
                                {
         
     | 
| 
       387 
344 
     | 
    
         
             
                                  @pattern_variables.pop
         
     | 
| 
       388 
345 
     | 
    
         
             
                                  @pattern_hash_keys.pop
         
     | 
| 
       389 
346 
     | 
    
         
             
                                  @context.in_kwarg = val[2]
         
     | 
| 
       390 
     | 
    
         
            -
                                  result = @builder.match_pattern_p(val[0], val[1], val[ 
     | 
| 
      
 347 
     | 
    
         
            +
                                  result = @builder.match_pattern_p(val[0], val[1], val[5])
         
     | 
| 
       391 
348 
     | 
    
         
             
                                }
         
     | 
| 
       392 
349 
     | 
    
         
             
                            | arg =tLBRACE_ARG
         
     | 
| 
       393 
350 
     | 
    
         | 
| 
         @@ -409,6 +366,7 @@ rule 
     | 
|
| 
       409 
366 
     | 
    
         | 
| 
       410 
367 
     | 
    
         
             
                                  result = [ val[0], @context.dup ]
         
     | 
| 
       411 
368 
     | 
    
         
             
                                  @context.in_def = true
         
     | 
| 
      
 369 
     | 
    
         
            +
                                  @context.cant_return = false
         
     | 
| 
       412 
370 
     | 
    
         
             
                                }
         
     | 
| 
       413 
371 
     | 
    
         | 
| 
       414 
372 
     | 
    
         
             
                   defn_head: k_def def_name
         
     | 
| 
         @@ -492,6 +450,14 @@ rule 
     | 
|
| 
       492 
450 
     | 
    
         
             
                                  result      = @builder.block(method_call,
         
     | 
| 
       493 
451 
     | 
    
         
             
                                                  begin_t, args, body, end_t)
         
     | 
| 
       494 
452 
     | 
    
         
             
                                }
         
     | 
| 
      
 453 
     | 
    
         
            +
                            | primary_value tCOLON2 tCONSTANT tLCURLY brace_body tRCURLY
         
     | 
| 
      
 454 
     | 
    
         
            +
                                {
         
     | 
| 
      
 455 
     | 
    
         
            +
                                  method_call = @builder.call_method(val[0], val[1], val[2],
         
     | 
| 
      
 456 
     | 
    
         
            +
                                                    nil, [], nil)
         
     | 
| 
      
 457 
     | 
    
         
            +
             
     | 
| 
      
 458 
     | 
    
         
            +
                                  args, body = val[4]
         
     | 
| 
      
 459 
     | 
    
         
            +
                                  result = @builder.block(method_call, val[3], args, body, val[5])
         
     | 
| 
      
 460 
     | 
    
         
            +
                                }
         
     | 
| 
       495 
461 
     | 
    
         
             
                            | kSUPER command_args
         
     | 
| 
       496 
462 
     | 
    
         
             
                                {
         
     | 
| 
       497 
463 
     | 
    
         
             
                                  result = @builder.keyword_cmd(:super, val[0],
         
     | 
| 
         @@ -926,13 +892,9 @@ rule 
     | 
|
| 
       926 
892 
     | 
    
         
             
                                {
         
     | 
| 
       927 
893 
     | 
    
         
             
                                  result = @builder.logical_op(:or, val[0], val[1], val[2])
         
     | 
| 
       928 
894 
     | 
    
         
             
                                }
         
     | 
| 
       929 
     | 
    
         
            -
                            | kDEFINED opt_nl
         
     | 
| 
       930 
     | 
    
         
            -
                                {
         
     | 
| 
       931 
     | 
    
         
            -
                                  @context.in_defined = true
         
     | 
| 
       932 
     | 
    
         
            -
                                }
         
     | 
| 
       933 
     | 
    
         
            -
                              arg
         
     | 
| 
      
 895 
     | 
    
         
            +
                            | kDEFINED opt_nl begin_defined arg
         
     | 
| 
       934 
896 
     | 
    
         
             
                                {
         
     | 
| 
       935 
     | 
    
         
            -
                                  @context.in_defined =  
     | 
| 
      
 897 
     | 
    
         
            +
                                  @context.in_defined = val[2].in_defined
         
     | 
| 
       936 
898 
     | 
    
         
             
                                  result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[3] ], nil)
         
     | 
| 
       937 
899 
     | 
    
         
             
                                }
         
     | 
| 
       938 
900 
     | 
    
         
             
                            | arg tEH arg opt_nl tCOLON arg
         
     | 
| 
         @@ -940,7 +902,7 @@ rule 
     | 
|
| 
       940 
902 
     | 
    
         
             
                                  result = @builder.ternary(val[0], val[1],
         
     | 
| 
       941 
903 
     | 
    
         
             
                                                            val[2], val[4], val[5])
         
     | 
| 
       942 
904 
     | 
    
         
             
                                }
         
     | 
| 
       943 
     | 
    
         
            -
                            | defn_head f_opt_paren_args tEQL  
     | 
| 
      
 905 
     | 
    
         
            +
                            | defn_head f_opt_paren_args tEQL endless_arg
         
     | 
| 
       944 
906 
     | 
    
         
             
                                {
         
     | 
| 
       945 
907 
     | 
    
         
             
                                  def_t, (name_t, ctx) = val[0]
         
     | 
| 
       946 
908 
     | 
    
         
             
                                  endless_method_name(name_t)
         
     | 
| 
         @@ -952,25 +914,7 @@ rule 
     | 
|
| 
       952 
914 
     | 
    
         
             
                                  @current_arg_stack.pop
         
     | 
| 
       953 
915 
     | 
    
         
             
                                  @context.in_def = ctx.in_def
         
     | 
| 
       954 
916 
     | 
    
         
             
                                }
         
     | 
| 
       955 
     | 
    
         
            -
                            |  
     | 
| 
       956 
     | 
    
         
            -
                                {
         
     | 
| 
       957 
     | 
    
         
            -
                                  def_t, (name_t, ctx) = val[0]
         
     | 
| 
       958 
     | 
    
         
            -
                                  endless_method_name(name_t)
         
     | 
| 
       959 
     | 
    
         
            -
             
     | 
| 
       960 
     | 
    
         
            -
                                  rescue_body = @builder.rescue_body(val[4],
         
     | 
| 
       961 
     | 
    
         
            -
                                                    nil, nil, nil,
         
     | 
| 
       962 
     | 
    
         
            -
                                                    nil, val[5])
         
     | 
| 
       963 
     | 
    
         
            -
             
     | 
| 
       964 
     | 
    
         
            -
                                  method_body = @builder.begin_body(val[3], [ rescue_body ])
         
     | 
| 
       965 
     | 
    
         
            -
             
     | 
| 
       966 
     | 
    
         
            -
                                  result = @builder.def_endless_method(def_t, name_t,
         
     | 
| 
       967 
     | 
    
         
            -
                                             val[1], val[2], method_body)
         
     | 
| 
       968 
     | 
    
         
            -
             
     | 
| 
       969 
     | 
    
         
            -
                                  local_pop
         
     | 
| 
       970 
     | 
    
         
            -
                                  @current_arg_stack.pop
         
     | 
| 
       971 
     | 
    
         
            -
                                  @context.in_def = ctx.in_def
         
     | 
| 
       972 
     | 
    
         
            -
                                }
         
     | 
| 
       973 
     | 
    
         
            -
                            | defs_head f_opt_paren_args tEQL arg
         
     | 
| 
      
 917 
     | 
    
         
            +
                            | defs_head f_opt_paren_args tEQL endless_arg
         
     | 
| 
       974 
918 
     | 
    
         
             
                                {
         
     | 
| 
       975 
919 
     | 
    
         
             
                                  def_t, recv, dot_t, (name_t, ctx) = val[0]
         
     | 
| 
       976 
920 
     | 
    
         
             
                                  endless_method_name(name_t)
         
     | 
| 
         @@ -982,25 +926,21 @@ rule 
     | 
|
| 
       982 
926 
     | 
    
         
             
                                  @current_arg_stack.pop
         
     | 
| 
       983 
927 
     | 
    
         
             
                                  @context.in_def = ctx.in_def
         
     | 
| 
       984 
928 
     | 
    
         
             
                                }
         
     | 
| 
       985 
     | 
    
         
            -
                            |  
     | 
| 
       986 
     | 
    
         
            -
                                {
         
     | 
| 
       987 
     | 
    
         
            -
                                  def_t, recv, dot_t, (name_t, ctx) = val[0]
         
     | 
| 
       988 
     | 
    
         
            -
                                  endless_method_name(name_t)
         
     | 
| 
      
 929 
     | 
    
         
            +
                            | primary
         
     | 
| 
       989 
930 
     | 
    
         | 
| 
       990 
     | 
    
         
            -
             
     | 
| 
      
 931 
     | 
    
         
            +
                 endless_arg: arg=kRESCUE_MOD
         
     | 
| 
      
 932 
     | 
    
         
            +
                            | endless_arg kRESCUE_MOD arg
         
     | 
| 
      
 933 
     | 
    
         
            +
                                {
         
     | 
| 
      
 934 
     | 
    
         
            +
                                  rescue_body = @builder.rescue_body(val[1],
         
     | 
| 
       991 
935 
     | 
    
         
             
                                                    nil, nil, nil,
         
     | 
| 
       992 
     | 
    
         
            -
                                                    nil, val[ 
     | 
| 
       993 
     | 
    
         
            -
             
     | 
| 
       994 
     | 
    
         
            -
                                  method_body = @builder.begin_body(val[3], [ rescue_body ])
         
     | 
| 
       995 
     | 
    
         
            -
             
     | 
| 
       996 
     | 
    
         
            -
                                  result = @builder.def_endless_singleton(def_t, recv, dot_t, name_t,
         
     | 
| 
       997 
     | 
    
         
            -
                                             val[1], val[2], method_body)
         
     | 
| 
      
 936 
     | 
    
         
            +
                                                    nil, val[2])
         
     | 
| 
       998 
937 
     | 
    
         | 
| 
       999 
     | 
    
         
            -
                                   
     | 
| 
       1000 
     | 
    
         
            -
             
     | 
| 
       1001 
     | 
    
         
            -
             
     | 
| 
      
 938 
     | 
    
         
            +
                                  result = @builder.begin_body(val[0], [ rescue_body ])
         
     | 
| 
      
 939 
     | 
    
         
            +
                                }
         
     | 
| 
      
 940 
     | 
    
         
            +
                            | kNOT opt_nl endless_arg
         
     | 
| 
      
 941 
     | 
    
         
            +
                                {
         
     | 
| 
      
 942 
     | 
    
         
            +
                                  result = @builder.not_op(val[0], nil, val[2], nil)
         
     | 
| 
       1002 
943 
     | 
    
         
             
                                }
         
     | 
| 
       1003 
     | 
    
         
            -
                            | primary
         
     | 
| 
       1004 
944 
     | 
    
         | 
| 
       1005 
945 
     | 
    
         
             
                       relop: tGT | tLT | tGEQ | tLEQ
         
     | 
| 
       1006 
946 
     | 
    
         | 
| 
         @@ -1013,6 +953,11 @@ rule 
     | 
|
| 
       1013 
953 
     | 
    
         
             
                                  result = @builder.binary_op(val[0], val[1], val[2])
         
     | 
| 
       1014 
954 
     | 
    
         
             
                                }
         
     | 
| 
       1015 
955 
     | 
    
         | 
| 
      
 956 
     | 
    
         
            +
               begin_defined: none
         
     | 
| 
      
 957 
     | 
    
         
            +
                                {
         
     | 
| 
      
 958 
     | 
    
         
            +
                                  result = @context.dup
         
     | 
| 
      
 959 
     | 
    
         
            +
                                }
         
     | 
| 
      
 960 
     | 
    
         
            +
             
     | 
| 
       1016 
961 
     | 
    
         
             
                   arg_value: arg
         
     | 
| 
       1017 
962 
     | 
    
         | 
| 
       1018 
963 
     | 
    
         
             
                   aref_args: none
         
     | 
| 
         @@ -1156,6 +1101,11 @@ rule 
     | 
|
| 
       1156 
1101 
     | 
    
         
             
                                    diagnostic :error, :no_anonymous_blockarg, nil, val[0]
         
     | 
| 
       1157 
1102 
     | 
    
         
             
                                  end
         
     | 
| 
       1158 
1103 
     | 
    
         | 
| 
      
 1104 
     | 
    
         
            +
                                  if @context.in_dynamic_block? && context.in_def &&
         
     | 
| 
      
 1105 
     | 
    
         
            +
                                    @static_env.declared_anonymous_blockarg_in_current_scpe? && @static_env.parent_has_anonymous_blockarg?
         
     | 
| 
      
 1106 
     | 
    
         
            +
                                    diagnostic :error, :ambiguous_anonymous_blockarg, nil, val[0]
         
     | 
| 
      
 1107 
     | 
    
         
            +
                                  end
         
     | 
| 
      
 1108 
     | 
    
         
            +
             
     | 
| 
       1159 
1109 
     | 
    
         
             
                                  result = @builder.block_pass(val[0], nil)
         
     | 
| 
       1160 
1110 
     | 
    
         
             
                                }
         
     | 
| 
       1161 
1111 
     | 
    
         | 
| 
         @@ -1172,7 +1122,17 @@ rule 
     | 
|
| 
       1172 
1122 
     | 
    
         
             
                                {
         
     | 
| 
       1173 
1123 
     | 
    
         
             
                                  result = [ val[0] ]
         
     | 
| 
       1174 
1124 
     | 
    
         
             
                                }
         
     | 
| 
       1175 
     | 
    
         
            -
                            |  
     | 
| 
      
 1125 
     | 
    
         
            +
                            | arg_splat
         
     | 
| 
      
 1126 
     | 
    
         
            +
                            | args tCOMMA arg_value
         
     | 
| 
      
 1127 
     | 
    
         
            +
                                {
         
     | 
| 
      
 1128 
     | 
    
         
            +
                                  result = val[0] << val[2]
         
     | 
| 
      
 1129 
     | 
    
         
            +
                                }
         
     | 
| 
      
 1130 
     | 
    
         
            +
                            | args tCOMMA arg_splat
         
     | 
| 
      
 1131 
     | 
    
         
            +
                                {
         
     | 
| 
      
 1132 
     | 
    
         
            +
                                  result = val[0].concat(val[2])
         
     | 
| 
      
 1133 
     | 
    
         
            +
                                }
         
     | 
| 
      
 1134 
     | 
    
         
            +
             
     | 
| 
      
 1135 
     | 
    
         
            +
                   arg_splat: tSTAR arg_value
         
     | 
| 
       1176 
1136 
     | 
    
         
             
                                {
         
     | 
| 
       1177 
1137 
     | 
    
         
             
                                  result = [ @builder.splat(val[0], val[1]) ]
         
     | 
| 
       1178 
1138 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -1182,23 +1142,12 @@ rule 
     | 
|
| 
       1182 
1142 
     | 
    
         
             
                                    diagnostic :error, :no_anonymous_restarg, nil, val[0]
         
     | 
| 
       1183 
1143 
     | 
    
         
             
                                  end
         
     | 
| 
       1184 
1144 
     | 
    
         | 
| 
       1185 
     | 
    
         
            -
                                   
     | 
| 
       1186 
     | 
    
         
            -
             
     | 
| 
       1187 
     | 
    
         
            -
             
     | 
| 
       1188 
     | 
    
         
            -
                                {
         
     | 
| 
       1189 
     | 
    
         
            -
                                  result = val[0] << val[2]
         
     | 
| 
       1190 
     | 
    
         
            -
                                }
         
     | 
| 
       1191 
     | 
    
         
            -
                            | args tCOMMA tSTAR arg_value
         
     | 
| 
       1192 
     | 
    
         
            -
                                {
         
     | 
| 
       1193 
     | 
    
         
            -
                                  result = val[0] << @builder.splat(val[2], val[3])
         
     | 
| 
       1194 
     | 
    
         
            -
                                }
         
     | 
| 
       1195 
     | 
    
         
            -
                            | args tCOMMA tSTAR
         
     | 
| 
       1196 
     | 
    
         
            -
                                {
         
     | 
| 
       1197 
     | 
    
         
            -
                                  if !@static_env.declared_anonymous_restarg?
         
     | 
| 
       1198 
     | 
    
         
            -
                                    diagnostic :error, :no_anonymous_restarg, nil, val[2]
         
     | 
| 
      
 1145 
     | 
    
         
            +
                                  if @context.in_dynamic_block? && context.in_def &&
         
     | 
| 
      
 1146 
     | 
    
         
            +
                                    @static_env.declared_anonymous_restarg_in_current_scope? && @static_env.parent_has_anonymous_restarg?
         
     | 
| 
      
 1147 
     | 
    
         
            +
                                    diagnostic :error, :ambiguous_anonymous_restarg, nil, val[0]
         
     | 
| 
       1199 
1148 
     | 
    
         
             
                                  end
         
     | 
| 
       1200 
1149 
     | 
    
         | 
| 
       1201 
     | 
    
         
            -
                                  result =  
     | 
| 
      
 1150 
     | 
    
         
            +
                                  result = [ @builder.forwarded_restarg(val[0]) ]
         
     | 
| 
       1202 
1151 
     | 
    
         
             
                                }
         
     | 
| 
       1203 
1152 
     | 
    
         | 
| 
       1204 
1153 
     | 
    
         
             
                    mrhs_arg: mrhs
         
     | 
| 
         @@ -1244,22 +1193,14 @@ rule 
     | 
|
| 
       1244 
1193 
     | 
    
         | 
| 
       1245 
1194 
     | 
    
         
             
                                  result = @builder.begin_keyword(val[0], val[2], val[3])
         
     | 
| 
       1246 
1195 
     | 
    
         
             
                                }
         
     | 
| 
       1247 
     | 
    
         
            -
                            | tLPAREN_ARG  
     | 
| 
      
 1196 
     | 
    
         
            +
                            | tLPAREN_ARG compstmt
         
     | 
| 
       1248 
1197 
     | 
    
         
             
                                {
         
     | 
| 
       1249 
1198 
     | 
    
         
             
                                  @lexer.state = :expr_endarg
         
     | 
| 
       1250 
1199 
     | 
    
         
             
                                }
         
     | 
| 
       1251 
     | 
    
         
            -
                                 
     | 
| 
      
 1200 
     | 
    
         
            +
                                tRPAREN
         
     | 
| 
       1252 
1201 
     | 
    
         
             
                                {
         
     | 
| 
       1253 
1202 
     | 
    
         
             
                                  result = @builder.begin(val[0], val[1], val[3])
         
     | 
| 
       1254 
1203 
     | 
    
         
             
                                }
         
     | 
| 
       1255 
     | 
    
         
            -
                            | tLPAREN_ARG
         
     | 
| 
       1256 
     | 
    
         
            -
                                {
         
     | 
| 
       1257 
     | 
    
         
            -
                                  @lexer.state = :expr_endarg
         
     | 
| 
       1258 
     | 
    
         
            -
                                }
         
     | 
| 
       1259 
     | 
    
         
            -
                                opt_nl tRPAREN
         
     | 
| 
       1260 
     | 
    
         
            -
                                {
         
     | 
| 
       1261 
     | 
    
         
            -
                                  result = @builder.begin(val[0], nil, val[3])
         
     | 
| 
       1262 
     | 
    
         
            -
                                }
         
     | 
| 
       1263 
1204 
     | 
    
         
             
                            | tLPAREN compstmt tRPAREN
         
     | 
| 
       1264 
1205 
     | 
    
         
             
                                {
         
     | 
| 
       1265 
1206 
     | 
    
         
             
                                  result = @builder.begin(val[0], val[1], val[2])
         
     | 
| 
         @@ -1296,13 +1237,9 @@ rule 
     | 
|
| 
       1296 
1237 
     | 
    
         
             
                                {
         
     | 
| 
       1297 
1238 
     | 
    
         
             
                                  result = @builder.keyword_cmd(:yield, val[0])
         
     | 
| 
       1298 
1239 
     | 
    
         
             
                                }
         
     | 
| 
       1299 
     | 
    
         
            -
                            | kDEFINED opt_nl tLPAREN2
         
     | 
| 
       1300 
     | 
    
         
            -
                                {
         
     | 
| 
       1301 
     | 
    
         
            -
                                  @context.in_defined = true
         
     | 
| 
       1302 
     | 
    
         
            -
                                }
         
     | 
| 
       1303 
     | 
    
         
            -
                              expr rparen
         
     | 
| 
      
 1240 
     | 
    
         
            +
                            | kDEFINED opt_nl tLPAREN2 begin_defined expr rparen
         
     | 
| 
       1304 
1241 
     | 
    
         
             
                                {
         
     | 
| 
       1305 
     | 
    
         
            -
                                  @context.in_defined =  
     | 
| 
      
 1242 
     | 
    
         
            +
                                  @context.in_defined = val[3].in_defined
         
     | 
| 
       1306 
1243 
     | 
    
         
             
                                  result = @builder.keyword_cmd(:defined?, val[0],
         
     | 
| 
       1307 
1244 
     | 
    
         
             
                                                                val[2], [ val[4] ], val[5])
         
     | 
| 
       1308 
1245 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -1383,6 +1320,7 @@ rule 
     | 
|
| 
       1383 
1320 
     | 
    
         
             
                            | k_class cpath superclass
         
     | 
| 
       1384 
1321 
     | 
    
         
             
                                {
         
     | 
| 
       1385 
1322 
     | 
    
         
             
                                  @context.in_class = true
         
     | 
| 
      
 1323 
     | 
    
         
            +
                                  @context.cant_return = true
         
     | 
| 
       1386 
1324 
     | 
    
         
             
                                  local_push
         
     | 
| 
       1387 
1325 
     | 
    
         
             
                                }
         
     | 
| 
       1388 
1326 
     | 
    
         
             
                                bodystmt kEND
         
     | 
| 
         @@ -1398,11 +1336,13 @@ rule 
     | 
|
| 
       1398 
1336 
     | 
    
         | 
| 
       1399 
1337 
     | 
    
         
             
                                  local_pop
         
     | 
| 
       1400 
1338 
     | 
    
         
             
                                  @context.in_class = ctx.in_class
         
     | 
| 
      
 1339 
     | 
    
         
            +
                                  @context.cant_return = ctx.cant_return
         
     | 
| 
       1401 
1340 
     | 
    
         
             
                                }
         
     | 
| 
       1402 
     | 
    
         
            -
                            | k_class tLSHFT  
     | 
| 
      
 1341 
     | 
    
         
            +
                            | k_class tLSHFT expr_value term
         
     | 
| 
       1403 
1342 
     | 
    
         
             
                                {
         
     | 
| 
       1404 
1343 
     | 
    
         
             
                                  @context.in_def = false
         
     | 
| 
       1405 
1344 
     | 
    
         
             
                                  @context.in_class = false
         
     | 
| 
      
 1345 
     | 
    
         
            +
                                  @context.cant_return = true
         
     | 
| 
       1406 
1346 
     | 
    
         
             
                                  local_push
         
     | 
| 
       1407 
1347 
     | 
    
         
             
                                }
         
     | 
| 
       1408 
1348 
     | 
    
         
             
                                bodystmt kEND
         
     | 
| 
         @@ -1414,10 +1354,12 @@ rule 
     | 
|
| 
       1414 
1354 
     | 
    
         
             
                                  local_pop
         
     | 
| 
       1415 
1355 
     | 
    
         
             
                                  @context.in_def = ctx.in_def
         
     | 
| 
       1416 
1356 
     | 
    
         
             
                                  @context.in_class = ctx.in_class
         
     | 
| 
      
 1357 
     | 
    
         
            +
                                  @context.cant_return = ctx.cant_return
         
     | 
| 
       1417 
1358 
     | 
    
         
             
                                }
         
     | 
| 
       1418 
1359 
     | 
    
         
             
                            | k_module cpath
         
     | 
| 
       1419 
1360 
     | 
    
         
             
                                {
         
     | 
| 
       1420 
1361 
     | 
    
         
             
                                  @context.in_class = true
         
     | 
| 
      
 1362 
     | 
    
         
            +
                                  @context.cant_return = true
         
     | 
| 
       1421 
1363 
     | 
    
         
             
                                  local_push
         
     | 
| 
       1422 
1364 
     | 
    
         
             
                                }
         
     | 
| 
       1423 
1365 
     | 
    
         
             
                                bodystmt kEND
         
     | 
| 
         @@ -1431,6 +1373,7 @@ rule 
     | 
|
| 
       1431 
1373 
     | 
    
         | 
| 
       1432 
1374 
     | 
    
         
             
                                  local_pop
         
     | 
| 
       1433 
1375 
     | 
    
         
             
                                  @context.in_class = ctx.in_class
         
     | 
| 
      
 1376 
     | 
    
         
            +
                                  @context.cant_return = ctx.cant_return
         
     | 
| 
       1434 
1377 
     | 
    
         
             
                                }
         
     | 
| 
       1435 
1378 
     | 
    
         
             
                            | defn_head f_arglist bodystmt kEND
         
     | 
| 
       1436 
1379 
     | 
    
         
             
                                {
         
     | 
| 
         @@ -1468,10 +1411,6 @@ rule 
     | 
|
| 
       1468 
1411 
     | 
    
         
             
                                {
         
     | 
| 
       1469 
1412 
     | 
    
         
             
                                  result = @builder.keyword_cmd(:retry, val[0])
         
     | 
| 
       1470 
1413 
     | 
    
         
             
                                }
         
     | 
| 
       1471 
     | 
    
         
            -
                            | primary_value tMETHREF operation2
         
     | 
| 
       1472 
     | 
    
         
            -
                                {
         
     | 
| 
       1473 
     | 
    
         
            -
                                  result = @builder.method_ref(val[0], val[1], val[2])
         
     | 
| 
       1474 
     | 
    
         
            -
                                }
         
     | 
| 
       1475 
1414 
     | 
    
         | 
| 
       1476 
1415 
     | 
    
         
             
               primary_value: primary
         
     | 
| 
       1477 
1416 
     | 
    
         | 
| 
         @@ -1493,7 +1432,7 @@ rule 
     | 
|
| 
       1493 
1432 
     | 
    
         | 
| 
       1494 
1433 
     | 
    
         
             
                    k_return: kRETURN
         
     | 
| 
       1495 
1434 
     | 
    
         
             
                                {
         
     | 
| 
       1496 
     | 
    
         
            -
                                  if @context. 
     | 
| 
      
 1435 
     | 
    
         
            +
                                  if @context.cant_return && !(context.in_block || context.in_lambda)
         
     | 
| 
       1497 
1436 
     | 
    
         
             
                                    diagnostic :error, :invalid_return, nil, val[0]
         
     | 
| 
       1498 
1437 
     | 
    
         
             
                                  end
         
     | 
| 
       1499 
1438 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -1970,17 +1909,26 @@ opt_block_args_tail: 
     | 
|
| 
       1970 
1909 
     | 
    
         
             
                                }
         
     | 
| 
       1971 
1910 
     | 
    
         
             
                            | case_body
         
     | 
| 
       1972 
1911 
     | 
    
         | 
| 
       1973 
     | 
    
         
            -
             
     | 
| 
      
 1912 
     | 
    
         
            +
                     p_pvtbl: none
         
     | 
| 
       1974 
1913 
     | 
    
         
             
                                {
         
     | 
| 
       1975 
     | 
    
         
            -
                                  @lexer.state = :expr_beg
         
     | 
| 
       1976 
     | 
    
         
            -
                                  @lexer.command_start = false
         
     | 
| 
       1977 
1914 
     | 
    
         
             
                                  @pattern_variables.push
         
     | 
| 
      
 1915 
     | 
    
         
            +
                                }
         
     | 
| 
      
 1916 
     | 
    
         
            +
             
     | 
| 
      
 1917 
     | 
    
         
            +
                     p_pktbl: none
         
     | 
| 
      
 1918 
     | 
    
         
            +
                                {
         
     | 
| 
       1978 
1919 
     | 
    
         
             
                                  @pattern_hash_keys.push
         
     | 
| 
      
 1920 
     | 
    
         
            +
                                }
         
     | 
| 
       1979 
1921 
     | 
    
         | 
| 
      
 1922 
     | 
    
         
            +
                  p_in_kwarg: none
         
     | 
| 
      
 1923 
     | 
    
         
            +
                                {
         
     | 
| 
       1980 
1924 
     | 
    
         
             
                                  result = @context.in_kwarg
         
     | 
| 
      
 1925 
     | 
    
         
            +
             
     | 
| 
      
 1926 
     | 
    
         
            +
                                  @lexer.state = :expr_beg
         
     | 
| 
      
 1927 
     | 
    
         
            +
                                  @lexer.command_start = false
         
     | 
| 
       1981 
1928 
     | 
    
         
             
                                  @context.in_kwarg = true
         
     | 
| 
       1982 
1929 
     | 
    
         
             
                                }
         
     | 
| 
       1983 
     | 
    
         
            -
             
     | 
| 
      
 1930 
     | 
    
         
            +
             
     | 
| 
      
 1931 
     | 
    
         
            +
                 p_case_body: kIN p_in_kwarg p_pvtbl p_pktbl p_top_expr then
         
     | 
| 
       1984 
1932 
     | 
    
         
             
                                {
         
     | 
| 
       1985 
1933 
     | 
    
         
             
                                  @pattern_variables.pop
         
     | 
| 
       1986 
1934 
     | 
    
         
             
                                  @pattern_hash_keys.pop
         
     | 
| 
         @@ -1988,8 +1936,8 @@ opt_block_args_tail: 
     | 
|
| 
       1988 
1936 
     | 
    
         
             
                                }
         
     | 
| 
       1989 
1937 
     | 
    
         
             
                              compstmt p_cases
         
     | 
| 
       1990 
1938 
     | 
    
         
             
                                {
         
     | 
| 
       1991 
     | 
    
         
            -
                                  result = [ @builder.in_pattern(val[0], *val[ 
     | 
| 
       1992 
     | 
    
         
            -
                                             *val[ 
     | 
| 
      
 1939 
     | 
    
         
            +
                                  result = [ @builder.in_pattern(val[0], *val[4], val[5], val[7]),
         
     | 
| 
      
 1940 
     | 
    
         
            +
                                             *val[8] ]
         
     | 
| 
       1993 
1941 
     | 
    
         
             
                                }
         
     | 
| 
       1994 
1942 
     | 
    
         | 
| 
       1995 
1943 
     | 
    
         
             
                     p_cases: opt_else
         
     | 
| 
         @@ -2465,6 +2413,9 @@ opt_block_args_tail: 
     | 
|
| 
       2465 
2413 
     | 
    
         
             
                                  result = @builder.regexp_compose(val[0], val[1], val[2], opts)
         
     | 
| 
       2466 
2414 
     | 
    
         
             
                                }
         
     | 
| 
       2467 
2415 
     | 
    
         | 
| 
      
 2416 
     | 
    
         
            +
                   words_sep: tSPACE
         
     | 
| 
      
 2417 
     | 
    
         
            +
                            | words_sep tSPACE
         
     | 
| 
      
 2418 
     | 
    
         
            +
             
     | 
| 
       2468 
2419 
     | 
    
         
             
                       words: tWORDS_BEG word_list tSTRING_END
         
     | 
| 
       2469 
2420 
     | 
    
         
             
                                {
         
     | 
| 
       2470 
2421 
     | 
    
         
             
                                  result = @builder.words_compose(val[0], val[1], val[2])
         
     | 
| 
         @@ -2474,7 +2425,7 @@ opt_block_args_tail: 
     | 
|
| 
       2474 
2425 
     | 
    
         
             
                                {
         
     | 
| 
       2475 
2426 
     | 
    
         
             
                                  result = []
         
     | 
| 
       2476 
2427 
     | 
    
         
             
                                }
         
     | 
| 
       2477 
     | 
    
         
            -
                            | word_list word  
     | 
| 
      
 2428 
     | 
    
         
            +
                            | word_list word words_sep
         
     | 
| 
       2478 
2429 
     | 
    
         
             
                                {
         
     | 
| 
       2479 
2430 
     | 
    
         
             
                                  result = val[0] << @builder.word(val[1])
         
     | 
| 
       2480 
2431 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -2497,7 +2448,7 @@ opt_block_args_tail: 
     | 
|
| 
       2497 
2448 
     | 
    
         
             
                                {
         
     | 
| 
       2498 
2449 
     | 
    
         
             
                                  result = []
         
     | 
| 
       2499 
2450 
     | 
    
         
             
                                }
         
     | 
| 
       2500 
     | 
    
         
            -
                            | symbol_list word  
     | 
| 
      
 2451 
     | 
    
         
            +
                            | symbol_list word words_sep
         
     | 
| 
       2501 
2452 
     | 
    
         
             
                                {
         
     | 
| 
       2502 
2453 
     | 
    
         
             
                                  result = val[0] << @builder.word(val[1])
         
     | 
| 
       2503 
2454 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -2516,7 +2467,7 @@ opt_block_args_tail: 
     | 
|
| 
       2516 
2467 
     | 
    
         
             
                                {
         
     | 
| 
       2517 
2468 
     | 
    
         
             
                                  result = []
         
     | 
| 
       2518 
2469 
     | 
    
         
             
                                }
         
     | 
| 
       2519 
     | 
    
         
            -
                            | qword_list tSTRING_CONTENT  
     | 
| 
      
 2470 
     | 
    
         
            +
                            | qword_list tSTRING_CONTENT words_sep
         
     | 
| 
       2520 
2471 
     | 
    
         
             
                                {
         
     | 
| 
       2521 
2472 
     | 
    
         
             
                                  result = val[0] << @builder.string_internal(val[1])
         
     | 
| 
       2522 
2473 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -2525,7 +2476,7 @@ opt_block_args_tail: 
     | 
|
| 
       2525 
2476 
     | 
    
         
             
                                {
         
     | 
| 
       2526 
2477 
     | 
    
         
             
                                  result = []
         
     | 
| 
       2527 
2478 
     | 
    
         
             
                                }
         
     | 
| 
       2528 
     | 
    
         
            -
                            | qsym_list tSTRING_CONTENT  
     | 
| 
      
 2479 
     | 
    
         
            +
                            | qsym_list tSTRING_CONTENT words_sep
         
     | 
| 
       2529 
2480 
     | 
    
         
             
                                {
         
     | 
| 
       2530 
2481 
     | 
    
         
             
                                  result = val[0] << @builder.symbol_internal(val[1])
         
     | 
| 
       2531 
2482 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -2570,7 +2521,7 @@ regexp_contents: # nothing 
     | 
|
| 
       2570 
2521 
     | 
    
         
             
                                  @lexer.cmdarg.push(false)
         
     | 
| 
       2571 
2522 
     | 
    
         
             
                                  @lexer.cond.push(false)
         
     | 
| 
       2572 
2523 
     | 
    
         
             
                                }
         
     | 
| 
       2573 
     | 
    
         
            -
                                compstmt  
     | 
| 
      
 2524 
     | 
    
         
            +
                                compstmt string_dend
         
     | 
| 
       2574 
2525 
     | 
    
         
             
                                {
         
     | 
| 
       2575 
2526 
     | 
    
         
             
                                  @lexer.cmdarg.pop
         
     | 
| 
       2576 
2527 
     | 
    
         
             
                                  @lexer.cond.pop
         
     | 
| 
         @@ -2578,17 +2529,11 @@ regexp_contents: # nothing 
     | 
|
| 
       2578 
2529 
     | 
    
         
             
                                  result = @builder.begin(val[0], val[2], val[3])
         
     | 
| 
       2579 
2530 
     | 
    
         
             
                                }
         
     | 
| 
       2580 
2531 
     | 
    
         | 
| 
       2581 
     | 
    
         
            -
                  
     | 
| 
       2582 
     | 
    
         
            -
             
     | 
| 
       2583 
     | 
    
         
            -
             
     | 
| 
       2584 
     | 
    
         
            -
                                }
         
     | 
| 
       2585 
     | 
    
         
            -
                            | tIVAR
         
     | 
| 
       2586 
     | 
    
         
            -
                                {
         
     | 
| 
       2587 
     | 
    
         
            -
                                  result = @builder.ivar(val[0])
         
     | 
| 
       2588 
     | 
    
         
            -
                                }
         
     | 
| 
       2589 
     | 
    
         
            -
                            | tCVAR
         
     | 
| 
      
 2532 
     | 
    
         
            +
                 string_dend: tSTRING_DEND
         
     | 
| 
      
 2533 
     | 
    
         
            +
             
     | 
| 
      
 2534 
     | 
    
         
            +
                 string_dvar: nonlocal_var
         
     | 
| 
       2590 
2535 
     | 
    
         
             
                                {
         
     | 
| 
       2591 
     | 
    
         
            -
                                  result = @builder. 
     | 
| 
      
 2536 
     | 
    
         
            +
                                  result = @builder.accessible(val[0])
         
     | 
| 
       2592 
2537 
     | 
    
         
             
                                }
         
     | 
| 
       2593 
2538 
     | 
    
         
             
                            | backref
         
     | 
| 
       2594 
2539 
     | 
    
         | 
| 
         @@ -3134,6 +3079,11 @@ f_opt_paren_args: f_paren_args 
     | 
|
| 
       3134 
3079 
     | 
    
         
             
                                    diagnostic :error, :no_anonymous_kwrestarg, nil, val[0]
         
     | 
| 
       3135 
3080 
     | 
    
         
             
                                  end
         
     | 
| 
       3136 
3081 
     | 
    
         | 
| 
      
 3082 
     | 
    
         
            +
                                  if @context.in_dynamic_block? && context.in_def &&
         
     | 
| 
      
 3083 
     | 
    
         
            +
                                    @static_env.declared_anonymous_kwrestarg_in_current_scope? && @static_env.parent_has_anonymous_kwrestarg?
         
     | 
| 
      
 3084 
     | 
    
         
            +
                                    diagnostic :error, :ambiguous_anonymous_kwrestarg, nil, val[0]
         
     | 
| 
      
 3085 
     | 
    
         
            +
                                  end
         
     | 
| 
      
 3086 
     | 
    
         
            +
             
     | 
| 
       3137 
3087 
     | 
    
         
             
                                  result = @builder.forwarded_kwrestarg(val[0])
         
     | 
| 
       3138 
3088 
     | 
    
         
             
                                }
         
     | 
| 
       3139 
3089 
     | 
    
         | 
| 
         @@ -3190,7 +3140,7 @@ require 'parser/ruby-next/parser_ext' 
     | 
|
| 
       3190 
3140 
     | 
    
         
             
            prepend Parser::NextExt
         
     | 
| 
       3191 
3141 
     | 
    
         | 
| 
       3192 
3142 
     | 
    
         
             
              def version
         
     | 
| 
       3193 
     | 
    
         
            -
                 
     | 
| 
      
 3143 
     | 
    
         
            +
                34
         
     | 
| 
       3194 
3144 
     | 
    
         
             
              end
         
     | 
| 
       3195 
3145 
     | 
    
         | 
| 
       3196 
3146 
     | 
    
         
             
              def default_encoding
         
     |