prism 0.16.0 → 0.17.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 +16 -1
- data/Makefile +6 -0
- data/README.md +1 -1
- data/config.yml +50 -35
- data/docs/fuzzing.md +1 -1
- data/docs/serialization.md +28 -29
- data/ext/prism/api_node.c +802 -770
- data/ext/prism/api_pack.c +20 -9
- data/ext/prism/extension.c +464 -162
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +3173 -763
- data/include/prism/defines.h +32 -9
- data/include/prism/diagnostic.h +36 -3
- data/include/prism/enc/pm_encoding.h +118 -28
- data/include/prism/node.h +38 -13
- data/include/prism/options.h +204 -0
- data/include/prism/pack.h +44 -33
- data/include/prism/parser.h +445 -200
- data/include/prism/prettyprint.h +12 -1
- data/include/prism/regexp.h +16 -2
- data/include/prism/util/pm_buffer.h +94 -16
- data/include/prism/util/pm_char.h +162 -48
- data/include/prism/util/pm_constant_pool.h +126 -32
- data/include/prism/util/pm_list.h +68 -38
- data/include/prism/util/pm_memchr.h +18 -3
- data/include/prism/util/pm_newline_list.h +70 -27
- data/include/prism/util/pm_state_stack.h +25 -7
- data/include/prism/util/pm_string.h +115 -27
- data/include/prism/util/pm_string_list.h +25 -6
- data/include/prism/util/pm_strncasecmp.h +32 -0
- data/include/prism/util/pm_strpbrk.h +31 -17
- data/include/prism/version.h +27 -2
- data/include/prism.h +224 -31
- data/lib/prism/compiler.rb +6 -3
- data/lib/prism/debug.rb +23 -7
- data/lib/prism/dispatcher.rb +33 -18
- data/lib/prism/dsl.rb +10 -5
- data/lib/prism/ffi.rb +132 -80
- data/lib/prism/lex_compat.rb +25 -15
- data/lib/prism/mutation_compiler.rb +10 -5
- data/lib/prism/node.rb +370 -135
- data/lib/prism/node_ext.rb +1 -1
- data/lib/prism/node_inspector.rb +1 -1
- data/lib/prism/pack.rb +79 -40
- data/lib/prism/parse_result/comments.rb +7 -2
- data/lib/prism/parse_result/newlines.rb +4 -0
- data/lib/prism/parse_result.rb +150 -30
- data/lib/prism/pattern.rb +11 -0
- data/lib/prism/ripper_compat.rb +28 -10
- data/lib/prism/serialize.rb +86 -54
- data/lib/prism/visitor.rb +10 -3
- data/lib/prism.rb +20 -2
- data/prism.gemspec +4 -2
- data/rbi/prism.rbi +104 -60
- data/rbi/prism_static.rbi +16 -2
- data/sig/prism.rbs +72 -43
- data/sig/prism_static.rbs +14 -1
- data/src/diagnostic.c +56 -53
- data/src/enc/pm_big5.c +1 -0
- data/src/enc/pm_euc_jp.c +1 -0
- data/src/enc/pm_gbk.c +1 -0
- data/src/enc/pm_shift_jis.c +1 -0
- data/src/enc/pm_tables.c +316 -80
- data/src/enc/pm_unicode.c +53 -8
- data/src/enc/pm_windows_31j.c +1 -0
- data/src/node.c +334 -321
- data/src/options.c +170 -0
- data/src/prettyprint.c +74 -47
- data/src/prism.c +1642 -856
- data/src/regexp.c +151 -95
- data/src/serialize.c +44 -20
- data/src/token_type.c +3 -1
- data/src/util/pm_buffer.c +45 -15
- data/src/util/pm_char.c +103 -57
- data/src/util/pm_constant_pool.c +51 -21
- data/src/util/pm_list.c +12 -4
- data/src/util/pm_memchr.c +5 -3
- data/src/util/pm_newline_list.c +20 -12
- data/src/util/pm_state_stack.c +9 -3
- data/src/util/pm_string.c +95 -85
- data/src/util/pm_string_list.c +14 -15
- data/src/util/pm_strncasecmp.c +10 -3
- data/src/util/pm_strpbrk.c +25 -19
- metadata +5 -3
- data/docs/prism.png +0 -0
    
        data/lib/prism/node.rb
    CHANGED
    
    | @@ -9,13 +9,15 @@ module Prism | |
| 9 9 | 
             
              # This represents a node in the tree. It is the parent class of all of the
         | 
| 10 10 | 
             
              # various node types.
         | 
| 11 11 | 
             
              class Node
         | 
| 12 | 
            +
                # A Location instance that represents the location of this node in the
         | 
| 13 | 
            +
                # source.
         | 
| 12 14 | 
             
                attr_reader :location
         | 
| 13 15 |  | 
| 14 | 
            -
                def newline?
         | 
| 16 | 
            +
                def newline? # :nodoc:
         | 
| 15 17 | 
             
                  @newline ? true : false
         | 
| 16 18 | 
             
                end
         | 
| 17 19 |  | 
| 18 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 20 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 19 21 | 
             
                  line = location.start_line
         | 
| 20 22 | 
             
                  unless newline_marked[line]
         | 
| 21 23 | 
             
                    newline_marked[line] = true
         | 
| @@ -103,6 +105,7 @@ module Prism | |
| 103 105 | 
             
                  keyword_loc.slice
         | 
| 104 106 | 
             
                end
         | 
| 105 107 |  | 
| 108 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 106 109 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 107 110 | 
             
                  inspector << inspector.header(self)
         | 
| 108 111 | 
             
                  inspector << "├── new_name:\n"
         | 
| @@ -207,6 +210,7 @@ module Prism | |
| 207 210 | 
             
                  keyword_loc.slice
         | 
| 208 211 | 
             
                end
         | 
| 209 212 |  | 
| 213 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 210 214 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 211 215 | 
             
                  inspector << inspector.header(self)
         | 
| 212 216 | 
             
                  inspector << "├── new_name:\n"
         | 
| @@ -311,6 +315,7 @@ module Prism | |
| 311 315 | 
             
                  operator_loc.slice
         | 
| 312 316 | 
             
                end
         | 
| 313 317 |  | 
| 318 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 314 319 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 315 320 | 
             
                  inspector << inspector.header(self)
         | 
| 316 321 | 
             
                  inspector << "├── left:\n"
         | 
| @@ -415,6 +420,7 @@ module Prism | |
| 415 420 | 
             
                  operator_loc.slice
         | 
| 416 421 | 
             
                end
         | 
| 417 422 |  | 
| 423 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 418 424 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 419 425 | 
             
                  inspector << inspector.header(self)
         | 
| 420 426 | 
             
                  inspector << "├── left:\n"
         | 
| @@ -514,6 +520,7 @@ module Prism | |
| 514 520 | 
             
                  flags.anybits?(ArgumentsNodeFlags::KEYWORD_SPLAT)
         | 
| 515 521 | 
             
                end
         | 
| 516 522 |  | 
| 523 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 517 524 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 518 525 | 
             
                  inspector << inspector.header(self)
         | 
| 519 526 | 
             
                  inspector << "├── arguments: #{inspector.list("#{inspector.prefix}│   ", arguments)}"
         | 
| @@ -622,6 +629,7 @@ module Prism | |
| 622 629 | 
             
                  closing_loc&.slice
         | 
| 623 630 | 
             
                end
         | 
| 624 631 |  | 
| 632 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 625 633 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 626 634 | 
             
                  inspector << inspector.header(self)
         | 
| 627 635 | 
             
                  inspector << "├── elements: #{inspector.list("#{inspector.prefix}│   ", elements)}"
         | 
| @@ -761,6 +769,7 @@ module Prism | |
| 761 769 | 
             
                  closing_loc&.slice
         | 
| 762 770 | 
             
                end
         | 
| 763 771 |  | 
| 772 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 764 773 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 765 774 | 
             
                  inspector << inspector.header(self)
         | 
| 766 775 | 
             
                  if (constant = self.constant).nil?
         | 
| @@ -879,6 +888,7 @@ module Prism | |
| 879 888 | 
             
                  operator_loc&.slice
         | 
| 880 889 | 
             
                end
         | 
| 881 890 |  | 
| 891 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 882 892 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 883 893 | 
             
                  inspector << inspector.header(self)
         | 
| 884 894 | 
             
                  inspector << "├── key:\n"
         | 
| @@ -984,6 +994,7 @@ module Prism | |
| 984 994 | 
             
                  operator_loc.slice
         | 
| 985 995 | 
             
                end
         | 
| 986 996 |  | 
| 997 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 987 998 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 988 999 | 
             
                  inspector << inspector.header(self)
         | 
| 989 1000 | 
             
                  if (value = self.value).nil?
         | 
| @@ -1075,6 +1086,7 @@ module Prism | |
| 1075 1086 | 
             
                  { name: name, location: location }
         | 
| 1076 1087 | 
             
                end
         | 
| 1077 1088 |  | 
| 1089 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 1078 1090 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 1079 1091 | 
             
                  inspector << inspector.header(self)
         | 
| 1080 1092 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -1151,7 +1163,7 @@ module Prism | |
| 1151 1163 | 
             
                  visitor.visit_begin_node(self)
         | 
| 1152 1164 | 
             
                end
         | 
| 1153 1165 |  | 
| 1154 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 1166 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 1155 1167 | 
             
                  # Never mark BeginNode with a newline flag, mark children instead
         | 
| 1156 1168 | 
             
                end
         | 
| 1157 1169 |  | 
| @@ -1206,6 +1218,7 @@ module Prism | |
| 1206 1218 | 
             
                  end_keyword_loc&.slice
         | 
| 1207 1219 | 
             
                end
         | 
| 1208 1220 |  | 
| 1221 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 1209 1222 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 1210 1223 | 
             
                  inspector << inspector.header(self)
         | 
| 1211 1224 | 
             
                  inspector << "├── begin_keyword_loc: #{inspector.location(begin_keyword_loc)}\n"
         | 
| @@ -1328,6 +1341,7 @@ module Prism | |
| 1328 1341 | 
             
                  operator_loc.slice
         | 
| 1329 1342 | 
             
                end
         | 
| 1330 1343 |  | 
| 1344 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 1331 1345 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 1332 1346 | 
             
                  inspector << inspector.header(self)
         | 
| 1333 1347 | 
             
                  if (expression = self.expression).nil?
         | 
| @@ -1419,6 +1433,7 @@ module Prism | |
| 1419 1433 | 
             
                  { name: name, location: location }
         | 
| 1420 1434 | 
             
                end
         | 
| 1421 1435 |  | 
| 1436 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 1422 1437 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 1423 1438 | 
             
                  inspector << inspector.header(self)
         | 
| 1424 1439 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -1537,6 +1552,7 @@ module Prism | |
| 1537 1552 | 
             
                  closing_loc.slice
         | 
| 1538 1553 | 
             
                end
         | 
| 1539 1554 |  | 
| 1555 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 1540 1556 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 1541 1557 | 
             
                  inspector << inspector.header(self)
         | 
| 1542 1558 | 
             
                  inspector << "├── locals: #{locals.inspect}\n"
         | 
| @@ -1652,6 +1668,7 @@ module Prism | |
| 1652 1668 | 
             
                  operator_loc.slice
         | 
| 1653 1669 | 
             
                end
         | 
| 1654 1670 |  | 
| 1671 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 1655 1672 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 1656 1673 | 
             
                  inspector << inspector.header(self)
         | 
| 1657 1674 | 
             
                  if (name = self.name).nil?
         | 
| @@ -1775,6 +1792,7 @@ module Prism | |
| 1775 1792 | 
             
                  closing_loc&.slice
         | 
| 1776 1793 | 
             
                end
         | 
| 1777 1794 |  | 
| 1795 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 1778 1796 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 1779 1797 | 
             
                  inspector << inspector.header(self)
         | 
| 1780 1798 | 
             
                  if (parameters = self.parameters).nil?
         | 
| @@ -1880,6 +1898,7 @@ module Prism | |
| 1880 1898 | 
             
                  keyword_loc.slice
         | 
| 1881 1899 | 
             
                end
         | 
| 1882 1900 |  | 
| 1901 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 1883 1902 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 1884 1903 | 
             
                  inspector << inspector.header(self)
         | 
| 1885 1904 | 
             
                  if (arguments = self.arguments).nil?
         | 
| @@ -2034,6 +2053,7 @@ module Prism | |
| 2034 2053 | 
             
                  operator_loc.slice
         | 
| 2035 2054 | 
             
                end
         | 
| 2036 2055 |  | 
| 2056 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 2037 2057 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 2038 2058 | 
             
                  inspector << inspector.header(self)
         | 
| 2039 2059 | 
             
                  if (receiver = self.receiver).nil?
         | 
| @@ -2222,6 +2242,7 @@ module Prism | |
| 2222 2242 | 
             
                  flags.anybits?(CallNodeFlags::VARIABLE_CALL)
         | 
| 2223 2243 | 
             
                end
         | 
| 2224 2244 |  | 
| 2245 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 2225 2246 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 2226 2247 | 
             
                  inspector << inspector.header(self)
         | 
| 2227 2248 | 
             
                  if (receiver = self.receiver).nil?
         | 
| @@ -2394,6 +2415,7 @@ module Prism | |
| 2394 2415 | 
             
                  flags.anybits?(CallNodeFlags::VARIABLE_CALL)
         | 
| 2395 2416 | 
             
                end
         | 
| 2396 2417 |  | 
| 2418 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 2397 2419 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 2398 2420 | 
             
                  inspector << inspector.header(self)
         | 
| 2399 2421 | 
             
                  if (receiver = self.receiver).nil?
         | 
| @@ -2557,6 +2579,7 @@ module Prism | |
| 2557 2579 | 
             
                  operator_loc.slice
         | 
| 2558 2580 | 
             
                end
         | 
| 2559 2581 |  | 
| 2582 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 2560 2583 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 2561 2584 | 
             
                  inspector << inspector.header(self)
         | 
| 2562 2585 | 
             
                  if (receiver = self.receiver).nil?
         | 
| @@ -2671,6 +2694,7 @@ module Prism | |
| 2671 2694 | 
             
                  operator_loc.slice
         | 
| 2672 2695 | 
             
                end
         | 
| 2673 2696 |  | 
| 2697 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 2674 2698 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 2675 2699 | 
             
                  inspector << inspector.header(self)
         | 
| 2676 2700 | 
             
                  inspector << "├── value:\n"
         | 
| @@ -2712,10 +2736,10 @@ module Prism | |
| 2712 2736 |  | 
| 2713 2737 | 
             
              # Represents the use of a case statement.
         | 
| 2714 2738 | 
             
              #
         | 
| 2715 | 
            -
              # | 
| 2716 | 
            -
              #  | 
| 2717 | 
            -
              # | 
| 2718 | 
            -
              # | 
| 2739 | 
            +
              #     case true
         | 
| 2740 | 
            +
              #     when false
         | 
| 2741 | 
            +
              #     end
         | 
| 2742 | 
            +
              #     ^^^^^^^^^^
         | 
| 2719 2743 | 
             
              class CaseNode < Node
         | 
| 2720 2744 | 
             
                # attr_reader predicate: Node?
         | 
| 2721 2745 | 
             
                attr_reader :predicate
         | 
| @@ -2796,6 +2820,7 @@ module Prism | |
| 2796 2820 | 
             
                  end_keyword_loc.slice
         | 
| 2797 2821 | 
             
                end
         | 
| 2798 2822 |  | 
| 2823 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 2799 2824 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 2800 2825 | 
             
                  inspector << inspector.header(self)
         | 
| 2801 2826 | 
             
                  if (predicate = self.predicate).nil?
         | 
| @@ -2949,6 +2974,7 @@ module Prism | |
| 2949 2974 | 
             
                  end_keyword_loc.slice
         | 
| 2950 2975 | 
             
                end
         | 
| 2951 2976 |  | 
| 2977 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 2952 2978 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 2953 2979 | 
             
                  inspector << inspector.header(self)
         | 
| 2954 2980 | 
             
                  inspector << "├── locals: #{locals.inspect}\n"
         | 
| @@ -3005,7 +3031,7 @@ module Prism | |
| 3005 3031 | 
             
              # Represents the use of the `&&=` operator for assignment to a class variable.
         | 
| 3006 3032 | 
             
              #
         | 
| 3007 3033 | 
             
              #     @@target &&= value
         | 
| 3008 | 
            -
              #      | 
| 3034 | 
            +
              #     ^^^^^^^^^^^^^^^^^^
         | 
| 3009 3035 | 
             
              class ClassVariableAndWriteNode < Node
         | 
| 3010 3036 | 
             
                # attr_reader name: Symbol
         | 
| 3011 3037 | 
             
                attr_reader :name
         | 
| @@ -3072,6 +3098,7 @@ module Prism | |
| 3072 3098 | 
             
                  operator_loc.slice
         | 
| 3073 3099 | 
             
                end
         | 
| 3074 3100 |  | 
| 3101 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 3075 3102 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 3076 3103 | 
             
                  inspector << inspector.header(self)
         | 
| 3077 3104 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -3181,6 +3208,7 @@ module Prism | |
| 3181 3208 | 
             
                  { name: name, name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
         | 
| 3182 3209 | 
             
                end
         | 
| 3183 3210 |  | 
| 3211 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 3184 3212 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 3185 3213 | 
             
                  inspector << inspector.header(self)
         | 
| 3186 3214 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -3291,6 +3319,7 @@ module Prism | |
| 3291 3319 | 
             
                  operator_loc.slice
         | 
| 3292 3320 | 
             
                end
         | 
| 3293 3321 |  | 
| 3322 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 3294 3323 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 3295 3324 | 
             
                  inspector << inspector.header(self)
         | 
| 3296 3325 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -3380,6 +3409,7 @@ module Prism | |
| 3380 3409 | 
             
                  { name: name, location: location }
         | 
| 3381 3410 | 
             
                end
         | 
| 3382 3411 |  | 
| 3412 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 3383 3413 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 3384 3414 | 
             
                  inspector << inspector.header(self)
         | 
| 3385 3415 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -3465,6 +3495,7 @@ module Prism | |
| 3465 3495 | 
             
                  { name: name, location: location }
         | 
| 3466 3496 | 
             
                end
         | 
| 3467 3497 |  | 
| 3498 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 3468 3499 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 3469 3500 | 
             
                  inspector << inspector.header(self)
         | 
| 3470 3501 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -3570,6 +3601,7 @@ module Prism | |
| 3570 3601 | 
             
                  operator_loc&.slice
         | 
| 3571 3602 | 
             
                end
         | 
| 3572 3603 |  | 
| 3604 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 3573 3605 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 3574 3606 | 
             
                  inspector << inspector.header(self)
         | 
| 3575 3607 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -3679,6 +3711,7 @@ module Prism | |
| 3679 3711 | 
             
                  operator_loc.slice
         | 
| 3680 3712 | 
             
                end
         | 
| 3681 3713 |  | 
| 3714 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 3682 3715 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 3683 3716 | 
             
                  inspector << inspector.header(self)
         | 
| 3684 3717 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -3788,6 +3821,7 @@ module Prism | |
| 3788 3821 | 
             
                  { name: name, name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
         | 
| 3789 3822 | 
             
                end
         | 
| 3790 3823 |  | 
| 3824 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 3791 3825 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 3792 3826 | 
             
                  inspector << inspector.header(self)
         | 
| 3793 3827 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -3898,6 +3932,7 @@ module Prism | |
| 3898 3932 | 
             
                  operator_loc.slice
         | 
| 3899 3933 | 
             
                end
         | 
| 3900 3934 |  | 
| 3935 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 3901 3936 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 3902 3937 | 
             
                  inspector << inspector.header(self)
         | 
| 3903 3938 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -4002,6 +4037,7 @@ module Prism | |
| 4002 4037 | 
             
                  operator_loc.slice
         | 
| 4003 4038 | 
             
                end
         | 
| 4004 4039 |  | 
| 4040 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 4005 4041 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 4006 4042 | 
             
                  inspector << inspector.header(self)
         | 
| 4007 4043 | 
             
                  inspector << "├── target:\n"
         | 
| @@ -4109,6 +4145,7 @@ module Prism | |
| 4109 4145 | 
             
                  delimiter_loc.slice
         | 
| 4110 4146 | 
             
                end
         | 
| 4111 4147 |  | 
| 4148 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 4112 4149 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 4113 4150 | 
             
                  inspector << inspector.header(self)
         | 
| 4114 4151 | 
             
                  if (parent = self.parent).nil?
         | 
| @@ -4217,6 +4254,7 @@ module Prism | |
| 4217 4254 | 
             
                  { target: target, operator_loc: operator_loc, value: value, operator: operator, location: location }
         | 
| 4218 4255 | 
             
                end
         | 
| 4219 4256 |  | 
| 4257 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 4220 4258 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 4221 4259 | 
             
                  inspector << inspector.header(self)
         | 
| 4222 4260 | 
             
                  inspector << "├── target:\n"
         | 
| @@ -4322,6 +4360,7 @@ module Prism | |
| 4322 4360 | 
             
                  operator_loc.slice
         | 
| 4323 4361 | 
             
                end
         | 
| 4324 4362 |  | 
| 4363 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 4325 4364 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 4326 4365 | 
             
                  inspector << inspector.header(self)
         | 
| 4327 4366 | 
             
                  inspector << "├── target:\n"
         | 
| @@ -4429,6 +4468,7 @@ module Prism | |
| 4429 4468 | 
             
                  delimiter_loc.slice
         | 
| 4430 4469 | 
             
                end
         | 
| 4431 4470 |  | 
| 4471 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 4432 4472 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 4433 4473 | 
             
                  inspector << inspector.header(self)
         | 
| 4434 4474 | 
             
                  if (parent = self.parent).nil?
         | 
| @@ -4543,6 +4583,7 @@ module Prism | |
| 4543 4583 | 
             
                  operator_loc.slice
         | 
| 4544 4584 | 
             
                end
         | 
| 4545 4585 |  | 
| 4586 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 4546 4587 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 4547 4588 | 
             
                  inspector << inspector.header(self)
         | 
| 4548 4589 | 
             
                  inspector << "├── target:\n"
         | 
| @@ -4632,6 +4673,7 @@ module Prism | |
| 4632 4673 | 
             
                  { name: name, location: location }
         | 
| 4633 4674 | 
             
                end
         | 
| 4634 4675 |  | 
| 4676 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 4635 4677 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 4636 4678 | 
             
                  inspector << inspector.header(self)
         | 
| 4637 4679 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -4717,6 +4759,7 @@ module Prism | |
| 4717 4759 | 
             
                  { name: name, location: location }
         | 
| 4718 4760 | 
             
                end
         | 
| 4719 4761 |  | 
| 4762 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 4720 4763 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 4721 4764 | 
             
                  inspector << inspector.header(self)
         | 
| 4722 4765 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -4822,6 +4865,7 @@ module Prism | |
| 4822 4865 | 
             
                  operator_loc.slice
         | 
| 4823 4866 | 
             
                end
         | 
| 4824 4867 |  | 
| 4868 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 4825 4869 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 4826 4870 | 
             
                  inspector << inspector.header(self)
         | 
| 4827 4871 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -5001,6 +5045,7 @@ module Prism | |
| 5001 5045 | 
             
                  end_keyword_loc&.slice
         | 
| 5002 5046 | 
             
                end
         | 
| 5003 5047 |  | 
| 5048 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 5004 5049 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 5005 5050 | 
             
                  inspector << inspector.header(self)
         | 
| 5006 5051 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -5142,6 +5187,7 @@ module Prism | |
| 5142 5187 | 
             
                  keyword_loc.slice
         | 
| 5143 5188 | 
             
                end
         | 
| 5144 5189 |  | 
| 5190 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 5145 5191 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 5146 5192 | 
             
                  inspector << inspector.header(self)
         | 
| 5147 5193 | 
             
                  inspector << "├── lparen_loc: #{inspector.location(lparen_loc)}\n"
         | 
| @@ -5253,6 +5299,7 @@ module Prism | |
| 5253 5299 | 
             
                  end_keyword_loc&.slice
         | 
| 5254 5300 | 
             
                end
         | 
| 5255 5301 |  | 
| 5302 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 5256 5303 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 5257 5304 | 
             
                  inspector << inspector.header(self)
         | 
| 5258 5305 | 
             
                  inspector << "├── else_keyword_loc: #{inspector.location(else_keyword_loc)}\n"
         | 
| @@ -5367,6 +5414,7 @@ module Prism | |
| 5367 5414 | 
             
                  closing_loc.slice
         | 
| 5368 5415 | 
             
                end
         | 
| 5369 5416 |  | 
| 5417 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 5370 5418 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 5371 5419 | 
             
                  inspector << inspector.header(self)
         | 
| 5372 5420 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -5469,6 +5517,7 @@ module Prism | |
| 5469 5517 | 
             
                  operator_loc.slice
         | 
| 5470 5518 | 
             
                end
         | 
| 5471 5519 |  | 
| 5520 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 5472 5521 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 5473 5522 | 
             
                  inspector << inspector.header(self)
         | 
| 5474 5523 | 
             
                  inspector << "├── operator_loc: #{inspector.location(operator_loc)}\n"
         | 
| @@ -5582,6 +5631,7 @@ module Prism | |
| 5582 5631 | 
             
                  end_keyword_loc.slice
         | 
| 5583 5632 | 
             
                end
         | 
| 5584 5633 |  | 
| 5634 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 5585 5635 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 5586 5636 | 
             
                  inspector << inspector.header(self)
         | 
| 5587 5637 | 
             
                  inspector << "├── ensure_keyword_loc: #{inspector.location(ensure_keyword_loc)}\n"
         | 
| @@ -5669,6 +5719,7 @@ module Prism | |
| 5669 5719 | 
             
                  { location: location }
         | 
| 5670 5720 | 
             
                end
         | 
| 5671 5721 |  | 
| 5722 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 5672 5723 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 5673 5724 | 
             
                  inspector << inspector.header(self)
         | 
| 5674 5725 | 
             
                  inspector.to_str
         | 
| @@ -5706,13 +5757,13 @@ module Prism | |
| 5706 5757 | 
             
              # Represents a find pattern in pattern matching.
         | 
| 5707 5758 | 
             
              #
         | 
| 5708 5759 | 
             
              #     foo in *bar, baz, *qux
         | 
| 5709 | 
            -
              # | 
| 5760 | 
            +
              #            ^^^^^^^^^^^^^^^
         | 
| 5710 5761 | 
             
              #
         | 
| 5711 5762 | 
             
              #     foo in [*bar, baz, *qux]
         | 
| 5712 | 
            -
              # | 
| 5763 | 
            +
              #            ^^^^^^^^^^^^^^^^^
         | 
| 5713 5764 | 
             
              #
         | 
| 5714 5765 | 
             
              #     foo in Foo(*bar, baz, *qux)
         | 
| 5715 | 
            -
              # | 
| 5766 | 
            +
              #            ^^^^^^^^^^^^^^^^^^^^
         | 
| 5716 5767 | 
             
              class FindPatternNode < Node
         | 
| 5717 5768 | 
             
                # attr_reader constant: Node?
         | 
| 5718 5769 | 
             
                attr_reader :constant
         | 
| @@ -5799,6 +5850,7 @@ module Prism | |
| 5799 5850 | 
             
                  closing_loc&.slice
         | 
| 5800 5851 | 
             
                end
         | 
| 5801 5852 |  | 
| 5853 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 5802 5854 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 5803 5855 | 
             
                  inspector << inspector.header(self)
         | 
| 5804 5856 | 
             
                  if (constant = self.constant).nil?
         | 
| @@ -5924,6 +5976,7 @@ module Prism | |
| 5924 5976 | 
             
                  flags.anybits?(RangeFlags::EXCLUDE_END)
         | 
| 5925 5977 | 
             
                end
         | 
| 5926 5978 |  | 
| 5979 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 5927 5980 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 5928 5981 | 
             
                  inspector << inspector.header(self)
         | 
| 5929 5982 | 
             
                  if (left = self.left).nil?
         | 
| @@ -6018,6 +6071,7 @@ module Prism | |
| 6018 6071 | 
             
                  { location: location }
         | 
| 6019 6072 | 
             
                end
         | 
| 6020 6073 |  | 
| 6074 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 6021 6075 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 6022 6076 | 
             
                  inspector << inspector.header(self)
         | 
| 6023 6077 | 
             
                  inspector.to_str
         | 
| @@ -6156,6 +6210,7 @@ module Prism | |
| 6156 6210 | 
             
                  end_keyword_loc.slice
         | 
| 6157 6211 | 
             
                end
         | 
| 6158 6212 |  | 
| 6213 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 6159 6214 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 6160 6215 | 
             
                  inspector << inspector.header(self)
         | 
| 6161 6216 | 
             
                  inspector << "├── index:\n"
         | 
| @@ -6208,7 +6263,7 @@ module Prism | |
| 6208 6263 | 
             
              #
         | 
| 6209 6264 | 
             
              #     def foo(...)
         | 
| 6210 6265 | 
             
              #       bar(...)
         | 
| 6211 | 
            -
              # | 
| 6266 | 
            +
              #           ^^^
         | 
| 6212 6267 | 
             
              #     end
         | 
| 6213 6268 | 
             
              class ForwardingArgumentsNode < Node
         | 
| 6214 6269 | 
             
                # def initialize: (location: Location) -> void
         | 
| @@ -6251,6 +6306,7 @@ module Prism | |
| 6251 6306 | 
             
                  { location: location }
         | 
| 6252 6307 | 
             
                end
         | 
| 6253 6308 |  | 
| 6309 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 6254 6310 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 6255 6311 | 
             
                  inspector << inspector.header(self)
         | 
| 6256 6312 | 
             
                  inspector.to_str
         | 
| @@ -6331,6 +6387,7 @@ module Prism | |
| 6331 6387 | 
             
                  { location: location }
         | 
| 6332 6388 | 
             
                end
         | 
| 6333 6389 |  | 
| 6390 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 6334 6391 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 6335 6392 | 
             
                  inspector << inspector.header(self)
         | 
| 6336 6393 | 
             
                  inspector.to_str
         | 
| @@ -6417,6 +6474,7 @@ module Prism | |
| 6417 6474 | 
             
                  { block: block, location: location }
         | 
| 6418 6475 | 
             
                end
         | 
| 6419 6476 |  | 
| 6477 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 6420 6478 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 6421 6479 | 
             
                  inspector << inspector.header(self)
         | 
| 6422 6480 | 
             
                  if (block = self.block).nil?
         | 
| @@ -6527,6 +6585,7 @@ module Prism | |
| 6527 6585 | 
             
                  operator_loc.slice
         | 
| 6528 6586 | 
             
                end
         | 
| 6529 6587 |  | 
| 6588 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 6530 6589 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 6531 6590 | 
             
                  inspector << inspector.header(self)
         | 
| 6532 6591 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -6636,6 +6695,7 @@ module Prism | |
| 6636 6695 | 
             
                  { name: name, name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
         | 
| 6637 6696 | 
             
                end
         | 
| 6638 6697 |  | 
| 6698 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 6639 6699 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 6640 6700 | 
             
                  inspector << inspector.header(self)
         | 
| 6641 6701 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -6746,6 +6806,7 @@ module Prism | |
| 6746 6806 | 
             
                  operator_loc.slice
         | 
| 6747 6807 | 
             
                end
         | 
| 6748 6808 |  | 
| 6809 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 6749 6810 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 6750 6811 | 
             
                  inspector << inspector.header(self)
         | 
| 6751 6812 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -6835,6 +6896,7 @@ module Prism | |
| 6835 6896 | 
             
                  { name: name, location: location }
         | 
| 6836 6897 | 
             
                end
         | 
| 6837 6898 |  | 
| 6899 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 6838 6900 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 6839 6901 | 
             
                  inspector << inspector.header(self)
         | 
| 6840 6902 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -6920,6 +6982,7 @@ module Prism | |
| 6920 6982 | 
             
                  { name: name, location: location }
         | 
| 6921 6983 | 
             
                end
         | 
| 6922 6984 |  | 
| 6985 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 6923 6986 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 6924 6987 | 
             
                  inspector << inspector.header(self)
         | 
| 6925 6988 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -7025,6 +7088,7 @@ module Prism | |
| 7025 7088 | 
             
                  operator_loc.slice
         | 
| 7026 7089 | 
             
                end
         | 
| 7027 7090 |  | 
| 7091 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 7028 7092 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 7029 7093 | 
             
                  inspector << inspector.header(self)
         | 
| 7030 7094 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -7134,6 +7198,7 @@ module Prism | |
| 7134 7198 | 
             
                  closing_loc.slice
         | 
| 7135 7199 | 
             
                end
         | 
| 7136 7200 |  | 
| 7201 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 7137 7202 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 7138 7203 | 
             
                  inspector << inspector.header(self)
         | 
| 7139 7204 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -7258,6 +7323,7 @@ module Prism | |
| 7258 7323 | 
             
                  closing_loc&.slice
         | 
| 7259 7324 | 
             
                end
         | 
| 7260 7325 |  | 
| 7326 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 7261 7327 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 7262 7328 | 
             
                  inspector << inspector.header(self)
         | 
| 7263 7329 | 
             
                  if (constant = self.constant).nil?
         | 
| @@ -7345,7 +7411,7 @@ module Prism | |
| 7345 7411 | 
             
                  visitor.visit_if_node(self)
         | 
| 7346 7412 | 
             
                end
         | 
| 7347 7413 |  | 
| 7348 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 7414 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 7349 7415 | 
             
                  predicate.set_newline_flag(newline_marked)
         | 
| 7350 7416 | 
             
                end
         | 
| 7351 7417 |  | 
| @@ -7398,6 +7464,7 @@ module Prism | |
| 7398 7464 | 
             
                  end_keyword_loc&.slice
         | 
| 7399 7465 | 
             
                end
         | 
| 7400 7466 |  | 
| 7467 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 7401 7468 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 7402 7469 | 
             
                  inspector << inspector.header(self)
         | 
| 7403 7470 | 
             
                  inspector << "├── if_keyword_loc: #{inspector.location(if_keyword_loc)}\n"
         | 
| @@ -7498,6 +7565,7 @@ module Prism | |
| 7498 7565 | 
             
                  { numeric: numeric, location: location }
         | 
| 7499 7566 | 
             
                end
         | 
| 7500 7567 |  | 
| 7568 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 7501 7569 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 7502 7570 | 
             
                  inspector << inspector.header(self)
         | 
| 7503 7571 | 
             
                  inspector << "└── numeric:\n"
         | 
| @@ -7588,6 +7656,7 @@ module Prism | |
| 7588 7656 | 
             
                  { value: value, location: location }
         | 
| 7589 7657 | 
             
                end
         | 
| 7590 7658 |  | 
| 7659 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 7591 7660 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 7592 7661 | 
             
                  inspector << inspector.header(self)
         | 
| 7593 7662 | 
             
                  inspector << "└── value:\n"
         | 
| @@ -7702,6 +7771,7 @@ module Prism | |
| 7702 7771 | 
             
                  then_loc&.slice
         | 
| 7703 7772 | 
             
                end
         | 
| 7704 7773 |  | 
| 7774 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 7705 7775 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 7706 7776 | 
             
                  inspector << inspector.header(self)
         | 
| 7707 7777 | 
             
                  inspector << "├── pattern:\n"
         | 
| @@ -7871,6 +7941,7 @@ module Prism | |
| 7871 7941 | 
             
                  operator_loc.slice
         | 
| 7872 7942 | 
             
                end
         | 
| 7873 7943 |  | 
| 7944 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 7874 7945 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 7875 7946 | 
             
                  inspector << inspector.header(self)
         | 
| 7876 7947 | 
             
                  if (receiver = self.receiver).nil?
         | 
| @@ -8056,6 +8127,7 @@ module Prism | |
| 8056 8127 | 
             
                  flags.anybits?(CallNodeFlags::VARIABLE_CALL)
         | 
| 8057 8128 | 
             
                end
         | 
| 8058 8129 |  | 
| 8130 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 8059 8131 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 8060 8132 | 
             
                  inspector << inspector.header(self)
         | 
| 8061 8133 | 
             
                  if (receiver = self.receiver).nil?
         | 
| @@ -8242,6 +8314,7 @@ module Prism | |
| 8242 8314 | 
             
                  operator_loc.slice
         | 
| 8243 8315 | 
             
                end
         | 
| 8244 8316 |  | 
| 8317 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 8245 8318 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 8246 8319 | 
             
                  inspector << inspector.header(self)
         | 
| 8247 8320 | 
             
                  if (receiver = self.receiver).nil?
         | 
| @@ -8372,6 +8445,7 @@ module Prism | |
| 8372 8445 | 
             
                  operator_loc.slice
         | 
| 8373 8446 | 
             
                end
         | 
| 8374 8447 |  | 
| 8448 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 8375 8449 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 8376 8450 | 
             
                  inspector << inspector.header(self)
         | 
| 8377 8451 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -8481,6 +8555,7 @@ module Prism | |
| 8481 8555 | 
             
                  { name: name, name_loc: name_loc, operator_loc: operator_loc, value: value, operator: operator, location: location }
         | 
| 8482 8556 | 
             
                end
         | 
| 8483 8557 |  | 
| 8558 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 8484 8559 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 8485 8560 | 
             
                  inspector << inspector.header(self)
         | 
| 8486 8561 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -8591,6 +8666,7 @@ module Prism | |
| 8591 8666 | 
             
                  operator_loc.slice
         | 
| 8592 8667 | 
             
                end
         | 
| 8593 8668 |  | 
| 8669 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 8594 8670 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 8595 8671 | 
             
                  inspector << inspector.header(self)
         | 
| 8596 8672 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -8680,6 +8756,7 @@ module Prism | |
| 8680 8756 | 
             
                  { name: name, location: location }
         | 
| 8681 8757 | 
             
                end
         | 
| 8682 8758 |  | 
| 8759 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 8683 8760 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 8684 8761 | 
             
                  inspector << inspector.header(self)
         | 
| 8685 8762 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -8765,6 +8842,7 @@ module Prism | |
| 8765 8842 | 
             
                  { name: name, location: location }
         | 
| 8766 8843 | 
             
                end
         | 
| 8767 8844 |  | 
| 8845 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 8768 8846 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 8769 8847 | 
             
                  inspector << inspector.header(self)
         | 
| 8770 8848 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -8870,6 +8948,7 @@ module Prism | |
| 8870 8948 | 
             
                  operator_loc.slice
         | 
| 8871 8949 | 
             
                end
         | 
| 8872 8950 |  | 
| 8951 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 8873 8952 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 8874 8953 | 
             
                  inspector << inspector.header(self)
         | 
| 8875 8954 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -8979,6 +9058,7 @@ module Prism | |
| 8979 9058 | 
             
                  flags.anybits?(IntegerBaseFlags::HEXADECIMAL)
         | 
| 8980 9059 | 
             
                end
         | 
| 8981 9060 |  | 
| 9061 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 8982 9062 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 8983 9063 | 
             
                  inspector << inspector.header(self)
         | 
| 8984 9064 | 
             
                  flags = [("binary" if binary?), ("octal" if octal?), ("decimal" if decimal?), ("hexadecimal" if hexadecimal?)].compact
         | 
| @@ -9048,7 +9128,7 @@ module Prism | |
| 9048 9128 | 
             
                  visitor.visit_interpolated_match_last_line_node(self)
         | 
| 9049 9129 | 
             
                end
         | 
| 9050 9130 |  | 
| 9051 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 9131 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 9052 9132 | 
             
                  first = parts.first
         | 
| 9053 9133 | 
             
                  first.set_newline_flag(newline_marked) if first
         | 
| 9054 9134 | 
             
                end
         | 
| @@ -9137,6 +9217,7 @@ module Prism | |
| 9137 9217 | 
             
                  flags.anybits?(RegularExpressionFlags::UTF_8)
         | 
| 9138 9218 | 
             
                end
         | 
| 9139 9219 |  | 
| 9220 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 9140 9221 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 9141 9222 | 
             
                  inspector << inspector.header(self)
         | 
| 9142 9223 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -9207,7 +9288,7 @@ module Prism | |
| 9207 9288 | 
             
                  visitor.visit_interpolated_regular_expression_node(self)
         | 
| 9208 9289 | 
             
                end
         | 
| 9209 9290 |  | 
| 9210 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 9291 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 9211 9292 | 
             
                  first = parts.first
         | 
| 9212 9293 | 
             
                  first.set_newline_flag(newline_marked) if first
         | 
| 9213 9294 | 
             
                end
         | 
| @@ -9296,6 +9377,7 @@ module Prism | |
| 9296 9377 | 
             
                  flags.anybits?(RegularExpressionFlags::UTF_8)
         | 
| 9297 9378 | 
             
                end
         | 
| 9298 9379 |  | 
| 9380 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 9299 9381 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 9300 9382 | 
             
                  inspector << inspector.header(self)
         | 
| 9301 9383 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -9362,7 +9444,7 @@ module Prism | |
| 9362 9444 | 
             
                  visitor.visit_interpolated_string_node(self)
         | 
| 9363 9445 | 
             
                end
         | 
| 9364 9446 |  | 
| 9365 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 9447 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 9366 9448 | 
             
                  first = parts.first
         | 
| 9367 9449 | 
             
                  first.set_newline_flag(newline_marked) if first
         | 
| 9368 9450 | 
             
                end
         | 
| @@ -9410,6 +9492,7 @@ module Prism | |
| 9410 9492 | 
             
                  closing_loc&.slice
         | 
| 9411 9493 | 
             
                end
         | 
| 9412 9494 |  | 
| 9495 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 9413 9496 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 9414 9497 | 
             
                  inspector << inspector.header(self)
         | 
| 9415 9498 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -9474,7 +9557,7 @@ module Prism | |
| 9474 9557 | 
             
                  visitor.visit_interpolated_symbol_node(self)
         | 
| 9475 9558 | 
             
                end
         | 
| 9476 9559 |  | 
| 9477 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 9560 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 9478 9561 | 
             
                  first = parts.first
         | 
| 9479 9562 | 
             
                  first.set_newline_flag(newline_marked) if first
         | 
| 9480 9563 | 
             
                end
         | 
| @@ -9522,6 +9605,7 @@ module Prism | |
| 9522 9605 | 
             
                  closing_loc&.slice
         | 
| 9523 9606 | 
             
                end
         | 
| 9524 9607 |  | 
| 9608 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 9525 9609 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 9526 9610 | 
             
                  inspector << inspector.header(self)
         | 
| 9527 9611 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -9586,7 +9670,7 @@ module Prism | |
| 9586 9670 | 
             
                  visitor.visit_interpolated_x_string_node(self)
         | 
| 9587 9671 | 
             
                end
         | 
| 9588 9672 |  | 
| 9589 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 9673 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 9590 9674 | 
             
                  first = parts.first
         | 
| 9591 9675 | 
             
                  first.set_newline_flag(newline_marked) if first
         | 
| 9592 9676 | 
             
                end
         | 
| @@ -9634,6 +9718,7 @@ module Prism | |
| 9634 9718 | 
             
                  closing_loc.slice
         | 
| 9635 9719 | 
             
                end
         | 
| 9636 9720 |  | 
| 9721 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 9637 9722 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 9638 9723 | 
             
                  inspector << inspector.header(self)
         | 
| 9639 9724 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -9721,6 +9806,7 @@ module Prism | |
| 9721 9806 | 
             
                  { elements: elements, location: location }
         | 
| 9722 9807 | 
             
                end
         | 
| 9723 9808 |  | 
| 9809 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 9724 9810 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 9725 9811 | 
             
                  inspector << inspector.header(self)
         | 
| 9726 9812 | 
             
                  inspector << "└── elements: #{inspector.list("#{inspector.prefix}    ", elements)}"
         | 
| @@ -9756,115 +9842,6 @@ module Prism | |
| 9756 9842 | 
             
                end
         | 
| 9757 9843 | 
             
              end
         | 
| 9758 9844 |  | 
| 9759 | 
            -
              # Represents a keyword parameter to a method, block, or lambda definition.
         | 
| 9760 | 
            -
              #
         | 
| 9761 | 
            -
              #     def a(b:)
         | 
| 9762 | 
            -
              #           ^^
         | 
| 9763 | 
            -
              #     end
         | 
| 9764 | 
            -
              #
         | 
| 9765 | 
            -
              #     def a(b: 1)
         | 
| 9766 | 
            -
              #           ^^^^
         | 
| 9767 | 
            -
              #     end
         | 
| 9768 | 
            -
              class KeywordParameterNode < Node
         | 
| 9769 | 
            -
                # attr_reader name: Symbol
         | 
| 9770 | 
            -
                attr_reader :name
         | 
| 9771 | 
            -
             | 
| 9772 | 
            -
                # attr_reader name_loc: Location
         | 
| 9773 | 
            -
                attr_reader :name_loc
         | 
| 9774 | 
            -
             | 
| 9775 | 
            -
                # attr_reader value: Node?
         | 
| 9776 | 
            -
                attr_reader :value
         | 
| 9777 | 
            -
             | 
| 9778 | 
            -
                # def initialize: (name: Symbol, name_loc: Location, value: Node?, location: Location) -> void
         | 
| 9779 | 
            -
                def initialize(name, name_loc, value, location)
         | 
| 9780 | 
            -
                  @name = name
         | 
| 9781 | 
            -
                  @name_loc = name_loc
         | 
| 9782 | 
            -
                  @value = value
         | 
| 9783 | 
            -
                  @location = location
         | 
| 9784 | 
            -
                end
         | 
| 9785 | 
            -
             | 
| 9786 | 
            -
                # def accept: (visitor: Visitor) -> void
         | 
| 9787 | 
            -
                def accept(visitor)
         | 
| 9788 | 
            -
                  visitor.visit_keyword_parameter_node(self)
         | 
| 9789 | 
            -
                end
         | 
| 9790 | 
            -
             | 
| 9791 | 
            -
                # def child_nodes: () -> Array[nil | Node]
         | 
| 9792 | 
            -
                def child_nodes
         | 
| 9793 | 
            -
                  [value]
         | 
| 9794 | 
            -
                end
         | 
| 9795 | 
            -
             | 
| 9796 | 
            -
                # def compact_child_nodes: () -> Array[Node]
         | 
| 9797 | 
            -
                def compact_child_nodes
         | 
| 9798 | 
            -
                  compact = []
         | 
| 9799 | 
            -
                  compact << value if value
         | 
| 9800 | 
            -
                  compact
         | 
| 9801 | 
            -
                end
         | 
| 9802 | 
            -
             | 
| 9803 | 
            -
                # def comment_targets: () -> Array[Node | Location]
         | 
| 9804 | 
            -
                def comment_targets
         | 
| 9805 | 
            -
                  [name_loc, *value]
         | 
| 9806 | 
            -
                end
         | 
| 9807 | 
            -
             | 
| 9808 | 
            -
                # def copy: (**params) -> KeywordParameterNode
         | 
| 9809 | 
            -
                def copy(**params)
         | 
| 9810 | 
            -
                  KeywordParameterNode.new(
         | 
| 9811 | 
            -
                    params.fetch(:name) { name },
         | 
| 9812 | 
            -
                    params.fetch(:name_loc) { name_loc },
         | 
| 9813 | 
            -
                    params.fetch(:value) { value },
         | 
| 9814 | 
            -
                    params.fetch(:location) { location },
         | 
| 9815 | 
            -
                  )
         | 
| 9816 | 
            -
                end
         | 
| 9817 | 
            -
             | 
| 9818 | 
            -
                # def deconstruct: () -> Array[nil | Node]
         | 
| 9819 | 
            -
                alias deconstruct child_nodes
         | 
| 9820 | 
            -
             | 
| 9821 | 
            -
                # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
         | 
| 9822 | 
            -
                def deconstruct_keys(keys)
         | 
| 9823 | 
            -
                  { name: name, name_loc: name_loc, value: value, location: location }
         | 
| 9824 | 
            -
                end
         | 
| 9825 | 
            -
             | 
| 9826 | 
            -
                def inspect(inspector = NodeInspector.new)
         | 
| 9827 | 
            -
                  inspector << inspector.header(self)
         | 
| 9828 | 
            -
                  inspector << "├── name: #{name.inspect}\n"
         | 
| 9829 | 
            -
                  inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
         | 
| 9830 | 
            -
                  if (value = self.value).nil?
         | 
| 9831 | 
            -
                    inspector << "└── value: ∅\n"
         | 
| 9832 | 
            -
                  else
         | 
| 9833 | 
            -
                    inspector << "└── value:\n"
         | 
| 9834 | 
            -
                    inspector << value.inspect(inspector.child_inspector("    ")).delete_prefix(inspector.prefix)
         | 
| 9835 | 
            -
                  end
         | 
| 9836 | 
            -
                  inspector.to_str
         | 
| 9837 | 
            -
                end
         | 
| 9838 | 
            -
             | 
| 9839 | 
            -
                # Sometimes you want to check an instance of a node against a list of
         | 
| 9840 | 
            -
                # classes to see what kind of behavior to perform. Usually this is done by
         | 
| 9841 | 
            -
                # calling `[cls1, cls2].include?(node.class)` or putting the node into a
         | 
| 9842 | 
            -
                # case statement and doing `case node; when cls1; when cls2; end`. Both of
         | 
| 9843 | 
            -
                # these approaches are relatively slow because of the constant lookups,
         | 
| 9844 | 
            -
                # method calls, and/or array allocations.
         | 
| 9845 | 
            -
                #
         | 
| 9846 | 
            -
                # Instead, you can call #type, which will return to you a symbol that you
         | 
| 9847 | 
            -
                # can use for comparison. This is faster than the other approaches because
         | 
| 9848 | 
            -
                # it uses a single integer comparison, but also because if you're on CRuby
         | 
| 9849 | 
            -
                # you can take advantage of the fact that case statements with all symbol
         | 
| 9850 | 
            -
                # keys will use a jump table.
         | 
| 9851 | 
            -
                #
         | 
| 9852 | 
            -
                # def type: () -> Symbol
         | 
| 9853 | 
            -
                def type
         | 
| 9854 | 
            -
                  :keyword_parameter_node
         | 
| 9855 | 
            -
                end
         | 
| 9856 | 
            -
             | 
| 9857 | 
            -
                # Similar to #type, this method returns a symbol that you can use for
         | 
| 9858 | 
            -
                # splitting on the type of the node without having to do a long === chain.
         | 
| 9859 | 
            -
                # Note that like #type, it will still be slower than using == for a single
         | 
| 9860 | 
            -
                # class, but should be faster in a case statement or an array comparison.
         | 
| 9861 | 
            -
                #
         | 
| 9862 | 
            -
                # def self.type: () -> Symbol
         | 
| 9863 | 
            -
                def self.type
         | 
| 9864 | 
            -
                  :keyword_parameter_node
         | 
| 9865 | 
            -
                end
         | 
| 9866 | 
            -
              end
         | 
| 9867 | 
            -
             | 
| 9868 9845 | 
             
              # Represents a keyword rest parameter to a method, block, or lambda definition.
         | 
| 9869 9846 | 
             
              #
         | 
| 9870 9847 | 
             
              #     def a(**b)
         | 
| @@ -9931,6 +9908,7 @@ module Prism | |
| 9931 9908 | 
             
                  operator_loc.slice
         | 
| 9932 9909 | 
             
                end
         | 
| 9933 9910 |  | 
| 9911 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 9934 9912 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 9935 9913 | 
             
                  inspector << inspector.header(self)
         | 
| 9936 9914 | 
             
                  if (name = self.name).nil?
         | 
| @@ -10065,6 +10043,7 @@ module Prism | |
| 10065 10043 | 
             
                  closing_loc.slice
         | 
| 10066 10044 | 
             
                end
         | 
| 10067 10045 |  | 
| 10046 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 10068 10047 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 10069 10048 | 
             
                  inspector << inspector.header(self)
         | 
| 10070 10049 | 
             
                  inspector << "├── locals: #{locals.inspect}\n"
         | 
| @@ -10190,6 +10169,7 @@ module Prism | |
| 10190 10169 | 
             
                  operator_loc.slice
         | 
| 10191 10170 | 
             
                end
         | 
| 10192 10171 |  | 
| 10172 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 10193 10173 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 10194 10174 | 
             
                  inspector << inspector.header(self)
         | 
| 10195 10175 | 
             
                  inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
         | 
| @@ -10305,6 +10285,7 @@ module Prism | |
| 10305 10285 | 
             
                  { name_loc: name_loc, operator_loc: operator_loc, value: value, name: name, operator: operator, depth: depth, location: location }
         | 
| 10306 10286 | 
             
                end
         | 
| 10307 10287 |  | 
| 10288 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 10308 10289 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 10309 10290 | 
             
                  inspector << inspector.header(self)
         | 
| 10310 10291 | 
             
                  inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
         | 
| @@ -10421,6 +10402,7 @@ module Prism | |
| 10421 10402 | 
             
                  operator_loc.slice
         | 
| 10422 10403 | 
             
                end
         | 
| 10423 10404 |  | 
| 10405 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 10424 10406 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 10425 10407 | 
             
                  inspector << inspector.header(self)
         | 
| 10426 10408 | 
             
                  inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
         | 
| @@ -10518,6 +10500,7 @@ module Prism | |
| 10518 10500 | 
             
                  { name: name, depth: depth, location: location }
         | 
| 10519 10501 | 
             
                end
         | 
| 10520 10502 |  | 
| 10503 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 10521 10504 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 10522 10505 | 
             
                  inspector << inspector.header(self)
         | 
| 10523 10506 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -10609,6 +10592,7 @@ module Prism | |
| 10609 10592 | 
             
                  { name: name, depth: depth, location: location }
         | 
| 10610 10593 | 
             
                end
         | 
| 10611 10594 |  | 
| 10595 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 10612 10596 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 10613 10597 | 
             
                  inspector << inspector.header(self)
         | 
| 10614 10598 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -10720,6 +10704,7 @@ module Prism | |
| 10720 10704 | 
             
                  operator_loc.slice
         | 
| 10721 10705 | 
             
                end
         | 
| 10722 10706 |  | 
| 10707 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 10723 10708 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 10724 10709 | 
             
                  inspector << inspector.header(self)
         | 
| 10725 10710 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -10887,6 +10872,7 @@ module Prism | |
| 10887 10872 | 
             
                  flags.anybits?(RegularExpressionFlags::UTF_8)
         | 
| 10888 10873 | 
             
                end
         | 
| 10889 10874 |  | 
| 10875 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 10890 10876 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 10891 10877 | 
             
                  inspector << inspector.header(self)
         | 
| 10892 10878 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -10992,6 +10978,7 @@ module Prism | |
| 10992 10978 | 
             
                  operator_loc.slice
         | 
| 10993 10979 | 
             
                end
         | 
| 10994 10980 |  | 
| 10981 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 10995 10982 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 10996 10983 | 
             
                  inspector << inspector.header(self)
         | 
| 10997 10984 | 
             
                  inspector << "├── value:\n"
         | 
| @@ -11096,6 +11083,7 @@ module Prism | |
| 11096 11083 | 
             
                  operator_loc.slice
         | 
| 11097 11084 | 
             
                end
         | 
| 11098 11085 |  | 
| 11086 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 11099 11087 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 11100 11088 | 
             
                  inspector << inspector.header(self)
         | 
| 11101 11089 | 
             
                  inspector << "├── value:\n"
         | 
| @@ -11191,6 +11179,7 @@ module Prism | |
| 11191 11179 | 
             
                  { call: call, locals: locals, location: location }
         | 
| 11192 11180 | 
             
                end
         | 
| 11193 11181 |  | 
| 11182 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 11194 11183 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 11195 11184 | 
             
                  inspector << inspector.header(self)
         | 
| 11196 11185 | 
             
                  inspector << "├── call:\n"
         | 
| @@ -11271,6 +11260,7 @@ module Prism | |
| 11271 11260 | 
             
                  { location: location }
         | 
| 11272 11261 | 
             
                end
         | 
| 11273 11262 |  | 
| 11263 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 11274 11264 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 11275 11265 | 
             
                  inspector << inspector.header(self)
         | 
| 11276 11266 | 
             
                  inspector.to_str
         | 
| @@ -11393,6 +11383,7 @@ module Prism | |
| 11393 11383 | 
             
                  end_keyword_loc.slice
         | 
| 11394 11384 | 
             
                end
         | 
| 11395 11385 |  | 
| 11386 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 11396 11387 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 11397 11388 | 
             
                  inspector << inspector.header(self)
         | 
| 11398 11389 | 
             
                  inspector << "├── locals: #{locals.inspect}\n"
         | 
| @@ -11523,6 +11514,7 @@ module Prism | |
| 11523 11514 | 
             
                  rparen_loc&.slice
         | 
| 11524 11515 | 
             
                end
         | 
| 11525 11516 |  | 
| 11517 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 11526 11518 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 11527 11519 | 
             
                  inspector << inspector.header(self)
         | 
| 11528 11520 | 
             
                  inspector << "├── lefts: #{inspector.list("#{inspector.prefix}│   ", lefts)}"
         | 
| @@ -11667,6 +11659,7 @@ module Prism | |
| 11667 11659 | 
             
                  operator_loc.slice
         | 
| 11668 11660 | 
             
                end
         | 
| 11669 11661 |  | 
| 11662 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 11670 11663 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 11671 11664 | 
             
                  inspector << inspector.header(self)
         | 
| 11672 11665 | 
             
                  inspector << "├── lefts: #{inspector.list("#{inspector.prefix}│   ", lefts)}"
         | 
| @@ -11776,6 +11769,7 @@ module Prism | |
| 11776 11769 | 
             
                  keyword_loc.slice
         | 
| 11777 11770 | 
             
                end
         | 
| 11778 11771 |  | 
| 11772 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 11779 11773 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 11780 11774 | 
             
                  inspector << inspector.header(self)
         | 
| 11781 11775 | 
             
                  if (arguments = self.arguments).nil?
         | 
| @@ -11862,6 +11856,7 @@ module Prism | |
| 11862 11856 | 
             
                  { location: location }
         | 
| 11863 11857 | 
             
                end
         | 
| 11864 11858 |  | 
| 11859 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 11865 11860 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 11866 11861 | 
             
                  inspector << inspector.header(self)
         | 
| 11867 11862 | 
             
                  inspector.to_str
         | 
| @@ -11962,6 +11957,7 @@ module Prism | |
| 11962 11957 | 
             
                  keyword_loc.slice
         | 
| 11963 11958 | 
             
                end
         | 
| 11964 11959 |  | 
| 11960 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 11965 11961 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 11966 11962 | 
             
                  inspector << inspector.header(self)
         | 
| 11967 11963 | 
             
                  inspector << "├── operator_loc: #{inspector.location(operator_loc)}\n"
         | 
| @@ -12048,6 +12044,7 @@ module Prism | |
| 12048 12044 | 
             
                  { number: number, location: location }
         | 
| 12049 12045 | 
             
                end
         | 
| 12050 12046 |  | 
| 12047 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 12051 12048 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 12052 12049 | 
             
                  inspector << inspector.header(self)
         | 
| 12053 12050 | 
             
                  inspector << "└── number: #{number.inspect}\n"
         | 
| @@ -12083,6 +12080,106 @@ module Prism | |
| 12083 12080 | 
             
                end
         | 
| 12084 12081 | 
             
              end
         | 
| 12085 12082 |  | 
| 12083 | 
            +
              # Represents an optional keyword parameter to a method, block, or lambda definition.
         | 
| 12084 | 
            +
              #
         | 
| 12085 | 
            +
              #     def a(b: 1)
         | 
| 12086 | 
            +
              #           ^^^^
         | 
| 12087 | 
            +
              #     end
         | 
| 12088 | 
            +
              class OptionalKeywordParameterNode < Node
         | 
| 12089 | 
            +
                # attr_reader name: Symbol
         | 
| 12090 | 
            +
                attr_reader :name
         | 
| 12091 | 
            +
             | 
| 12092 | 
            +
                # attr_reader name_loc: Location
         | 
| 12093 | 
            +
                attr_reader :name_loc
         | 
| 12094 | 
            +
             | 
| 12095 | 
            +
                # attr_reader value: Node
         | 
| 12096 | 
            +
                attr_reader :value
         | 
| 12097 | 
            +
             | 
| 12098 | 
            +
                # def initialize: (name: Symbol, name_loc: Location, value: Node, location: Location) -> void
         | 
| 12099 | 
            +
                def initialize(name, name_loc, value, location)
         | 
| 12100 | 
            +
                  @name = name
         | 
| 12101 | 
            +
                  @name_loc = name_loc
         | 
| 12102 | 
            +
                  @value = value
         | 
| 12103 | 
            +
                  @location = location
         | 
| 12104 | 
            +
                end
         | 
| 12105 | 
            +
             | 
| 12106 | 
            +
                # def accept: (visitor: Visitor) -> void
         | 
| 12107 | 
            +
                def accept(visitor)
         | 
| 12108 | 
            +
                  visitor.visit_optional_keyword_parameter_node(self)
         | 
| 12109 | 
            +
                end
         | 
| 12110 | 
            +
             | 
| 12111 | 
            +
                # def child_nodes: () -> Array[nil | Node]
         | 
| 12112 | 
            +
                def child_nodes
         | 
| 12113 | 
            +
                  [value]
         | 
| 12114 | 
            +
                end
         | 
| 12115 | 
            +
             | 
| 12116 | 
            +
                # def compact_child_nodes: () -> Array[Node]
         | 
| 12117 | 
            +
                def compact_child_nodes
         | 
| 12118 | 
            +
                  [value]
         | 
| 12119 | 
            +
                end
         | 
| 12120 | 
            +
             | 
| 12121 | 
            +
                # def comment_targets: () -> Array[Node | Location]
         | 
| 12122 | 
            +
                def comment_targets
         | 
| 12123 | 
            +
                  [name_loc, value]
         | 
| 12124 | 
            +
                end
         | 
| 12125 | 
            +
             | 
| 12126 | 
            +
                # def copy: (**params) -> OptionalKeywordParameterNode
         | 
| 12127 | 
            +
                def copy(**params)
         | 
| 12128 | 
            +
                  OptionalKeywordParameterNode.new(
         | 
| 12129 | 
            +
                    params.fetch(:name) { name },
         | 
| 12130 | 
            +
                    params.fetch(:name_loc) { name_loc },
         | 
| 12131 | 
            +
                    params.fetch(:value) { value },
         | 
| 12132 | 
            +
                    params.fetch(:location) { location },
         | 
| 12133 | 
            +
                  )
         | 
| 12134 | 
            +
                end
         | 
| 12135 | 
            +
             | 
| 12136 | 
            +
                # def deconstruct: () -> Array[nil | Node]
         | 
| 12137 | 
            +
                alias deconstruct child_nodes
         | 
| 12138 | 
            +
             | 
| 12139 | 
            +
                # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
         | 
| 12140 | 
            +
                def deconstruct_keys(keys)
         | 
| 12141 | 
            +
                  { name: name, name_loc: name_loc, value: value, location: location }
         | 
| 12142 | 
            +
                end
         | 
| 12143 | 
            +
             | 
| 12144 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 12145 | 
            +
                def inspect(inspector = NodeInspector.new)
         | 
| 12146 | 
            +
                  inspector << inspector.header(self)
         | 
| 12147 | 
            +
                  inspector << "├── name: #{name.inspect}\n"
         | 
| 12148 | 
            +
                  inspector << "├── name_loc: #{inspector.location(name_loc)}\n"
         | 
| 12149 | 
            +
                  inspector << "└── value:\n"
         | 
| 12150 | 
            +
                  inspector << inspector.child_node(value, "    ")
         | 
| 12151 | 
            +
                  inspector.to_str
         | 
| 12152 | 
            +
                end
         | 
| 12153 | 
            +
             | 
| 12154 | 
            +
                # Sometimes you want to check an instance of a node against a list of
         | 
| 12155 | 
            +
                # classes to see what kind of behavior to perform. Usually this is done by
         | 
| 12156 | 
            +
                # calling `[cls1, cls2].include?(node.class)` or putting the node into a
         | 
| 12157 | 
            +
                # case statement and doing `case node; when cls1; when cls2; end`. Both of
         | 
| 12158 | 
            +
                # these approaches are relatively slow because of the constant lookups,
         | 
| 12159 | 
            +
                # method calls, and/or array allocations.
         | 
| 12160 | 
            +
                #
         | 
| 12161 | 
            +
                # Instead, you can call #type, which will return to you a symbol that you
         | 
| 12162 | 
            +
                # can use for comparison. This is faster than the other approaches because
         | 
| 12163 | 
            +
                # it uses a single integer comparison, but also because if you're on CRuby
         | 
| 12164 | 
            +
                # you can take advantage of the fact that case statements with all symbol
         | 
| 12165 | 
            +
                # keys will use a jump table.
         | 
| 12166 | 
            +
                #
         | 
| 12167 | 
            +
                # def type: () -> Symbol
         | 
| 12168 | 
            +
                def type
         | 
| 12169 | 
            +
                  :optional_keyword_parameter_node
         | 
| 12170 | 
            +
                end
         | 
| 12171 | 
            +
             | 
| 12172 | 
            +
                # Similar to #type, this method returns a symbol that you can use for
         | 
| 12173 | 
            +
                # splitting on the type of the node without having to do a long === chain.
         | 
| 12174 | 
            +
                # Note that like #type, it will still be slower than using == for a single
         | 
| 12175 | 
            +
                # class, but should be faster in a case statement or an array comparison.
         | 
| 12176 | 
            +
                #
         | 
| 12177 | 
            +
                # def self.type: () -> Symbol
         | 
| 12178 | 
            +
                def self.type
         | 
| 12179 | 
            +
                  :optional_keyword_parameter_node
         | 
| 12180 | 
            +
                end
         | 
| 12181 | 
            +
              end
         | 
| 12182 | 
            +
             | 
| 12086 12183 | 
             
              # Represents an optional parameter to a method, block, or lambda definition.
         | 
| 12087 12184 | 
             
              #
         | 
| 12088 12185 | 
             
              #     def a(b = 1)
         | 
| @@ -12154,6 +12251,7 @@ module Prism | |
| 12154 12251 | 
             
                  operator_loc.slice
         | 
| 12155 12252 | 
             
                end
         | 
| 12156 12253 |  | 
| 12254 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 12157 12255 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 12158 12256 | 
             
                  inspector << inspector.header(self)
         | 
| 12159 12257 | 
             
                  inspector << "├── name: #{name.inspect}\n"
         | 
| @@ -12258,6 +12356,7 @@ module Prism | |
| 12258 12356 | 
             
                  operator_loc.slice
         | 
| 12259 12357 | 
             
                end
         | 
| 12260 12358 |  | 
| 12359 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 12261 12360 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 12262 12361 | 
             
                  inspector << inspector.header(self)
         | 
| 12263 12362 | 
             
                  inspector << "├── left:\n"
         | 
| @@ -12386,6 +12485,7 @@ module Prism | |
| 12386 12485 | 
             
                  { requireds: requireds, optionals: optionals, rest: rest, posts: posts, keywords: keywords, keyword_rest: keyword_rest, block: block, location: location }
         | 
| 12387 12486 | 
             
                end
         | 
| 12388 12487 |  | 
| 12488 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 12389 12489 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 12390 12490 | 
             
                  inspector << inspector.header(self)
         | 
| 12391 12491 | 
             
                  inspector << "├── requireds: #{inspector.list("#{inspector.prefix}│   ", requireds)}"
         | 
| @@ -12469,7 +12569,7 @@ module Prism | |
| 12469 12569 | 
             
                  visitor.visit_parentheses_node(self)
         | 
| 12470 12570 | 
             
                end
         | 
| 12471 12571 |  | 
| 12472 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 12572 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 12473 12573 | 
             
                  # Never mark ParenthesesNode with a newline flag, mark children instead
         | 
| 12474 12574 | 
             
                end
         | 
| 12475 12575 |  | 
| @@ -12518,6 +12618,7 @@ module Prism | |
| 12518 12618 | 
             
                  closing_loc.slice
         | 
| 12519 12619 | 
             
                end
         | 
| 12520 12620 |  | 
| 12621 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 12521 12622 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 12522 12623 | 
             
                  inspector << inspector.header(self)
         | 
| 12523 12624 | 
             
                  if (body = self.body).nil?
         | 
| @@ -12641,6 +12742,7 @@ module Prism | |
| 12641 12742 | 
             
                  rparen_loc.slice
         | 
| 12642 12743 | 
             
                end
         | 
| 12643 12744 |  | 
| 12745 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 12644 12746 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 12645 12747 | 
             
                  inspector << inspector.header(self)
         | 
| 12646 12748 | 
             
                  inspector << "├── expression:\n"
         | 
| @@ -12741,6 +12843,7 @@ module Prism | |
| 12741 12843 | 
             
                  operator_loc.slice
         | 
| 12742 12844 | 
             
                end
         | 
| 12743 12845 |  | 
| 12846 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 12744 12847 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 12745 12848 | 
             
                  inspector << inspector.header(self)
         | 
| 12746 12849 | 
             
                  inspector << "├── variable:\n"
         | 
| @@ -12860,6 +12963,7 @@ module Prism | |
| 12860 12963 | 
             
                  closing_loc.slice
         | 
| 12861 12964 | 
             
                end
         | 
| 12862 12965 |  | 
| 12966 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 12863 12967 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 12864 12968 | 
             
                  inspector << inspector.header(self)
         | 
| 12865 12969 | 
             
                  if (statements = self.statements).nil?
         | 
| @@ -12985,6 +13089,7 @@ module Prism | |
| 12985 13089 | 
             
                  closing_loc.slice
         | 
| 12986 13090 | 
             
                end
         | 
| 12987 13091 |  | 
| 13092 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 12988 13093 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 12989 13094 | 
             
                  inspector << inspector.header(self)
         | 
| 12990 13095 | 
             
                  if (statements = self.statements).nil?
         | 
| @@ -13080,6 +13185,7 @@ module Prism | |
| 13080 13185 | 
             
                  { locals: locals, statements: statements, location: location }
         | 
| 13081 13186 | 
             
                end
         | 
| 13082 13187 |  | 
| 13188 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 13083 13189 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 13084 13190 | 
             
                  inspector << inspector.header(self)
         | 
| 13085 13191 | 
             
                  inspector << "├── locals: #{locals.inspect}\n"
         | 
| @@ -13198,6 +13304,7 @@ module Prism | |
| 13198 13304 | 
             
                  flags.anybits?(RangeFlags::EXCLUDE_END)
         | 
| 13199 13305 | 
             
                end
         | 
| 13200 13306 |  | 
| 13307 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 13201 13308 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 13202 13309 | 
             
                  inspector << inspector.header(self)
         | 
| 13203 13310 | 
             
                  if (left = self.left).nil?
         | 
| @@ -13297,6 +13404,7 @@ module Prism | |
| 13297 13404 | 
             
                  { numeric: numeric, location: location }
         | 
| 13298 13405 | 
             
                end
         | 
| 13299 13406 |  | 
| 13407 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 13300 13408 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 13301 13409 | 
             
                  inspector << inspector.header(self)
         | 
| 13302 13410 | 
             
                  inspector << "└── numeric:\n"
         | 
| @@ -13378,6 +13486,7 @@ module Prism | |
| 13378 13486 | 
             
                  { location: location }
         | 
| 13379 13487 | 
             
                end
         | 
| 13380 13488 |  | 
| 13489 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 13381 13490 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 13382 13491 | 
             
                  inspector << inspector.header(self)
         | 
| 13383 13492 | 
             
                  inspector.to_str
         | 
| @@ -13537,6 +13646,7 @@ module Prism | |
| 13537 13646 | 
             
                  flags.anybits?(RegularExpressionFlags::UTF_8)
         | 
| 13538 13647 | 
             
                end
         | 
| 13539 13648 |  | 
| 13649 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 13540 13650 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 13541 13651 | 
             
                  inspector << inspector.header(self)
         | 
| 13542 13652 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -13577,6 +13687,99 @@ module Prism | |
| 13577 13687 | 
             
                end
         | 
| 13578 13688 | 
             
              end
         | 
| 13579 13689 |  | 
| 13690 | 
            +
              # Represents a required keyword parameter to a method, block, or lambda definition.
         | 
| 13691 | 
            +
              #
         | 
| 13692 | 
            +
              #     def a(b: )
         | 
| 13693 | 
            +
              #           ^^
         | 
| 13694 | 
            +
              #     end
         | 
| 13695 | 
            +
              class RequiredKeywordParameterNode < Node
         | 
| 13696 | 
            +
                # attr_reader name: Symbol
         | 
| 13697 | 
            +
                attr_reader :name
         | 
| 13698 | 
            +
             | 
| 13699 | 
            +
                # attr_reader name_loc: Location
         | 
| 13700 | 
            +
                attr_reader :name_loc
         | 
| 13701 | 
            +
             | 
| 13702 | 
            +
                # def initialize: (name: Symbol, name_loc: Location, location: Location) -> void
         | 
| 13703 | 
            +
                def initialize(name, name_loc, location)
         | 
| 13704 | 
            +
                  @name = name
         | 
| 13705 | 
            +
                  @name_loc = name_loc
         | 
| 13706 | 
            +
                  @location = location
         | 
| 13707 | 
            +
                end
         | 
| 13708 | 
            +
             | 
| 13709 | 
            +
                # def accept: (visitor: Visitor) -> void
         | 
| 13710 | 
            +
                def accept(visitor)
         | 
| 13711 | 
            +
                  visitor.visit_required_keyword_parameter_node(self)
         | 
| 13712 | 
            +
                end
         | 
| 13713 | 
            +
             | 
| 13714 | 
            +
                # def child_nodes: () -> Array[nil | Node]
         | 
| 13715 | 
            +
                def child_nodes
         | 
| 13716 | 
            +
                  []
         | 
| 13717 | 
            +
                end
         | 
| 13718 | 
            +
             | 
| 13719 | 
            +
                # def compact_child_nodes: () -> Array[Node]
         | 
| 13720 | 
            +
                def compact_child_nodes
         | 
| 13721 | 
            +
                  []
         | 
| 13722 | 
            +
                end
         | 
| 13723 | 
            +
             | 
| 13724 | 
            +
                # def comment_targets: () -> Array[Node | Location]
         | 
| 13725 | 
            +
                def comment_targets
         | 
| 13726 | 
            +
                  [name_loc]
         | 
| 13727 | 
            +
                end
         | 
| 13728 | 
            +
             | 
| 13729 | 
            +
                # def copy: (**params) -> RequiredKeywordParameterNode
         | 
| 13730 | 
            +
                def copy(**params)
         | 
| 13731 | 
            +
                  RequiredKeywordParameterNode.new(
         | 
| 13732 | 
            +
                    params.fetch(:name) { name },
         | 
| 13733 | 
            +
                    params.fetch(:name_loc) { name_loc },
         | 
| 13734 | 
            +
                    params.fetch(:location) { location },
         | 
| 13735 | 
            +
                  )
         | 
| 13736 | 
            +
                end
         | 
| 13737 | 
            +
             | 
| 13738 | 
            +
                # def deconstruct: () -> Array[nil | Node]
         | 
| 13739 | 
            +
                alias deconstruct child_nodes
         | 
| 13740 | 
            +
             | 
| 13741 | 
            +
                # def deconstruct_keys: (keys: Array[Symbol]) -> Hash[Symbol, nil | Node | Array[Node] | String | Token | Array[Token] | Location]
         | 
| 13742 | 
            +
                def deconstruct_keys(keys)
         | 
| 13743 | 
            +
                  { name: name, name_loc: name_loc, location: location }
         | 
| 13744 | 
            +
                end
         | 
| 13745 | 
            +
             | 
| 13746 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 13747 | 
            +
                def inspect(inspector = NodeInspector.new)
         | 
| 13748 | 
            +
                  inspector << inspector.header(self)
         | 
| 13749 | 
            +
                  inspector << "├── name: #{name.inspect}\n"
         | 
| 13750 | 
            +
                  inspector << "└── name_loc: #{inspector.location(name_loc)}\n"
         | 
| 13751 | 
            +
                  inspector.to_str
         | 
| 13752 | 
            +
                end
         | 
| 13753 | 
            +
             | 
| 13754 | 
            +
                # Sometimes you want to check an instance of a node against a list of
         | 
| 13755 | 
            +
                # classes to see what kind of behavior to perform. Usually this is done by
         | 
| 13756 | 
            +
                # calling `[cls1, cls2].include?(node.class)` or putting the node into a
         | 
| 13757 | 
            +
                # case statement and doing `case node; when cls1; when cls2; end`. Both of
         | 
| 13758 | 
            +
                # these approaches are relatively slow because of the constant lookups,
         | 
| 13759 | 
            +
                # method calls, and/or array allocations.
         | 
| 13760 | 
            +
                #
         | 
| 13761 | 
            +
                # Instead, you can call #type, which will return to you a symbol that you
         | 
| 13762 | 
            +
                # can use for comparison. This is faster than the other approaches because
         | 
| 13763 | 
            +
                # it uses a single integer comparison, but also because if you're on CRuby
         | 
| 13764 | 
            +
                # you can take advantage of the fact that case statements with all symbol
         | 
| 13765 | 
            +
                # keys will use a jump table.
         | 
| 13766 | 
            +
                #
         | 
| 13767 | 
            +
                # def type: () -> Symbol
         | 
| 13768 | 
            +
                def type
         | 
| 13769 | 
            +
                  :required_keyword_parameter_node
         | 
| 13770 | 
            +
                end
         | 
| 13771 | 
            +
             | 
| 13772 | 
            +
                # Similar to #type, this method returns a symbol that you can use for
         | 
| 13773 | 
            +
                # splitting on the type of the node without having to do a long === chain.
         | 
| 13774 | 
            +
                # Note that like #type, it will still be slower than using == for a single
         | 
| 13775 | 
            +
                # class, but should be faster in a case statement or an array comparison.
         | 
| 13776 | 
            +
                #
         | 
| 13777 | 
            +
                # def self.type: () -> Symbol
         | 
| 13778 | 
            +
                def self.type
         | 
| 13779 | 
            +
                  :required_keyword_parameter_node
         | 
| 13780 | 
            +
                end
         | 
| 13781 | 
            +
              end
         | 
| 13782 | 
            +
             | 
| 13580 13783 | 
             
              # Represents a required parameter to a method, block, or lambda definition.
         | 
| 13581 13784 | 
             
              #
         | 
| 13582 13785 | 
             
              #     def a(b)
         | 
| @@ -13628,6 +13831,7 @@ module Prism | |
| 13628 13831 | 
             
                  { name: name, location: location }
         | 
| 13629 13832 | 
             
                end
         | 
| 13630 13833 |  | 
| 13834 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 13631 13835 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 13632 13836 | 
             
                  inspector << inspector.header(self)
         | 
| 13633 13837 | 
             
                  inspector << "└── name: #{name.inspect}\n"
         | 
| @@ -13665,8 +13869,8 @@ module Prism | |
| 13665 13869 |  | 
| 13666 13870 | 
             
              # Represents an expression modified with a rescue.
         | 
| 13667 13871 | 
             
              #
         | 
| 13668 | 
            -
              # | 
| 13669 | 
            -
              # | 
| 13872 | 
            +
              #     foo rescue nil
         | 
| 13873 | 
            +
              #     ^^^^^^^^^^^^^^
         | 
| 13670 13874 | 
             
              class RescueModifierNode < Node
         | 
| 13671 13875 | 
             
                # attr_reader expression: Node
         | 
| 13672 13876 | 
             
                attr_reader :expression
         | 
| @@ -13690,7 +13894,7 @@ module Prism | |
| 13690 13894 | 
             
                  visitor.visit_rescue_modifier_node(self)
         | 
| 13691 13895 | 
             
                end
         | 
| 13692 13896 |  | 
| 13693 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 13897 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 13694 13898 | 
             
                  expression.set_newline_flag(newline_marked)
         | 
| 13695 13899 | 
             
                end
         | 
| 13696 13900 |  | 
| @@ -13732,6 +13936,7 @@ module Prism | |
| 13732 13936 | 
             
                  keyword_loc.slice
         | 
| 13733 13937 | 
             
                end
         | 
| 13734 13938 |  | 
| 13939 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 13735 13940 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 13736 13941 | 
             
                  inspector << inspector.header(self)
         | 
| 13737 13942 | 
             
                  inspector << "├── expression:\n"
         | 
| @@ -13775,8 +13980,8 @@ module Prism | |
| 13775 13980 | 
             
              #
         | 
| 13776 13981 | 
             
              #     begin
         | 
| 13777 13982 | 
             
              #     rescue Foo, *splat, Bar => ex
         | 
| 13778 | 
            -
              #     ^^^^^^
         | 
| 13779 13983 | 
             
              #       foo
         | 
| 13984 | 
            +
              #     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         | 
| 13780 13985 | 
             
              #     end
         | 
| 13781 13986 | 
             
              #
         | 
| 13782 13987 | 
             
              # `Foo, *splat, Bar` are in the `exceptions` field.
         | 
| @@ -13867,6 +14072,7 @@ module Prism | |
| 13867 14072 | 
             
                  operator_loc&.slice
         | 
| 13868 14073 | 
             
                end
         | 
| 13869 14074 |  | 
| 14075 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 13870 14076 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 13871 14077 | 
             
                  inspector << inspector.header(self)
         | 
| 13872 14078 | 
             
                  inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
         | 
| @@ -13988,6 +14194,7 @@ module Prism | |
| 13988 14194 | 
             
                  operator_loc.slice
         | 
| 13989 14195 | 
             
                end
         | 
| 13990 14196 |  | 
| 14197 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 13991 14198 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 13992 14199 | 
             
                  inspector << inspector.header(self)
         | 
| 13993 14200 | 
             
                  if (name = self.name).nil?
         | 
| @@ -14074,6 +14281,7 @@ module Prism | |
| 14074 14281 | 
             
                  { location: location }
         | 
| 14075 14282 | 
             
                end
         | 
| 14076 14283 |  | 
| 14284 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 14077 14285 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 14078 14286 | 
             
                  inspector << inspector.header(self)
         | 
| 14079 14287 | 
             
                  inspector.to_str
         | 
| @@ -14170,6 +14378,7 @@ module Prism | |
| 14170 14378 | 
             
                  keyword_loc.slice
         | 
| 14171 14379 | 
             
                end
         | 
| 14172 14380 |  | 
| 14381 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 14173 14382 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 14174 14383 | 
             
                  inspector << inspector.header(self)
         | 
| 14175 14384 | 
             
                  inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
         | 
| @@ -14256,6 +14465,7 @@ module Prism | |
| 14256 14465 | 
             
                  { location: location }
         | 
| 14257 14466 | 
             
                end
         | 
| 14258 14467 |  | 
| 14468 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 14259 14469 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 14260 14470 | 
             
                  inspector << inspector.header(self)
         | 
| 14261 14471 | 
             
                  inspector.to_str
         | 
| @@ -14383,6 +14593,7 @@ module Prism | |
| 14383 14593 | 
             
                  end_keyword_loc.slice
         | 
| 14384 14594 | 
             
                end
         | 
| 14385 14595 |  | 
| 14596 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 14386 14597 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 14387 14598 | 
             
                  inspector << inspector.header(self)
         | 
| 14388 14599 | 
             
                  inspector << "├── locals: #{locals.inspect}\n"
         | 
| @@ -14474,6 +14685,7 @@ module Prism | |
| 14474 14685 | 
             
                  { location: location }
         | 
| 14475 14686 | 
             
                end
         | 
| 14476 14687 |  | 
| 14688 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 14477 14689 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 14478 14690 | 
             
                  inspector << inspector.header(self)
         | 
| 14479 14691 | 
             
                  inspector.to_str
         | 
| @@ -14558,6 +14770,7 @@ module Prism | |
| 14558 14770 | 
             
                  { filepath: filepath, location: location }
         | 
| 14559 14771 | 
             
                end
         | 
| 14560 14772 |  | 
| 14773 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 14561 14774 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 14562 14775 | 
             
                  inspector << inspector.header(self)
         | 
| 14563 14776 | 
             
                  inspector << "└── filepath: #{filepath.inspect}\n"
         | 
| @@ -14638,6 +14851,7 @@ module Prism | |
| 14638 14851 | 
             
                  { location: location }
         | 
| 14639 14852 | 
             
                end
         | 
| 14640 14853 |  | 
| 14854 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 14641 14855 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 14642 14856 | 
             
                  inspector << inspector.header(self)
         | 
| 14643 14857 | 
             
                  inspector.to_str
         | 
| @@ -14734,6 +14948,7 @@ module Prism | |
| 14734 14948 | 
             
                  operator_loc.slice
         | 
| 14735 14949 | 
             
                end
         | 
| 14736 14950 |  | 
| 14951 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 14737 14952 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 14738 14953 | 
             
                  inspector << inspector.header(self)
         | 
| 14739 14954 | 
             
                  inspector << "├── operator_loc: #{inspector.location(operator_loc)}\n"
         | 
| @@ -14825,6 +15040,7 @@ module Prism | |
| 14825 15040 | 
             
                  { body: body, location: location }
         | 
| 14826 15041 | 
             
                end
         | 
| 14827 15042 |  | 
| 15043 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 14828 15044 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 14829 15045 | 
             
                  inspector << inspector.header(self)
         | 
| 14830 15046 | 
             
                  inspector << "└── body: #{inspector.list("#{inspector.prefix}    ", body)}"
         | 
| @@ -14915,6 +15131,7 @@ module Prism | |
| 14915 15131 | 
             
                  { left: left, right: right, location: location }
         | 
| 14916 15132 | 
             
                end
         | 
| 14917 15133 |  | 
| 15134 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 14918 15135 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 14919 15136 | 
             
                  inspector << inspector.header(self)
         | 
| 14920 15137 | 
             
                  inspector << "├── left:\n"
         | 
| @@ -15050,6 +15267,7 @@ module Prism | |
| 15050 15267 | 
             
                  closing_loc&.slice
         | 
| 15051 15268 | 
             
                end
         | 
| 15052 15269 |  | 
| 15270 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 15053 15271 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 15054 15272 | 
             
                  inspector << inspector.header(self)
         | 
| 15055 15273 | 
             
                  flags = [("frozen" if frozen?)].compact
         | 
| @@ -15181,6 +15399,7 @@ module Prism | |
| 15181 15399 | 
             
                  rparen_loc&.slice
         | 
| 15182 15400 | 
             
                end
         | 
| 15183 15401 |  | 
| 15402 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 15184 15403 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 15185 15404 | 
             
                  inspector << inspector.header(self)
         | 
| 15186 15405 | 
             
                  inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
         | 
| @@ -15313,6 +15532,7 @@ module Prism | |
| 15313 15532 | 
             
                  closing_loc&.slice
         | 
| 15314 15533 | 
             
                end
         | 
| 15315 15534 |  | 
| 15535 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 15316 15536 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 15317 15537 | 
             
                  inspector << inspector.header(self)
         | 
| 15318 15538 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -15396,6 +15616,7 @@ module Prism | |
| 15396 15616 | 
             
                  { location: location }
         | 
| 15397 15617 | 
             
                end
         | 
| 15398 15618 |  | 
| 15619 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 15399 15620 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 15400 15621 | 
             
                  inspector << inspector.header(self)
         | 
| 15401 15622 | 
             
                  inspector.to_str
         | 
| @@ -15490,6 +15711,7 @@ module Prism | |
| 15490 15711 | 
             
                  keyword_loc.slice
         | 
| 15491 15712 | 
             
                end
         | 
| 15492 15713 |  | 
| 15714 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 15493 15715 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 15494 15716 | 
             
                  inspector << inspector.header(self)
         | 
| 15495 15717 | 
             
                  inspector << "├── names: #{inspector.list("#{inspector.prefix}│   ", names)}"
         | 
| @@ -15564,7 +15786,7 @@ module Prism | |
| 15564 15786 | 
             
                  visitor.visit_unless_node(self)
         | 
| 15565 15787 | 
             
                end
         | 
| 15566 15788 |  | 
| 15567 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 15789 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 15568 15790 | 
             
                  predicate.set_newline_flag(newline_marked)
         | 
| 15569 15791 | 
             
                end
         | 
| 15570 15792 |  | 
| @@ -15617,6 +15839,7 @@ module Prism | |
| 15617 15839 | 
             
                  end_keyword_loc&.slice
         | 
| 15618 15840 | 
             
                end
         | 
| 15619 15841 |  | 
| 15842 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 15620 15843 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 15621 15844 | 
             
                  inspector << inspector.header(self)
         | 
| 15622 15845 | 
             
                  inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
         | 
| @@ -15705,7 +15928,7 @@ module Prism | |
| 15705 15928 | 
             
                  visitor.visit_until_node(self)
         | 
| 15706 15929 | 
             
                end
         | 
| 15707 15930 |  | 
| 15708 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 15931 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 15709 15932 | 
             
                  predicate.set_newline_flag(newline_marked)
         | 
| 15710 15933 | 
             
                end
         | 
| 15711 15934 |  | 
| @@ -15762,6 +15985,7 @@ module Prism | |
| 15762 15985 | 
             
                  flags.anybits?(LoopFlags::BEGIN_MODIFIER)
         | 
| 15763 15986 | 
             
                end
         | 
| 15764 15987 |  | 
| 15988 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 15765 15989 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 15766 15990 | 
             
                  inspector << inspector.header(self)
         | 
| 15767 15991 | 
             
                  inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
         | 
| @@ -15878,6 +16102,7 @@ module Prism | |
| 15878 16102 | 
             
                  keyword_loc.slice
         | 
| 15879 16103 | 
             
                end
         | 
| 15880 16104 |  | 
| 16105 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 15881 16106 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 15882 16107 | 
             
                  inspector << inspector.header(self)
         | 
| 15883 16108 | 
             
                  inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
         | 
| @@ -15958,7 +16183,7 @@ module Prism | |
| 15958 16183 | 
             
                  visitor.visit_while_node(self)
         | 
| 15959 16184 | 
             
                end
         | 
| 15960 16185 |  | 
| 15961 | 
            -
                def set_newline_flag(newline_marked)
         | 
| 16186 | 
            +
                def set_newline_flag(newline_marked) # :nodoc:
         | 
| 15962 16187 | 
             
                  predicate.set_newline_flag(newline_marked)
         | 
| 15963 16188 | 
             
                end
         | 
| 15964 16189 |  | 
| @@ -16015,6 +16240,7 @@ module Prism | |
| 16015 16240 | 
             
                  flags.anybits?(LoopFlags::BEGIN_MODIFIER)
         | 
| 16016 16241 | 
             
                end
         | 
| 16017 16242 |  | 
| 16243 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 16018 16244 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 16019 16245 | 
             
                  inspector << inspector.header(self)
         | 
| 16020 16246 | 
             
                  inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
         | 
| @@ -16141,6 +16367,7 @@ module Prism | |
| 16141 16367 | 
             
                  closing_loc.slice
         | 
| 16142 16368 | 
             
                end
         | 
| 16143 16369 |  | 
| 16370 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 16144 16371 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 16145 16372 | 
             
                  inspector << inspector.header(self)
         | 
| 16146 16373 | 
             
                  inspector << "├── opening_loc: #{inspector.location(opening_loc)}\n"
         | 
| @@ -16261,6 +16488,7 @@ module Prism | |
| 16261 16488 | 
             
                  rparen_loc&.slice
         | 
| 16262 16489 | 
             
                end
         | 
| 16263 16490 |  | 
| 16491 | 
            +
                # def inspect(inspector: NodeInspector) -> String
         | 
| 16264 16492 | 
             
                def inspect(inspector = NodeInspector.new)
         | 
| 16265 16493 | 
             
                  inspector << inspector.header(self)
         | 
| 16266 16494 | 
             
                  inspector << "├── keyword_loc: #{inspector.location(keyword_loc)}\n"
         | 
| @@ -16304,11 +16532,13 @@ module Prism | |
| 16304 16532 | 
             
                end
         | 
| 16305 16533 | 
             
              end
         | 
| 16306 16534 |  | 
| 16535 | 
            +
              # Flags for arguments nodes.
         | 
| 16307 16536 | 
             
              module ArgumentsNodeFlags
         | 
| 16308 16537 | 
             
                # if arguments contain keyword splat
         | 
| 16309 16538 | 
             
                KEYWORD_SPLAT = 1 << 0
         | 
| 16310 16539 | 
             
              end
         | 
| 16311 16540 |  | 
| 16541 | 
            +
              # Flags for call nodes.
         | 
| 16312 16542 | 
             
              module CallNodeFlags
         | 
| 16313 16543 | 
             
                # &. operator
         | 
| 16314 16544 | 
             
                SAFE_NAVIGATION = 1 << 0
         | 
| @@ -16317,6 +16547,7 @@ module Prism | |
| 16317 16547 | 
             
                VARIABLE_CALL = 1 << 1
         | 
| 16318 16548 | 
             
              end
         | 
| 16319 16549 |  | 
| 16550 | 
            +
              # Flags for integer nodes that correspond to the base of the integer.
         | 
| 16320 16551 | 
             
              module IntegerBaseFlags
         | 
| 16321 16552 | 
             
                # 0b prefix
         | 
| 16322 16553 | 
             
                BINARY = 1 << 0
         | 
| @@ -16331,16 +16562,19 @@ module Prism | |
| 16331 16562 | 
             
                HEXADECIMAL = 1 << 3
         | 
| 16332 16563 | 
             
              end
         | 
| 16333 16564 |  | 
| 16565 | 
            +
              # Flags for while and until loop nodes.
         | 
| 16334 16566 | 
             
              module LoopFlags
         | 
| 16335 16567 | 
             
                # a loop after a begin statement, so the body is executed first before the condition
         | 
| 16336 16568 | 
             
                BEGIN_MODIFIER = 1 << 0
         | 
| 16337 16569 | 
             
              end
         | 
| 16338 16570 |  | 
| 16571 | 
            +
              # Flags for range and flip-flop nodes.
         | 
| 16339 16572 | 
             
              module RangeFlags
         | 
| 16340 16573 | 
             
                # ... operator
         | 
| 16341 16574 | 
             
                EXCLUDE_END = 1 << 0
         | 
| 16342 16575 | 
             
              end
         | 
| 16343 16576 |  | 
| 16577 | 
            +
              # Flags for regular expression and match last line nodes.
         | 
| 16344 16578 | 
             
              module RegularExpressionFlags
         | 
| 16345 16579 | 
             
                # i - ignores the case of characters when matching
         | 
| 16346 16580 | 
             
                IGNORE_CASE = 1 << 0
         | 
| @@ -16367,6 +16601,7 @@ module Prism | |
| 16367 16601 | 
             
                UTF_8 = 1 << 7
         | 
| 16368 16602 | 
             
              end
         | 
| 16369 16603 |  | 
| 16604 | 
            +
              # Flags for string nodes.
         | 
| 16370 16605 | 
             
              module StringFlags
         | 
| 16371 16606 | 
             
                # frozen by virtue of a `frozen_string_literal` comment
         | 
| 16372 16607 | 
             
                FROZEN = 1 << 0
         |