prism 0.18.0 → 0.19.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 +31 -1
 - data/README.md +2 -1
 - data/config.yml +188 -55
 - data/docs/building.md +9 -2
 - data/docs/configuration.md +10 -9
 - data/docs/encoding.md +24 -56
 - data/docs/local_variable_depth.md +229 -0
 - data/docs/ruby_api.md +2 -0
 - data/docs/serialization.md +18 -13
 - data/ext/prism/api_node.c +337 -195
 - data/ext/prism/extconf.rb +13 -7
 - data/ext/prism/extension.c +96 -32
 - data/ext/prism/extension.h +1 -1
 - data/include/prism/ast.h +340 -137
 - data/include/prism/defines.h +17 -0
 - data/include/prism/diagnostic.h +11 -5
 - data/include/prism/encoding.h +248 -0
 - data/include/prism/options.h +2 -2
 - data/include/prism/parser.h +62 -42
 - data/include/prism/regexp.h +2 -2
 - data/include/prism/util/pm_buffer.h +9 -1
 - data/include/prism/util/pm_memchr.h +2 -2
 - data/include/prism/util/pm_strpbrk.h +3 -3
 - data/include/prism/version.h +2 -2
 - data/include/prism.h +13 -15
 - data/lib/prism/compiler.rb +12 -0
 - data/lib/prism/debug.rb +9 -4
 - data/lib/prism/desugar_compiler.rb +3 -3
 - data/lib/prism/dispatcher.rb +56 -0
 - data/lib/prism/dot_visitor.rb +476 -198
 - data/lib/prism/dsl.rb +66 -46
 - data/lib/prism/ffi.rb +16 -3
 - data/lib/prism/lex_compat.rb +19 -9
 - data/lib/prism/mutation_compiler.rb +20 -0
 - data/lib/prism/node.rb +1173 -450
 - data/lib/prism/node_ext.rb +41 -16
 - data/lib/prism/parse_result.rb +12 -15
 - data/lib/prism/ripper_compat.rb +49 -34
 - data/lib/prism/serialize.rb +242 -212
 - data/lib/prism/visitor.rb +12 -0
 - data/lib/prism.rb +20 -4
 - data/prism.gemspec +4 -10
 - data/rbi/prism.rbi +605 -230
 - data/rbi/prism_static.rbi +3 -0
 - data/sig/prism.rbs +379 -124
 - data/sig/prism_static.rbs +1 -0
 - data/src/diagnostic.c +228 -222
 - data/src/encoding.c +5137 -0
 - data/src/node.c +66 -0
 - data/src/options.c +21 -2
 - data/src/prettyprint.c +806 -406
 - data/src/prism.c +1092 -700
 - data/src/regexp.c +3 -3
 - data/src/serialize.c +227 -157
 - data/src/util/pm_buffer.c +10 -1
 - data/src/util/pm_memchr.c +1 -1
 - data/src/util/pm_strpbrk.c +4 -4
 - metadata +5 -11
 - data/include/prism/enc/pm_encoding.h +0 -227
 - data/src/enc/pm_big5.c +0 -116
 - data/src/enc/pm_cp51932.c +0 -57
 - data/src/enc/pm_euc_jp.c +0 -69
 - data/src/enc/pm_gbk.c +0 -65
 - data/src/enc/pm_shift_jis.c +0 -57
 - data/src/enc/pm_tables.c +0 -2073
 - data/src/enc/pm_unicode.c +0 -2369
 - data/src/enc/pm_windows_31j.c +0 -57
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 72e48ffbc7a58cb622a709f860470c4cf2178113a2ba6a2c9cd4f838229ccff8
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 709ecc0c274a141a868661f94d28aad3fda3032e1b253b2f699a15ff71200c37
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 42a21574ff5ca1ce62c836839a8c54ed7d6a3f943cfbbd13d860aa30f3d1cf2b6fd5add3082d7622b30e3403ecbf98a404f3c9ef831744e60d40deabeae44ba2
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8ef39e9818ba2f13808a0e1131514709e6c7cbbbf2a0c784d047637d56b0024d35951a852c91d8f29c72477b5e923a6cc2687335cf44ccc761ab2e8e5eb5e521
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -6,6 +6,35 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            ## [Unreleased]
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
            ## [0.19.0] - 2023-12-14
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ### Added
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            - `ArrayNode` now has a `contains_splat?` flag if it has a splatted element in it.
         
     | 
| 
      
 14 
     | 
    
         
            +
            - All of the remaining encodings have been implemented.
         
     | 
| 
      
 15 
     | 
    
         
            +
            - Allow forwarding `&` in a method that has a `...` parameter.
         
     | 
| 
      
 16 
     | 
    
         
            +
            - Many statements that are found in non-statement positions are being properly rejected now.
         
     | 
| 
      
 17 
     | 
    
         
            +
            - Void values are now properly checked.
         
     | 
| 
      
 18 
     | 
    
         
            +
            - Referencing a parameter in its own default value is now properly rejected.
         
     | 
| 
      
 19 
     | 
    
         
            +
            - `DATA`/`__END__` is now parsed as its own field on parse result (`data_loc`) as opposed to as a comment.
         
     | 
| 
      
 20 
     | 
    
         
            +
            - Blank `*` now properly forwards into arrays.
         
     | 
| 
      
 21 
     | 
    
         
            +
            - `ImplicitRestNode` is introduced to represent the implicit rest of a destructure.
         
     | 
| 
      
 22 
     | 
    
         
            +
            - We now support negative start lines.
         
     | 
| 
      
 23 
     | 
    
         
            +
            - `StringNode#heredoc?`, `InterpolatedStringNode#heredoc?`, `XStringNode#heredoc?`, and `InterpolatedXStringNode#heredoc?` are introduced.
         
     | 
| 
      
 24 
     | 
    
         
            +
            - `NumberedParametersNode` is introduced to represent the implicit set of parameters when numbered parameters are used.
         
     | 
| 
      
 25 
     | 
    
         
            +
            - `Prism::parse_success?` and `Prism::parse_failure?` are introduced to bypass reifying the AST.
         
     | 
| 
      
 26 
     | 
    
         
            +
            - We now emit a warning for constant assignments in method definitions.
         
     | 
| 
      
 27 
     | 
    
         
            +
            - We now provide flags on strings and xstrings to indicate the correct encoding.
         
     | 
| 
      
 28 
     | 
    
         
            +
            - The hash pattern `rest` field now more accurately parses `**` and `**nil`.
         
     | 
| 
      
 29 
     | 
    
         
            +
            - The equality operators are now properly parsed as non-associative.
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            ### Changed
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            - **BREAKING**: Many fields have changed positions within their nodes. This impacts the C API and the Ruby API if you are manually creating nodes through the initializer.
         
     | 
| 
      
 34 
     | 
    
         
            +
            - **BREAKING**: Almost all of the error messages have been updated to begin with lowercase characters to match ruby/spec.
         
     | 
| 
      
 35 
     | 
    
         
            +
            - Unterminated strings with only plain content are now always `StringNode` as opposed to `InterpolatedStringNode`
         
     | 
| 
      
 36 
     | 
    
         
            +
            - **BREAKING**: Call node has been split up when it is in the target position into `CallTargetNode` and `IndexTargetNode`.
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       9 
38 
     | 
    
         
             
            ## [0.18.0] - 2023-11-21
         
     | 
| 
       10 
39 
     | 
    
         | 
| 
       11 
40 
     | 
    
         
             
            ### Added
         
     | 
| 
         @@ -267,7 +296,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a 
     | 
|
| 
       267 
296 
     | 
    
         | 
| 
       268 
297 
     | 
    
         
             
            - 🎉 Initial release! 🎉
         
     | 
| 
       269 
298 
     | 
    
         | 
| 
       270 
     | 
    
         
            -
            [unreleased]: https://github.com/ruby/prism/compare/v0. 
     | 
| 
      
 299 
     | 
    
         
            +
            [unreleased]: https://github.com/ruby/prism/compare/v0.19.0...HEAD
         
     | 
| 
      
 300 
     | 
    
         
            +
            [0.19.0]: https://github.com/ruby/prism/compare/v0.18.0...v0.19.0
         
     | 
| 
       271 
301 
     | 
    
         
             
            [0.18.0]: https://github.com/ruby/prism/compare/v0.17.1...v0.18.0
         
     | 
| 
       272 
302 
     | 
    
         
             
            [0.17.1]: https://github.com/ruby/prism/compare/v0.17.0...v0.17.1
         
     | 
| 
       273 
303 
     | 
    
         
             
            [0.17.0]: https://github.com/ruby/prism/compare/v0.16.0...v0.17.0
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -64,7 +64,7 @@ bundle install 
     | 
|
| 
       64 
64 
     | 
    
         
             
            to fetch the Ruby dependencies. Finally, run:
         
     | 
| 
       65 
65 
     | 
    
         | 
| 
       66 
66 
     | 
    
         
             
            ```
         
     | 
| 
       67 
     | 
    
         
            -
            rake compile
         
     | 
| 
      
 67 
     | 
    
         
            +
            bundle exec rake compile
         
     | 
| 
       68 
68 
     | 
    
         
             
            ```
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         
             
            to compile the shared library. It will be built in the `build` directory. To test that everything is working, run:
         
     | 
| 
         @@ -86,6 +86,7 @@ See the [CONTRIBUTING.md](CONTRIBUTING.md) file for more information. We additio 
     | 
|
| 
       86 
86 
     | 
    
         
             
            * [Fuzzing](docs/fuzzing.md)
         
     | 
| 
       87 
87 
     | 
    
         
             
            * [Heredocs](docs/heredocs.md)
         
     | 
| 
       88 
88 
     | 
    
         
             
            * [JavaScript](docs/javascript.md)
         
     | 
| 
      
 89 
     | 
    
         
            +
            * [Local variable depth](docs/local_variable_depth.md)
         
     | 
| 
       89 
90 
     | 
    
         
             
            * [Mapping](docs/mapping.md)
         
     | 
| 
       90 
91 
     | 
    
         
             
            * [Releasing](docs/releasing.md)
         
     | 
| 
       91 
92 
     | 
    
         
             
            * [Ripper](docs/ripper.md)
         
     | 
    
        data/config.yml
    CHANGED
    
    | 
         @@ -331,27 +331,46 @@ tokens: 
     | 
|
| 
       331 
331 
     | 
    
         
             
            flags:
         
     | 
| 
       332 
332 
     | 
    
         
             
              - name: ArgumentsNodeFlags
         
     | 
| 
       333 
333 
     | 
    
         
             
                values:
         
     | 
| 
       334 
     | 
    
         
            -
                  - name:  
     | 
| 
      
 334 
     | 
    
         
            +
                  - name: CONTAINS_KEYWORD_SPLAT
         
     | 
| 
       335 
335 
     | 
    
         
             
                    comment: "if arguments contain keyword splat"
         
     | 
| 
       336 
336 
     | 
    
         
             
                comment: Flags for arguments nodes.
         
     | 
| 
      
 337 
     | 
    
         
            +
              - name: ArrayNodeFlags
         
     | 
| 
      
 338 
     | 
    
         
            +
                values:
         
     | 
| 
      
 339 
     | 
    
         
            +
                  - name: CONTAINS_SPLAT
         
     | 
| 
      
 340 
     | 
    
         
            +
                    comment: "if array contains splat nodes"
         
     | 
| 
      
 341 
     | 
    
         
            +
                comment: Flags for array nodes.
         
     | 
| 
       337 
342 
     | 
    
         
             
              - name: CallNodeFlags
         
     | 
| 
       338 
343 
     | 
    
         
             
                values:
         
     | 
| 
       339 
344 
     | 
    
         
             
                  - name: SAFE_NAVIGATION
         
     | 
| 
       340 
345 
     | 
    
         
             
                    comment: "&. operator"
         
     | 
| 
       341 
346 
     | 
    
         
             
                  - name: VARIABLE_CALL
         
     | 
| 
       342 
347 
     | 
    
         
             
                    comment: "a call that could have been a local variable"
         
     | 
| 
      
 348 
     | 
    
         
            +
                  - name: ATTRIBUTE_WRITE
         
     | 
| 
      
 349 
     | 
    
         
            +
                    comment: "a call that is an attribute write, so the value being written should be returned"
         
     | 
| 
       343 
350 
     | 
    
         
             
                comment: Flags for call nodes.
         
     | 
| 
      
 351 
     | 
    
         
            +
              - name: EncodingFlags
         
     | 
| 
      
 352 
     | 
    
         
            +
                values:
         
     | 
| 
      
 353 
     | 
    
         
            +
                  - name: FORCED_UTF8_ENCODING
         
     | 
| 
      
 354 
     | 
    
         
            +
                    comment: "internal bytes forced the encoding to UTF-8"
         
     | 
| 
      
 355 
     | 
    
         
            +
                  - name: FORCED_BINARY_ENCODING
         
     | 
| 
      
 356 
     | 
    
         
            +
                    comment: "internal bytes forced the encoding to binary"
         
     | 
| 
      
 357 
     | 
    
         
            +
                comment: Flags for nodes that have unescaped content.
         
     | 
| 
       344 
358 
     | 
    
         
             
              - name: IntegerBaseFlags
         
     | 
| 
       345 
359 
     | 
    
         
             
                values:
         
     | 
| 
       346 
360 
     | 
    
         
             
                  - name: BINARY
         
     | 
| 
       347 
361 
     | 
    
         
             
                    comment: "0b prefix"
         
     | 
| 
       348 
     | 
    
         
            -
                  - name: OCTAL
         
     | 
| 
       349 
     | 
    
         
            -
                    comment: "0o or 0 prefix"
         
     | 
| 
       350 
362 
     | 
    
         
             
                  - name: DECIMAL
         
     | 
| 
       351 
363 
     | 
    
         
             
                    comment: "0d or no prefix"
         
     | 
| 
      
 364 
     | 
    
         
            +
                  - name: OCTAL
         
     | 
| 
      
 365 
     | 
    
         
            +
                    comment: "0o or 0 prefix"
         
     | 
| 
       352 
366 
     | 
    
         
             
                  - name: HEXADECIMAL
         
     | 
| 
       353 
367 
     | 
    
         
             
                    comment: "0x prefix"
         
     | 
| 
       354 
368 
     | 
    
         
             
                comment: Flags for integer nodes that correspond to the base of the integer.
         
     | 
| 
      
 369 
     | 
    
         
            +
              - name: KeywordHashNodeFlags
         
     | 
| 
      
 370 
     | 
    
         
            +
                values:
         
     | 
| 
      
 371 
     | 
    
         
            +
                  - name: STATIC_KEYS
         
     | 
| 
      
 372 
     | 
    
         
            +
                    comment: "a keyword hash which only has `AssocNode` elements all with static literal keys, which means the elements can be treated as keyword arguments"
         
     | 
| 
      
 373 
     | 
    
         
            +
                comment: Flags for keyword hash nodes.
         
     | 
| 
       355 
374 
     | 
    
         
             
              - name: LoopFlags
         
     | 
| 
       356 
375 
     | 
    
         
             
                values:
         
     | 
| 
       357 
376 
     | 
    
         
             
                  - name: BEGIN_MODIFIER
         
     | 
| 
         @@ -380,12 +399,31 @@ flags: 
     | 
|
| 
       380 
399 
     | 
    
         
             
                    comment: "s - forces the Windows-31J encoding"
         
     | 
| 
       381 
400 
     | 
    
         
             
                  - name: UTF_8
         
     | 
| 
       382 
401 
     | 
    
         
             
                    comment: "u - forces the UTF-8 encoding"
         
     | 
| 
      
 402 
     | 
    
         
            +
                  - name: FORCED_UTF8_ENCODING
         
     | 
| 
      
 403 
     | 
    
         
            +
                    comment: "internal bytes forced the encoding to UTF-8"
         
     | 
| 
      
 404 
     | 
    
         
            +
                  - name: FORCED_BINARY_ENCODING
         
     | 
| 
      
 405 
     | 
    
         
            +
                    comment: "internal bytes forced the encoding to binary"
         
     | 
| 
      
 406 
     | 
    
         
            +
                  - name: FORCED_US_ASCII_ENCODING
         
     | 
| 
      
 407 
     | 
    
         
            +
                    comment: "internal bytes forced the encoding to US-ASCII"
         
     | 
| 
       383 
408 
     | 
    
         
             
                comment: Flags for regular expression and match last line nodes.
         
     | 
| 
       384 
409 
     | 
    
         
             
              - name: StringFlags
         
     | 
| 
       385 
410 
     | 
    
         
             
                values:
         
     | 
| 
      
 411 
     | 
    
         
            +
                  - name: FORCED_UTF8_ENCODING
         
     | 
| 
      
 412 
     | 
    
         
            +
                    comment: "internal bytes forced the encoding to UTF-8"
         
     | 
| 
      
 413 
     | 
    
         
            +
                  - name: FORCED_BINARY_ENCODING
         
     | 
| 
      
 414 
     | 
    
         
            +
                    comment: "internal bytes forced the encoding to binary"
         
     | 
| 
       386 
415 
     | 
    
         
             
                  - name: FROZEN
         
     | 
| 
       387 
416 
     | 
    
         
             
                    comment: "frozen by virtue of a `frozen_string_literal` comment"
         
     | 
| 
       388 
417 
     | 
    
         
             
                comment: Flags for string nodes.
         
     | 
| 
      
 418 
     | 
    
         
            +
              - name: SymbolFlags
         
     | 
| 
      
 419 
     | 
    
         
            +
                values:
         
     | 
| 
      
 420 
     | 
    
         
            +
                  - name: FORCED_UTF8_ENCODING
         
     | 
| 
      
 421 
     | 
    
         
            +
                    comment: "internal bytes forced the encoding to UTF-8"
         
     | 
| 
      
 422 
     | 
    
         
            +
                  - name: FORCED_BINARY_ENCODING
         
     | 
| 
      
 423 
     | 
    
         
            +
                    comment: "internal bytes forced the encoding to binary"
         
     | 
| 
      
 424 
     | 
    
         
            +
                  - name: FORCED_US_ASCII_ENCODING
         
     | 
| 
      
 425 
     | 
    
         
            +
                    comment: "internal bytes forced the encoding to US-ASCII"
         
     | 
| 
      
 426 
     | 
    
         
            +
                comment: Flags for symbol nodes.
         
     | 
| 
       389 
427 
     | 
    
         
             
            nodes:
         
     | 
| 
       390 
428 
     | 
    
         
             
              - name: AliasGlobalVariableNode
         
     | 
| 
       391 
429 
     | 
    
         
             
                fields:
         
     | 
| 
         @@ -441,11 +479,11 @@ nodes: 
     | 
|
| 
       441 
479 
     | 
    
         
             
                      ^^^^^^^^^^^^^^
         
     | 
| 
       442 
480 
     | 
    
         
             
              - name: ArgumentsNode
         
     | 
| 
       443 
481 
     | 
    
         
             
                fields:
         
     | 
| 
       444 
     | 
    
         
            -
                  - name: arguments
         
     | 
| 
       445 
     | 
    
         
            -
                    type: node[]
         
     | 
| 
       446 
482 
     | 
    
         
             
                  - name: flags
         
     | 
| 
       447 
483 
     | 
    
         
             
                    type: flags
         
     | 
| 
       448 
484 
     | 
    
         
             
                    kind: ArgumentsNodeFlags
         
     | 
| 
      
 485 
     | 
    
         
            +
                  - name: arguments
         
     | 
| 
      
 486 
     | 
    
         
            +
                    type: node[]
         
     | 
| 
       449 
487 
     | 
    
         
             
                comment: |
         
     | 
| 
       450 
488 
     | 
    
         
             
                  Represents a set of arguments to a method or a keyword.
         
     | 
| 
       451 
489 
     | 
    
         | 
| 
         @@ -453,6 +491,9 @@ nodes: 
     | 
|
| 
       453 
491 
     | 
    
         
             
                             ^^^^^^^^^^^^^
         
     | 
| 
       454 
492 
     | 
    
         
             
              - name: ArrayNode
         
     | 
| 
       455 
493 
     | 
    
         
             
                fields:
         
     | 
| 
      
 494 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 495 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 496 
     | 
    
         
            +
                    kind: ArrayNodeFlags
         
     | 
| 
       456 
497 
     | 
    
         
             
                  - name: elements
         
     | 
| 
       457 
498 
     | 
    
         
             
                    type: node[]
         
     | 
| 
       458 
499 
     | 
    
         
             
                  - name: opening_loc
         
     | 
| 
         @@ -579,9 +620,10 @@ nodes: 
     | 
|
| 
       579 
620 
     | 
    
         
             
                fields:
         
     | 
| 
       580 
621 
     | 
    
         
             
                  - name: locals
         
     | 
| 
       581 
622 
     | 
    
         
             
                    type: constant[]
         
     | 
| 
      
 623 
     | 
    
         
            +
                  - name: locals_body_index
         
     | 
| 
      
 624 
     | 
    
         
            +
                    type: uint32
         
     | 
| 
       582 
625 
     | 
    
         
             
                  - name: parameters
         
     | 
| 
       583 
626 
     | 
    
         
             
                    type: node?
         
     | 
| 
       584 
     | 
    
         
            -
                    kind: BlockParametersNode
         
     | 
| 
       585 
627 
     | 
    
         
             
                  - name: body
         
     | 
| 
       586 
628 
     | 
    
         
             
                    type: node?
         
     | 
| 
       587 
629 
     | 
    
         
             
                  - name: opening_loc
         
     | 
| 
         @@ -641,15 +683,15 @@ nodes: 
     | 
|
| 
       641 
683 
     | 
    
         
             
                      ^^^^^^^^^
         
     | 
| 
       642 
684 
     | 
    
         
             
              - name: CallAndWriteNode
         
     | 
| 
       643 
685 
     | 
    
         
             
                fields:
         
     | 
| 
      
 686 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 687 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 688 
     | 
    
         
            +
                    kind: CallNodeFlags
         
     | 
| 
       644 
689 
     | 
    
         
             
                  - name: receiver
         
     | 
| 
       645 
690 
     | 
    
         
             
                    type: node?
         
     | 
| 
       646 
691 
     | 
    
         
             
                  - name: call_operator_loc
         
     | 
| 
       647 
692 
     | 
    
         
             
                    type: location?
         
     | 
| 
       648 
693 
     | 
    
         
             
                  - name: message_loc
         
     | 
| 
       649 
694 
     | 
    
         
             
                    type: location?
         
     | 
| 
       650 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       651 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       652 
     | 
    
         
            -
                    kind: CallNodeFlags
         
     | 
| 
       653 
695 
     | 
    
         
             
                  - name: read_name
         
     | 
| 
       654 
696 
     | 
    
         
             
                    type: constant
         
     | 
| 
       655 
697 
     | 
    
         
             
                  - name: write_name
         
     | 
| 
         @@ -665,10 +707,15 @@ nodes: 
     | 
|
| 
       665 
707 
     | 
    
         
             
                      ^^^^^^^^^^^^^^^^^
         
     | 
| 
       666 
708 
     | 
    
         
             
              - name: CallNode
         
     | 
| 
       667 
709 
     | 
    
         
             
                fields:
         
     | 
| 
      
 710 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 711 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 712 
     | 
    
         
            +
                    kind: CallNodeFlags
         
     | 
| 
       668 
713 
     | 
    
         
             
                  - name: receiver
         
     | 
| 
       669 
714 
     | 
    
         
             
                    type: node?
         
     | 
| 
       670 
715 
     | 
    
         
             
                  - name: call_operator_loc
         
     | 
| 
       671 
716 
     | 
    
         
             
                    type: location?
         
     | 
| 
      
 717 
     | 
    
         
            +
                  - name: name
         
     | 
| 
      
 718 
     | 
    
         
            +
                    type: constant
         
     | 
| 
       672 
719 
     | 
    
         
             
                  - name: message_loc
         
     | 
| 
       673 
720 
     | 
    
         
             
                    type: location?
         
     | 
| 
       674 
721 
     | 
    
         
             
                  - name: opening_loc
         
     | 
| 
         @@ -680,11 +727,6 @@ nodes: 
     | 
|
| 
       680 
727 
     | 
    
         
             
                    type: location?
         
     | 
| 
       681 
728 
     | 
    
         
             
                  - name: block
         
     | 
| 
       682 
729 
     | 
    
         
             
                    type: node?
         
     | 
| 
       683 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       684 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       685 
     | 
    
         
            -
                    kind: CallNodeFlags
         
     | 
| 
       686 
     | 
    
         
            -
                  - name: name
         
     | 
| 
       687 
     | 
    
         
            -
                    type: constant
         
     | 
| 
       688 
730 
     | 
    
         
             
                comment: |
         
     | 
| 
       689 
731 
     | 
    
         
             
                  Represents a method call, in all of the various forms that can take.
         
     | 
| 
       690 
732 
     | 
    
         | 
| 
         @@ -707,15 +749,15 @@ nodes: 
     | 
|
| 
       707 
749 
     | 
    
         
             
                      ^^^^^^^^
         
     | 
| 
       708 
750 
     | 
    
         
             
              - name: CallOperatorWriteNode
         
     | 
| 
       709 
751 
     | 
    
         
             
                fields:
         
     | 
| 
      
 752 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 753 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 754 
     | 
    
         
            +
                    kind: CallNodeFlags
         
     | 
| 
       710 
755 
     | 
    
         
             
                  - name: receiver
         
     | 
| 
       711 
756 
     | 
    
         
             
                    type: node?
         
     | 
| 
       712 
757 
     | 
    
         
             
                  - name: call_operator_loc
         
     | 
| 
       713 
758 
     | 
    
         
             
                    type: location?
         
     | 
| 
       714 
759 
     | 
    
         
             
                  - name: message_loc
         
     | 
| 
       715 
760 
     | 
    
         
             
                    type: location?
         
     | 
| 
       716 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       717 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       718 
     | 
    
         
            -
                    kind: CallNodeFlags
         
     | 
| 
       719 
761 
     | 
    
         
             
                  - name: read_name
         
     | 
| 
       720 
762 
     | 
    
         
             
                    type: constant
         
     | 
| 
       721 
763 
     | 
    
         
             
                  - name: write_name
         
     | 
| 
         @@ -733,15 +775,15 @@ nodes: 
     | 
|
| 
       733 
775 
     | 
    
         
             
                      ^^^^^^^^^^^^^^
         
     | 
| 
       734 
776 
     | 
    
         
             
              - name: CallOrWriteNode
         
     | 
| 
       735 
777 
     | 
    
         
             
                fields:
         
     | 
| 
      
 778 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 779 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 780 
     | 
    
         
            +
                    kind: CallNodeFlags
         
     | 
| 
       736 
781 
     | 
    
         
             
                  - name: receiver
         
     | 
| 
       737 
782 
     | 
    
         
             
                    type: node?
         
     | 
| 
       738 
783 
     | 
    
         
             
                  - name: call_operator_loc
         
     | 
| 
       739 
784 
     | 
    
         
             
                    type: location?
         
     | 
| 
       740 
785 
     | 
    
         
             
                  - name: message_loc
         
     | 
| 
       741 
786 
     | 
    
         
             
                    type: location?
         
     | 
| 
       742 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       743 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       744 
     | 
    
         
            -
                    kind: CallNodeFlags
         
     | 
| 
       745 
787 
     | 
    
         
             
                  - name: read_name
         
     | 
| 
       746 
788 
     | 
    
         
             
                    type: constant
         
     | 
| 
       747 
789 
     | 
    
         
             
                  - name: write_name
         
     | 
| 
         @@ -755,6 +797,32 @@ nodes: 
     | 
|
| 
       755 
797 
     | 
    
         | 
| 
       756 
798 
     | 
    
         
             
                      foo.bar ||= value
         
     | 
| 
       757 
799 
     | 
    
         
             
                      ^^^^^^^^^^^^^^^^^
         
     | 
| 
      
 800 
     | 
    
         
            +
              - name: CallTargetNode
         
     | 
| 
      
 801 
     | 
    
         
            +
                fields:
         
     | 
| 
      
 802 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 803 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 804 
     | 
    
         
            +
                    kind: CallNodeFlags
         
     | 
| 
      
 805 
     | 
    
         
            +
                  - name: receiver
         
     | 
| 
      
 806 
     | 
    
         
            +
                    type: node
         
     | 
| 
      
 807 
     | 
    
         
            +
                  - name: call_operator_loc
         
     | 
| 
      
 808 
     | 
    
         
            +
                    type: location
         
     | 
| 
      
 809 
     | 
    
         
            +
                  - name: name
         
     | 
| 
      
 810 
     | 
    
         
            +
                    type: constant
         
     | 
| 
      
 811 
     | 
    
         
            +
                  - name: message_loc
         
     | 
| 
      
 812 
     | 
    
         
            +
                    type: location
         
     | 
| 
      
 813 
     | 
    
         
            +
                comment: |
         
     | 
| 
      
 814 
     | 
    
         
            +
                  Represents assigning to a method call.
         
     | 
| 
      
 815 
     | 
    
         
            +
             
     | 
| 
      
 816 
     | 
    
         
            +
                      foo.bar, = 1
         
     | 
| 
      
 817 
     | 
    
         
            +
                      ^^^^^^^
         
     | 
| 
      
 818 
     | 
    
         
            +
             
     | 
| 
      
 819 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 820 
     | 
    
         
            +
                      rescue => foo.bar
         
     | 
| 
      
 821 
     | 
    
         
            +
                                ^^^^^^^
         
     | 
| 
      
 822 
     | 
    
         
            +
                      end
         
     | 
| 
      
 823 
     | 
    
         
            +
             
     | 
| 
      
 824 
     | 
    
         
            +
                      for foo.bar in baz do end
         
     | 
| 
      
 825 
     | 
    
         
            +
                          ^^^^^^^
         
     | 
| 
       758 
826 
     | 
    
         
             
              - name: CapturePatternNode
         
     | 
| 
       759 
827 
     | 
    
         
             
                fields:
         
     | 
| 
       760 
828 
     | 
    
         
             
                  - name: value
         
     | 
| 
         @@ -1096,6 +1164,8 @@ nodes: 
     | 
|
| 
       1096 
1164 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1097 
1165 
     | 
    
         
             
                  - name: locals
         
     | 
| 
       1098 
1166 
     | 
    
         
             
                    type: constant[]
         
     | 
| 
      
 1167 
     | 
    
         
            +
                  - name: locals_body_index
         
     | 
| 
      
 1168 
     | 
    
         
            +
                    type: uint32
         
     | 
| 
       1099 
1169 
     | 
    
         
             
                  - name: def_keyword_loc
         
     | 
| 
       1100 
1170 
     | 
    
         
             
                    type: location
         
     | 
| 
       1101 
1171 
     | 
    
         
             
                  - name: operator_loc
         
     | 
| 
         @@ -1219,15 +1289,15 @@ nodes: 
     | 
|
| 
       1219 
1289 
     | 
    
         
             
                             ^^^^^^^^^^^^^^^^^^^^
         
     | 
| 
       1220 
1290 
     | 
    
         
             
              - name: FlipFlopNode
         
     | 
| 
       1221 
1291 
     | 
    
         
             
                fields:
         
     | 
| 
      
 1292 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 1293 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 1294 
     | 
    
         
            +
                    kind: RangeFlags
         
     | 
| 
       1222 
1295 
     | 
    
         
             
                  - name: left
         
     | 
| 
       1223 
1296 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1224 
1297 
     | 
    
         
             
                  - name: right
         
     | 
| 
       1225 
1298 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1226 
1299 
     | 
    
         
             
                  - name: operator_loc
         
     | 
| 
       1227 
1300 
     | 
    
         
             
                    type: location
         
     | 
| 
       1228 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       1229 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       1230 
     | 
    
         
            -
                    kind: RangeFlags
         
     | 
| 
       1231 
1301 
     | 
    
         
             
                comment: |
         
     | 
| 
       1232 
1302 
     | 
    
         
             
                  Represents the use of the `..` or `...` operators to create flip flops.
         
     | 
| 
       1233 
1303 
     | 
    
         | 
| 
         @@ -1445,6 +1515,21 @@ nodes: 
     | 
|
| 
       1445 
1515 
     | 
    
         | 
| 
       1446 
1516 
     | 
    
         
             
                      { Foo: }
         
     | 
| 
       1447 
1517 
     | 
    
         
             
                        ^^^^
         
     | 
| 
      
 1518 
     | 
    
         
            +
              - name: ImplicitRestNode
         
     | 
| 
      
 1519 
     | 
    
         
            +
                comment: |
         
     | 
| 
      
 1520 
     | 
    
         
            +
                  Represents using a trailing comma to indicate an implicit rest parameter.
         
     | 
| 
      
 1521 
     | 
    
         
            +
             
     | 
| 
      
 1522 
     | 
    
         
            +
                      foo { |bar,| }
         
     | 
| 
      
 1523 
     | 
    
         
            +
                                ^
         
     | 
| 
      
 1524 
     | 
    
         
            +
             
     | 
| 
      
 1525 
     | 
    
         
            +
                      foo in [bar,]
         
     | 
| 
      
 1526 
     | 
    
         
            +
                                 ^
         
     | 
| 
      
 1527 
     | 
    
         
            +
             
     | 
| 
      
 1528 
     | 
    
         
            +
                      for foo, in bar do end
         
     | 
| 
      
 1529 
     | 
    
         
            +
                             ^
         
     | 
| 
      
 1530 
     | 
    
         
            +
             
     | 
| 
      
 1531 
     | 
    
         
            +
                      foo, = bar
         
     | 
| 
      
 1532 
     | 
    
         
            +
                         ^
         
     | 
| 
       1448 
1533 
     | 
    
         
             
              - name: InNode
         
     | 
| 
       1449 
1534 
     | 
    
         
             
                fields:
         
     | 
| 
       1450 
1535 
     | 
    
         
             
                  - name: pattern
         
     | 
| 
         @@ -1463,6 +1548,9 @@ nodes: 
     | 
|
| 
       1463 
1548 
     | 
    
         
             
                              ^^^^^^^^^^^
         
     | 
| 
       1464 
1549 
     | 
    
         
             
              - name: IndexAndWriteNode
         
     | 
| 
       1465 
1550 
     | 
    
         
             
                fields:
         
     | 
| 
      
 1551 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 1552 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 1553 
     | 
    
         
            +
                    kind: CallNodeFlags
         
     | 
| 
       1466 
1554 
     | 
    
         
             
                  - name: receiver
         
     | 
| 
       1467 
1555 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1468 
1556 
     | 
    
         
             
                  - name: call_operator_loc
         
     | 
| 
         @@ -1476,9 +1564,6 @@ nodes: 
     | 
|
| 
       1476 
1564 
     | 
    
         
             
                    type: location
         
     | 
| 
       1477 
1565 
     | 
    
         
             
                  - name: block
         
     | 
| 
       1478 
1566 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1479 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       1480 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       1481 
     | 
    
         
            -
                    kind: CallNodeFlags
         
     | 
| 
       1482 
1567 
     | 
    
         
             
                  - name: operator_loc
         
     | 
| 
       1483 
1568 
     | 
    
         
             
                    type: location
         
     | 
| 
       1484 
1569 
     | 
    
         
             
                  - name: value
         
     | 
| 
         @@ -1490,6 +1575,9 @@ nodes: 
     | 
|
| 
       1490 
1575 
     | 
    
         
             
                      ^^^^^^^^^^^^^^^^^^^^^^
         
     | 
| 
       1491 
1576 
     | 
    
         
             
              - name: IndexOperatorWriteNode
         
     | 
| 
       1492 
1577 
     | 
    
         
             
                fields:
         
     | 
| 
      
 1578 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 1579 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 1580 
     | 
    
         
            +
                    kind: CallNodeFlags
         
     | 
| 
       1493 
1581 
     | 
    
         
             
                  - name: receiver
         
     | 
| 
       1494 
1582 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1495 
1583 
     | 
    
         
             
                  - name: call_operator_loc
         
     | 
| 
         @@ -1503,9 +1591,6 @@ nodes: 
     | 
|
| 
       1503 
1591 
     | 
    
         
             
                    type: location
         
     | 
| 
       1504 
1592 
     | 
    
         
             
                  - name: block
         
     | 
| 
       1505 
1593 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1506 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       1507 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       1508 
     | 
    
         
            -
                    kind: CallNodeFlags
         
     | 
| 
       1509 
1594 
     | 
    
         
             
                  - name: operator
         
     | 
| 
       1510 
1595 
     | 
    
         
             
                    type: constant
         
     | 
| 
       1511 
1596 
     | 
    
         
             
                  - name: operator_loc
         
     | 
| 
         @@ -1519,6 +1604,9 @@ nodes: 
     | 
|
| 
       1519 
1604 
     | 
    
         
             
                      ^^^^^^^^^^^^^^^^^^^^^
         
     | 
| 
       1520 
1605 
     | 
    
         
             
              - name: IndexOrWriteNode
         
     | 
| 
       1521 
1606 
     | 
    
         
             
                fields:
         
     | 
| 
      
 1607 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 1608 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 1609 
     | 
    
         
            +
                    kind: CallNodeFlags
         
     | 
| 
       1522 
1610 
     | 
    
         
             
                  - name: receiver
         
     | 
| 
       1523 
1611 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1524 
1612 
     | 
    
         
             
                  - name: call_operator_loc
         
     | 
| 
         @@ -1532,9 +1620,6 @@ nodes: 
     | 
|
| 
       1532 
1620 
     | 
    
         
             
                    type: location
         
     | 
| 
       1533 
1621 
     | 
    
         
             
                  - name: block
         
     | 
| 
       1534 
1622 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1535 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       1536 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       1537 
     | 
    
         
            -
                    kind: CallNodeFlags
         
     | 
| 
       1538 
1623 
     | 
    
         
             
                  - name: operator_loc
         
     | 
| 
       1539 
1624 
     | 
    
         
             
                    type: location
         
     | 
| 
       1540 
1625 
     | 
    
         
             
                  - name: value
         
     | 
| 
         @@ -1544,6 +1629,35 @@ nodes: 
     | 
|
| 
       1544 
1629 
     | 
    
         | 
| 
       1545 
1630 
     | 
    
         
             
                      foo.bar[baz] ||= value
         
     | 
| 
       1546 
1631 
     | 
    
         
             
                      ^^^^^^^^^^^^^^^^^^^^^^
         
     | 
| 
      
 1632 
     | 
    
         
            +
              - name: IndexTargetNode
         
     | 
| 
      
 1633 
     | 
    
         
            +
                fields:
         
     | 
| 
      
 1634 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 1635 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 1636 
     | 
    
         
            +
                    kind: CallNodeFlags
         
     | 
| 
      
 1637 
     | 
    
         
            +
                  - name: receiver
         
     | 
| 
      
 1638 
     | 
    
         
            +
                    type: node
         
     | 
| 
      
 1639 
     | 
    
         
            +
                  - name: opening_loc
         
     | 
| 
      
 1640 
     | 
    
         
            +
                    type: location
         
     | 
| 
      
 1641 
     | 
    
         
            +
                  - name: arguments
         
     | 
| 
      
 1642 
     | 
    
         
            +
                    type: node?
         
     | 
| 
      
 1643 
     | 
    
         
            +
                    kind: ArgumentsNode
         
     | 
| 
      
 1644 
     | 
    
         
            +
                  - name: closing_loc
         
     | 
| 
      
 1645 
     | 
    
         
            +
                    type: location
         
     | 
| 
      
 1646 
     | 
    
         
            +
                  - name: block
         
     | 
| 
      
 1647 
     | 
    
         
            +
                    type: node?
         
     | 
| 
      
 1648 
     | 
    
         
            +
                comment: |
         
     | 
| 
      
 1649 
     | 
    
         
            +
                  Represents assigning to an index.
         
     | 
| 
      
 1650 
     | 
    
         
            +
             
     | 
| 
      
 1651 
     | 
    
         
            +
                      foo[bar], = 1
         
     | 
| 
      
 1652 
     | 
    
         
            +
                      ^^^^^^^^
         
     | 
| 
      
 1653 
     | 
    
         
            +
             
     | 
| 
      
 1654 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 1655 
     | 
    
         
            +
                      rescue => foo[bar]
         
     | 
| 
      
 1656 
     | 
    
         
            +
                                ^^^^^^^^
         
     | 
| 
      
 1657 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1658 
     | 
    
         
            +
             
     | 
| 
      
 1659 
     | 
    
         
            +
                      for foo[bar] in baz do end
         
     | 
| 
      
 1660 
     | 
    
         
            +
                          ^^^^^^^^
         
     | 
| 
       1547 
1661 
     | 
    
         
             
              - name: InstanceVariableAndWriteNode
         
     | 
| 
       1548 
1662 
     | 
    
         
             
                fields:
         
     | 
| 
       1549 
1663 
     | 
    
         
             
                  - name: name
         
     | 
| 
         @@ -1636,15 +1750,15 @@ nodes: 
     | 
|
| 
       1636 
1750 
     | 
    
         
             
                      ^
         
     | 
| 
       1637 
1751 
     | 
    
         
             
              - name: InterpolatedMatchLastLineNode
         
     | 
| 
       1638 
1752 
     | 
    
         
             
                fields:
         
     | 
| 
      
 1753 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 1754 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 1755 
     | 
    
         
            +
                    kind: RegularExpressionFlags
         
     | 
| 
       1639 
1756 
     | 
    
         
             
                  - name: opening_loc
         
     | 
| 
       1640 
1757 
     | 
    
         
             
                    type: location
         
     | 
| 
       1641 
1758 
     | 
    
         
             
                  - name: parts
         
     | 
| 
       1642 
1759 
     | 
    
         
             
                    type: node[]
         
     | 
| 
       1643 
1760 
     | 
    
         
             
                  - name: closing_loc
         
     | 
| 
       1644 
1761 
     | 
    
         
             
                    type: location
         
     | 
| 
       1645 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       1646 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       1647 
     | 
    
         
            -
                    kind: RegularExpressionFlags
         
     | 
| 
       1648 
1762 
     | 
    
         
             
                newline: parts
         
     | 
| 
       1649 
1763 
     | 
    
         
             
                comment: |
         
     | 
| 
       1650 
1764 
     | 
    
         
             
                  Represents a regular expression literal that contains interpolation that
         
     | 
| 
         @@ -1655,15 +1769,15 @@ nodes: 
     | 
|
| 
       1655 
1769 
     | 
    
         
             
                         ^^^^^^^^^^^^^^^^
         
     | 
| 
       1656 
1770 
     | 
    
         
             
              - name: InterpolatedRegularExpressionNode
         
     | 
| 
       1657 
1771 
     | 
    
         
             
                fields:
         
     | 
| 
      
 1772 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 1773 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 1774 
     | 
    
         
            +
                    kind: RegularExpressionFlags
         
     | 
| 
       1658 
1775 
     | 
    
         
             
                  - name: opening_loc
         
     | 
| 
       1659 
1776 
     | 
    
         
             
                    type: location
         
     | 
| 
       1660 
1777 
     | 
    
         
             
                  - name: parts
         
     | 
| 
       1661 
1778 
     | 
    
         
             
                    type: node[]
         
     | 
| 
       1662 
1779 
     | 
    
         
             
                  - name: closing_loc
         
     | 
| 
       1663 
1780 
     | 
    
         
             
                    type: location
         
     | 
| 
       1664 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       1665 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       1666 
     | 
    
         
            -
                    kind: RegularExpressionFlags
         
     | 
| 
       1667 
1781 
     | 
    
         
             
                newline: parts
         
     | 
| 
       1668 
1782 
     | 
    
         
             
                comment: |
         
     | 
| 
       1669 
1783 
     | 
    
         
             
                  Represents a regular expression literal that contains interpolation.
         
     | 
| 
         @@ -1714,6 +1828,9 @@ nodes: 
     | 
|
| 
       1714 
1828 
     | 
    
         
             
                      ^^^^^^^^^^^^^^^^
         
     | 
| 
       1715 
1829 
     | 
    
         
             
              - name: KeywordHashNode
         
     | 
| 
       1716 
1830 
     | 
    
         
             
                fields:
         
     | 
| 
      
 1831 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 1832 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 1833 
     | 
    
         
            +
                    kind: KeywordHashNodeFlags
         
     | 
| 
       1717 
1834 
     | 
    
         
             
                  - name: elements
         
     | 
| 
       1718 
1835 
     | 
    
         
             
                    type: node[]
         
     | 
| 
       1719 
1836 
     | 
    
         
             
                comment: |
         
     | 
| 
         @@ -1739,6 +1856,8 @@ nodes: 
     | 
|
| 
       1739 
1856 
     | 
    
         
             
                fields:
         
     | 
| 
       1740 
1857 
     | 
    
         
             
                  - name: locals
         
     | 
| 
       1741 
1858 
     | 
    
         
             
                    type: constant[]
         
     | 
| 
      
 1859 
     | 
    
         
            +
                  - name: locals_body_index
         
     | 
| 
      
 1860 
     | 
    
         
            +
                    type: uint32
         
     | 
| 
       1742 
1861 
     | 
    
         
             
                  - name: operator_loc
         
     | 
| 
       1743 
1862 
     | 
    
         
             
                    type: location
         
     | 
| 
       1744 
1863 
     | 
    
         
             
                  - name: opening_loc
         
     | 
| 
         @@ -1747,7 +1866,6 @@ nodes: 
     | 
|
| 
       1747 
1866 
     | 
    
         
             
                    type: location
         
     | 
| 
       1748 
1867 
     | 
    
         
             
                  - name: parameters
         
     | 
| 
       1749 
1868 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1750 
     | 
    
         
            -
                    kind: BlockParametersNode
         
     | 
| 
       1751 
1869 
     | 
    
         
             
                  - name: body
         
     | 
| 
       1752 
1870 
     | 
    
         
             
                    type: node?
         
     | 
| 
       1753 
1871 
     | 
    
         
             
                comment: |
         
     | 
| 
         @@ -1851,6 +1969,9 @@ nodes: 
     | 
|
| 
       1851 
1969 
     | 
    
         
             
                      ^^^^^^^
         
     | 
| 
       1852 
1970 
     | 
    
         
             
              - name: MatchLastLineNode
         
     | 
| 
       1853 
1971 
     | 
    
         
             
                fields:
         
     | 
| 
      
 1972 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 1973 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 1974 
     | 
    
         
            +
                    kind: RegularExpressionFlags
         
     | 
| 
       1854 
1975 
     | 
    
         
             
                  - name: opening_loc
         
     | 
| 
       1855 
1976 
     | 
    
         
             
                    type: location
         
     | 
| 
       1856 
1977 
     | 
    
         
             
                  - name: content_loc
         
     | 
| 
         @@ -1859,9 +1980,6 @@ nodes: 
     | 
|
| 
       1859 
1980 
     | 
    
         
             
                    type: location
         
     | 
| 
       1860 
1981 
     | 
    
         
             
                  - name: unescaped
         
     | 
| 
       1861 
1982 
     | 
    
         
             
                    type: string
         
     | 
| 
       1862 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       1863 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       1864 
     | 
    
         
            -
                    kind: RegularExpressionFlags
         
     | 
| 
       1865 
1983 
     | 
    
         
             
                comment: |
         
     | 
| 
       1866 
1984 
     | 
    
         
             
                  Represents a regular expression literal used in the predicate of a
         
     | 
| 
       1867 
1985 
     | 
    
         
             
                  conditional to implicitly match against the last line read by an IO
         
     | 
| 
         @@ -1999,6 +2117,16 @@ nodes: 
     | 
|
| 
       1999 
2117 
     | 
    
         
             
                      def a(**nil)
         
     | 
| 
       2000 
2118 
     | 
    
         
             
                            ^^^^^
         
     | 
| 
       2001 
2119 
     | 
    
         
             
                      end
         
     | 
| 
      
 2120 
     | 
    
         
            +
              - name: NumberedParametersNode
         
     | 
| 
      
 2121 
     | 
    
         
            +
                fields:
         
     | 
| 
      
 2122 
     | 
    
         
            +
                  - name: maximum
         
     | 
| 
      
 2123 
     | 
    
         
            +
                    type: uint8
         
     | 
| 
      
 2124 
     | 
    
         
            +
                comment: |
         
     | 
| 
      
 2125 
     | 
    
         
            +
                  Represents an implicit set of parameters through the use of numbered
         
     | 
| 
      
 2126 
     | 
    
         
            +
                  parameters within a block or lambda.
         
     | 
| 
      
 2127 
     | 
    
         
            +
             
     | 
| 
      
 2128 
     | 
    
         
            +
                      -> { _1 + _2 }
         
     | 
| 
      
 2129 
     | 
    
         
            +
                      ^^^^^^^^^^^^^^
         
     | 
| 
       2002 
2130 
     | 
    
         
             
              - name: NumberedReferenceReadNode
         
     | 
| 
       2003 
2131 
     | 
    
         
             
                fields:
         
     | 
| 
       2004 
2132 
     | 
    
         
             
                  - name: number
         
     | 
| 
         @@ -2059,7 +2187,6 @@ nodes: 
     | 
|
| 
       2059 
2187 
     | 
    
         
             
                    type: node[]
         
     | 
| 
       2060 
2188 
     | 
    
         
             
                  - name: rest
         
     | 
| 
       2061 
2189 
     | 
    
         
             
                    type: node?
         
     | 
| 
       2062 
     | 
    
         
            -
                    kind: RestParameterNode
         
     | 
| 
       2063 
2190 
     | 
    
         
             
                  - name: posts
         
     | 
| 
       2064 
2191 
     | 
    
         
             
                    type: node[]
         
     | 
| 
       2065 
2192 
     | 
    
         
             
                  - name: keywords
         
     | 
| 
         @@ -2159,15 +2286,15 @@ nodes: 
     | 
|
| 
       2159 
2286 
     | 
    
         
             
                comment: The top level node of any parse tree.
         
     | 
| 
       2160 
2287 
     | 
    
         
             
              - name: RangeNode
         
     | 
| 
       2161 
2288 
     | 
    
         
             
                fields:
         
     | 
| 
      
 2289 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 2290 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 2291 
     | 
    
         
            +
                    kind: RangeFlags
         
     | 
| 
       2162 
2292 
     | 
    
         
             
                  - name: left
         
     | 
| 
       2163 
2293 
     | 
    
         
             
                    type: node?
         
     | 
| 
       2164 
2294 
     | 
    
         
             
                  - name: right
         
     | 
| 
       2165 
2295 
     | 
    
         
             
                    type: node?
         
     | 
| 
       2166 
2296 
     | 
    
         
             
                  - name: operator_loc
         
     | 
| 
       2167 
2297 
     | 
    
         
             
                    type: location
         
     | 
| 
       2168 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       2169 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       2170 
     | 
    
         
            -
                    kind: RangeFlags
         
     | 
| 
       2171 
2298 
     | 
    
         
             
                comment: |
         
     | 
| 
       2172 
2299 
     | 
    
         
             
                  Represents the use of the `..` or `...` operators.
         
     | 
| 
       2173 
2300 
     | 
    
         | 
| 
         @@ -2193,6 +2320,9 @@ nodes: 
     | 
|
| 
       2193 
2320 
     | 
    
         
             
                      ^^^^
         
     | 
| 
       2194 
2321 
     | 
    
         
             
              - name: RegularExpressionNode
         
     | 
| 
       2195 
2322 
     | 
    
         
             
                fields:
         
     | 
| 
      
 2323 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 2324 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 2325 
     | 
    
         
            +
                    kind: RegularExpressionFlags
         
     | 
| 
       2196 
2326 
     | 
    
         
             
                  - name: opening_loc
         
     | 
| 
       2197 
2327 
     | 
    
         
             
                    type: location
         
     | 
| 
       2198 
2328 
     | 
    
         
             
                  - name: content_loc
         
     | 
| 
         @@ -2201,9 +2331,6 @@ nodes: 
     | 
|
| 
       2201 
2331 
     | 
    
         
             
                    type: location
         
     | 
| 
       2202 
2332 
     | 
    
         
             
                  - name: unescaped
         
     | 
| 
       2203 
2333 
     | 
    
         
             
                    type: string
         
     | 
| 
       2204 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       2205 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       2206 
     | 
    
         
            -
                    kind: RegularExpressionFlags
         
     | 
| 
       2207 
2334 
     | 
    
         
             
                comment: |
         
     | 
| 
       2208 
2335 
     | 
    
         
             
                  Represents a regular expression literal with no interpolation.
         
     | 
| 
       2209 
2336 
     | 
    
         | 
| 
         @@ -2418,6 +2545,9 @@ nodes: 
     | 
|
| 
       2418 
2545 
     | 
    
         
             
                      ^^^^^^^^^^^^^^
         
     | 
| 
       2419 
2546 
     | 
    
         
             
              - name: SymbolNode
         
     | 
| 
       2420 
2547 
     | 
    
         
             
                fields:
         
     | 
| 
      
 2548 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 2549 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 2550 
     | 
    
         
            +
                    kind: SymbolFlags
         
     | 
| 
       2421 
2551 
     | 
    
         
             
                  - name: opening_loc
         
     | 
| 
       2422 
2552 
     | 
    
         
             
                    type: location?
         
     | 
| 
       2423 
2553 
     | 
    
         
             
                  - name: value_loc
         
     | 
| 
         @@ -2478,6 +2608,9 @@ nodes: 
     | 
|
| 
       2478 
2608 
     | 
    
         
             
                      ^^^^^^^^^^^^^^^^^^^^^^^
         
     | 
| 
       2479 
2609 
     | 
    
         
             
              - name: UntilNode
         
     | 
| 
       2480 
2610 
     | 
    
         
             
                fields:
         
     | 
| 
      
 2611 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 2612 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 2613 
     | 
    
         
            +
                    kind: LoopFlags
         
     | 
| 
       2481 
2614 
     | 
    
         
             
                  - name: keyword_loc
         
     | 
| 
       2482 
2615 
     | 
    
         
             
                    type: location
         
     | 
| 
       2483 
2616 
     | 
    
         
             
                  - name: closing_loc
         
     | 
| 
         @@ -2487,9 +2620,6 @@ nodes: 
     | 
|
| 
       2487 
2620 
     | 
    
         
             
                  - name: statements
         
     | 
| 
       2488 
2621 
     | 
    
         
             
                    type: node?
         
     | 
| 
       2489 
2622 
     | 
    
         
             
                    kind: StatementsNode
         
     | 
| 
       2490 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       2491 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       2492 
     | 
    
         
            -
                    kind: LoopFlags
         
     | 
| 
       2493 
2623 
     | 
    
         
             
                newline: predicate
         
     | 
| 
       2494 
2624 
     | 
    
         
             
                comment: |
         
     | 
| 
       2495 
2625 
     | 
    
         
             
                  Represents the use of the `until` keyword, either in the block form or the modifier form.
         
     | 
| 
         @@ -2517,6 +2647,9 @@ nodes: 
     | 
|
| 
       2517 
2647 
     | 
    
         
             
                      end
         
     | 
| 
       2518 
2648 
     | 
    
         
             
              - name: WhileNode
         
     | 
| 
       2519 
2649 
     | 
    
         
             
                fields:
         
     | 
| 
      
 2650 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 2651 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 2652 
     | 
    
         
            +
                    kind: LoopFlags
         
     | 
| 
       2520 
2653 
     | 
    
         
             
                  - name: keyword_loc
         
     | 
| 
       2521 
2654 
     | 
    
         
             
                    type: location
         
     | 
| 
       2522 
2655 
     | 
    
         
             
                  - name: closing_loc
         
     | 
| 
         @@ -2526,9 +2659,6 @@ nodes: 
     | 
|
| 
       2526 
2659 
     | 
    
         
             
                  - name: statements
         
     | 
| 
       2527 
2660 
     | 
    
         
             
                    type: node?
         
     | 
| 
       2528 
2661 
     | 
    
         
             
                    kind: StatementsNode
         
     | 
| 
       2529 
     | 
    
         
            -
                  - name: flags
         
     | 
| 
       2530 
     | 
    
         
            -
                    type: flags
         
     | 
| 
       2531 
     | 
    
         
            -
                    kind: LoopFlags
         
     | 
| 
       2532 
2662 
     | 
    
         
             
                newline: predicate
         
     | 
| 
       2533 
2663 
     | 
    
         
             
                comment: |
         
     | 
| 
       2534 
2664 
     | 
    
         
             
                  Represents the use of the `while` keyword, either in the block form or the modifier form.
         
     | 
| 
         @@ -2540,6 +2670,9 @@ nodes: 
     | 
|
| 
       2540 
2670 
     | 
    
         
             
                      ^^^^^^^^^^^^^^^^^^^^
         
     | 
| 
       2541 
2671 
     | 
    
         
             
              - name: XStringNode
         
     | 
| 
       2542 
2672 
     | 
    
         
             
                fields:
         
     | 
| 
      
 2673 
     | 
    
         
            +
                  - name: flags
         
     | 
| 
      
 2674 
     | 
    
         
            +
                    type: flags
         
     | 
| 
      
 2675 
     | 
    
         
            +
                    kind: EncodingFlags
         
     | 
| 
       2543 
2676 
     | 
    
         
             
                  - name: opening_loc
         
     | 
| 
       2544 
2677 
     | 
    
         
             
                    type: location
         
     | 
| 
       2545 
2678 
     | 
    
         
             
                  - name: content_loc
         
     | 
    
        data/docs/building.md
    CHANGED
    
    | 
         @@ -1,7 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Building
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            The following describes how to build prism from source.
         
     | 
| 
       4 
     | 
    
         
            -
            This comes directly from the [Makefile](../Makefile).
         
     | 
| 
      
 3 
     | 
    
         
            +
            The following describes how to build prism from source. This comes directly from the [Makefile](../Makefile).
         
     | 
| 
       5 
4 
     | 
    
         | 
| 
       6 
5 
     | 
    
         
             
            ## Common
         
     | 
| 
       7 
6 
     | 
    
         | 
| 
         @@ -20,3 +19,11 @@ If you want to build prism as a shared library and link against it, you should c 
     | 
|
| 
       20 
19 
     | 
    
         | 
| 
       21 
20 
     | 
    
         
             
            * `-fPIC -shared` - Compile as a shared library
         
     | 
| 
       22 
21 
     | 
    
         
             
            * `-DPRISM_EXPORT_SYMBOLS` - Export the symbols (by default nothing is exported)
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            ## Flags
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            `make` respects the `MAKEFLAGS` environment variable. As such, to speed up the build you can run:
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            ```
         
     | 
| 
      
 28 
     | 
    
         
            +
            MAKEFLAGS="-j10" bundle exec rake compile
         
     | 
| 
      
 29 
     | 
    
         
            +
            ```
         
     | 
    
        data/docs/configuration.md
    CHANGED
    
    | 
         @@ -50,14 +50,15 @@ Optionally, every node can define a `child_nodes` key that is an array. This arr 
     | 
|
| 
       50 
50 
     | 
    
         | 
| 
       51 
51 
     | 
    
         
             
            The available values for `type` are:
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
            * `node` - A  
     | 
| 
       54 
     | 
    
         
            -
            * `node?` - A  
     | 
| 
       55 
     | 
    
         
            -
            * `node[]` - A  
     | 
| 
       56 
     | 
    
         
            -
            * `string` - A  
     | 
| 
       57 
     | 
    
         
            -
            * `constant` - A  
     | 
| 
       58 
     | 
    
         
            -
            * `constant[]` - A  
     | 
| 
       59 
     | 
    
         
            -
            * `location` - A  
     | 
| 
       60 
     | 
    
         
            -
            * `location?` - A  
     | 
| 
       61 
     | 
    
         
            -
            * ` 
     | 
| 
      
 53 
     | 
    
         
            +
            * `node` - A field that is a node. This is a `pm_node_t *` in C.
         
     | 
| 
      
 54 
     | 
    
         
            +
            * `node?` - A field that is a node that is optionally present. This is also a `pm_node_t *` in C, but can be `NULL`.
         
     | 
| 
      
 55 
     | 
    
         
            +
            * `node[]` - A field that is an array of nodes. This is a `pm_node_list_t` in C.
         
     | 
| 
      
 56 
     | 
    
         
            +
            * `string` - A field that is a string. For example, this is used as the name of the method in a call node, since it cannot directly reference the source string (as in `@-` or `foo=`). This is a `pm_string_t` in C.
         
     | 
| 
      
 57 
     | 
    
         
            +
            * `constant` - A field that is an integer that represents an index in the constant pool. This is a `pm_constant_id_t` in C.
         
     | 
| 
      
 58 
     | 
    
         
            +
            * `constant[]` - A field that is an array of constants. This is a `pm_constant_id_list_t` in C.
         
     | 
| 
      
 59 
     | 
    
         
            +
            * `location` - A field that is a location. This is a `pm_location_t` in C.
         
     | 
| 
      
 60 
     | 
    
         
            +
            * `location?` - A field that is a location that is optionally present. This is a `pm_location_t` in C, but if the value is not present then the `start` and `end` fields will be `NULL`.
         
     | 
| 
      
 61 
     | 
    
         
            +
            * `uint8` - A field that is an 8-bit unsigned integer. This is a `uint8_t` in C.
         
     | 
| 
      
 62 
     | 
    
         
            +
            * `uint32` - A field that is a 32-bit unsigned integer. This is a `uint32_t` in C.
         
     | 
| 
       62 
63 
     | 
    
         | 
| 
       63 
64 
     | 
    
         
             
            If the type is `node` or `node?` then the value also accepts an optional `kind` key (a string). This key is expected to match to the name of another node type within `config.yml`. This changes a couple of places where code is templated out to use the more specific struct name instead of the generic `pm_node_t`. For example, with `kind: StatementsNode` the `pm_node_t *` in C becomes a `pm_statements_node_t *`.
         
     |