prism 1.9.0 → 2.0.0.rc2

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.
Files changed (244) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +88 -0
  3. data/CODE_OF_CONDUCT.md +1 -1
  4. data/LICENSE.md +1 -1
  5. data/Makefile +41 -12
  6. data/README.md +35 -97
  7. data/config.yml +174 -161
  8. data/docs/build_system.md +2 -2
  9. data/docs/configuration.md +5 -4
  10. data/docs/encoding.md +2 -2
  11. data/docs/fuzzing.md +4 -11
  12. data/docs/javascript.md +19 -4
  13. data/docs/mapping.md +1 -1
  14. data/docs/releasing.md +77 -5
  15. data/docs/relocation.md +2 -4
  16. data/docs/serialization.md +22 -24
  17. data/docs/testing.md +46 -29
  18. data/ext/prism/api_node.c +1461 -1401
  19. data/ext/prism/extconf.rb +3 -4
  20. data/ext/prism/extension.c +796 -422
  21. data/ext/prism/extension.h +3 -3
  22. data/include/prism/arena.h +37 -0
  23. data/include/prism/ast.h +2727 -610
  24. data/include/prism/buffer.h +52 -0
  25. data/include/prism/comments.h +55 -0
  26. data/include/prism/compiler/accel.h +26 -0
  27. data/include/prism/compiler/align.h +36 -0
  28. data/include/prism/compiler/assume.h +25 -0
  29. data/include/prism/compiler/bswap.h +46 -0
  30. data/include/prism/compiler/endianness.h +34 -0
  31. data/include/prism/compiler/exported.h +24 -0
  32. data/include/prism/compiler/fallthrough.h +22 -0
  33. data/include/prism/compiler/filesystem.h +32 -0
  34. data/include/prism/compiler/flex_array.h +19 -0
  35. data/include/prism/compiler/force_inline.h +21 -0
  36. data/include/prism/compiler/format.h +25 -0
  37. data/include/prism/compiler/inline.h +17 -0
  38. data/include/prism/compiler/nodiscard.h +22 -0
  39. data/include/prism/compiler/nonnull.h +18 -0
  40. data/include/prism/compiler/unused.h +18 -0
  41. data/include/prism/constant_pool.h +81 -0
  42. data/include/prism/diagnostic.h +38 -403
  43. data/include/prism/errors_format.h +53 -0
  44. data/include/prism/excludes.h +29 -0
  45. data/include/prism/integer.h +41 -0
  46. data/include/prism/internal/allocator.h +68 -0
  47. data/include/prism/internal/allocator_debug.h +88 -0
  48. data/include/prism/internal/arena.h +108 -0
  49. data/include/prism/internal/bit.h +42 -0
  50. data/include/prism/internal/buffer.h +94 -0
  51. data/include/prism/internal/char.h +145 -0
  52. data/include/prism/internal/comments.h +53 -0
  53. data/include/prism/internal/constant_pool.h +152 -0
  54. data/include/prism/internal/diagnostic.h +389 -0
  55. data/include/prism/{encoding.h → internal/encoding.h} +27 -68
  56. data/include/prism/internal/integer.h +68 -0
  57. data/include/prism/internal/isinf.h +16 -0
  58. data/include/prism/internal/line_offset_list.h +34 -0
  59. data/include/prism/{util/pm_list.h → internal/list.h} +11 -52
  60. data/include/prism/internal/magic_comments.h +23 -0
  61. data/include/prism/internal/memchr.h +15 -0
  62. data/include/prism/internal/node.h +38 -0
  63. data/include/prism/internal/options.h +232 -0
  64. data/include/prism/internal/parser.h +1004 -0
  65. data/include/prism/internal/regexp.h +26 -0
  66. data/include/prism/internal/serialize.h +39 -0
  67. data/include/prism/internal/source.h +72 -0
  68. data/include/prism/{static_literals.h → internal/static_literals.h} +26 -47
  69. data/include/prism/internal/stringy.h +35 -0
  70. data/include/prism/{util/pm_strncasecmp.h → internal/strncasecmp.h} +3 -17
  71. data/include/prism/{util/pm_strpbrk.h → internal/strpbrk.h} +7 -20
  72. data/include/prism/internal/tokens.h +11 -0
  73. data/include/prism/internal/xxh3.h +16 -0
  74. data/include/prism/json.h +32 -0
  75. data/include/prism/line_offset_list.h +61 -0
  76. data/include/prism/magic_comments.h +35 -0
  77. data/include/prism/node.h +18 -53
  78. data/include/prism/options.h +146 -280
  79. data/include/prism/parser.h +356 -867
  80. data/include/prism/prettyprint.h +6 -9
  81. data/include/prism/serialize.h +115 -0
  82. data/include/prism/source.h +155 -0
  83. data/include/prism/stream.h +28 -0
  84. data/include/prism/string_query.h +74 -0
  85. data/include/prism/stringy.h +72 -0
  86. data/include/prism/version.h +12 -3
  87. data/include/prism.h +43 -320
  88. data/lib/prism/compiler.rb +319 -305
  89. data/lib/prism/desugar_compiler.rb +105 -34
  90. data/lib/prism/dispatcher.rb +646 -473
  91. data/lib/prism/dot_visitor.rb +592 -511
  92. data/lib/prism/dsl.rb +391 -25
  93. data/lib/prism/ffi.rb +258 -90
  94. data/lib/prism/inspect_visitor.rb +357 -325
  95. data/lib/prism/lex_compat.rb +254 -212
  96. data/lib/prism/mutation_compiler.rb +313 -305
  97. data/lib/prism/node.rb +20966 -6992
  98. data/lib/prism/node_ext.rb +180 -187
  99. data/lib/prism/node_find.rb +215 -0
  100. data/lib/prism/parse_result/errors.rb +7 -1
  101. data/lib/prism/parse_result/newlines.rb +276 -8
  102. data/lib/prism/parse_result.rb +468 -139
  103. data/lib/prism/pattern.rb +65 -20
  104. data/lib/prism/reflection.rb +23 -12
  105. data/lib/prism/relocation.rb +149 -87
  106. data/lib/prism/serialize.rb +3460 -539
  107. data/lib/prism/string_query.rb +24 -1
  108. data/lib/prism/translation/parser/builder.rb +10 -2
  109. data/lib/prism/translation/parser/compiler.rb +44 -52
  110. data/lib/prism/translation/parser/lexer.rb +41 -92
  111. data/lib/prism/translation/parser.rb +1 -1
  112. data/lib/prism/translation/parser_current.rb +1 -1
  113. data/lib/prism/translation/ripper/lexer.rb +8 -10
  114. data/lib/prism/translation/ripper/sexp.rb +2 -10
  115. data/lib/prism/translation/ripper/shim.rb +2 -0
  116. data/lib/prism/translation/ripper.rb +967 -209
  117. data/lib/prism/translation/ruby_parser.rb +73 -316
  118. data/lib/prism/translation.rb +2 -0
  119. data/lib/prism/visitor.rb +632 -5
  120. data/lib/prism.rb +79 -9
  121. data/prism.gemspec +128 -62
  122. data/rbi/generated/prism/compiler.rbi +489 -0
  123. data/rbi/generated/prism/desugar_compiler.rbi +306 -0
  124. data/rbi/generated/prism/dispatcher.rbi +1138 -0
  125. data/rbi/generated/prism/dot_visitor.rbi +618 -0
  126. data/rbi/generated/prism/dsl.rbi +751 -0
  127. data/rbi/generated/prism/inspect_visitor.rbi +503 -0
  128. data/rbi/generated/prism/lex_compat.rbi +162 -0
  129. data/rbi/generated/prism/mutation_compiler.rbi +464 -0
  130. data/rbi/generated/prism/node.rbi +14407 -0
  131. data/rbi/generated/prism/node_ext.rbi +259 -0
  132. data/rbi/generated/prism/node_find.rbi +79 -0
  133. data/rbi/generated/prism/parse_result/errors.rbi +21 -0
  134. data/rbi/generated/prism/parse_result/newlines.rbi +208 -0
  135. data/rbi/generated/prism/parse_result.rbi +776 -0
  136. data/rbi/generated/prism/pattern.rbi +134 -0
  137. data/rbi/generated/prism/reflection.rbi +89 -0
  138. data/rbi/generated/prism/relocation.rbi +329 -0
  139. data/rbi/generated/prism/serialize.rbi +184 -0
  140. data/rbi/generated/prism/string_query.rbi +43 -0
  141. data/rbi/generated/prism/translation.rbi +7 -0
  142. data/rbi/generated/prism/visitor.rbi +650 -0
  143. data/rbi/generated/prism.rbi +86 -0
  144. data/rbi/prism/translation/parser_versions.rbi +5 -0
  145. data/rbi/rubyvm/node_find.rbi +14 -0
  146. data/sig/generated/prism/compiler.rbs +492 -0
  147. data/sig/generated/prism/desugar_compiler.rbs +305 -0
  148. data/sig/generated/prism/dispatcher.rbs +1292 -0
  149. data/sig/generated/prism/dot_visitor.rbs +635 -0
  150. data/sig/generated/prism/dsl.rbs +928 -0
  151. data/sig/generated/prism/inspect_visitor.rbs +509 -0
  152. data/sig/generated/prism/lex_compat.rbs +166 -0
  153. data/sig/{prism → generated/prism}/mutation_compiler.rbs +309 -4
  154. data/sig/generated/prism/node.rbs +20896 -0
  155. data/sig/generated/prism/node_ext.rbs +290 -0
  156. data/sig/generated/prism/node_find.rbs +90 -0
  157. data/sig/generated/prism/parse_result/errors.rbs +22 -0
  158. data/sig/generated/prism/parse_result/newlines.rbs +223 -0
  159. data/sig/generated/prism/parse_result.rbs +871 -0
  160. data/sig/generated/prism/pattern.rbs +156 -0
  161. data/sig/generated/prism/reflection.rbs +101 -0
  162. data/sig/generated/prism/relocation.rbs +428 -0
  163. data/sig/generated/prism/serialize.rbs +198 -0
  164. data/sig/generated/prism/string_query.rbs +43 -0
  165. data/sig/generated/prism/translation.rbs +8 -0
  166. data/sig/generated/prism/visitor.rbs +1111 -0
  167. data/sig/generated/prism.rbs +84 -0
  168. data/sig/manifest.yaml +2 -0
  169. data/src/arena.c +117 -0
  170. data/src/{util/pm_buffer.c → buffer.c} +53 -21
  171. data/src/{util/pm_char.c → char.c} +28 -57
  172. data/src/comments.c +454 -0
  173. data/src/constant_pool.c +406 -0
  174. data/src/diagnostic.c +97 -65
  175. data/src/encoding.c +8 -3
  176. data/src/errors_format.c +519 -0
  177. data/src/{util/pm_integer.c → integer.c} +33 -22
  178. data/src/json.c +5733 -0
  179. data/src/line_offset_list.c +100 -0
  180. data/src/list.c +24 -0
  181. data/src/{util/pm_memchr.c → memchr.c} +8 -6
  182. data/src/node.c +3504 -7674
  183. data/src/options.c +162 -49
  184. data/src/parser.c +367 -0
  185. data/src/prettyprint.c +421 -354
  186. data/src/prism.c +8402 -7161
  187. data/src/regexp.c +961 -45
  188. data/src/serialize.c +460 -424
  189. data/src/source.c +518 -0
  190. data/src/static_literals.c +111 -43
  191. data/src/string_query.c +180 -0
  192. data/src/stringy.c +91 -0
  193. data/src/{util/pm_strncasecmp.c → strncasecmp.c} +5 -4
  194. data/src/strpbrk.c +447 -0
  195. data/src/{token_type.c → tokens.c} +39 -18
  196. data/src/xxh3.c +292 -0
  197. metadata +128 -63
  198. data/ext/prism/api_pack.c +0 -276
  199. data/include/prism/defines.h +0 -260
  200. data/include/prism/pack.h +0 -163
  201. data/include/prism/regexp.h +0 -43
  202. data/include/prism/util/pm_buffer.h +0 -236
  203. data/include/prism/util/pm_char.h +0 -204
  204. data/include/prism/util/pm_constant_pool.h +0 -218
  205. data/include/prism/util/pm_integer.h +0 -130
  206. data/include/prism/util/pm_memchr.h +0 -29
  207. data/include/prism/util/pm_newline_list.h +0 -113
  208. data/include/prism/util/pm_string.h +0 -200
  209. data/lib/prism/pack.rb +0 -230
  210. data/lib/prism/parse_result/comments.rb +0 -188
  211. data/rbi/prism/compiler.rbi +0 -12
  212. data/rbi/prism/dsl.rbi +0 -524
  213. data/rbi/prism/inspect_visitor.rbi +0 -12
  214. data/rbi/prism/node.rbi +0 -8750
  215. data/rbi/prism/node_ext.rbi +0 -107
  216. data/rbi/prism/parse_result.rbi +0 -404
  217. data/rbi/prism/reflection.rbi +0 -58
  218. data/rbi/prism/string_query.rbi +0 -12
  219. data/rbi/prism/visitor.rbi +0 -473
  220. data/rbi/prism.rbi +0 -63
  221. data/sig/prism/compiler.rbs +0 -9
  222. data/sig/prism/dispatcher.rbs +0 -19
  223. data/sig/prism/dot_visitor.rbs +0 -6
  224. data/sig/prism/dsl.rbs +0 -351
  225. data/sig/prism/inspect_visitor.rbs +0 -22
  226. data/sig/prism/lex_compat.rbs +0 -10
  227. data/sig/prism/node.rbs +0 -4042
  228. data/sig/prism/node_ext.rbs +0 -149
  229. data/sig/prism/pack.rbs +0 -43
  230. data/sig/prism/parse_result/comments.rbs +0 -38
  231. data/sig/prism/parse_result.rbs +0 -197
  232. data/sig/prism/pattern.rbs +0 -13
  233. data/sig/prism/reflection.rbs +0 -50
  234. data/sig/prism/relocation.rbs +0 -185
  235. data/sig/prism/serialize.rbs +0 -8
  236. data/sig/prism/string_query.rbs +0 -11
  237. data/sig/prism/visitor.rbs +0 -169
  238. data/sig/prism.rbs +0 -272
  239. data/src/pack.c +0 -509
  240. data/src/util/pm_constant_pool.c +0 -342
  241. data/src/util/pm_list.c +0 -49
  242. data/src/util/pm_newline_list.c +0 -125
  243. data/src/util/pm_string.c +0 -381
  244. data/src/util/pm_strpbrk.c +0 -206
@@ -9,763 +9,771 @@ if you are looking to modify the template
9
9
  ++
10
10
  =end
11
11
 
12
+ #--
13
+ # rbs_inline: enabled
14
+
12
15
  module Prism
13
16
  # This visitor walks through the tree and copies each node as it is being
14
17
  # visited. This is useful for consumers that want to mutate the tree, as you
15
18
  # can change subtrees in place without effecting the rest of the tree.
16
19
  class MutationCompiler < Compiler
17
- # Copy a AliasGlobalVariableNode node
18
- def visit_alias_global_variable_node(node)
20
+ #: (AliasGlobalVariableNode) -> node?
21
+ def visit_alias_global_variable_node(node) # :nodoc:
19
22
  node.copy(new_name: visit(node.new_name), old_name: visit(node.old_name))
20
23
  end
21
24
 
22
- # Copy a AliasMethodNode node
23
- def visit_alias_method_node(node)
25
+ #: (AliasMethodNode) -> node?
26
+ def visit_alias_method_node(node) # :nodoc:
24
27
  node.copy(new_name: visit(node.new_name), old_name: visit(node.old_name))
25
28
  end
26
29
 
27
- # Copy a AlternationPatternNode node
28
- def visit_alternation_pattern_node(node)
30
+ #: (AlternationPatternNode) -> node?
31
+ def visit_alternation_pattern_node(node) # :nodoc:
29
32
  node.copy(left: visit(node.left), right: visit(node.right))
30
33
  end
31
34
 
32
- # Copy a AndNode node
33
- def visit_and_node(node)
35
+ #: (AndNode) -> node?
36
+ def visit_and_node(node) # :nodoc:
34
37
  node.copy(left: visit(node.left), right: visit(node.right))
35
38
  end
36
39
 
37
- # Copy a ArgumentsNode node
38
- def visit_arguments_node(node)
40
+ #: (ArgumentsNode) -> node?
41
+ def visit_arguments_node(node) # :nodoc:
39
42
  node.copy(arguments: visit_all(node.arguments))
40
43
  end
41
44
 
42
- # Copy a ArrayNode node
43
- def visit_array_node(node)
45
+ #: (ArrayNode) -> node?
46
+ def visit_array_node(node) # :nodoc:
44
47
  node.copy(elements: visit_all(node.elements))
45
48
  end
46
49
 
47
- # Copy a ArrayPatternNode node
48
- def visit_array_pattern_node(node)
50
+ #: (ArrayPatternNode) -> node?
51
+ def visit_array_pattern_node(node) # :nodoc:
49
52
  node.copy(constant: visit(node.constant), requireds: visit_all(node.requireds), rest: visit(node.rest), posts: visit_all(node.posts))
50
53
  end
51
54
 
52
- # Copy a AssocNode node
53
- def visit_assoc_node(node)
55
+ #: (AssocNode) -> node?
56
+ def visit_assoc_node(node) # :nodoc:
54
57
  node.copy(key: visit(node.key), value: visit(node.value))
55
58
  end
56
59
 
57
- # Copy a AssocSplatNode node
58
- def visit_assoc_splat_node(node)
60
+ #: (AssocSplatNode) -> node?
61
+ def visit_assoc_splat_node(node) # :nodoc:
59
62
  node.copy(value: visit(node.value))
60
63
  end
61
64
 
62
- # Copy a BackReferenceReadNode node
63
- def visit_back_reference_read_node(node)
65
+ #: (BackReferenceReadNode) -> node?
66
+ def visit_back_reference_read_node(node) # :nodoc:
64
67
  node.copy
65
68
  end
66
69
 
67
- # Copy a BeginNode node
68
- def visit_begin_node(node)
70
+ #: (BeginNode) -> node?
71
+ def visit_begin_node(node) # :nodoc:
69
72
  node.copy(statements: visit(node.statements), rescue_clause: visit(node.rescue_clause), else_clause: visit(node.else_clause), ensure_clause: visit(node.ensure_clause))
70
73
  end
71
74
 
72
- # Copy a BlockArgumentNode node
73
- def visit_block_argument_node(node)
75
+ #: (BlockArgumentNode) -> node?
76
+ def visit_block_argument_node(node) # :nodoc:
74
77
  node.copy(expression: visit(node.expression))
75
78
  end
76
79
 
77
- # Copy a BlockLocalVariableNode node
78
- def visit_block_local_variable_node(node)
80
+ #: (BlockLocalVariableNode) -> node?
81
+ def visit_block_local_variable_node(node) # :nodoc:
79
82
  node.copy
80
83
  end
81
84
 
82
- # Copy a BlockNode node
83
- def visit_block_node(node)
85
+ #: (BlockNode) -> node?
86
+ def visit_block_node(node) # :nodoc:
84
87
  node.copy(parameters: visit(node.parameters), body: visit(node.body))
85
88
  end
86
89
 
87
- # Copy a BlockParameterNode node
88
- def visit_block_parameter_node(node)
90
+ #: (BlockParameterNode) -> node?
91
+ def visit_block_parameter_node(node) # :nodoc:
89
92
  node.copy
90
93
  end
91
94
 
92
- # Copy a BlockParametersNode node
93
- def visit_block_parameters_node(node)
95
+ #: (BlockParametersNode) -> node?
96
+ def visit_block_parameters_node(node) # :nodoc:
94
97
  node.copy(parameters: visit(node.parameters), locals: visit_all(node.locals))
95
98
  end
96
99
 
97
- # Copy a BreakNode node
98
- def visit_break_node(node)
100
+ #: (BreakNode) -> node?
101
+ def visit_break_node(node) # :nodoc:
99
102
  node.copy(arguments: visit(node.arguments))
100
103
  end
101
104
 
102
- # Copy a CallAndWriteNode node
103
- def visit_call_and_write_node(node)
105
+ #: (CallAndWriteNode) -> node?
106
+ def visit_call_and_write_node(node) # :nodoc:
104
107
  node.copy(receiver: visit(node.receiver), value: visit(node.value))
105
108
  end
106
109
 
107
- # Copy a CallNode node
108
- def visit_call_node(node)
110
+ #: (CallNode) -> node?
111
+ def visit_call_node(node) # :nodoc:
109
112
  node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block))
110
113
  end
111
114
 
112
- # Copy a CallOperatorWriteNode node
113
- def visit_call_operator_write_node(node)
115
+ #: (CallOperatorWriteNode) -> node?
116
+ def visit_call_operator_write_node(node) # :nodoc:
114
117
  node.copy(receiver: visit(node.receiver), value: visit(node.value))
115
118
  end
116
119
 
117
- # Copy a CallOrWriteNode node
118
- def visit_call_or_write_node(node)
120
+ #: (CallOrWriteNode) -> node?
121
+ def visit_call_or_write_node(node) # :nodoc:
119
122
  node.copy(receiver: visit(node.receiver), value: visit(node.value))
120
123
  end
121
124
 
122
- # Copy a CallTargetNode node
123
- def visit_call_target_node(node)
125
+ #: (CallTargetNode) -> node?
126
+ def visit_call_target_node(node) # :nodoc:
124
127
  node.copy(receiver: visit(node.receiver))
125
128
  end
126
129
 
127
- # Copy a CapturePatternNode node
128
- def visit_capture_pattern_node(node)
130
+ #: (CapturePatternNode) -> node?
131
+ def visit_capture_pattern_node(node) # :nodoc:
129
132
  node.copy(value: visit(node.value), target: visit(node.target))
130
133
  end
131
134
 
132
- # Copy a CaseMatchNode node
133
- def visit_case_match_node(node)
135
+ #: (CaseMatchNode) -> node?
136
+ def visit_case_match_node(node) # :nodoc:
134
137
  node.copy(predicate: visit(node.predicate), conditions: visit_all(node.conditions), else_clause: visit(node.else_clause))
135
138
  end
136
139
 
137
- # Copy a CaseNode node
138
- def visit_case_node(node)
140
+ #: (CaseNode) -> node?
141
+ def visit_case_node(node) # :nodoc:
139
142
  node.copy(predicate: visit(node.predicate), conditions: visit_all(node.conditions), else_clause: visit(node.else_clause))
140
143
  end
141
144
 
142
- # Copy a ClassNode node
143
- def visit_class_node(node)
145
+ #: (ClassNode) -> node?
146
+ def visit_class_node(node) # :nodoc:
144
147
  node.copy(constant_path: visit(node.constant_path), superclass: visit(node.superclass), body: visit(node.body))
145
148
  end
146
149
 
147
- # Copy a ClassVariableAndWriteNode node
148
- def visit_class_variable_and_write_node(node)
150
+ #: (ClassVariableAndWriteNode) -> node?
151
+ def visit_class_variable_and_write_node(node) # :nodoc:
149
152
  node.copy(value: visit(node.value))
150
153
  end
151
154
 
152
- # Copy a ClassVariableOperatorWriteNode node
153
- def visit_class_variable_operator_write_node(node)
155
+ #: (ClassVariableOperatorWriteNode) -> node?
156
+ def visit_class_variable_operator_write_node(node) # :nodoc:
154
157
  node.copy(value: visit(node.value))
155
158
  end
156
159
 
157
- # Copy a ClassVariableOrWriteNode node
158
- def visit_class_variable_or_write_node(node)
160
+ #: (ClassVariableOrWriteNode) -> node?
161
+ def visit_class_variable_or_write_node(node) # :nodoc:
159
162
  node.copy(value: visit(node.value))
160
163
  end
161
164
 
162
- # Copy a ClassVariableReadNode node
163
- def visit_class_variable_read_node(node)
165
+ #: (ClassVariableReadNode) -> node?
166
+ def visit_class_variable_read_node(node) # :nodoc:
164
167
  node.copy
165
168
  end
166
169
 
167
- # Copy a ClassVariableTargetNode node
168
- def visit_class_variable_target_node(node)
170
+ #: (ClassVariableTargetNode) -> node?
171
+ def visit_class_variable_target_node(node) # :nodoc:
169
172
  node.copy
170
173
  end
171
174
 
172
- # Copy a ClassVariableWriteNode node
173
- def visit_class_variable_write_node(node)
175
+ #: (ClassVariableWriteNode) -> node?
176
+ def visit_class_variable_write_node(node) # :nodoc:
174
177
  node.copy(value: visit(node.value))
175
178
  end
176
179
 
177
- # Copy a ConstantAndWriteNode node
178
- def visit_constant_and_write_node(node)
180
+ #: (ConstantAndWriteNode) -> node?
181
+ def visit_constant_and_write_node(node) # :nodoc:
179
182
  node.copy(value: visit(node.value))
180
183
  end
181
184
 
182
- # Copy a ConstantOperatorWriteNode node
183
- def visit_constant_operator_write_node(node)
185
+ #: (ConstantOperatorWriteNode) -> node?
186
+ def visit_constant_operator_write_node(node) # :nodoc:
184
187
  node.copy(value: visit(node.value))
185
188
  end
186
189
 
187
- # Copy a ConstantOrWriteNode node
188
- def visit_constant_or_write_node(node)
190
+ #: (ConstantOrWriteNode) -> node?
191
+ def visit_constant_or_write_node(node) # :nodoc:
189
192
  node.copy(value: visit(node.value))
190
193
  end
191
194
 
192
- # Copy a ConstantPathAndWriteNode node
193
- def visit_constant_path_and_write_node(node)
195
+ #: (ConstantPathAndWriteNode) -> node?
196
+ def visit_constant_path_and_write_node(node) # :nodoc:
194
197
  node.copy(target: visit(node.target), value: visit(node.value))
195
198
  end
196
199
 
197
- # Copy a ConstantPathNode node
198
- def visit_constant_path_node(node)
200
+ #: (ConstantPathNode) -> node?
201
+ def visit_constant_path_node(node) # :nodoc:
199
202
  node.copy(parent: visit(node.parent))
200
203
  end
201
204
 
202
- # Copy a ConstantPathOperatorWriteNode node
203
- def visit_constant_path_operator_write_node(node)
205
+ #: (ConstantPathOperatorWriteNode) -> node?
206
+ def visit_constant_path_operator_write_node(node) # :nodoc:
204
207
  node.copy(target: visit(node.target), value: visit(node.value))
205
208
  end
206
209
 
207
- # Copy a ConstantPathOrWriteNode node
208
- def visit_constant_path_or_write_node(node)
210
+ #: (ConstantPathOrWriteNode) -> node?
211
+ def visit_constant_path_or_write_node(node) # :nodoc:
209
212
  node.copy(target: visit(node.target), value: visit(node.value))
210
213
  end
211
214
 
212
- # Copy a ConstantPathTargetNode node
213
- def visit_constant_path_target_node(node)
215
+ #: (ConstantPathTargetNode) -> node?
216
+ def visit_constant_path_target_node(node) # :nodoc:
214
217
  node.copy(parent: visit(node.parent))
215
218
  end
216
219
 
217
- # Copy a ConstantPathWriteNode node
218
- def visit_constant_path_write_node(node)
220
+ #: (ConstantPathWriteNode) -> node?
221
+ def visit_constant_path_write_node(node) # :nodoc:
219
222
  node.copy(target: visit(node.target), value: visit(node.value))
220
223
  end
221
224
 
222
- # Copy a ConstantReadNode node
223
- def visit_constant_read_node(node)
225
+ #: (ConstantReadNode) -> node?
226
+ def visit_constant_read_node(node) # :nodoc:
224
227
  node.copy
225
228
  end
226
229
 
227
- # Copy a ConstantTargetNode node
228
- def visit_constant_target_node(node)
230
+ #: (ConstantTargetNode) -> node?
231
+ def visit_constant_target_node(node) # :nodoc:
229
232
  node.copy
230
233
  end
231
234
 
232
- # Copy a ConstantWriteNode node
233
- def visit_constant_write_node(node)
235
+ #: (ConstantWriteNode) -> node?
236
+ def visit_constant_write_node(node) # :nodoc:
234
237
  node.copy(value: visit(node.value))
235
238
  end
236
239
 
237
- # Copy a DefNode node
238
- def visit_def_node(node)
240
+ #: (DefNode) -> node?
241
+ def visit_def_node(node) # :nodoc:
239
242
  node.copy(receiver: visit(node.receiver), parameters: visit(node.parameters), body: visit(node.body))
240
243
  end
241
244
 
242
- # Copy a DefinedNode node
243
- def visit_defined_node(node)
245
+ #: (DefinedNode) -> node?
246
+ def visit_defined_node(node) # :nodoc:
244
247
  node.copy(value: visit(node.value))
245
248
  end
246
249
 
247
- # Copy a ElseNode node
248
- def visit_else_node(node)
250
+ #: (ElseNode) -> node?
251
+ def visit_else_node(node) # :nodoc:
249
252
  node.copy(statements: visit(node.statements))
250
253
  end
251
254
 
252
- # Copy a EmbeddedStatementsNode node
253
- def visit_embedded_statements_node(node)
255
+ #: (EmbeddedStatementsNode) -> node?
256
+ def visit_embedded_statements_node(node) # :nodoc:
254
257
  node.copy(statements: visit(node.statements))
255
258
  end
256
259
 
257
- # Copy a EmbeddedVariableNode node
258
- def visit_embedded_variable_node(node)
260
+ #: (EmbeddedVariableNode) -> node?
261
+ def visit_embedded_variable_node(node) # :nodoc:
259
262
  node.copy(variable: visit(node.variable))
260
263
  end
261
264
 
262
- # Copy a EnsureNode node
263
- def visit_ensure_node(node)
265
+ #: (EnsureNode) -> node?
266
+ def visit_ensure_node(node) # :nodoc:
264
267
  node.copy(statements: visit(node.statements))
265
268
  end
266
269
 
267
- # Copy a FalseNode node
268
- def visit_false_node(node)
270
+ #: (ErrorRecoveryNode) -> node?
271
+ def visit_error_recovery_node(node) # :nodoc:
272
+ node.copy(unexpected: visit(node.unexpected))
273
+ end
274
+
275
+ #: (FalseNode) -> node?
276
+ def visit_false_node(node) # :nodoc:
269
277
  node.copy
270
278
  end
271
279
 
272
- # Copy a FindPatternNode node
273
- def visit_find_pattern_node(node)
280
+ #: (FindPatternNode) -> node?
281
+ def visit_find_pattern_node(node) # :nodoc:
274
282
  node.copy(constant: visit(node.constant), left: visit(node.left), requireds: visit_all(node.requireds), right: visit(node.right))
275
283
  end
276
284
 
277
- # Copy a FlipFlopNode node
278
- def visit_flip_flop_node(node)
285
+ #: (FlipFlopNode) -> node?
286
+ def visit_flip_flop_node(node) # :nodoc:
279
287
  node.copy(left: visit(node.left), right: visit(node.right))
280
288
  end
281
289
 
282
- # Copy a FloatNode node
283
- def visit_float_node(node)
290
+ #: (FloatNode) -> node?
291
+ def visit_float_node(node) # :nodoc:
284
292
  node.copy
285
293
  end
286
294
 
287
- # Copy a ForNode node
288
- def visit_for_node(node)
295
+ #: (ForNode) -> node?
296
+ def visit_for_node(node) # :nodoc:
289
297
  node.copy(index: visit(node.index), collection: visit(node.collection), statements: visit(node.statements))
290
298
  end
291
299
 
292
- # Copy a ForwardingArgumentsNode node
293
- def visit_forwarding_arguments_node(node)
300
+ #: (ForwardingArgumentsNode) -> node?
301
+ def visit_forwarding_arguments_node(node) # :nodoc:
294
302
  node.copy
295
303
  end
296
304
 
297
- # Copy a ForwardingParameterNode node
298
- def visit_forwarding_parameter_node(node)
305
+ #: (ForwardingParameterNode) -> node?
306
+ def visit_forwarding_parameter_node(node) # :nodoc:
299
307
  node.copy
300
308
  end
301
309
 
302
- # Copy a ForwardingSuperNode node
303
- def visit_forwarding_super_node(node)
310
+ #: (ForwardingSuperNode) -> node?
311
+ def visit_forwarding_super_node(node) # :nodoc:
304
312
  node.copy(block: visit(node.block))
305
313
  end
306
314
 
307
- # Copy a GlobalVariableAndWriteNode node
308
- def visit_global_variable_and_write_node(node)
315
+ #: (GlobalVariableAndWriteNode) -> node?
316
+ def visit_global_variable_and_write_node(node) # :nodoc:
309
317
  node.copy(value: visit(node.value))
310
318
  end
311
319
 
312
- # Copy a GlobalVariableOperatorWriteNode node
313
- def visit_global_variable_operator_write_node(node)
320
+ #: (GlobalVariableOperatorWriteNode) -> node?
321
+ def visit_global_variable_operator_write_node(node) # :nodoc:
314
322
  node.copy(value: visit(node.value))
315
323
  end
316
324
 
317
- # Copy a GlobalVariableOrWriteNode node
318
- def visit_global_variable_or_write_node(node)
325
+ #: (GlobalVariableOrWriteNode) -> node?
326
+ def visit_global_variable_or_write_node(node) # :nodoc:
319
327
  node.copy(value: visit(node.value))
320
328
  end
321
329
 
322
- # Copy a GlobalVariableReadNode node
323
- def visit_global_variable_read_node(node)
330
+ #: (GlobalVariableReadNode) -> node?
331
+ def visit_global_variable_read_node(node) # :nodoc:
324
332
  node.copy
325
333
  end
326
334
 
327
- # Copy a GlobalVariableTargetNode node
328
- def visit_global_variable_target_node(node)
335
+ #: (GlobalVariableTargetNode) -> node?
336
+ def visit_global_variable_target_node(node) # :nodoc:
329
337
  node.copy
330
338
  end
331
339
 
332
- # Copy a GlobalVariableWriteNode node
333
- def visit_global_variable_write_node(node)
340
+ #: (GlobalVariableWriteNode) -> node?
341
+ def visit_global_variable_write_node(node) # :nodoc:
334
342
  node.copy(value: visit(node.value))
335
343
  end
336
344
 
337
- # Copy a HashNode node
338
- def visit_hash_node(node)
345
+ #: (HashNode) -> node?
346
+ def visit_hash_node(node) # :nodoc:
339
347
  node.copy(elements: visit_all(node.elements))
340
348
  end
341
349
 
342
- # Copy a HashPatternNode node
343
- def visit_hash_pattern_node(node)
350
+ #: (HashPatternNode) -> node?
351
+ def visit_hash_pattern_node(node) # :nodoc:
344
352
  node.copy(constant: visit(node.constant), elements: visit_all(node.elements), rest: visit(node.rest))
345
353
  end
346
354
 
347
- # Copy a IfNode node
348
- def visit_if_node(node)
355
+ #: (IfNode) -> node?
356
+ def visit_if_node(node) # :nodoc:
349
357
  node.copy(predicate: visit(node.predicate), statements: visit(node.statements), subsequent: visit(node.subsequent))
350
358
  end
351
359
 
352
- # Copy a ImaginaryNode node
353
- def visit_imaginary_node(node)
360
+ #: (ImaginaryNode) -> node?
361
+ def visit_imaginary_node(node) # :nodoc:
354
362
  node.copy(numeric: visit(node.numeric))
355
363
  end
356
364
 
357
- # Copy a ImplicitNode node
358
- def visit_implicit_node(node)
365
+ #: (ImplicitNode) -> node?
366
+ def visit_implicit_node(node) # :nodoc:
359
367
  node.copy(value: visit(node.value))
360
368
  end
361
369
 
362
- # Copy a ImplicitRestNode node
363
- def visit_implicit_rest_node(node)
370
+ #: (ImplicitRestNode) -> node?
371
+ def visit_implicit_rest_node(node) # :nodoc:
364
372
  node.copy
365
373
  end
366
374
 
367
- # Copy a InNode node
368
- def visit_in_node(node)
375
+ #: (InNode) -> node?
376
+ def visit_in_node(node) # :nodoc:
369
377
  node.copy(pattern: visit(node.pattern), statements: visit(node.statements))
370
378
  end
371
379
 
372
- # Copy a IndexAndWriteNode node
373
- def visit_index_and_write_node(node)
380
+ #: (IndexAndWriteNode) -> node?
381
+ def visit_index_and_write_node(node) # :nodoc:
374
382
  node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block), value: visit(node.value))
375
383
  end
376
384
 
377
- # Copy a IndexOperatorWriteNode node
378
- def visit_index_operator_write_node(node)
385
+ #: (IndexOperatorWriteNode) -> node?
386
+ def visit_index_operator_write_node(node) # :nodoc:
379
387
  node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block), value: visit(node.value))
380
388
  end
381
389
 
382
- # Copy a IndexOrWriteNode node
383
- def visit_index_or_write_node(node)
390
+ #: (IndexOrWriteNode) -> node?
391
+ def visit_index_or_write_node(node) # :nodoc:
384
392
  node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block), value: visit(node.value))
385
393
  end
386
394
 
387
- # Copy a IndexTargetNode node
388
- def visit_index_target_node(node)
395
+ #: (IndexTargetNode) -> node?
396
+ def visit_index_target_node(node) # :nodoc:
389
397
  node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block))
390
398
  end
391
399
 
392
- # Copy a InstanceVariableAndWriteNode node
393
- def visit_instance_variable_and_write_node(node)
400
+ #: (InstanceVariableAndWriteNode) -> node?
401
+ def visit_instance_variable_and_write_node(node) # :nodoc:
394
402
  node.copy(value: visit(node.value))
395
403
  end
396
404
 
397
- # Copy a InstanceVariableOperatorWriteNode node
398
- def visit_instance_variable_operator_write_node(node)
405
+ #: (InstanceVariableOperatorWriteNode) -> node?
406
+ def visit_instance_variable_operator_write_node(node) # :nodoc:
399
407
  node.copy(value: visit(node.value))
400
408
  end
401
409
 
402
- # Copy a InstanceVariableOrWriteNode node
403
- def visit_instance_variable_or_write_node(node)
410
+ #: (InstanceVariableOrWriteNode) -> node?
411
+ def visit_instance_variable_or_write_node(node) # :nodoc:
404
412
  node.copy(value: visit(node.value))
405
413
  end
406
414
 
407
- # Copy a InstanceVariableReadNode node
408
- def visit_instance_variable_read_node(node)
415
+ #: (InstanceVariableReadNode) -> node?
416
+ def visit_instance_variable_read_node(node) # :nodoc:
409
417
  node.copy
410
418
  end
411
419
 
412
- # Copy a InstanceVariableTargetNode node
413
- def visit_instance_variable_target_node(node)
420
+ #: (InstanceVariableTargetNode) -> node?
421
+ def visit_instance_variable_target_node(node) # :nodoc:
414
422
  node.copy
415
423
  end
416
424
 
417
- # Copy a InstanceVariableWriteNode node
418
- def visit_instance_variable_write_node(node)
425
+ #: (InstanceVariableWriteNode) -> node?
426
+ def visit_instance_variable_write_node(node) # :nodoc:
419
427
  node.copy(value: visit(node.value))
420
428
  end
421
429
 
422
- # Copy a IntegerNode node
423
- def visit_integer_node(node)
430
+ #: (IntegerNode) -> node?
431
+ def visit_integer_node(node) # :nodoc:
424
432
  node.copy
425
433
  end
426
434
 
427
- # Copy a InterpolatedMatchLastLineNode node
428
- def visit_interpolated_match_last_line_node(node)
435
+ #: (InterpolatedMatchLastLineNode) -> node?
436
+ def visit_interpolated_match_last_line_node(node) # :nodoc:
429
437
  node.copy(parts: visit_all(node.parts))
430
438
  end
431
439
 
432
- # Copy a InterpolatedRegularExpressionNode node
433
- def visit_interpolated_regular_expression_node(node)
440
+ #: (InterpolatedRegularExpressionNode) -> node?
441
+ def visit_interpolated_regular_expression_node(node) # :nodoc:
434
442
  node.copy(parts: visit_all(node.parts))
435
443
  end
436
444
 
437
- # Copy a InterpolatedStringNode node
438
- def visit_interpolated_string_node(node)
445
+ #: (InterpolatedStringNode) -> node?
446
+ def visit_interpolated_string_node(node) # :nodoc:
439
447
  node.copy(parts: visit_all(node.parts))
440
448
  end
441
449
 
442
- # Copy a InterpolatedSymbolNode node
443
- def visit_interpolated_symbol_node(node)
450
+ #: (InterpolatedSymbolNode) -> node?
451
+ def visit_interpolated_symbol_node(node) # :nodoc:
444
452
  node.copy(parts: visit_all(node.parts))
445
453
  end
446
454
 
447
- # Copy a InterpolatedXStringNode node
448
- def visit_interpolated_x_string_node(node)
455
+ #: (InterpolatedXStringNode) -> node?
456
+ def visit_interpolated_x_string_node(node) # :nodoc:
449
457
  node.copy(parts: visit_all(node.parts))
450
458
  end
451
459
 
452
- # Copy a ItLocalVariableReadNode node
453
- def visit_it_local_variable_read_node(node)
460
+ #: (ItLocalVariableReadNode) -> node?
461
+ def visit_it_local_variable_read_node(node) # :nodoc:
454
462
  node.copy
455
463
  end
456
464
 
457
- # Copy a ItParametersNode node
458
- def visit_it_parameters_node(node)
465
+ #: (ItParametersNode) -> node?
466
+ def visit_it_parameters_node(node) # :nodoc:
459
467
  node.copy
460
468
  end
461
469
 
462
- # Copy a KeywordHashNode node
463
- def visit_keyword_hash_node(node)
470
+ #: (KeywordHashNode) -> node?
471
+ def visit_keyword_hash_node(node) # :nodoc:
464
472
  node.copy(elements: visit_all(node.elements))
465
473
  end
466
474
 
467
- # Copy a KeywordRestParameterNode node
468
- def visit_keyword_rest_parameter_node(node)
475
+ #: (KeywordRestParameterNode) -> node?
476
+ def visit_keyword_rest_parameter_node(node) # :nodoc:
469
477
  node.copy
470
478
  end
471
479
 
472
- # Copy a LambdaNode node
473
- def visit_lambda_node(node)
480
+ #: (LambdaNode) -> node?
481
+ def visit_lambda_node(node) # :nodoc:
474
482
  node.copy(parameters: visit(node.parameters), body: visit(node.body))
475
483
  end
476
484
 
477
- # Copy a LocalVariableAndWriteNode node
478
- def visit_local_variable_and_write_node(node)
485
+ #: (LocalVariableAndWriteNode) -> node?
486
+ def visit_local_variable_and_write_node(node) # :nodoc:
479
487
  node.copy(value: visit(node.value))
480
488
  end
481
489
 
482
- # Copy a LocalVariableOperatorWriteNode node
483
- def visit_local_variable_operator_write_node(node)
490
+ #: (LocalVariableOperatorWriteNode) -> node?
491
+ def visit_local_variable_operator_write_node(node) # :nodoc:
484
492
  node.copy(value: visit(node.value))
485
493
  end
486
494
 
487
- # Copy a LocalVariableOrWriteNode node
488
- def visit_local_variable_or_write_node(node)
495
+ #: (LocalVariableOrWriteNode) -> node?
496
+ def visit_local_variable_or_write_node(node) # :nodoc:
489
497
  node.copy(value: visit(node.value))
490
498
  end
491
499
 
492
- # Copy a LocalVariableReadNode node
493
- def visit_local_variable_read_node(node)
500
+ #: (LocalVariableReadNode) -> node?
501
+ def visit_local_variable_read_node(node) # :nodoc:
494
502
  node.copy
495
503
  end
496
504
 
497
- # Copy a LocalVariableTargetNode node
498
- def visit_local_variable_target_node(node)
505
+ #: (LocalVariableTargetNode) -> node?
506
+ def visit_local_variable_target_node(node) # :nodoc:
499
507
  node.copy
500
508
  end
501
509
 
502
- # Copy a LocalVariableWriteNode node
503
- def visit_local_variable_write_node(node)
510
+ #: (LocalVariableWriteNode) -> node?
511
+ def visit_local_variable_write_node(node) # :nodoc:
504
512
  node.copy(value: visit(node.value))
505
513
  end
506
514
 
507
- # Copy a MatchLastLineNode node
508
- def visit_match_last_line_node(node)
515
+ #: (MatchLastLineNode) -> node?
516
+ def visit_match_last_line_node(node) # :nodoc:
509
517
  node.copy
510
518
  end
511
519
 
512
- # Copy a MatchPredicateNode node
513
- def visit_match_predicate_node(node)
520
+ #: (MatchPredicateNode) -> node?
521
+ def visit_match_predicate_node(node) # :nodoc:
514
522
  node.copy(value: visit(node.value), pattern: visit(node.pattern))
515
523
  end
516
524
 
517
- # Copy a MatchRequiredNode node
518
- def visit_match_required_node(node)
525
+ #: (MatchRequiredNode) -> node?
526
+ def visit_match_required_node(node) # :nodoc:
519
527
  node.copy(value: visit(node.value), pattern: visit(node.pattern))
520
528
  end
521
529
 
522
- # Copy a MatchWriteNode node
523
- def visit_match_write_node(node)
530
+ #: (MatchWriteNode) -> node?
531
+ def visit_match_write_node(node) # :nodoc:
524
532
  node.copy(call: visit(node.call), targets: visit_all(node.targets))
525
533
  end
526
534
 
527
- # Copy a MissingNode node
528
- def visit_missing_node(node)
529
- node.copy
530
- end
531
-
532
- # Copy a ModuleNode node
533
- def visit_module_node(node)
535
+ #: (ModuleNode) -> node?
536
+ def visit_module_node(node) # :nodoc:
534
537
  node.copy(constant_path: visit(node.constant_path), body: visit(node.body))
535
538
  end
536
539
 
537
- # Copy a MultiTargetNode node
538
- def visit_multi_target_node(node)
540
+ #: (MultiTargetNode) -> node?
541
+ def visit_multi_target_node(node) # :nodoc:
539
542
  node.copy(lefts: visit_all(node.lefts), rest: visit(node.rest), rights: visit_all(node.rights))
540
543
  end
541
544
 
542
- # Copy a MultiWriteNode node
543
- def visit_multi_write_node(node)
545
+ #: (MultiWriteNode) -> node?
546
+ def visit_multi_write_node(node) # :nodoc:
544
547
  node.copy(lefts: visit_all(node.lefts), rest: visit(node.rest), rights: visit_all(node.rights), value: visit(node.value))
545
548
  end
546
549
 
547
- # Copy a NextNode node
548
- def visit_next_node(node)
550
+ #: (NextNode) -> node?
551
+ def visit_next_node(node) # :nodoc:
549
552
  node.copy(arguments: visit(node.arguments))
550
553
  end
551
554
 
552
- # Copy a NilNode node
553
- def visit_nil_node(node)
555
+ #: (NilNode) -> node?
556
+ def visit_nil_node(node) # :nodoc:
557
+ node.copy
558
+ end
559
+
560
+ #: (NoBlockParameterNode) -> node?
561
+ def visit_no_block_parameter_node(node) # :nodoc:
554
562
  node.copy
555
563
  end
556
564
 
557
- # Copy a NoKeywordsParameterNode node
558
- def visit_no_keywords_parameter_node(node)
565
+ #: (NoKeywordsParameterNode) -> node?
566
+ def visit_no_keywords_parameter_node(node) # :nodoc:
559
567
  node.copy
560
568
  end
561
569
 
562
- # Copy a NumberedParametersNode node
563
- def visit_numbered_parameters_node(node)
570
+ #: (NumberedParametersNode) -> node?
571
+ def visit_numbered_parameters_node(node) # :nodoc:
564
572
  node.copy
565
573
  end
566
574
 
567
- # Copy a NumberedReferenceReadNode node
568
- def visit_numbered_reference_read_node(node)
575
+ #: (NumberedReferenceReadNode) -> node?
576
+ def visit_numbered_reference_read_node(node) # :nodoc:
569
577
  node.copy
570
578
  end
571
579
 
572
- # Copy a OptionalKeywordParameterNode node
573
- def visit_optional_keyword_parameter_node(node)
580
+ #: (OptionalKeywordParameterNode) -> node?
581
+ def visit_optional_keyword_parameter_node(node) # :nodoc:
574
582
  node.copy(value: visit(node.value))
575
583
  end
576
584
 
577
- # Copy a OptionalParameterNode node
578
- def visit_optional_parameter_node(node)
585
+ #: (OptionalParameterNode) -> node?
586
+ def visit_optional_parameter_node(node) # :nodoc:
579
587
  node.copy(value: visit(node.value))
580
588
  end
581
589
 
582
- # Copy a OrNode node
583
- def visit_or_node(node)
590
+ #: (OrNode) -> node?
591
+ def visit_or_node(node) # :nodoc:
584
592
  node.copy(left: visit(node.left), right: visit(node.right))
585
593
  end
586
594
 
587
- # Copy a ParametersNode node
588
- def visit_parameters_node(node)
595
+ #: (ParametersNode) -> node?
596
+ def visit_parameters_node(node) # :nodoc:
589
597
  node.copy(requireds: visit_all(node.requireds), optionals: visit_all(node.optionals), rest: visit(node.rest), posts: visit_all(node.posts), keywords: visit_all(node.keywords), keyword_rest: visit(node.keyword_rest), block: visit(node.block))
590
598
  end
591
599
 
592
- # Copy a ParenthesesNode node
593
- def visit_parentheses_node(node)
600
+ #: (ParenthesesNode) -> node?
601
+ def visit_parentheses_node(node) # :nodoc:
594
602
  node.copy(body: visit(node.body))
595
603
  end
596
604
 
597
- # Copy a PinnedExpressionNode node
598
- def visit_pinned_expression_node(node)
605
+ #: (PinnedExpressionNode) -> node?
606
+ def visit_pinned_expression_node(node) # :nodoc:
599
607
  node.copy(expression: visit(node.expression))
600
608
  end
601
609
 
602
- # Copy a PinnedVariableNode node
603
- def visit_pinned_variable_node(node)
610
+ #: (PinnedVariableNode) -> node?
611
+ def visit_pinned_variable_node(node) # :nodoc:
604
612
  node.copy(variable: visit(node.variable))
605
613
  end
606
614
 
607
- # Copy a PostExecutionNode node
608
- def visit_post_execution_node(node)
615
+ #: (PostExecutionNode) -> node?
616
+ def visit_post_execution_node(node) # :nodoc:
609
617
  node.copy(statements: visit(node.statements))
610
618
  end
611
619
 
612
- # Copy a PreExecutionNode node
613
- def visit_pre_execution_node(node)
620
+ #: (PreExecutionNode) -> node?
621
+ def visit_pre_execution_node(node) # :nodoc:
614
622
  node.copy(statements: visit(node.statements))
615
623
  end
616
624
 
617
- # Copy a ProgramNode node
618
- def visit_program_node(node)
625
+ #: (ProgramNode) -> node?
626
+ def visit_program_node(node) # :nodoc:
619
627
  node.copy(statements: visit(node.statements))
620
628
  end
621
629
 
622
- # Copy a RangeNode node
623
- def visit_range_node(node)
630
+ #: (RangeNode) -> node?
631
+ def visit_range_node(node) # :nodoc:
624
632
  node.copy(left: visit(node.left), right: visit(node.right))
625
633
  end
626
634
 
627
- # Copy a RationalNode node
628
- def visit_rational_node(node)
635
+ #: (RationalNode) -> node?
636
+ def visit_rational_node(node) # :nodoc:
629
637
  node.copy
630
638
  end
631
639
 
632
- # Copy a RedoNode node
633
- def visit_redo_node(node)
640
+ #: (RedoNode) -> node?
641
+ def visit_redo_node(node) # :nodoc:
634
642
  node.copy
635
643
  end
636
644
 
637
- # Copy a RegularExpressionNode node
638
- def visit_regular_expression_node(node)
645
+ #: (RegularExpressionNode) -> node?
646
+ def visit_regular_expression_node(node) # :nodoc:
639
647
  node.copy
640
648
  end
641
649
 
642
- # Copy a RequiredKeywordParameterNode node
643
- def visit_required_keyword_parameter_node(node)
650
+ #: (RequiredKeywordParameterNode) -> node?
651
+ def visit_required_keyword_parameter_node(node) # :nodoc:
644
652
  node.copy
645
653
  end
646
654
 
647
- # Copy a RequiredParameterNode node
648
- def visit_required_parameter_node(node)
655
+ #: (RequiredParameterNode) -> node?
656
+ def visit_required_parameter_node(node) # :nodoc:
649
657
  node.copy
650
658
  end
651
659
 
652
- # Copy a RescueModifierNode node
653
- def visit_rescue_modifier_node(node)
660
+ #: (RescueModifierNode) -> node?
661
+ def visit_rescue_modifier_node(node) # :nodoc:
654
662
  node.copy(expression: visit(node.expression), rescue_expression: visit(node.rescue_expression))
655
663
  end
656
664
 
657
- # Copy a RescueNode node
658
- def visit_rescue_node(node)
665
+ #: (RescueNode) -> node?
666
+ def visit_rescue_node(node) # :nodoc:
659
667
  node.copy(exceptions: visit_all(node.exceptions), reference: visit(node.reference), statements: visit(node.statements), subsequent: visit(node.subsequent))
660
668
  end
661
669
 
662
- # Copy a RestParameterNode node
663
- def visit_rest_parameter_node(node)
670
+ #: (RestParameterNode) -> node?
671
+ def visit_rest_parameter_node(node) # :nodoc:
664
672
  node.copy
665
673
  end
666
674
 
667
- # Copy a RetryNode node
668
- def visit_retry_node(node)
675
+ #: (RetryNode) -> node?
676
+ def visit_retry_node(node) # :nodoc:
669
677
  node.copy
670
678
  end
671
679
 
672
- # Copy a ReturnNode node
673
- def visit_return_node(node)
680
+ #: (ReturnNode) -> node?
681
+ def visit_return_node(node) # :nodoc:
674
682
  node.copy(arguments: visit(node.arguments))
675
683
  end
676
684
 
677
- # Copy a SelfNode node
678
- def visit_self_node(node)
685
+ #: (SelfNode) -> node?
686
+ def visit_self_node(node) # :nodoc:
679
687
  node.copy
680
688
  end
681
689
 
682
- # Copy a ShareableConstantNode node
683
- def visit_shareable_constant_node(node)
690
+ #: (ShareableConstantNode) -> node?
691
+ def visit_shareable_constant_node(node) # :nodoc:
684
692
  node.copy(write: visit(node.write))
685
693
  end
686
694
 
687
- # Copy a SingletonClassNode node
688
- def visit_singleton_class_node(node)
695
+ #: (SingletonClassNode) -> node?
696
+ def visit_singleton_class_node(node) # :nodoc:
689
697
  node.copy(expression: visit(node.expression), body: visit(node.body))
690
698
  end
691
699
 
692
- # Copy a SourceEncodingNode node
693
- def visit_source_encoding_node(node)
700
+ #: (SourceEncodingNode) -> node?
701
+ def visit_source_encoding_node(node) # :nodoc:
694
702
  node.copy
695
703
  end
696
704
 
697
- # Copy a SourceFileNode node
698
- def visit_source_file_node(node)
705
+ #: (SourceFileNode) -> node?
706
+ def visit_source_file_node(node) # :nodoc:
699
707
  node.copy
700
708
  end
701
709
 
702
- # Copy a SourceLineNode node
703
- def visit_source_line_node(node)
710
+ #: (SourceLineNode) -> node?
711
+ def visit_source_line_node(node) # :nodoc:
704
712
  node.copy
705
713
  end
706
714
 
707
- # Copy a SplatNode node
708
- def visit_splat_node(node)
715
+ #: (SplatNode) -> node?
716
+ def visit_splat_node(node) # :nodoc:
709
717
  node.copy(expression: visit(node.expression))
710
718
  end
711
719
 
712
- # Copy a StatementsNode node
713
- def visit_statements_node(node)
720
+ #: (StatementsNode) -> node?
721
+ def visit_statements_node(node) # :nodoc:
714
722
  node.copy(body: visit_all(node.body))
715
723
  end
716
724
 
717
- # Copy a StringNode node
718
- def visit_string_node(node)
725
+ #: (StringNode) -> node?
726
+ def visit_string_node(node) # :nodoc:
719
727
  node.copy
720
728
  end
721
729
 
722
- # Copy a SuperNode node
723
- def visit_super_node(node)
730
+ #: (SuperNode) -> node?
731
+ def visit_super_node(node) # :nodoc:
724
732
  node.copy(arguments: visit(node.arguments), block: visit(node.block))
725
733
  end
726
734
 
727
- # Copy a SymbolNode node
728
- def visit_symbol_node(node)
735
+ #: (SymbolNode) -> node?
736
+ def visit_symbol_node(node) # :nodoc:
729
737
  node.copy
730
738
  end
731
739
 
732
- # Copy a TrueNode node
733
- def visit_true_node(node)
740
+ #: (TrueNode) -> node?
741
+ def visit_true_node(node) # :nodoc:
734
742
  node.copy
735
743
  end
736
744
 
737
- # Copy a UndefNode node
738
- def visit_undef_node(node)
745
+ #: (UndefNode) -> node?
746
+ def visit_undef_node(node) # :nodoc:
739
747
  node.copy(names: visit_all(node.names))
740
748
  end
741
749
 
742
- # Copy a UnlessNode node
743
- def visit_unless_node(node)
750
+ #: (UnlessNode) -> node?
751
+ def visit_unless_node(node) # :nodoc:
744
752
  node.copy(predicate: visit(node.predicate), statements: visit(node.statements), else_clause: visit(node.else_clause))
745
753
  end
746
754
 
747
- # Copy a UntilNode node
748
- def visit_until_node(node)
755
+ #: (UntilNode) -> node?
756
+ def visit_until_node(node) # :nodoc:
749
757
  node.copy(predicate: visit(node.predicate), statements: visit(node.statements))
750
758
  end
751
759
 
752
- # Copy a WhenNode node
753
- def visit_when_node(node)
760
+ #: (WhenNode) -> node?
761
+ def visit_when_node(node) # :nodoc:
754
762
  node.copy(conditions: visit_all(node.conditions), statements: visit(node.statements))
755
763
  end
756
764
 
757
- # Copy a WhileNode node
758
- def visit_while_node(node)
765
+ #: (WhileNode) -> node?
766
+ def visit_while_node(node) # :nodoc:
759
767
  node.copy(predicate: visit(node.predicate), statements: visit(node.statements))
760
768
  end
761
769
 
762
- # Copy a XStringNode node
763
- def visit_x_string_node(node)
770
+ #: (XStringNode) -> node?
771
+ def visit_x_string_node(node) # :nodoc:
764
772
  node.copy
765
773
  end
766
774
 
767
- # Copy a YieldNode node
768
- def visit_yield_node(node)
775
+ #: (YieldNode) -> node?
776
+ def visit_yield_node(node) # :nodoc:
769
777
  node.copy(arguments: visit(node.arguments))
770
778
  end
771
779
  end