prism 0.19.0 → 0.20.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/CHANGELOG.md +29 -1
 - data/Makefile +5 -0
 - data/README.md +8 -6
 - data/config.yml +236 -38
 - data/docs/build_system.md +19 -2
 - data/docs/cruby_compilation.md +27 -0
 - data/docs/parser_translation.md +34 -0
 - data/docs/parsing_rules.md +19 -0
 - data/docs/releasing.md +3 -3
 - data/docs/ruby_api.md +1 -1
 - data/docs/serialization.md +17 -5
 - data/ext/prism/api_node.c +101 -81
 - data/ext/prism/extension.c +74 -11
 - data/ext/prism/extension.h +1 -1
 - data/include/prism/ast.h +1699 -504
 - data/include/prism/defines.h +8 -0
 - data/include/prism/diagnostic.h +39 -2
 - data/include/prism/encoding.h +10 -0
 - data/include/prism/options.h +40 -14
 - data/include/prism/parser.h +33 -17
 - data/include/prism/util/pm_buffer.h +9 -0
 - data/include/prism/util/pm_constant_pool.h +7 -0
 - data/include/prism/util/pm_newline_list.h +0 -11
 - data/include/prism/version.h +2 -2
 - data/include/prism.h +19 -2
 - data/lib/prism/debug.rb +11 -5
 - data/lib/prism/dot_visitor.rb +36 -14
 - data/lib/prism/dsl.rb +22 -22
 - data/lib/prism/ffi.rb +2 -2
 - data/lib/prism/node.rb +1020 -737
 - data/lib/prism/node_ext.rb +2 -2
 - data/lib/prism/parse_result.rb +17 -9
 - data/lib/prism/serialize.rb +53 -29
 - data/lib/prism/translation/parser/compiler.rb +1831 -0
 - data/lib/prism/translation/parser/lexer.rb +335 -0
 - data/lib/prism/translation/parser/rubocop.rb +37 -0
 - data/lib/prism/translation/parser.rb +163 -0
 - data/lib/prism/translation.rb +11 -0
 - data/lib/prism.rb +1 -0
 - data/prism.gemspec +12 -5
 - data/rbi/prism.rbi +150 -88
 - data/rbi/prism_static.rbi +15 -3
 - data/sig/prism.rbs +996 -961
 - data/sig/prism_static.rbs +123 -46
 - data/src/diagnostic.c +259 -219
 - data/src/encoding.c +4 -8
 - data/src/node.c +2 -6
 - data/src/options.c +24 -5
 - data/src/prettyprint.c +174 -42
 - data/src/prism.c +1136 -328
 - data/src/serialize.c +12 -9
 - data/src/token_type.c +353 -4
 - data/src/util/pm_buffer.c +11 -0
 - data/src/util/pm_constant_pool.c +12 -11
 - data/src/util/pm_newline_list.c +2 -14
 - metadata +10 -3
 - data/docs/building.md +0 -29
 
    
        data/lib/prism/node_ext.rb
    CHANGED
    
    | 
         @@ -81,7 +81,7 @@ module Prism 
     | 
|
| 
       81 
81 
     | 
    
         
             
              class RationalNode < Node
         
     | 
| 
       82 
82 
     | 
    
         
             
                # Returns the value of the node as a Ruby Rational.
         
     | 
| 
       83 
83 
     | 
    
         
             
                def value
         
     | 
| 
       84 
     | 
    
         
            -
                  Rational(slice.chomp("r"))
         
     | 
| 
      
 84 
     | 
    
         
            +
                  Rational(numeric.is_a?(IntegerNode) ? numeric.value : slice.chomp("r"))
         
     | 
| 
       85 
85 
     | 
    
         
             
                end
         
     | 
| 
       86 
86 
     | 
    
         
             
              end
         
     | 
| 
       87 
87 
     | 
    
         | 
| 
         @@ -118,7 +118,7 @@ module Prism 
     | 
|
| 
       118 
118 
     | 
    
         
             
                    current = current.parent
         
     | 
| 
       119 
119 
     | 
    
         
             
                  end
         
     | 
| 
       120 
120 
     | 
    
         | 
| 
       121 
     | 
    
         
            -
                   
     | 
| 
      
 121 
     | 
    
         
            +
                  if !current.is_a?(ConstantReadNode) && !current.nil?
         
     | 
| 
       122 
122 
     | 
    
         
             
                    raise DynamicPartsInConstantPathError, "Constant path contains dynamic parts. Cannot compute full name"
         
     | 
| 
       123 
123 
     | 
    
         
             
                  end
         
     | 
| 
       124 
124 
     | 
    
         | 
    
        data/lib/prism/parse_result.rb
    CHANGED
    
    | 
         @@ -312,20 +312,24 @@ module Prism 
     | 
|
| 
       312 
312 
     | 
    
         
             
                # A Location object representing the location of this error in the source.
         
     | 
| 
       313 
313 
     | 
    
         
             
                attr_reader :location
         
     | 
| 
       314 
314 
     | 
    
         | 
| 
      
 315 
     | 
    
         
            +
                # The level of this error.
         
     | 
| 
      
 316 
     | 
    
         
            +
                attr_reader :level
         
     | 
| 
      
 317 
     | 
    
         
            +
             
     | 
| 
       315 
318 
     | 
    
         
             
                # Create a new error object with the given message and location.
         
     | 
| 
       316 
     | 
    
         
            -
                def initialize(message, location)
         
     | 
| 
      
 319 
     | 
    
         
            +
                def initialize(message, location, level)
         
     | 
| 
       317 
320 
     | 
    
         
             
                  @message = message
         
     | 
| 
       318 
321 
     | 
    
         
             
                  @location = location
         
     | 
| 
      
 322 
     | 
    
         
            +
                  @level = level
         
     | 
| 
       319 
323 
     | 
    
         
             
                end
         
     | 
| 
       320 
324 
     | 
    
         | 
| 
       321 
325 
     | 
    
         
             
                # Implement the hash pattern matching interface for ParseError.
         
     | 
| 
       322 
326 
     | 
    
         
             
                def deconstruct_keys(keys)
         
     | 
| 
       323 
     | 
    
         
            -
                  { message: message, location: location }
         
     | 
| 
      
 327 
     | 
    
         
            +
                  { message: message, location: location, level: level }
         
     | 
| 
       324 
328 
     | 
    
         
             
                end
         
     | 
| 
       325 
329 
     | 
    
         | 
| 
       326 
330 
     | 
    
         
             
                # Returns a string representation of this error.
         
     | 
| 
       327 
331 
     | 
    
         
             
                def inspect
         
     | 
| 
       328 
     | 
    
         
            -
                  "#<Prism::ParseError @message=#{@message.inspect} @location=#{@location.inspect}>"
         
     | 
| 
      
 332 
     | 
    
         
            +
                  "#<Prism::ParseError @message=#{@message.inspect} @location=#{@location.inspect} @level=#{@level.inspect}>"
         
     | 
| 
       329 
333 
     | 
    
         
             
                end
         
     | 
| 
       330 
334 
     | 
    
         
             
              end
         
     | 
| 
       331 
335 
     | 
    
         | 
| 
         @@ -337,20 +341,24 @@ module Prism 
     | 
|
| 
       337 
341 
     | 
    
         
             
                # A Location object representing the location of this warning in the source.
         
     | 
| 
       338 
342 
     | 
    
         
             
                attr_reader :location
         
     | 
| 
       339 
343 
     | 
    
         | 
| 
      
 344 
     | 
    
         
            +
                # The level of this warning.
         
     | 
| 
      
 345 
     | 
    
         
            +
                attr_reader :level
         
     | 
| 
      
 346 
     | 
    
         
            +
             
     | 
| 
       340 
347 
     | 
    
         
             
                # Create a new warning object with the given message and location.
         
     | 
| 
       341 
     | 
    
         
            -
                def initialize(message, location)
         
     | 
| 
      
 348 
     | 
    
         
            +
                def initialize(message, location, level)
         
     | 
| 
       342 
349 
     | 
    
         
             
                  @message = message
         
     | 
| 
       343 
350 
     | 
    
         
             
                  @location = location
         
     | 
| 
      
 351 
     | 
    
         
            +
                  @level = level
         
     | 
| 
       344 
352 
     | 
    
         
             
                end
         
     | 
| 
       345 
353 
     | 
    
         | 
| 
       346 
354 
     | 
    
         
             
                # Implement the hash pattern matching interface for ParseWarning.
         
     | 
| 
       347 
355 
     | 
    
         
             
                def deconstruct_keys(keys)
         
     | 
| 
       348 
     | 
    
         
            -
                  { message: message, location: location }
         
     | 
| 
      
 356 
     | 
    
         
            +
                  { message: message, location: location, level: level }
         
     | 
| 
       349 
357 
     | 
    
         
             
                end
         
     | 
| 
       350 
358 
     | 
    
         | 
| 
       351 
359 
     | 
    
         
             
                # Returns a string representation of this warning.
         
     | 
| 
       352 
360 
     | 
    
         
             
                def inspect
         
     | 
| 
       353 
     | 
    
         
            -
                  "#<Prism::ParseWarning @message=#{@message.inspect} @location=#{@location.inspect}>"
         
     | 
| 
      
 361 
     | 
    
         
            +
                  "#<Prism::ParseWarning @message=#{@message.inspect} @location=#{@location.inspect} @level=#{@level.inspect}>"
         
     | 
| 
       354 
362 
     | 
    
         
             
                end
         
     | 
| 
       355 
363 
     | 
    
         
             
              end
         
     | 
| 
       356 
364 
     | 
    
         | 
| 
         @@ -369,9 +377,9 @@ module Prism 
     | 
|
| 
       369 
377 
     | 
    
         
             
                # The list of magic comments that were encountered during parsing.
         
     | 
| 
       370 
378 
     | 
    
         
             
                attr_reader :magic_comments
         
     | 
| 
       371 
379 
     | 
    
         | 
| 
       372 
     | 
    
         
            -
                # An optional location that represents the location of the  
     | 
| 
       373 
     | 
    
         
            -
                #  
     | 
| 
       374 
     | 
    
         
            -
                # file being parsed is the main file being executed.
         
     | 
| 
      
 380 
     | 
    
         
            +
                # An optional location that represents the location of the __END__ marker
         
     | 
| 
      
 381 
     | 
    
         
            +
                # and the rest of the content of the file. This content is loaded into the
         
     | 
| 
      
 382 
     | 
    
         
            +
                # DATA constant when the file being parsed is the main file being executed.
         
     | 
| 
       375 
383 
     | 
    
         
             
                attr_reader :data_loc
         
     | 
| 
       376 
384 
     | 
    
         | 
| 
       377 
385 
     | 
    
         
             
                # The list of errors that were generated during parsing.
         
     | 
    
        data/lib/prism/serialize.rb
    CHANGED
    
    | 
         @@ -27,7 +27,7 @@ module Prism 
     | 
|
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
                # The minor version of prism that we are expecting to find in the serialized
         
     | 
| 
       29 
29 
     | 
    
         
             
                # strings.
         
     | 
| 
       30 
     | 
    
         
            -
                MINOR_VERSION =  
     | 
| 
      
 30 
     | 
    
         
            +
                MINOR_VERSION = 20
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
                # The patch version of prism that we are expecting to find in the serialized
         
     | 
| 
       33 
33 
     | 
    
         
             
                # strings.
         
     | 
| 
         @@ -103,8 +103,8 @@ module Prism 
     | 
|
| 
       103 
103 
     | 
    
         
             
                    comments = load_comments
         
     | 
| 
       104 
104 
     | 
    
         
             
                    magic_comments = load_varuint.times.map { MagicComment.new(load_location, load_location) }
         
     | 
| 
       105 
105 
     | 
    
         
             
                    data_loc = load_optional_location
         
     | 
| 
       106 
     | 
    
         
            -
                    errors = load_varuint.times.map { ParseError.new(load_embedded_string, load_location) }
         
     | 
| 
       107 
     | 
    
         
            -
                    warnings = load_varuint.times.map { ParseWarning.new(load_embedded_string, load_location) }
         
     | 
| 
      
 106 
     | 
    
         
            +
                    errors = load_varuint.times.map { ParseError.new(load_embedded_string, load_location, load_error_level) }
         
     | 
| 
      
 107 
     | 
    
         
            +
                    warnings = load_varuint.times.map { ParseWarning.new(load_embedded_string, load_location, load_warning_level) }
         
     | 
| 
       108 
108 
     | 
    
         
             
                    [comments, magic_comments, data_loc, errors, warnings]
         
     | 
| 
       109 
109 
     | 
    
         
             
                  end
         
     | 
| 
       110 
110 
     | 
    
         | 
| 
         @@ -218,9 +218,9 @@ module Prism 
     | 
|
| 
       218 
218 
     | 
    
         | 
| 
       219 
219 
     | 
    
         
             
                      constant =
         
     | 
| 
       220 
220 
     | 
    
         
             
                        if start.nobits?(1 << 31)
         
     | 
| 
       221 
     | 
    
         
            -
                          input.byteslice(start, length).to_sym
         
     | 
| 
      
 221 
     | 
    
         
            +
                          input.byteslice(start, length).force_encoding(@encoding).to_sym
         
     | 
| 
       222 
222 
     | 
    
         
             
                        else
         
     | 
| 
       223 
     | 
    
         
            -
                          serialized.byteslice(start & ((1 << 31) - 1), length).to_sym
         
     | 
| 
      
 223 
     | 
    
         
            +
                          serialized.byteslice(start & ((1 << 31) - 1), length).force_encoding(@encoding).to_sym
         
     | 
| 
       224 
224 
     | 
    
         
             
                        end
         
     | 
| 
       225 
225 
     | 
    
         | 
| 
       226 
226 
     | 
    
         
             
                      constant_pool[index] = constant
         
     | 
| 
         @@ -238,6 +238,30 @@ module Prism 
     | 
|
| 
       238 
238 
     | 
    
         
             
                    load_constant(index - 1) if index != 0
         
     | 
| 
       239 
239 
     | 
    
         
             
                  end
         
     | 
| 
       240 
240 
     | 
    
         | 
| 
      
 241 
     | 
    
         
            +
                  def load_error_level
         
     | 
| 
      
 242 
     | 
    
         
            +
                    level = io.getbyte
         
     | 
| 
      
 243 
     | 
    
         
            +
             
     | 
| 
      
 244 
     | 
    
         
            +
                    case level
         
     | 
| 
      
 245 
     | 
    
         
            +
                    when 0
         
     | 
| 
      
 246 
     | 
    
         
            +
                      :fatal
         
     | 
| 
      
 247 
     | 
    
         
            +
                    else
         
     | 
| 
      
 248 
     | 
    
         
            +
                      raise "Unknown level: #{level}"
         
     | 
| 
      
 249 
     | 
    
         
            +
                    end
         
     | 
| 
      
 250 
     | 
    
         
            +
                  end
         
     | 
| 
      
 251 
     | 
    
         
            +
             
     | 
| 
      
 252 
     | 
    
         
            +
                  def load_warning_level
         
     | 
| 
      
 253 
     | 
    
         
            +
                    level = io.getbyte
         
     | 
| 
      
 254 
     | 
    
         
            +
             
     | 
| 
      
 255 
     | 
    
         
            +
                    case level
         
     | 
| 
      
 256 
     | 
    
         
            +
                    when 0
         
     | 
| 
      
 257 
     | 
    
         
            +
                      :default
         
     | 
| 
      
 258 
     | 
    
         
            +
                    when 1
         
     | 
| 
      
 259 
     | 
    
         
            +
                      :verbose
         
     | 
| 
      
 260 
     | 
    
         
            +
                    else
         
     | 
| 
      
 261 
     | 
    
         
            +
                      raise "Unknown level: #{level}"
         
     | 
| 
      
 262 
     | 
    
         
            +
                    end
         
     | 
| 
      
 263 
     | 
    
         
            +
                  end
         
     | 
| 
      
 264 
     | 
    
         
            +
             
     | 
| 
       241 
265 
     | 
    
         
             
                  if RUBY_ENGINE == 'ruby'
         
     | 
| 
       242 
266 
     | 
    
         
             
                    def load_node
         
     | 
| 
       243 
267 
     | 
    
         
             
                      type = io.getbyte
         
     | 
| 
         @@ -259,7 +283,7 @@ module Prism 
     | 
|
| 
       259 
283 
     | 
    
         
             
                      when 7 then
         
     | 
| 
       260 
284 
     | 
    
         
             
                        ArrayPatternNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
         
     | 
| 
       261 
285 
     | 
    
         
             
                      when 8 then
         
     | 
| 
       262 
     | 
    
         
            -
                        AssocNode.new(load_node,  
     | 
| 
      
 286 
     | 
    
         
            +
                        AssocNode.new(load_node, load_node, load_optional_location, location)
         
     | 
| 
       263 
287 
     | 
    
         
             
                      when 9 then
         
     | 
| 
       264 
288 
     | 
    
         
             
                        AssocSplatNode.new(load_optional_node, load_location, location)
         
     | 
| 
       265 
289 
     | 
    
         
             
                      when 10 then
         
     | 
| 
         @@ -269,11 +293,11 @@ module Prism 
     | 
|
| 
       269 
293 
     | 
    
         
             
                      when 12 then
         
     | 
| 
       270 
294 
     | 
    
         
             
                        BlockArgumentNode.new(load_optional_node, load_location, location)
         
     | 
| 
       271 
295 
     | 
    
         
             
                      when 13 then
         
     | 
| 
       272 
     | 
    
         
            -
                        BlockLocalVariableNode.new(load_required_constant, location)
         
     | 
| 
      
 296 
     | 
    
         
            +
                        BlockLocalVariableNode.new(load_varuint, load_required_constant, location)
         
     | 
| 
       273 
297 
     | 
    
         
             
                      when 14 then
         
     | 
| 
       274 
     | 
    
         
            -
                        BlockNode.new(Array.new(load_varuint) { load_required_constant },  
     | 
| 
      
 298 
     | 
    
         
            +
                        BlockNode.new(Array.new(load_varuint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location, location)
         
     | 
| 
       275 
299 
     | 
    
         
             
                      when 15 then
         
     | 
| 
       276 
     | 
    
         
            -
                        BlockParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
      
 300 
     | 
    
         
            +
                        BlockParameterNode.new(load_varuint, load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
       277 
301 
     | 
    
         
             
                      when 16 then
         
     | 
| 
       278 
302 
     | 
    
         
             
                        BlockParametersNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
         
     | 
| 
       279 
303 
     | 
    
         
             
                      when 17 then
         
     | 
| 
         @@ -334,7 +358,7 @@ module Prism 
     | 
|
| 
       334 
358 
     | 
    
         
             
                        ConstantWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
         
     | 
| 
       335 
359 
     | 
    
         
             
                      when 45 then
         
     | 
| 
       336 
360 
     | 
    
         
             
                        load_serialized_length
         
     | 
| 
       337 
     | 
    
         
            -
                        DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varuint) { load_required_constant },  
     | 
| 
      
 361 
     | 
    
         
            +
                        DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varuint) { load_required_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
         
     | 
| 
       338 
362 
     | 
    
         
             
                      when 46 then
         
     | 
| 
       339 
363 
     | 
    
         
             
                        DefinedNode.new(load_optional_location, load_node, load_optional_location, load_location, location)
         
     | 
| 
       340 
364 
     | 
    
         
             
                      when 47 then
         
     | 
| 
         @@ -422,9 +446,9 @@ module Prism 
     | 
|
| 
       422 
446 
     | 
    
         
             
                      when 88 then
         
     | 
| 
       423 
447 
     | 
    
         
             
                        KeywordHashNode.new(load_varuint, Array.new(load_varuint) { load_node }, location)
         
     | 
| 
       424 
448 
     | 
    
         
             
                      when 89 then
         
     | 
| 
       425 
     | 
    
         
            -
                        KeywordRestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
      
 449 
     | 
    
         
            +
                        KeywordRestParameterNode.new(load_varuint, load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
       426 
450 
     | 
    
         
             
                      when 90 then
         
     | 
| 
       427 
     | 
    
         
            -
                        LambdaNode.new(Array.new(load_varuint) { load_required_constant },  
     | 
| 
      
 451 
     | 
    
         
            +
                        LambdaNode.new(Array.new(load_varuint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
         
     | 
| 
       428 
452 
     | 
    
         
             
                      when 91 then
         
     | 
| 
       429 
453 
     | 
    
         
             
                        LocalVariableAndWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varuint, location)
         
     | 
| 
       430 
454 
     | 
    
         
             
                      when 92 then
         
     | 
| 
         @@ -464,9 +488,9 @@ module Prism 
     | 
|
| 
       464 
488 
     | 
    
         
             
                      when 109 then
         
     | 
| 
       465 
489 
     | 
    
         
             
                        NumberedReferenceReadNode.new(load_varuint, location)
         
     | 
| 
       466 
490 
     | 
    
         
             
                      when 110 then
         
     | 
| 
       467 
     | 
    
         
            -
                        OptionalKeywordParameterNode.new(load_required_constant, load_location, load_node, location)
         
     | 
| 
      
 491 
     | 
    
         
            +
                        OptionalKeywordParameterNode.new(load_varuint, load_required_constant, load_location, load_node, location)
         
     | 
| 
       468 
492 
     | 
    
         
             
                      when 111 then
         
     | 
| 
       469 
     | 
    
         
            -
                        OptionalParameterNode.new(load_required_constant, load_location, load_location, load_node, location)
         
     | 
| 
      
 493 
     | 
    
         
            +
                        OptionalParameterNode.new(load_varuint, load_required_constant, load_location, load_location, load_node, location)
         
     | 
| 
       470 
494 
     | 
    
         
             
                      when 112 then
         
     | 
| 
       471 
495 
     | 
    
         
             
                        OrNode.new(load_node, load_node, load_location, location)
         
     | 
| 
       472 
496 
     | 
    
         
             
                      when 113 then
         
     | 
| 
         @@ -492,15 +516,15 @@ module Prism 
     | 
|
| 
       492 
516 
     | 
    
         
             
                      when 123 then
         
     | 
| 
       493 
517 
     | 
    
         
             
                        RegularExpressionNode.new(load_varuint, load_location, load_location, load_location, load_string, location)
         
     | 
| 
       494 
518 
     | 
    
         
             
                      when 124 then
         
     | 
| 
       495 
     | 
    
         
            -
                        RequiredKeywordParameterNode.new(load_required_constant, load_location, location)
         
     | 
| 
      
 519 
     | 
    
         
            +
                        RequiredKeywordParameterNode.new(load_varuint, load_required_constant, load_location, location)
         
     | 
| 
       496 
520 
     | 
    
         
             
                      when 125 then
         
     | 
| 
       497 
     | 
    
         
            -
                        RequiredParameterNode.new(load_required_constant, location)
         
     | 
| 
      
 521 
     | 
    
         
            +
                        RequiredParameterNode.new(load_varuint, load_required_constant, location)
         
     | 
| 
       498 
522 
     | 
    
         
             
                      when 126 then
         
     | 
| 
       499 
523 
     | 
    
         
             
                        RescueModifierNode.new(load_node, load_location, load_node, location)
         
     | 
| 
       500 
524 
     | 
    
         
             
                      when 127 then
         
     | 
| 
       501 
525 
     | 
    
         
             
                        RescueNode.new(load_location, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
         
     | 
| 
       502 
526 
     | 
    
         
             
                      when 128 then
         
     | 
| 
       503 
     | 
    
         
            -
                        RestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
      
 527 
     | 
    
         
            +
                        RestParameterNode.new(load_varuint, load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
       504 
528 
     | 
    
         
             
                      when 129 then
         
     | 
| 
       505 
529 
     | 
    
         
             
                        RetryNode.new(location)
         
     | 
| 
       506 
530 
     | 
    
         
             
                      when 130 then
         
     | 
| 
         @@ -582,7 +606,7 @@ module Prism 
     | 
|
| 
       582 
606 
     | 
    
         
             
                        },
         
     | 
| 
       583 
607 
     | 
    
         
             
                        -> {
         
     | 
| 
       584 
608 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       585 
     | 
    
         
            -
                          AssocNode.new(load_node,  
     | 
| 
      
 609 
     | 
    
         
            +
                          AssocNode.new(load_node, load_node, load_optional_location, location)
         
     | 
| 
       586 
610 
     | 
    
         
             
                        },
         
     | 
| 
       587 
611 
     | 
    
         
             
                        -> {
         
     | 
| 
       588 
612 
     | 
    
         
             
                          location = load_location
         
     | 
| 
         @@ -602,15 +626,15 @@ module Prism 
     | 
|
| 
       602 
626 
     | 
    
         
             
                        },
         
     | 
| 
       603 
627 
     | 
    
         
             
                        -> {
         
     | 
| 
       604 
628 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       605 
     | 
    
         
            -
                          BlockLocalVariableNode.new(load_required_constant, location)
         
     | 
| 
      
 629 
     | 
    
         
            +
                          BlockLocalVariableNode.new(load_varuint, load_required_constant, location)
         
     | 
| 
       606 
630 
     | 
    
         
             
                        },
         
     | 
| 
       607 
631 
     | 
    
         
             
                        -> {
         
     | 
| 
       608 
632 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       609 
     | 
    
         
            -
                          BlockNode.new(Array.new(load_varuint) { load_required_constant },  
     | 
| 
      
 633 
     | 
    
         
            +
                          BlockNode.new(Array.new(load_varuint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location, location)
         
     | 
| 
       610 
634 
     | 
    
         
             
                        },
         
     | 
| 
       611 
635 
     | 
    
         
             
                        -> {
         
     | 
| 
       612 
636 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       613 
     | 
    
         
            -
                          BlockParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
      
 637 
     | 
    
         
            +
                          BlockParameterNode.new(load_varuint, load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
       614 
638 
     | 
    
         
             
                        },
         
     | 
| 
       615 
639 
     | 
    
         
             
                        -> {
         
     | 
| 
       616 
640 
     | 
    
         
             
                          location = load_location
         
     | 
| 
         @@ -731,7 +755,7 @@ module Prism 
     | 
|
| 
       731 
755 
     | 
    
         
             
                        -> {
         
     | 
| 
       732 
756 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       733 
757 
     | 
    
         
             
                          load_serialized_length
         
     | 
| 
       734 
     | 
    
         
            -
                          DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varuint) { load_required_constant },  
     | 
| 
      
 758 
     | 
    
         
            +
                          DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varuint) { load_required_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
         
     | 
| 
       735 
759 
     | 
    
         
             
                        },
         
     | 
| 
       736 
760 
     | 
    
         
             
                        -> {
         
     | 
| 
       737 
761 
     | 
    
         
             
                          location = load_location
         
     | 
| 
         @@ -907,11 +931,11 @@ module Prism 
     | 
|
| 
       907 
931 
     | 
    
         
             
                        },
         
     | 
| 
       908 
932 
     | 
    
         
             
                        -> {
         
     | 
| 
       909 
933 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       910 
     | 
    
         
            -
                          KeywordRestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
      
 934 
     | 
    
         
            +
                          KeywordRestParameterNode.new(load_varuint, load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
       911 
935 
     | 
    
         
             
                        },
         
     | 
| 
       912 
936 
     | 
    
         
             
                        -> {
         
     | 
| 
       913 
937 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       914 
     | 
    
         
            -
                          LambdaNode.new(Array.new(load_varuint) { load_required_constant },  
     | 
| 
      
 938 
     | 
    
         
            +
                          LambdaNode.new(Array.new(load_varuint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
         
     | 
| 
       915 
939 
     | 
    
         
             
                        },
         
     | 
| 
       916 
940 
     | 
    
         
             
                        -> {
         
     | 
| 
       917 
941 
     | 
    
         
             
                          location = load_location
         
     | 
| 
         @@ -991,11 +1015,11 @@ module Prism 
     | 
|
| 
       991 
1015 
     | 
    
         
             
                        },
         
     | 
| 
       992 
1016 
     | 
    
         
             
                        -> {
         
     | 
| 
       993 
1017 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       994 
     | 
    
         
            -
                          OptionalKeywordParameterNode.new(load_required_constant, load_location, load_node, location)
         
     | 
| 
      
 1018 
     | 
    
         
            +
                          OptionalKeywordParameterNode.new(load_varuint, load_required_constant, load_location, load_node, location)
         
     | 
| 
       995 
1019 
     | 
    
         
             
                        },
         
     | 
| 
       996 
1020 
     | 
    
         
             
                        -> {
         
     | 
| 
       997 
1021 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       998 
     | 
    
         
            -
                          OptionalParameterNode.new(load_required_constant, load_location, load_location, load_node, location)
         
     | 
| 
      
 1022 
     | 
    
         
            +
                          OptionalParameterNode.new(load_varuint, load_required_constant, load_location, load_location, load_node, location)
         
     | 
| 
       999 
1023 
     | 
    
         
             
                        },
         
     | 
| 
       1000 
1024 
     | 
    
         
             
                        -> {
         
     | 
| 
       1001 
1025 
     | 
    
         
             
                          location = load_location
         
     | 
| 
         @@ -1047,11 +1071,11 @@ module Prism 
     | 
|
| 
       1047 
1071 
     | 
    
         
             
                        },
         
     | 
| 
       1048 
1072 
     | 
    
         
             
                        -> {
         
     | 
| 
       1049 
1073 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       1050 
     | 
    
         
            -
                          RequiredKeywordParameterNode.new(load_required_constant, load_location, location)
         
     | 
| 
      
 1074 
     | 
    
         
            +
                          RequiredKeywordParameterNode.new(load_varuint, load_required_constant, load_location, location)
         
     | 
| 
       1051 
1075 
     | 
    
         
             
                        },
         
     | 
| 
       1052 
1076 
     | 
    
         
             
                        -> {
         
     | 
| 
       1053 
1077 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       1054 
     | 
    
         
            -
                          RequiredParameterNode.new(load_required_constant, location)
         
     | 
| 
      
 1078 
     | 
    
         
            +
                          RequiredParameterNode.new(load_varuint, load_required_constant, location)
         
     | 
| 
       1055 
1079 
     | 
    
         
             
                        },
         
     | 
| 
       1056 
1080 
     | 
    
         
             
                        -> {
         
     | 
| 
       1057 
1081 
     | 
    
         
             
                          location = load_location
         
     | 
| 
         @@ -1063,7 +1087,7 @@ module Prism 
     | 
|
| 
       1063 
1087 
     | 
    
         
             
                        },
         
     | 
| 
       1064 
1088 
     | 
    
         
             
                        -> {
         
     | 
| 
       1065 
1089 
     | 
    
         
             
                          location = load_location
         
     | 
| 
       1066 
     | 
    
         
            -
                          RestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
      
 1090 
     | 
    
         
            +
                          RestParameterNode.new(load_varuint, load_optional_constant, load_optional_location, load_location, location)
         
     | 
| 
       1067 
1091 
     | 
    
         
             
                        },
         
     | 
| 
       1068 
1092 
     | 
    
         
             
                        -> {
         
     | 
| 
       1069 
1093 
     | 
    
         
             
                          location = load_location
         
     |