prism 2.0.0.rc1-x86_64-linux-gnu

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 (216) hide show
  1. checksums.yaml +7 -0
  2. data/BSDmakefile +58 -0
  3. data/CHANGELOG.md +870 -0
  4. data/CODE_OF_CONDUCT.md +76 -0
  5. data/CONTRIBUTING.md +58 -0
  6. data/LICENSE.md +7 -0
  7. data/Makefile +145 -0
  8. data/README.md +81 -0
  9. data/config.yml +4752 -0
  10. data/docs/build_system.md +119 -0
  11. data/docs/configuration.md +69 -0
  12. data/docs/cruby_compilation.md +27 -0
  13. data/docs/design.md +53 -0
  14. data/docs/encoding.md +121 -0
  15. data/docs/fuzzing.md +81 -0
  16. data/docs/heredocs.md +36 -0
  17. data/docs/javascript.md +133 -0
  18. data/docs/local_variable_depth.md +229 -0
  19. data/docs/mapping.md +117 -0
  20. data/docs/parser_translation.md +24 -0
  21. data/docs/parsing_rules.md +22 -0
  22. data/docs/releasing.md +147 -0
  23. data/docs/relocation.md +32 -0
  24. data/docs/ripper_translation.md +63 -0
  25. data/docs/ruby_api.md +45 -0
  26. data/docs/ruby_parser_translation.md +19 -0
  27. data/docs/serialization.md +230 -0
  28. data/docs/testing.md +72 -0
  29. data/ext/prism/api_node.c +7005 -0
  30. data/ext/prism/extconf.rb +126 -0
  31. data/ext/prism/extension.c +1783 -0
  32. data/ext/prism/extension.h +19 -0
  33. data/include/prism/arena.h +37 -0
  34. data/include/prism/ast.h +10371 -0
  35. data/include/prism/buffer.h +52 -0
  36. data/include/prism/comments.h +55 -0
  37. data/include/prism/compiler/accel.h +24 -0
  38. data/include/prism/compiler/align.h +36 -0
  39. data/include/prism/compiler/assume.h +25 -0
  40. data/include/prism/compiler/exported.h +24 -0
  41. data/include/prism/compiler/fallthrough.h +22 -0
  42. data/include/prism/compiler/filesystem.h +32 -0
  43. data/include/prism/compiler/flex_array.h +19 -0
  44. data/include/prism/compiler/force_inline.h +21 -0
  45. data/include/prism/compiler/format.h +25 -0
  46. data/include/prism/compiler/inline.h +17 -0
  47. data/include/prism/compiler/nodiscard.h +22 -0
  48. data/include/prism/compiler/nonnull.h +18 -0
  49. data/include/prism/compiler/unused.h +18 -0
  50. data/include/prism/constant_pool.h +81 -0
  51. data/include/prism/diagnostic.h +93 -0
  52. data/include/prism/errors_format.h +53 -0
  53. data/include/prism/excludes.h +29 -0
  54. data/include/prism/integer.h +41 -0
  55. data/include/prism/internal/allocator.h +68 -0
  56. data/include/prism/internal/allocator_debug.h +88 -0
  57. data/include/prism/internal/arena.h +108 -0
  58. data/include/prism/internal/bit.h +42 -0
  59. data/include/prism/internal/buffer.h +91 -0
  60. data/include/prism/internal/char.h +145 -0
  61. data/include/prism/internal/comments.h +53 -0
  62. data/include/prism/internal/constant_pool.h +152 -0
  63. data/include/prism/internal/diagnostic.h +389 -0
  64. data/include/prism/internal/encoding.h +242 -0
  65. data/include/prism/internal/integer.h +68 -0
  66. data/include/prism/internal/isinf.h +16 -0
  67. data/include/prism/internal/line_offset_list.h +34 -0
  68. data/include/prism/internal/list.h +62 -0
  69. data/include/prism/internal/magic_comments.h +23 -0
  70. data/include/prism/internal/memchr.h +15 -0
  71. data/include/prism/internal/node.h +38 -0
  72. data/include/prism/internal/options.h +232 -0
  73. data/include/prism/internal/parser.h +984 -0
  74. data/include/prism/internal/regexp.h +26 -0
  75. data/include/prism/internal/serialize.h +39 -0
  76. data/include/prism/internal/source.h +72 -0
  77. data/include/prism/internal/static_literals.h +100 -0
  78. data/include/prism/internal/stringy.h +35 -0
  79. data/include/prism/internal/strncasecmp.h +18 -0
  80. data/include/prism/internal/strpbrk.h +33 -0
  81. data/include/prism/internal/tokens.h +11 -0
  82. data/include/prism/json.h +32 -0
  83. data/include/prism/line_offset_list.h +61 -0
  84. data/include/prism/magic_comments.h +35 -0
  85. data/include/prism/node.h +94 -0
  86. data/include/prism/options.h +354 -0
  87. data/include/prism/parser.h +404 -0
  88. data/include/prism/prettyprint.h +31 -0
  89. data/include/prism/serialize.h +115 -0
  90. data/include/prism/source.h +155 -0
  91. data/include/prism/stream.h +28 -0
  92. data/include/prism/string_query.h +63 -0
  93. data/include/prism/stringy.h +72 -0
  94. data/include/prism/version.h +38 -0
  95. data/include/prism.h +131 -0
  96. data/lib/prism/3.3/prism.so +0 -0
  97. data/lib/prism/3.4/prism.so +0 -0
  98. data/lib/prism/4.0/prism.so +0 -0
  99. data/lib/prism/compiler.rb +815 -0
  100. data/lib/prism/desugar_compiler.rb +463 -0
  101. data/lib/prism/dispatcher.rb +2383 -0
  102. data/lib/prism/dot_visitor.rb +4848 -0
  103. data/lib/prism/dsl.rb +1369 -0
  104. data/lib/prism/ffi.rb +740 -0
  105. data/lib/prism/inspect_visitor.rb +2425 -0
  106. data/lib/prism/lex_compat.rb +953 -0
  107. data/lib/prism/mutation_compiler.rb +780 -0
  108. data/lib/prism/node.rb +33204 -0
  109. data/lib/prism/node_ext.rb +504 -0
  110. data/lib/prism/node_find.rb +215 -0
  111. data/lib/prism/parse_result/errors.rb +72 -0
  112. data/lib/prism/parse_result/newlines.rb +423 -0
  113. data/lib/prism/parse_result.rb +1221 -0
  114. data/lib/prism/pattern.rb +314 -0
  115. data/lib/prism/polyfill/append_as_bytes.rb +15 -0
  116. data/lib/prism/polyfill/byteindex.rb +13 -0
  117. data/lib/prism/polyfill/scan_byte.rb +14 -0
  118. data/lib/prism/polyfill/unpack1.rb +14 -0
  119. data/lib/prism/polyfill/warn.rb +36 -0
  120. data/lib/prism/reflection.rb +427 -0
  121. data/lib/prism/relocation.rb +567 -0
  122. data/lib/prism/serialize.rb +5308 -0
  123. data/lib/prism/string_query.rb +46 -0
  124. data/lib/prism/translation/parser/builder.rb +70 -0
  125. data/lib/prism/translation/parser/compiler.rb +2226 -0
  126. data/lib/prism/translation/parser/lexer.rb +769 -0
  127. data/lib/prism/translation/parser.rb +376 -0
  128. data/lib/prism/translation/parser_current.rb +26 -0
  129. data/lib/prism/translation/parser_versions.rb +36 -0
  130. data/lib/prism/translation/ripper/filter.rb +53 -0
  131. data/lib/prism/translation/ripper/lexer.rb +133 -0
  132. data/lib/prism/translation/ripper/sexp.rb +118 -0
  133. data/lib/prism/translation/ripper/shim.rb +7 -0
  134. data/lib/prism/translation/ripper.rb +4278 -0
  135. data/lib/prism/translation/ruby_parser.rb +1721 -0
  136. data/lib/prism/translation.rb +20 -0
  137. data/lib/prism/visitor.rb +1440 -0
  138. data/lib/prism.rb +168 -0
  139. data/prism.gemspec +234 -0
  140. data/rbi/generated/prism/compiler.rbi +489 -0
  141. data/rbi/generated/prism/desugar_compiler.rbi +306 -0
  142. data/rbi/generated/prism/dispatcher.rbi +1138 -0
  143. data/rbi/generated/prism/dot_visitor.rbi +618 -0
  144. data/rbi/generated/prism/dsl.rbi +751 -0
  145. data/rbi/generated/prism/inspect_visitor.rbi +503 -0
  146. data/rbi/generated/prism/lex_compat.rbi +162 -0
  147. data/rbi/generated/prism/mutation_compiler.rbi +464 -0
  148. data/rbi/generated/prism/node.rbi +13681 -0
  149. data/rbi/generated/prism/node_ext.rbi +259 -0
  150. data/rbi/generated/prism/node_find.rbi +79 -0
  151. data/rbi/generated/prism/parse_result/errors.rbi +21 -0
  152. data/rbi/generated/prism/parse_result/newlines.rbi +208 -0
  153. data/rbi/generated/prism/parse_result.rbi +764 -0
  154. data/rbi/generated/prism/pattern.rbi +134 -0
  155. data/rbi/generated/prism/reflection.rbi +89 -0
  156. data/rbi/generated/prism/relocation.rbi +329 -0
  157. data/rbi/generated/prism/serialize.rbi +181 -0
  158. data/rbi/generated/prism/string_query.rbi +36 -0
  159. data/rbi/generated/prism/translation.rbi +7 -0
  160. data/rbi/generated/prism/visitor.rbi +650 -0
  161. data/rbi/generated/prism.rbi +86 -0
  162. data/rbi/prism/translation/parser.rbi +11 -0
  163. data/rbi/prism/translation/parser_versions.rbi +28 -0
  164. data/rbi/prism/translation/ripper.rbi +15 -0
  165. data/rbi/rubyvm/node_find.rbi +14 -0
  166. data/sig/generated/prism/compiler.rbs +492 -0
  167. data/sig/generated/prism/desugar_compiler.rbs +305 -0
  168. data/sig/generated/prism/dispatcher.rbs +1292 -0
  169. data/sig/generated/prism/dot_visitor.rbs +635 -0
  170. data/sig/generated/prism/dsl.rbs +928 -0
  171. data/sig/generated/prism/inspect_visitor.rbs +509 -0
  172. data/sig/generated/prism/lex_compat.rbs +166 -0
  173. data/sig/generated/prism/mutation_compiler.rbs +464 -0
  174. data/sig/generated/prism/node.rbs +20160 -0
  175. data/sig/generated/prism/node_ext.rbs +290 -0
  176. data/sig/generated/prism/node_find.rbs +90 -0
  177. data/sig/generated/prism/parse_result/errors.rbs +22 -0
  178. data/sig/generated/prism/parse_result/newlines.rbs +223 -0
  179. data/sig/generated/prism/parse_result.rbs +859 -0
  180. data/sig/generated/prism/pattern.rbs +156 -0
  181. data/sig/generated/prism/reflection.rbs +101 -0
  182. data/sig/generated/prism/relocation.rbs +428 -0
  183. data/sig/generated/prism/serialize.rbs +195 -0
  184. data/sig/generated/prism/string_query.rbs +36 -0
  185. data/sig/generated/prism/translation.rbs +8 -0
  186. data/sig/generated/prism/visitor.rbs +1111 -0
  187. data/sig/generated/prism.rbs +84 -0
  188. data/sig/manifest.yaml +2 -0
  189. data/src/arena.c +117 -0
  190. data/src/buffer.c +380 -0
  191. data/src/char.c +289 -0
  192. data/src/comments.c +454 -0
  193. data/src/constant_pool.c +406 -0
  194. data/src/diagnostic.c +886 -0
  195. data/src/encoding.c +5345 -0
  196. data/src/errors_format.c +519 -0
  197. data/src/integer.c +681 -0
  198. data/src/json.c +5733 -0
  199. data/src/line_offset_list.c +100 -0
  200. data/src/list.c +24 -0
  201. data/src/memchr.c +37 -0
  202. data/src/node.c +4515 -0
  203. data/src/options.c +451 -0
  204. data/src/parser.c +349 -0
  205. data/src/prettyprint.c +9024 -0
  206. data/src/prism.c +23739 -0
  207. data/src/regexp.c +1706 -0
  208. data/src/serialize.c +2309 -0
  209. data/src/source.c +518 -0
  210. data/src/static_literals.c +685 -0
  211. data/src/string_query.c +166 -0
  212. data/src/stringy.c +91 -0
  213. data/src/strncasecmp.c +37 -0
  214. data/src/strpbrk.c +447 -0
  215. data/src/tokens.c +724 -0
  216. metadata +259 -0
@@ -0,0 +1,2383 @@
1
+ # frozen_string_literal: true
2
+ # :markup: markdown
3
+
4
+ =begin
5
+ --
6
+ This file is generated by the templates/template.rb script and should not be
7
+ modified manually. See templates/lib/prism/dispatcher.rb.erb
8
+ if you are looking to modify the template
9
+ ++
10
+ =end
11
+
12
+ #--
13
+ # rbs_inline: enabled
14
+
15
+ module Prism
16
+ # The dispatcher class fires events for nodes that are found while walking an
17
+ # AST to all registered listeners. It's useful for performing different types
18
+ # of analysis on the AST while only having to walk the tree once.
19
+ #
20
+ # To use the dispatcher, you would first instantiate it and register listeners
21
+ # for the events you're interested in:
22
+ #
23
+ # class OctalListener
24
+ # def on_integer_node_enter(node)
25
+ # if node.octal? && !node.slice.start_with?("0o")
26
+ # warn("Octal integers should be written with the 0o prefix")
27
+ # end
28
+ # end
29
+ # end
30
+ #
31
+ # listener = OctalListener.new
32
+ # dispatcher = Prism::Dispatcher.new
33
+ # dispatcher.register(listener, :on_integer_node_enter)
34
+ #
35
+ # Then, you can walk any number of trees and dispatch events to the listeners:
36
+ #
37
+ # result = Prism.parse("001 + 002 + 003")
38
+ # dispatcher.dispatch(result.value)
39
+ #
40
+ # Optionally, you can also use `#dispatch_once` to dispatch enter and leave
41
+ # events for a single node without recursing further down the tree. This can
42
+ # be useful in circumstances where you want to reuse the listeners you already
43
+ # have registers but want to stop walking the tree at a certain point.
44
+ #
45
+ # integer = result.value.statements.body.first.receiver.receiver
46
+ # dispatcher.dispatch_once(integer)
47
+ #
48
+ class Dispatcher < Visitor
49
+ # A hash mapping event names to arrays of listeners that should be notified
50
+ # when that event is fired.
51
+ attr_reader :listeners #: Hash[Symbol, Array[untyped]]
52
+
53
+ # Initialize a new dispatcher.
54
+ #
55
+ #: () -> void
56
+ def initialize
57
+ @listeners = {}
58
+ end
59
+
60
+ # Register a listener for one or more events.
61
+ #
62
+ #: (untyped, *Symbol) -> void
63
+ def register(listener, *events)
64
+ register_events(listener, events)
65
+ end
66
+
67
+ # Register all public methods of a listener that match the pattern
68
+ # `on_<node_name>_(enter|leave)`.
69
+ #
70
+ #: (untyped) -> void
71
+ def register_public_methods(listener)
72
+ register_events(listener, listener.public_methods(false).grep(/\Aon_.+_(?:enter|leave)\z/))
73
+ end
74
+
75
+ # Register a listener for the given events.
76
+ #
77
+ #: (untyped, Array[Symbol]) -> void
78
+ private def register_events(listener, events) # :nodoc:
79
+ events.each { |event| (listeners[event] ||= []) << listener }
80
+ end
81
+
82
+ # Walks `root` dispatching events to all registered listeners.
83
+ alias dispatch visit
84
+
85
+ # Dispatches a single event for `node` to all registered listeners.
86
+ #
87
+ #: (node node) -> void
88
+ def dispatch_once(node)
89
+ node.accept(DispatchOnce.new(listeners))
90
+ end
91
+
92
+ #: (AliasGlobalVariableNode node) -> void
93
+ def visit_alias_global_variable_node(node) # :nodoc:
94
+ listeners[:on_alias_global_variable_node_enter]&.each { |listener| listener.on_alias_global_variable_node_enter(node) }
95
+ super
96
+ listeners[:on_alias_global_variable_node_leave]&.each { |listener| listener.on_alias_global_variable_node_leave(node) }
97
+ end
98
+
99
+ #: (AliasMethodNode node) -> void
100
+ def visit_alias_method_node(node) # :nodoc:
101
+ listeners[:on_alias_method_node_enter]&.each { |listener| listener.on_alias_method_node_enter(node) }
102
+ super
103
+ listeners[:on_alias_method_node_leave]&.each { |listener| listener.on_alias_method_node_leave(node) }
104
+ end
105
+
106
+ #: (AlternationPatternNode node) -> void
107
+ def visit_alternation_pattern_node(node) # :nodoc:
108
+ listeners[:on_alternation_pattern_node_enter]&.each { |listener| listener.on_alternation_pattern_node_enter(node) }
109
+ super
110
+ listeners[:on_alternation_pattern_node_leave]&.each { |listener| listener.on_alternation_pattern_node_leave(node) }
111
+ end
112
+
113
+ #: (AndNode node) -> void
114
+ def visit_and_node(node) # :nodoc:
115
+ listeners[:on_and_node_enter]&.each { |listener| listener.on_and_node_enter(node) }
116
+ super
117
+ listeners[:on_and_node_leave]&.each { |listener| listener.on_and_node_leave(node) }
118
+ end
119
+
120
+ #: (ArgumentsNode node) -> void
121
+ def visit_arguments_node(node) # :nodoc:
122
+ listeners[:on_arguments_node_enter]&.each { |listener| listener.on_arguments_node_enter(node) }
123
+ super
124
+ listeners[:on_arguments_node_leave]&.each { |listener| listener.on_arguments_node_leave(node) }
125
+ end
126
+
127
+ #: (ArrayNode node) -> void
128
+ def visit_array_node(node) # :nodoc:
129
+ listeners[:on_array_node_enter]&.each { |listener| listener.on_array_node_enter(node) }
130
+ super
131
+ listeners[:on_array_node_leave]&.each { |listener| listener.on_array_node_leave(node) }
132
+ end
133
+
134
+ #: (ArrayPatternNode node) -> void
135
+ def visit_array_pattern_node(node) # :nodoc:
136
+ listeners[:on_array_pattern_node_enter]&.each { |listener| listener.on_array_pattern_node_enter(node) }
137
+ super
138
+ listeners[:on_array_pattern_node_leave]&.each { |listener| listener.on_array_pattern_node_leave(node) }
139
+ end
140
+
141
+ #: (AssocNode node) -> void
142
+ def visit_assoc_node(node) # :nodoc:
143
+ listeners[:on_assoc_node_enter]&.each { |listener| listener.on_assoc_node_enter(node) }
144
+ super
145
+ listeners[:on_assoc_node_leave]&.each { |listener| listener.on_assoc_node_leave(node) }
146
+ end
147
+
148
+ #: (AssocSplatNode node) -> void
149
+ def visit_assoc_splat_node(node) # :nodoc:
150
+ listeners[:on_assoc_splat_node_enter]&.each { |listener| listener.on_assoc_splat_node_enter(node) }
151
+ super
152
+ listeners[:on_assoc_splat_node_leave]&.each { |listener| listener.on_assoc_splat_node_leave(node) }
153
+ end
154
+
155
+ #: (BackReferenceReadNode node) -> void
156
+ def visit_back_reference_read_node(node) # :nodoc:
157
+ listeners[:on_back_reference_read_node_enter]&.each { |listener| listener.on_back_reference_read_node_enter(node) }
158
+ super
159
+ listeners[:on_back_reference_read_node_leave]&.each { |listener| listener.on_back_reference_read_node_leave(node) }
160
+ end
161
+
162
+ #: (BeginNode node) -> void
163
+ def visit_begin_node(node) # :nodoc:
164
+ listeners[:on_begin_node_enter]&.each { |listener| listener.on_begin_node_enter(node) }
165
+ super
166
+ listeners[:on_begin_node_leave]&.each { |listener| listener.on_begin_node_leave(node) }
167
+ end
168
+
169
+ #: (BlockArgumentNode node) -> void
170
+ def visit_block_argument_node(node) # :nodoc:
171
+ listeners[:on_block_argument_node_enter]&.each { |listener| listener.on_block_argument_node_enter(node) }
172
+ super
173
+ listeners[:on_block_argument_node_leave]&.each { |listener| listener.on_block_argument_node_leave(node) }
174
+ end
175
+
176
+ #: (BlockLocalVariableNode node) -> void
177
+ def visit_block_local_variable_node(node) # :nodoc:
178
+ listeners[:on_block_local_variable_node_enter]&.each { |listener| listener.on_block_local_variable_node_enter(node) }
179
+ super
180
+ listeners[:on_block_local_variable_node_leave]&.each { |listener| listener.on_block_local_variable_node_leave(node) }
181
+ end
182
+
183
+ #: (BlockNode node) -> void
184
+ def visit_block_node(node) # :nodoc:
185
+ listeners[:on_block_node_enter]&.each { |listener| listener.on_block_node_enter(node) }
186
+ super
187
+ listeners[:on_block_node_leave]&.each { |listener| listener.on_block_node_leave(node) }
188
+ end
189
+
190
+ #: (BlockParameterNode node) -> void
191
+ def visit_block_parameter_node(node) # :nodoc:
192
+ listeners[:on_block_parameter_node_enter]&.each { |listener| listener.on_block_parameter_node_enter(node) }
193
+ super
194
+ listeners[:on_block_parameter_node_leave]&.each { |listener| listener.on_block_parameter_node_leave(node) }
195
+ end
196
+
197
+ #: (BlockParametersNode node) -> void
198
+ def visit_block_parameters_node(node) # :nodoc:
199
+ listeners[:on_block_parameters_node_enter]&.each { |listener| listener.on_block_parameters_node_enter(node) }
200
+ super
201
+ listeners[:on_block_parameters_node_leave]&.each { |listener| listener.on_block_parameters_node_leave(node) }
202
+ end
203
+
204
+ #: (BreakNode node) -> void
205
+ def visit_break_node(node) # :nodoc:
206
+ listeners[:on_break_node_enter]&.each { |listener| listener.on_break_node_enter(node) }
207
+ super
208
+ listeners[:on_break_node_leave]&.each { |listener| listener.on_break_node_leave(node) }
209
+ end
210
+
211
+ #: (CallAndWriteNode node) -> void
212
+ def visit_call_and_write_node(node) # :nodoc:
213
+ listeners[:on_call_and_write_node_enter]&.each { |listener| listener.on_call_and_write_node_enter(node) }
214
+ super
215
+ listeners[:on_call_and_write_node_leave]&.each { |listener| listener.on_call_and_write_node_leave(node) }
216
+ end
217
+
218
+ #: (CallNode node) -> void
219
+ def visit_call_node(node) # :nodoc:
220
+ listeners[:on_call_node_enter]&.each { |listener| listener.on_call_node_enter(node) }
221
+ super
222
+ listeners[:on_call_node_leave]&.each { |listener| listener.on_call_node_leave(node) }
223
+ end
224
+
225
+ #: (CallOperatorWriteNode node) -> void
226
+ def visit_call_operator_write_node(node) # :nodoc:
227
+ listeners[:on_call_operator_write_node_enter]&.each { |listener| listener.on_call_operator_write_node_enter(node) }
228
+ super
229
+ listeners[:on_call_operator_write_node_leave]&.each { |listener| listener.on_call_operator_write_node_leave(node) }
230
+ end
231
+
232
+ #: (CallOrWriteNode node) -> void
233
+ def visit_call_or_write_node(node) # :nodoc:
234
+ listeners[:on_call_or_write_node_enter]&.each { |listener| listener.on_call_or_write_node_enter(node) }
235
+ super
236
+ listeners[:on_call_or_write_node_leave]&.each { |listener| listener.on_call_or_write_node_leave(node) }
237
+ end
238
+
239
+ #: (CallTargetNode node) -> void
240
+ def visit_call_target_node(node) # :nodoc:
241
+ listeners[:on_call_target_node_enter]&.each { |listener| listener.on_call_target_node_enter(node) }
242
+ super
243
+ listeners[:on_call_target_node_leave]&.each { |listener| listener.on_call_target_node_leave(node) }
244
+ end
245
+
246
+ #: (CapturePatternNode node) -> void
247
+ def visit_capture_pattern_node(node) # :nodoc:
248
+ listeners[:on_capture_pattern_node_enter]&.each { |listener| listener.on_capture_pattern_node_enter(node) }
249
+ super
250
+ listeners[:on_capture_pattern_node_leave]&.each { |listener| listener.on_capture_pattern_node_leave(node) }
251
+ end
252
+
253
+ #: (CaseMatchNode node) -> void
254
+ def visit_case_match_node(node) # :nodoc:
255
+ listeners[:on_case_match_node_enter]&.each { |listener| listener.on_case_match_node_enter(node) }
256
+ super
257
+ listeners[:on_case_match_node_leave]&.each { |listener| listener.on_case_match_node_leave(node) }
258
+ end
259
+
260
+ #: (CaseNode node) -> void
261
+ def visit_case_node(node) # :nodoc:
262
+ listeners[:on_case_node_enter]&.each { |listener| listener.on_case_node_enter(node) }
263
+ super
264
+ listeners[:on_case_node_leave]&.each { |listener| listener.on_case_node_leave(node) }
265
+ end
266
+
267
+ #: (ClassNode node) -> void
268
+ def visit_class_node(node) # :nodoc:
269
+ listeners[:on_class_node_enter]&.each { |listener| listener.on_class_node_enter(node) }
270
+ super
271
+ listeners[:on_class_node_leave]&.each { |listener| listener.on_class_node_leave(node) }
272
+ end
273
+
274
+ #: (ClassVariableAndWriteNode node) -> void
275
+ def visit_class_variable_and_write_node(node) # :nodoc:
276
+ listeners[:on_class_variable_and_write_node_enter]&.each { |listener| listener.on_class_variable_and_write_node_enter(node) }
277
+ super
278
+ listeners[:on_class_variable_and_write_node_leave]&.each { |listener| listener.on_class_variable_and_write_node_leave(node) }
279
+ end
280
+
281
+ #: (ClassVariableOperatorWriteNode node) -> void
282
+ def visit_class_variable_operator_write_node(node) # :nodoc:
283
+ listeners[:on_class_variable_operator_write_node_enter]&.each { |listener| listener.on_class_variable_operator_write_node_enter(node) }
284
+ super
285
+ listeners[:on_class_variable_operator_write_node_leave]&.each { |listener| listener.on_class_variable_operator_write_node_leave(node) }
286
+ end
287
+
288
+ #: (ClassVariableOrWriteNode node) -> void
289
+ def visit_class_variable_or_write_node(node) # :nodoc:
290
+ listeners[:on_class_variable_or_write_node_enter]&.each { |listener| listener.on_class_variable_or_write_node_enter(node) }
291
+ super
292
+ listeners[:on_class_variable_or_write_node_leave]&.each { |listener| listener.on_class_variable_or_write_node_leave(node) }
293
+ end
294
+
295
+ #: (ClassVariableReadNode node) -> void
296
+ def visit_class_variable_read_node(node) # :nodoc:
297
+ listeners[:on_class_variable_read_node_enter]&.each { |listener| listener.on_class_variable_read_node_enter(node) }
298
+ super
299
+ listeners[:on_class_variable_read_node_leave]&.each { |listener| listener.on_class_variable_read_node_leave(node) }
300
+ end
301
+
302
+ #: (ClassVariableTargetNode node) -> void
303
+ def visit_class_variable_target_node(node) # :nodoc:
304
+ listeners[:on_class_variable_target_node_enter]&.each { |listener| listener.on_class_variable_target_node_enter(node) }
305
+ super
306
+ listeners[:on_class_variable_target_node_leave]&.each { |listener| listener.on_class_variable_target_node_leave(node) }
307
+ end
308
+
309
+ #: (ClassVariableWriteNode node) -> void
310
+ def visit_class_variable_write_node(node) # :nodoc:
311
+ listeners[:on_class_variable_write_node_enter]&.each { |listener| listener.on_class_variable_write_node_enter(node) }
312
+ super
313
+ listeners[:on_class_variable_write_node_leave]&.each { |listener| listener.on_class_variable_write_node_leave(node) }
314
+ end
315
+
316
+ #: (ConstantAndWriteNode node) -> void
317
+ def visit_constant_and_write_node(node) # :nodoc:
318
+ listeners[:on_constant_and_write_node_enter]&.each { |listener| listener.on_constant_and_write_node_enter(node) }
319
+ super
320
+ listeners[:on_constant_and_write_node_leave]&.each { |listener| listener.on_constant_and_write_node_leave(node) }
321
+ end
322
+
323
+ #: (ConstantOperatorWriteNode node) -> void
324
+ def visit_constant_operator_write_node(node) # :nodoc:
325
+ listeners[:on_constant_operator_write_node_enter]&.each { |listener| listener.on_constant_operator_write_node_enter(node) }
326
+ super
327
+ listeners[:on_constant_operator_write_node_leave]&.each { |listener| listener.on_constant_operator_write_node_leave(node) }
328
+ end
329
+
330
+ #: (ConstantOrWriteNode node) -> void
331
+ def visit_constant_or_write_node(node) # :nodoc:
332
+ listeners[:on_constant_or_write_node_enter]&.each { |listener| listener.on_constant_or_write_node_enter(node) }
333
+ super
334
+ listeners[:on_constant_or_write_node_leave]&.each { |listener| listener.on_constant_or_write_node_leave(node) }
335
+ end
336
+
337
+ #: (ConstantPathAndWriteNode node) -> void
338
+ def visit_constant_path_and_write_node(node) # :nodoc:
339
+ listeners[:on_constant_path_and_write_node_enter]&.each { |listener| listener.on_constant_path_and_write_node_enter(node) }
340
+ super
341
+ listeners[:on_constant_path_and_write_node_leave]&.each { |listener| listener.on_constant_path_and_write_node_leave(node) }
342
+ end
343
+
344
+ #: (ConstantPathNode node) -> void
345
+ def visit_constant_path_node(node) # :nodoc:
346
+ listeners[:on_constant_path_node_enter]&.each { |listener| listener.on_constant_path_node_enter(node) }
347
+ super
348
+ listeners[:on_constant_path_node_leave]&.each { |listener| listener.on_constant_path_node_leave(node) }
349
+ end
350
+
351
+ #: (ConstantPathOperatorWriteNode node) -> void
352
+ def visit_constant_path_operator_write_node(node) # :nodoc:
353
+ listeners[:on_constant_path_operator_write_node_enter]&.each { |listener| listener.on_constant_path_operator_write_node_enter(node) }
354
+ super
355
+ listeners[:on_constant_path_operator_write_node_leave]&.each { |listener| listener.on_constant_path_operator_write_node_leave(node) }
356
+ end
357
+
358
+ #: (ConstantPathOrWriteNode node) -> void
359
+ def visit_constant_path_or_write_node(node) # :nodoc:
360
+ listeners[:on_constant_path_or_write_node_enter]&.each { |listener| listener.on_constant_path_or_write_node_enter(node) }
361
+ super
362
+ listeners[:on_constant_path_or_write_node_leave]&.each { |listener| listener.on_constant_path_or_write_node_leave(node) }
363
+ end
364
+
365
+ #: (ConstantPathTargetNode node) -> void
366
+ def visit_constant_path_target_node(node) # :nodoc:
367
+ listeners[:on_constant_path_target_node_enter]&.each { |listener| listener.on_constant_path_target_node_enter(node) }
368
+ super
369
+ listeners[:on_constant_path_target_node_leave]&.each { |listener| listener.on_constant_path_target_node_leave(node) }
370
+ end
371
+
372
+ #: (ConstantPathWriteNode node) -> void
373
+ def visit_constant_path_write_node(node) # :nodoc:
374
+ listeners[:on_constant_path_write_node_enter]&.each { |listener| listener.on_constant_path_write_node_enter(node) }
375
+ super
376
+ listeners[:on_constant_path_write_node_leave]&.each { |listener| listener.on_constant_path_write_node_leave(node) }
377
+ end
378
+
379
+ #: (ConstantReadNode node) -> void
380
+ def visit_constant_read_node(node) # :nodoc:
381
+ listeners[:on_constant_read_node_enter]&.each { |listener| listener.on_constant_read_node_enter(node) }
382
+ super
383
+ listeners[:on_constant_read_node_leave]&.each { |listener| listener.on_constant_read_node_leave(node) }
384
+ end
385
+
386
+ #: (ConstantTargetNode node) -> void
387
+ def visit_constant_target_node(node) # :nodoc:
388
+ listeners[:on_constant_target_node_enter]&.each { |listener| listener.on_constant_target_node_enter(node) }
389
+ super
390
+ listeners[:on_constant_target_node_leave]&.each { |listener| listener.on_constant_target_node_leave(node) }
391
+ end
392
+
393
+ #: (ConstantWriteNode node) -> void
394
+ def visit_constant_write_node(node) # :nodoc:
395
+ listeners[:on_constant_write_node_enter]&.each { |listener| listener.on_constant_write_node_enter(node) }
396
+ super
397
+ listeners[:on_constant_write_node_leave]&.each { |listener| listener.on_constant_write_node_leave(node) }
398
+ end
399
+
400
+ #: (DefNode node) -> void
401
+ def visit_def_node(node) # :nodoc:
402
+ listeners[:on_def_node_enter]&.each { |listener| listener.on_def_node_enter(node) }
403
+ super
404
+ listeners[:on_def_node_leave]&.each { |listener| listener.on_def_node_leave(node) }
405
+ end
406
+
407
+ #: (DefinedNode node) -> void
408
+ def visit_defined_node(node) # :nodoc:
409
+ listeners[:on_defined_node_enter]&.each { |listener| listener.on_defined_node_enter(node) }
410
+ super
411
+ listeners[:on_defined_node_leave]&.each { |listener| listener.on_defined_node_leave(node) }
412
+ end
413
+
414
+ #: (ElseNode node) -> void
415
+ def visit_else_node(node) # :nodoc:
416
+ listeners[:on_else_node_enter]&.each { |listener| listener.on_else_node_enter(node) }
417
+ super
418
+ listeners[:on_else_node_leave]&.each { |listener| listener.on_else_node_leave(node) }
419
+ end
420
+
421
+ #: (EmbeddedStatementsNode node) -> void
422
+ def visit_embedded_statements_node(node) # :nodoc:
423
+ listeners[:on_embedded_statements_node_enter]&.each { |listener| listener.on_embedded_statements_node_enter(node) }
424
+ super
425
+ listeners[:on_embedded_statements_node_leave]&.each { |listener| listener.on_embedded_statements_node_leave(node) }
426
+ end
427
+
428
+ #: (EmbeddedVariableNode node) -> void
429
+ def visit_embedded_variable_node(node) # :nodoc:
430
+ listeners[:on_embedded_variable_node_enter]&.each { |listener| listener.on_embedded_variable_node_enter(node) }
431
+ super
432
+ listeners[:on_embedded_variable_node_leave]&.each { |listener| listener.on_embedded_variable_node_leave(node) }
433
+ end
434
+
435
+ #: (EnsureNode node) -> void
436
+ def visit_ensure_node(node) # :nodoc:
437
+ listeners[:on_ensure_node_enter]&.each { |listener| listener.on_ensure_node_enter(node) }
438
+ super
439
+ listeners[:on_ensure_node_leave]&.each { |listener| listener.on_ensure_node_leave(node) }
440
+ end
441
+
442
+ #: (ErrorRecoveryNode node) -> void
443
+ def visit_error_recovery_node(node) # :nodoc:
444
+ listeners[:on_error_recovery_node_enter]&.each { |listener| listener.on_error_recovery_node_enter(node) }
445
+ super
446
+ listeners[:on_error_recovery_node_leave]&.each { |listener| listener.on_error_recovery_node_leave(node) }
447
+ end
448
+
449
+ #: (FalseNode node) -> void
450
+ def visit_false_node(node) # :nodoc:
451
+ listeners[:on_false_node_enter]&.each { |listener| listener.on_false_node_enter(node) }
452
+ super
453
+ listeners[:on_false_node_leave]&.each { |listener| listener.on_false_node_leave(node) }
454
+ end
455
+
456
+ #: (FindPatternNode node) -> void
457
+ def visit_find_pattern_node(node) # :nodoc:
458
+ listeners[:on_find_pattern_node_enter]&.each { |listener| listener.on_find_pattern_node_enter(node) }
459
+ super
460
+ listeners[:on_find_pattern_node_leave]&.each { |listener| listener.on_find_pattern_node_leave(node) }
461
+ end
462
+
463
+ #: (FlipFlopNode node) -> void
464
+ def visit_flip_flop_node(node) # :nodoc:
465
+ listeners[:on_flip_flop_node_enter]&.each { |listener| listener.on_flip_flop_node_enter(node) }
466
+ super
467
+ listeners[:on_flip_flop_node_leave]&.each { |listener| listener.on_flip_flop_node_leave(node) }
468
+ end
469
+
470
+ #: (FloatNode node) -> void
471
+ def visit_float_node(node) # :nodoc:
472
+ listeners[:on_float_node_enter]&.each { |listener| listener.on_float_node_enter(node) }
473
+ super
474
+ listeners[:on_float_node_leave]&.each { |listener| listener.on_float_node_leave(node) }
475
+ end
476
+
477
+ #: (ForNode node) -> void
478
+ def visit_for_node(node) # :nodoc:
479
+ listeners[:on_for_node_enter]&.each { |listener| listener.on_for_node_enter(node) }
480
+ super
481
+ listeners[:on_for_node_leave]&.each { |listener| listener.on_for_node_leave(node) }
482
+ end
483
+
484
+ #: (ForwardingArgumentsNode node) -> void
485
+ def visit_forwarding_arguments_node(node) # :nodoc:
486
+ listeners[:on_forwarding_arguments_node_enter]&.each { |listener| listener.on_forwarding_arguments_node_enter(node) }
487
+ super
488
+ listeners[:on_forwarding_arguments_node_leave]&.each { |listener| listener.on_forwarding_arguments_node_leave(node) }
489
+ end
490
+
491
+ #: (ForwardingParameterNode node) -> void
492
+ def visit_forwarding_parameter_node(node) # :nodoc:
493
+ listeners[:on_forwarding_parameter_node_enter]&.each { |listener| listener.on_forwarding_parameter_node_enter(node) }
494
+ super
495
+ listeners[:on_forwarding_parameter_node_leave]&.each { |listener| listener.on_forwarding_parameter_node_leave(node) }
496
+ end
497
+
498
+ #: (ForwardingSuperNode node) -> void
499
+ def visit_forwarding_super_node(node) # :nodoc:
500
+ listeners[:on_forwarding_super_node_enter]&.each { |listener| listener.on_forwarding_super_node_enter(node) }
501
+ super
502
+ listeners[:on_forwarding_super_node_leave]&.each { |listener| listener.on_forwarding_super_node_leave(node) }
503
+ end
504
+
505
+ #: (GlobalVariableAndWriteNode node) -> void
506
+ def visit_global_variable_and_write_node(node) # :nodoc:
507
+ listeners[:on_global_variable_and_write_node_enter]&.each { |listener| listener.on_global_variable_and_write_node_enter(node) }
508
+ super
509
+ listeners[:on_global_variable_and_write_node_leave]&.each { |listener| listener.on_global_variable_and_write_node_leave(node) }
510
+ end
511
+
512
+ #: (GlobalVariableOperatorWriteNode node) -> void
513
+ def visit_global_variable_operator_write_node(node) # :nodoc:
514
+ listeners[:on_global_variable_operator_write_node_enter]&.each { |listener| listener.on_global_variable_operator_write_node_enter(node) }
515
+ super
516
+ listeners[:on_global_variable_operator_write_node_leave]&.each { |listener| listener.on_global_variable_operator_write_node_leave(node) }
517
+ end
518
+
519
+ #: (GlobalVariableOrWriteNode node) -> void
520
+ def visit_global_variable_or_write_node(node) # :nodoc:
521
+ listeners[:on_global_variable_or_write_node_enter]&.each { |listener| listener.on_global_variable_or_write_node_enter(node) }
522
+ super
523
+ listeners[:on_global_variable_or_write_node_leave]&.each { |listener| listener.on_global_variable_or_write_node_leave(node) }
524
+ end
525
+
526
+ #: (GlobalVariableReadNode node) -> void
527
+ def visit_global_variable_read_node(node) # :nodoc:
528
+ listeners[:on_global_variable_read_node_enter]&.each { |listener| listener.on_global_variable_read_node_enter(node) }
529
+ super
530
+ listeners[:on_global_variable_read_node_leave]&.each { |listener| listener.on_global_variable_read_node_leave(node) }
531
+ end
532
+
533
+ #: (GlobalVariableTargetNode node) -> void
534
+ def visit_global_variable_target_node(node) # :nodoc:
535
+ listeners[:on_global_variable_target_node_enter]&.each { |listener| listener.on_global_variable_target_node_enter(node) }
536
+ super
537
+ listeners[:on_global_variable_target_node_leave]&.each { |listener| listener.on_global_variable_target_node_leave(node) }
538
+ end
539
+
540
+ #: (GlobalVariableWriteNode node) -> void
541
+ def visit_global_variable_write_node(node) # :nodoc:
542
+ listeners[:on_global_variable_write_node_enter]&.each { |listener| listener.on_global_variable_write_node_enter(node) }
543
+ super
544
+ listeners[:on_global_variable_write_node_leave]&.each { |listener| listener.on_global_variable_write_node_leave(node) }
545
+ end
546
+
547
+ #: (HashNode node) -> void
548
+ def visit_hash_node(node) # :nodoc:
549
+ listeners[:on_hash_node_enter]&.each { |listener| listener.on_hash_node_enter(node) }
550
+ super
551
+ listeners[:on_hash_node_leave]&.each { |listener| listener.on_hash_node_leave(node) }
552
+ end
553
+
554
+ #: (HashPatternNode node) -> void
555
+ def visit_hash_pattern_node(node) # :nodoc:
556
+ listeners[:on_hash_pattern_node_enter]&.each { |listener| listener.on_hash_pattern_node_enter(node) }
557
+ super
558
+ listeners[:on_hash_pattern_node_leave]&.each { |listener| listener.on_hash_pattern_node_leave(node) }
559
+ end
560
+
561
+ #: (IfNode node) -> void
562
+ def visit_if_node(node) # :nodoc:
563
+ listeners[:on_if_node_enter]&.each { |listener| listener.on_if_node_enter(node) }
564
+ super
565
+ listeners[:on_if_node_leave]&.each { |listener| listener.on_if_node_leave(node) }
566
+ end
567
+
568
+ #: (ImaginaryNode node) -> void
569
+ def visit_imaginary_node(node) # :nodoc:
570
+ listeners[:on_imaginary_node_enter]&.each { |listener| listener.on_imaginary_node_enter(node) }
571
+ super
572
+ listeners[:on_imaginary_node_leave]&.each { |listener| listener.on_imaginary_node_leave(node) }
573
+ end
574
+
575
+ #: (ImplicitNode node) -> void
576
+ def visit_implicit_node(node) # :nodoc:
577
+ listeners[:on_implicit_node_enter]&.each { |listener| listener.on_implicit_node_enter(node) }
578
+ super
579
+ listeners[:on_implicit_node_leave]&.each { |listener| listener.on_implicit_node_leave(node) }
580
+ end
581
+
582
+ #: (ImplicitRestNode node) -> void
583
+ def visit_implicit_rest_node(node) # :nodoc:
584
+ listeners[:on_implicit_rest_node_enter]&.each { |listener| listener.on_implicit_rest_node_enter(node) }
585
+ super
586
+ listeners[:on_implicit_rest_node_leave]&.each { |listener| listener.on_implicit_rest_node_leave(node) }
587
+ end
588
+
589
+ #: (InNode node) -> void
590
+ def visit_in_node(node) # :nodoc:
591
+ listeners[:on_in_node_enter]&.each { |listener| listener.on_in_node_enter(node) }
592
+ super
593
+ listeners[:on_in_node_leave]&.each { |listener| listener.on_in_node_leave(node) }
594
+ end
595
+
596
+ #: (IndexAndWriteNode node) -> void
597
+ def visit_index_and_write_node(node) # :nodoc:
598
+ listeners[:on_index_and_write_node_enter]&.each { |listener| listener.on_index_and_write_node_enter(node) }
599
+ super
600
+ listeners[:on_index_and_write_node_leave]&.each { |listener| listener.on_index_and_write_node_leave(node) }
601
+ end
602
+
603
+ #: (IndexOperatorWriteNode node) -> void
604
+ def visit_index_operator_write_node(node) # :nodoc:
605
+ listeners[:on_index_operator_write_node_enter]&.each { |listener| listener.on_index_operator_write_node_enter(node) }
606
+ super
607
+ listeners[:on_index_operator_write_node_leave]&.each { |listener| listener.on_index_operator_write_node_leave(node) }
608
+ end
609
+
610
+ #: (IndexOrWriteNode node) -> void
611
+ def visit_index_or_write_node(node) # :nodoc:
612
+ listeners[:on_index_or_write_node_enter]&.each { |listener| listener.on_index_or_write_node_enter(node) }
613
+ super
614
+ listeners[:on_index_or_write_node_leave]&.each { |listener| listener.on_index_or_write_node_leave(node) }
615
+ end
616
+
617
+ #: (IndexTargetNode node) -> void
618
+ def visit_index_target_node(node) # :nodoc:
619
+ listeners[:on_index_target_node_enter]&.each { |listener| listener.on_index_target_node_enter(node) }
620
+ super
621
+ listeners[:on_index_target_node_leave]&.each { |listener| listener.on_index_target_node_leave(node) }
622
+ end
623
+
624
+ #: (InstanceVariableAndWriteNode node) -> void
625
+ def visit_instance_variable_and_write_node(node) # :nodoc:
626
+ listeners[:on_instance_variable_and_write_node_enter]&.each { |listener| listener.on_instance_variable_and_write_node_enter(node) }
627
+ super
628
+ listeners[:on_instance_variable_and_write_node_leave]&.each { |listener| listener.on_instance_variable_and_write_node_leave(node) }
629
+ end
630
+
631
+ #: (InstanceVariableOperatorWriteNode node) -> void
632
+ def visit_instance_variable_operator_write_node(node) # :nodoc:
633
+ listeners[:on_instance_variable_operator_write_node_enter]&.each { |listener| listener.on_instance_variable_operator_write_node_enter(node) }
634
+ super
635
+ listeners[:on_instance_variable_operator_write_node_leave]&.each { |listener| listener.on_instance_variable_operator_write_node_leave(node) }
636
+ end
637
+
638
+ #: (InstanceVariableOrWriteNode node) -> void
639
+ def visit_instance_variable_or_write_node(node) # :nodoc:
640
+ listeners[:on_instance_variable_or_write_node_enter]&.each { |listener| listener.on_instance_variable_or_write_node_enter(node) }
641
+ super
642
+ listeners[:on_instance_variable_or_write_node_leave]&.each { |listener| listener.on_instance_variable_or_write_node_leave(node) }
643
+ end
644
+
645
+ #: (InstanceVariableReadNode node) -> void
646
+ def visit_instance_variable_read_node(node) # :nodoc:
647
+ listeners[:on_instance_variable_read_node_enter]&.each { |listener| listener.on_instance_variable_read_node_enter(node) }
648
+ super
649
+ listeners[:on_instance_variable_read_node_leave]&.each { |listener| listener.on_instance_variable_read_node_leave(node) }
650
+ end
651
+
652
+ #: (InstanceVariableTargetNode node) -> void
653
+ def visit_instance_variable_target_node(node) # :nodoc:
654
+ listeners[:on_instance_variable_target_node_enter]&.each { |listener| listener.on_instance_variable_target_node_enter(node) }
655
+ super
656
+ listeners[:on_instance_variable_target_node_leave]&.each { |listener| listener.on_instance_variable_target_node_leave(node) }
657
+ end
658
+
659
+ #: (InstanceVariableWriteNode node) -> void
660
+ def visit_instance_variable_write_node(node) # :nodoc:
661
+ listeners[:on_instance_variable_write_node_enter]&.each { |listener| listener.on_instance_variable_write_node_enter(node) }
662
+ super
663
+ listeners[:on_instance_variable_write_node_leave]&.each { |listener| listener.on_instance_variable_write_node_leave(node) }
664
+ end
665
+
666
+ #: (IntegerNode node) -> void
667
+ def visit_integer_node(node) # :nodoc:
668
+ listeners[:on_integer_node_enter]&.each { |listener| listener.on_integer_node_enter(node) }
669
+ super
670
+ listeners[:on_integer_node_leave]&.each { |listener| listener.on_integer_node_leave(node) }
671
+ end
672
+
673
+ #: (InterpolatedMatchLastLineNode node) -> void
674
+ def visit_interpolated_match_last_line_node(node) # :nodoc:
675
+ listeners[:on_interpolated_match_last_line_node_enter]&.each { |listener| listener.on_interpolated_match_last_line_node_enter(node) }
676
+ super
677
+ listeners[:on_interpolated_match_last_line_node_leave]&.each { |listener| listener.on_interpolated_match_last_line_node_leave(node) }
678
+ end
679
+
680
+ #: (InterpolatedRegularExpressionNode node) -> void
681
+ def visit_interpolated_regular_expression_node(node) # :nodoc:
682
+ listeners[:on_interpolated_regular_expression_node_enter]&.each { |listener| listener.on_interpolated_regular_expression_node_enter(node) }
683
+ super
684
+ listeners[:on_interpolated_regular_expression_node_leave]&.each { |listener| listener.on_interpolated_regular_expression_node_leave(node) }
685
+ end
686
+
687
+ #: (InterpolatedStringNode node) -> void
688
+ def visit_interpolated_string_node(node) # :nodoc:
689
+ listeners[:on_interpolated_string_node_enter]&.each { |listener| listener.on_interpolated_string_node_enter(node) }
690
+ super
691
+ listeners[:on_interpolated_string_node_leave]&.each { |listener| listener.on_interpolated_string_node_leave(node) }
692
+ end
693
+
694
+ #: (InterpolatedSymbolNode node) -> void
695
+ def visit_interpolated_symbol_node(node) # :nodoc:
696
+ listeners[:on_interpolated_symbol_node_enter]&.each { |listener| listener.on_interpolated_symbol_node_enter(node) }
697
+ super
698
+ listeners[:on_interpolated_symbol_node_leave]&.each { |listener| listener.on_interpolated_symbol_node_leave(node) }
699
+ end
700
+
701
+ #: (InterpolatedXStringNode node) -> void
702
+ def visit_interpolated_x_string_node(node) # :nodoc:
703
+ listeners[:on_interpolated_x_string_node_enter]&.each { |listener| listener.on_interpolated_x_string_node_enter(node) }
704
+ super
705
+ listeners[:on_interpolated_x_string_node_leave]&.each { |listener| listener.on_interpolated_x_string_node_leave(node) }
706
+ end
707
+
708
+ #: (ItLocalVariableReadNode node) -> void
709
+ def visit_it_local_variable_read_node(node) # :nodoc:
710
+ listeners[:on_it_local_variable_read_node_enter]&.each { |listener| listener.on_it_local_variable_read_node_enter(node) }
711
+ super
712
+ listeners[:on_it_local_variable_read_node_leave]&.each { |listener| listener.on_it_local_variable_read_node_leave(node) }
713
+ end
714
+
715
+ #: (ItParametersNode node) -> void
716
+ def visit_it_parameters_node(node) # :nodoc:
717
+ listeners[:on_it_parameters_node_enter]&.each { |listener| listener.on_it_parameters_node_enter(node) }
718
+ super
719
+ listeners[:on_it_parameters_node_leave]&.each { |listener| listener.on_it_parameters_node_leave(node) }
720
+ end
721
+
722
+ #: (KeywordHashNode node) -> void
723
+ def visit_keyword_hash_node(node) # :nodoc:
724
+ listeners[:on_keyword_hash_node_enter]&.each { |listener| listener.on_keyword_hash_node_enter(node) }
725
+ super
726
+ listeners[:on_keyword_hash_node_leave]&.each { |listener| listener.on_keyword_hash_node_leave(node) }
727
+ end
728
+
729
+ #: (KeywordRestParameterNode node) -> void
730
+ def visit_keyword_rest_parameter_node(node) # :nodoc:
731
+ listeners[:on_keyword_rest_parameter_node_enter]&.each { |listener| listener.on_keyword_rest_parameter_node_enter(node) }
732
+ super
733
+ listeners[:on_keyword_rest_parameter_node_leave]&.each { |listener| listener.on_keyword_rest_parameter_node_leave(node) }
734
+ end
735
+
736
+ #: (LambdaNode node) -> void
737
+ def visit_lambda_node(node) # :nodoc:
738
+ listeners[:on_lambda_node_enter]&.each { |listener| listener.on_lambda_node_enter(node) }
739
+ super
740
+ listeners[:on_lambda_node_leave]&.each { |listener| listener.on_lambda_node_leave(node) }
741
+ end
742
+
743
+ #: (LocalVariableAndWriteNode node) -> void
744
+ def visit_local_variable_and_write_node(node) # :nodoc:
745
+ listeners[:on_local_variable_and_write_node_enter]&.each { |listener| listener.on_local_variable_and_write_node_enter(node) }
746
+ super
747
+ listeners[:on_local_variable_and_write_node_leave]&.each { |listener| listener.on_local_variable_and_write_node_leave(node) }
748
+ end
749
+
750
+ #: (LocalVariableOperatorWriteNode node) -> void
751
+ def visit_local_variable_operator_write_node(node) # :nodoc:
752
+ listeners[:on_local_variable_operator_write_node_enter]&.each { |listener| listener.on_local_variable_operator_write_node_enter(node) }
753
+ super
754
+ listeners[:on_local_variable_operator_write_node_leave]&.each { |listener| listener.on_local_variable_operator_write_node_leave(node) }
755
+ end
756
+
757
+ #: (LocalVariableOrWriteNode node) -> void
758
+ def visit_local_variable_or_write_node(node) # :nodoc:
759
+ listeners[:on_local_variable_or_write_node_enter]&.each { |listener| listener.on_local_variable_or_write_node_enter(node) }
760
+ super
761
+ listeners[:on_local_variable_or_write_node_leave]&.each { |listener| listener.on_local_variable_or_write_node_leave(node) }
762
+ end
763
+
764
+ #: (LocalVariableReadNode node) -> void
765
+ def visit_local_variable_read_node(node) # :nodoc:
766
+ listeners[:on_local_variable_read_node_enter]&.each { |listener| listener.on_local_variable_read_node_enter(node) }
767
+ super
768
+ listeners[:on_local_variable_read_node_leave]&.each { |listener| listener.on_local_variable_read_node_leave(node) }
769
+ end
770
+
771
+ #: (LocalVariableTargetNode node) -> void
772
+ def visit_local_variable_target_node(node) # :nodoc:
773
+ listeners[:on_local_variable_target_node_enter]&.each { |listener| listener.on_local_variable_target_node_enter(node) }
774
+ super
775
+ listeners[:on_local_variable_target_node_leave]&.each { |listener| listener.on_local_variable_target_node_leave(node) }
776
+ end
777
+
778
+ #: (LocalVariableWriteNode node) -> void
779
+ def visit_local_variable_write_node(node) # :nodoc:
780
+ listeners[:on_local_variable_write_node_enter]&.each { |listener| listener.on_local_variable_write_node_enter(node) }
781
+ super
782
+ listeners[:on_local_variable_write_node_leave]&.each { |listener| listener.on_local_variable_write_node_leave(node) }
783
+ end
784
+
785
+ #: (MatchLastLineNode node) -> void
786
+ def visit_match_last_line_node(node) # :nodoc:
787
+ listeners[:on_match_last_line_node_enter]&.each { |listener| listener.on_match_last_line_node_enter(node) }
788
+ super
789
+ listeners[:on_match_last_line_node_leave]&.each { |listener| listener.on_match_last_line_node_leave(node) }
790
+ end
791
+
792
+ #: (MatchPredicateNode node) -> void
793
+ def visit_match_predicate_node(node) # :nodoc:
794
+ listeners[:on_match_predicate_node_enter]&.each { |listener| listener.on_match_predicate_node_enter(node) }
795
+ super
796
+ listeners[:on_match_predicate_node_leave]&.each { |listener| listener.on_match_predicate_node_leave(node) }
797
+ end
798
+
799
+ #: (MatchRequiredNode node) -> void
800
+ def visit_match_required_node(node) # :nodoc:
801
+ listeners[:on_match_required_node_enter]&.each { |listener| listener.on_match_required_node_enter(node) }
802
+ super
803
+ listeners[:on_match_required_node_leave]&.each { |listener| listener.on_match_required_node_leave(node) }
804
+ end
805
+
806
+ #: (MatchWriteNode node) -> void
807
+ def visit_match_write_node(node) # :nodoc:
808
+ listeners[:on_match_write_node_enter]&.each { |listener| listener.on_match_write_node_enter(node) }
809
+ super
810
+ listeners[:on_match_write_node_leave]&.each { |listener| listener.on_match_write_node_leave(node) }
811
+ end
812
+
813
+ #: (ModuleNode node) -> void
814
+ def visit_module_node(node) # :nodoc:
815
+ listeners[:on_module_node_enter]&.each { |listener| listener.on_module_node_enter(node) }
816
+ super
817
+ listeners[:on_module_node_leave]&.each { |listener| listener.on_module_node_leave(node) }
818
+ end
819
+
820
+ #: (MultiTargetNode node) -> void
821
+ def visit_multi_target_node(node) # :nodoc:
822
+ listeners[:on_multi_target_node_enter]&.each { |listener| listener.on_multi_target_node_enter(node) }
823
+ super
824
+ listeners[:on_multi_target_node_leave]&.each { |listener| listener.on_multi_target_node_leave(node) }
825
+ end
826
+
827
+ #: (MultiWriteNode node) -> void
828
+ def visit_multi_write_node(node) # :nodoc:
829
+ listeners[:on_multi_write_node_enter]&.each { |listener| listener.on_multi_write_node_enter(node) }
830
+ super
831
+ listeners[:on_multi_write_node_leave]&.each { |listener| listener.on_multi_write_node_leave(node) }
832
+ end
833
+
834
+ #: (NextNode node) -> void
835
+ def visit_next_node(node) # :nodoc:
836
+ listeners[:on_next_node_enter]&.each { |listener| listener.on_next_node_enter(node) }
837
+ super
838
+ listeners[:on_next_node_leave]&.each { |listener| listener.on_next_node_leave(node) }
839
+ end
840
+
841
+ #: (NilNode node) -> void
842
+ def visit_nil_node(node) # :nodoc:
843
+ listeners[:on_nil_node_enter]&.each { |listener| listener.on_nil_node_enter(node) }
844
+ super
845
+ listeners[:on_nil_node_leave]&.each { |listener| listener.on_nil_node_leave(node) }
846
+ end
847
+
848
+ #: (NoBlockParameterNode node) -> void
849
+ def visit_no_block_parameter_node(node) # :nodoc:
850
+ listeners[:on_no_block_parameter_node_enter]&.each { |listener| listener.on_no_block_parameter_node_enter(node) }
851
+ super
852
+ listeners[:on_no_block_parameter_node_leave]&.each { |listener| listener.on_no_block_parameter_node_leave(node) }
853
+ end
854
+
855
+ #: (NoKeywordsParameterNode node) -> void
856
+ def visit_no_keywords_parameter_node(node) # :nodoc:
857
+ listeners[:on_no_keywords_parameter_node_enter]&.each { |listener| listener.on_no_keywords_parameter_node_enter(node) }
858
+ super
859
+ listeners[:on_no_keywords_parameter_node_leave]&.each { |listener| listener.on_no_keywords_parameter_node_leave(node) }
860
+ end
861
+
862
+ #: (NumberedParametersNode node) -> void
863
+ def visit_numbered_parameters_node(node) # :nodoc:
864
+ listeners[:on_numbered_parameters_node_enter]&.each { |listener| listener.on_numbered_parameters_node_enter(node) }
865
+ super
866
+ listeners[:on_numbered_parameters_node_leave]&.each { |listener| listener.on_numbered_parameters_node_leave(node) }
867
+ end
868
+
869
+ #: (NumberedReferenceReadNode node) -> void
870
+ def visit_numbered_reference_read_node(node) # :nodoc:
871
+ listeners[:on_numbered_reference_read_node_enter]&.each { |listener| listener.on_numbered_reference_read_node_enter(node) }
872
+ super
873
+ listeners[:on_numbered_reference_read_node_leave]&.each { |listener| listener.on_numbered_reference_read_node_leave(node) }
874
+ end
875
+
876
+ #: (OptionalKeywordParameterNode node) -> void
877
+ def visit_optional_keyword_parameter_node(node) # :nodoc:
878
+ listeners[:on_optional_keyword_parameter_node_enter]&.each { |listener| listener.on_optional_keyword_parameter_node_enter(node) }
879
+ super
880
+ listeners[:on_optional_keyword_parameter_node_leave]&.each { |listener| listener.on_optional_keyword_parameter_node_leave(node) }
881
+ end
882
+
883
+ #: (OptionalParameterNode node) -> void
884
+ def visit_optional_parameter_node(node) # :nodoc:
885
+ listeners[:on_optional_parameter_node_enter]&.each { |listener| listener.on_optional_parameter_node_enter(node) }
886
+ super
887
+ listeners[:on_optional_parameter_node_leave]&.each { |listener| listener.on_optional_parameter_node_leave(node) }
888
+ end
889
+
890
+ #: (OrNode node) -> void
891
+ def visit_or_node(node) # :nodoc:
892
+ listeners[:on_or_node_enter]&.each { |listener| listener.on_or_node_enter(node) }
893
+ super
894
+ listeners[:on_or_node_leave]&.each { |listener| listener.on_or_node_leave(node) }
895
+ end
896
+
897
+ #: (ParametersNode node) -> void
898
+ def visit_parameters_node(node) # :nodoc:
899
+ listeners[:on_parameters_node_enter]&.each { |listener| listener.on_parameters_node_enter(node) }
900
+ super
901
+ listeners[:on_parameters_node_leave]&.each { |listener| listener.on_parameters_node_leave(node) }
902
+ end
903
+
904
+ #: (ParenthesesNode node) -> void
905
+ def visit_parentheses_node(node) # :nodoc:
906
+ listeners[:on_parentheses_node_enter]&.each { |listener| listener.on_parentheses_node_enter(node) }
907
+ super
908
+ listeners[:on_parentheses_node_leave]&.each { |listener| listener.on_parentheses_node_leave(node) }
909
+ end
910
+
911
+ #: (PinnedExpressionNode node) -> void
912
+ def visit_pinned_expression_node(node) # :nodoc:
913
+ listeners[:on_pinned_expression_node_enter]&.each { |listener| listener.on_pinned_expression_node_enter(node) }
914
+ super
915
+ listeners[:on_pinned_expression_node_leave]&.each { |listener| listener.on_pinned_expression_node_leave(node) }
916
+ end
917
+
918
+ #: (PinnedVariableNode node) -> void
919
+ def visit_pinned_variable_node(node) # :nodoc:
920
+ listeners[:on_pinned_variable_node_enter]&.each { |listener| listener.on_pinned_variable_node_enter(node) }
921
+ super
922
+ listeners[:on_pinned_variable_node_leave]&.each { |listener| listener.on_pinned_variable_node_leave(node) }
923
+ end
924
+
925
+ #: (PostExecutionNode node) -> void
926
+ def visit_post_execution_node(node) # :nodoc:
927
+ listeners[:on_post_execution_node_enter]&.each { |listener| listener.on_post_execution_node_enter(node) }
928
+ super
929
+ listeners[:on_post_execution_node_leave]&.each { |listener| listener.on_post_execution_node_leave(node) }
930
+ end
931
+
932
+ #: (PreExecutionNode node) -> void
933
+ def visit_pre_execution_node(node) # :nodoc:
934
+ listeners[:on_pre_execution_node_enter]&.each { |listener| listener.on_pre_execution_node_enter(node) }
935
+ super
936
+ listeners[:on_pre_execution_node_leave]&.each { |listener| listener.on_pre_execution_node_leave(node) }
937
+ end
938
+
939
+ #: (ProgramNode node) -> void
940
+ def visit_program_node(node) # :nodoc:
941
+ listeners[:on_program_node_enter]&.each { |listener| listener.on_program_node_enter(node) }
942
+ super
943
+ listeners[:on_program_node_leave]&.each { |listener| listener.on_program_node_leave(node) }
944
+ end
945
+
946
+ #: (RangeNode node) -> void
947
+ def visit_range_node(node) # :nodoc:
948
+ listeners[:on_range_node_enter]&.each { |listener| listener.on_range_node_enter(node) }
949
+ super
950
+ listeners[:on_range_node_leave]&.each { |listener| listener.on_range_node_leave(node) }
951
+ end
952
+
953
+ #: (RationalNode node) -> void
954
+ def visit_rational_node(node) # :nodoc:
955
+ listeners[:on_rational_node_enter]&.each { |listener| listener.on_rational_node_enter(node) }
956
+ super
957
+ listeners[:on_rational_node_leave]&.each { |listener| listener.on_rational_node_leave(node) }
958
+ end
959
+
960
+ #: (RedoNode node) -> void
961
+ def visit_redo_node(node) # :nodoc:
962
+ listeners[:on_redo_node_enter]&.each { |listener| listener.on_redo_node_enter(node) }
963
+ super
964
+ listeners[:on_redo_node_leave]&.each { |listener| listener.on_redo_node_leave(node) }
965
+ end
966
+
967
+ #: (RegularExpressionNode node) -> void
968
+ def visit_regular_expression_node(node) # :nodoc:
969
+ listeners[:on_regular_expression_node_enter]&.each { |listener| listener.on_regular_expression_node_enter(node) }
970
+ super
971
+ listeners[:on_regular_expression_node_leave]&.each { |listener| listener.on_regular_expression_node_leave(node) }
972
+ end
973
+
974
+ #: (RequiredKeywordParameterNode node) -> void
975
+ def visit_required_keyword_parameter_node(node) # :nodoc:
976
+ listeners[:on_required_keyword_parameter_node_enter]&.each { |listener| listener.on_required_keyword_parameter_node_enter(node) }
977
+ super
978
+ listeners[:on_required_keyword_parameter_node_leave]&.each { |listener| listener.on_required_keyword_parameter_node_leave(node) }
979
+ end
980
+
981
+ #: (RequiredParameterNode node) -> void
982
+ def visit_required_parameter_node(node) # :nodoc:
983
+ listeners[:on_required_parameter_node_enter]&.each { |listener| listener.on_required_parameter_node_enter(node) }
984
+ super
985
+ listeners[:on_required_parameter_node_leave]&.each { |listener| listener.on_required_parameter_node_leave(node) }
986
+ end
987
+
988
+ #: (RescueModifierNode node) -> void
989
+ def visit_rescue_modifier_node(node) # :nodoc:
990
+ listeners[:on_rescue_modifier_node_enter]&.each { |listener| listener.on_rescue_modifier_node_enter(node) }
991
+ super
992
+ listeners[:on_rescue_modifier_node_leave]&.each { |listener| listener.on_rescue_modifier_node_leave(node) }
993
+ end
994
+
995
+ #: (RescueNode node) -> void
996
+ def visit_rescue_node(node) # :nodoc:
997
+ listeners[:on_rescue_node_enter]&.each { |listener| listener.on_rescue_node_enter(node) }
998
+ super
999
+ listeners[:on_rescue_node_leave]&.each { |listener| listener.on_rescue_node_leave(node) }
1000
+ end
1001
+
1002
+ #: (RestParameterNode node) -> void
1003
+ def visit_rest_parameter_node(node) # :nodoc:
1004
+ listeners[:on_rest_parameter_node_enter]&.each { |listener| listener.on_rest_parameter_node_enter(node) }
1005
+ super
1006
+ listeners[:on_rest_parameter_node_leave]&.each { |listener| listener.on_rest_parameter_node_leave(node) }
1007
+ end
1008
+
1009
+ #: (RetryNode node) -> void
1010
+ def visit_retry_node(node) # :nodoc:
1011
+ listeners[:on_retry_node_enter]&.each { |listener| listener.on_retry_node_enter(node) }
1012
+ super
1013
+ listeners[:on_retry_node_leave]&.each { |listener| listener.on_retry_node_leave(node) }
1014
+ end
1015
+
1016
+ #: (ReturnNode node) -> void
1017
+ def visit_return_node(node) # :nodoc:
1018
+ listeners[:on_return_node_enter]&.each { |listener| listener.on_return_node_enter(node) }
1019
+ super
1020
+ listeners[:on_return_node_leave]&.each { |listener| listener.on_return_node_leave(node) }
1021
+ end
1022
+
1023
+ #: (SelfNode node) -> void
1024
+ def visit_self_node(node) # :nodoc:
1025
+ listeners[:on_self_node_enter]&.each { |listener| listener.on_self_node_enter(node) }
1026
+ super
1027
+ listeners[:on_self_node_leave]&.each { |listener| listener.on_self_node_leave(node) }
1028
+ end
1029
+
1030
+ #: (ShareableConstantNode node) -> void
1031
+ def visit_shareable_constant_node(node) # :nodoc:
1032
+ listeners[:on_shareable_constant_node_enter]&.each { |listener| listener.on_shareable_constant_node_enter(node) }
1033
+ super
1034
+ listeners[:on_shareable_constant_node_leave]&.each { |listener| listener.on_shareable_constant_node_leave(node) }
1035
+ end
1036
+
1037
+ #: (SingletonClassNode node) -> void
1038
+ def visit_singleton_class_node(node) # :nodoc:
1039
+ listeners[:on_singleton_class_node_enter]&.each { |listener| listener.on_singleton_class_node_enter(node) }
1040
+ super
1041
+ listeners[:on_singleton_class_node_leave]&.each { |listener| listener.on_singleton_class_node_leave(node) }
1042
+ end
1043
+
1044
+ #: (SourceEncodingNode node) -> void
1045
+ def visit_source_encoding_node(node) # :nodoc:
1046
+ listeners[:on_source_encoding_node_enter]&.each { |listener| listener.on_source_encoding_node_enter(node) }
1047
+ super
1048
+ listeners[:on_source_encoding_node_leave]&.each { |listener| listener.on_source_encoding_node_leave(node) }
1049
+ end
1050
+
1051
+ #: (SourceFileNode node) -> void
1052
+ def visit_source_file_node(node) # :nodoc:
1053
+ listeners[:on_source_file_node_enter]&.each { |listener| listener.on_source_file_node_enter(node) }
1054
+ super
1055
+ listeners[:on_source_file_node_leave]&.each { |listener| listener.on_source_file_node_leave(node) }
1056
+ end
1057
+
1058
+ #: (SourceLineNode node) -> void
1059
+ def visit_source_line_node(node) # :nodoc:
1060
+ listeners[:on_source_line_node_enter]&.each { |listener| listener.on_source_line_node_enter(node) }
1061
+ super
1062
+ listeners[:on_source_line_node_leave]&.each { |listener| listener.on_source_line_node_leave(node) }
1063
+ end
1064
+
1065
+ #: (SplatNode node) -> void
1066
+ def visit_splat_node(node) # :nodoc:
1067
+ listeners[:on_splat_node_enter]&.each { |listener| listener.on_splat_node_enter(node) }
1068
+ super
1069
+ listeners[:on_splat_node_leave]&.each { |listener| listener.on_splat_node_leave(node) }
1070
+ end
1071
+
1072
+ #: (StatementsNode node) -> void
1073
+ def visit_statements_node(node) # :nodoc:
1074
+ listeners[:on_statements_node_enter]&.each { |listener| listener.on_statements_node_enter(node) }
1075
+ super
1076
+ listeners[:on_statements_node_leave]&.each { |listener| listener.on_statements_node_leave(node) }
1077
+ end
1078
+
1079
+ #: (StringNode node) -> void
1080
+ def visit_string_node(node) # :nodoc:
1081
+ listeners[:on_string_node_enter]&.each { |listener| listener.on_string_node_enter(node) }
1082
+ super
1083
+ listeners[:on_string_node_leave]&.each { |listener| listener.on_string_node_leave(node) }
1084
+ end
1085
+
1086
+ #: (SuperNode node) -> void
1087
+ def visit_super_node(node) # :nodoc:
1088
+ listeners[:on_super_node_enter]&.each { |listener| listener.on_super_node_enter(node) }
1089
+ super
1090
+ listeners[:on_super_node_leave]&.each { |listener| listener.on_super_node_leave(node) }
1091
+ end
1092
+
1093
+ #: (SymbolNode node) -> void
1094
+ def visit_symbol_node(node) # :nodoc:
1095
+ listeners[:on_symbol_node_enter]&.each { |listener| listener.on_symbol_node_enter(node) }
1096
+ super
1097
+ listeners[:on_symbol_node_leave]&.each { |listener| listener.on_symbol_node_leave(node) }
1098
+ end
1099
+
1100
+ #: (TrueNode node) -> void
1101
+ def visit_true_node(node) # :nodoc:
1102
+ listeners[:on_true_node_enter]&.each { |listener| listener.on_true_node_enter(node) }
1103
+ super
1104
+ listeners[:on_true_node_leave]&.each { |listener| listener.on_true_node_leave(node) }
1105
+ end
1106
+
1107
+ #: (UndefNode node) -> void
1108
+ def visit_undef_node(node) # :nodoc:
1109
+ listeners[:on_undef_node_enter]&.each { |listener| listener.on_undef_node_enter(node) }
1110
+ super
1111
+ listeners[:on_undef_node_leave]&.each { |listener| listener.on_undef_node_leave(node) }
1112
+ end
1113
+
1114
+ #: (UnlessNode node) -> void
1115
+ def visit_unless_node(node) # :nodoc:
1116
+ listeners[:on_unless_node_enter]&.each { |listener| listener.on_unless_node_enter(node) }
1117
+ super
1118
+ listeners[:on_unless_node_leave]&.each { |listener| listener.on_unless_node_leave(node) }
1119
+ end
1120
+
1121
+ #: (UntilNode node) -> void
1122
+ def visit_until_node(node) # :nodoc:
1123
+ listeners[:on_until_node_enter]&.each { |listener| listener.on_until_node_enter(node) }
1124
+ super
1125
+ listeners[:on_until_node_leave]&.each { |listener| listener.on_until_node_leave(node) }
1126
+ end
1127
+
1128
+ #: (WhenNode node) -> void
1129
+ def visit_when_node(node) # :nodoc:
1130
+ listeners[:on_when_node_enter]&.each { |listener| listener.on_when_node_enter(node) }
1131
+ super
1132
+ listeners[:on_when_node_leave]&.each { |listener| listener.on_when_node_leave(node) }
1133
+ end
1134
+
1135
+ #: (WhileNode node) -> void
1136
+ def visit_while_node(node) # :nodoc:
1137
+ listeners[:on_while_node_enter]&.each { |listener| listener.on_while_node_enter(node) }
1138
+ super
1139
+ listeners[:on_while_node_leave]&.each { |listener| listener.on_while_node_leave(node) }
1140
+ end
1141
+
1142
+ #: (XStringNode node) -> void
1143
+ def visit_x_string_node(node) # :nodoc:
1144
+ listeners[:on_x_string_node_enter]&.each { |listener| listener.on_x_string_node_enter(node) }
1145
+ super
1146
+ listeners[:on_x_string_node_leave]&.each { |listener| listener.on_x_string_node_leave(node) }
1147
+ end
1148
+
1149
+ #: (YieldNode node) -> void
1150
+ def visit_yield_node(node) # :nodoc:
1151
+ listeners[:on_yield_node_enter]&.each { |listener| listener.on_yield_node_enter(node) }
1152
+ super
1153
+ listeners[:on_yield_node_leave]&.each { |listener| listener.on_yield_node_leave(node) }
1154
+ end
1155
+
1156
+ class DispatchOnce < Visitor # :nodoc:
1157
+ attr_reader :listeners #: Hash[Symbol, Array[untyped]]
1158
+
1159
+ #: (Hash[Symbol, Array[untyped]] listeners) -> void
1160
+ def initialize(listeners)
1161
+ @listeners = listeners
1162
+ end
1163
+
1164
+ # Dispatch enter and leave events for AliasGlobalVariableNode nodes.
1165
+ #
1166
+ #: (AliasGlobalVariableNode node) -> void
1167
+ def visit_alias_global_variable_node(node)
1168
+ listeners[:on_alias_global_variable_node_enter]&.each { |listener| listener.on_alias_global_variable_node_enter(node) }
1169
+ listeners[:on_alias_global_variable_node_leave]&.each { |listener| listener.on_alias_global_variable_node_leave(node) }
1170
+ end
1171
+
1172
+ # Dispatch enter and leave events for AliasMethodNode nodes.
1173
+ #
1174
+ #: (AliasMethodNode node) -> void
1175
+ def visit_alias_method_node(node)
1176
+ listeners[:on_alias_method_node_enter]&.each { |listener| listener.on_alias_method_node_enter(node) }
1177
+ listeners[:on_alias_method_node_leave]&.each { |listener| listener.on_alias_method_node_leave(node) }
1178
+ end
1179
+
1180
+ # Dispatch enter and leave events for AlternationPatternNode nodes.
1181
+ #
1182
+ #: (AlternationPatternNode node) -> void
1183
+ def visit_alternation_pattern_node(node)
1184
+ listeners[:on_alternation_pattern_node_enter]&.each { |listener| listener.on_alternation_pattern_node_enter(node) }
1185
+ listeners[:on_alternation_pattern_node_leave]&.each { |listener| listener.on_alternation_pattern_node_leave(node) }
1186
+ end
1187
+
1188
+ # Dispatch enter and leave events for AndNode nodes.
1189
+ #
1190
+ #: (AndNode node) -> void
1191
+ def visit_and_node(node)
1192
+ listeners[:on_and_node_enter]&.each { |listener| listener.on_and_node_enter(node) }
1193
+ listeners[:on_and_node_leave]&.each { |listener| listener.on_and_node_leave(node) }
1194
+ end
1195
+
1196
+ # Dispatch enter and leave events for ArgumentsNode nodes.
1197
+ #
1198
+ #: (ArgumentsNode node) -> void
1199
+ def visit_arguments_node(node)
1200
+ listeners[:on_arguments_node_enter]&.each { |listener| listener.on_arguments_node_enter(node) }
1201
+ listeners[:on_arguments_node_leave]&.each { |listener| listener.on_arguments_node_leave(node) }
1202
+ end
1203
+
1204
+ # Dispatch enter and leave events for ArrayNode nodes.
1205
+ #
1206
+ #: (ArrayNode node) -> void
1207
+ def visit_array_node(node)
1208
+ listeners[:on_array_node_enter]&.each { |listener| listener.on_array_node_enter(node) }
1209
+ listeners[:on_array_node_leave]&.each { |listener| listener.on_array_node_leave(node) }
1210
+ end
1211
+
1212
+ # Dispatch enter and leave events for ArrayPatternNode nodes.
1213
+ #
1214
+ #: (ArrayPatternNode node) -> void
1215
+ def visit_array_pattern_node(node)
1216
+ listeners[:on_array_pattern_node_enter]&.each { |listener| listener.on_array_pattern_node_enter(node) }
1217
+ listeners[:on_array_pattern_node_leave]&.each { |listener| listener.on_array_pattern_node_leave(node) }
1218
+ end
1219
+
1220
+ # Dispatch enter and leave events for AssocNode nodes.
1221
+ #
1222
+ #: (AssocNode node) -> void
1223
+ def visit_assoc_node(node)
1224
+ listeners[:on_assoc_node_enter]&.each { |listener| listener.on_assoc_node_enter(node) }
1225
+ listeners[:on_assoc_node_leave]&.each { |listener| listener.on_assoc_node_leave(node) }
1226
+ end
1227
+
1228
+ # Dispatch enter and leave events for AssocSplatNode nodes.
1229
+ #
1230
+ #: (AssocSplatNode node) -> void
1231
+ def visit_assoc_splat_node(node)
1232
+ listeners[:on_assoc_splat_node_enter]&.each { |listener| listener.on_assoc_splat_node_enter(node) }
1233
+ listeners[:on_assoc_splat_node_leave]&.each { |listener| listener.on_assoc_splat_node_leave(node) }
1234
+ end
1235
+
1236
+ # Dispatch enter and leave events for BackReferenceReadNode nodes.
1237
+ #
1238
+ #: (BackReferenceReadNode node) -> void
1239
+ def visit_back_reference_read_node(node)
1240
+ listeners[:on_back_reference_read_node_enter]&.each { |listener| listener.on_back_reference_read_node_enter(node) }
1241
+ listeners[:on_back_reference_read_node_leave]&.each { |listener| listener.on_back_reference_read_node_leave(node) }
1242
+ end
1243
+
1244
+ # Dispatch enter and leave events for BeginNode nodes.
1245
+ #
1246
+ #: (BeginNode node) -> void
1247
+ def visit_begin_node(node)
1248
+ listeners[:on_begin_node_enter]&.each { |listener| listener.on_begin_node_enter(node) }
1249
+ listeners[:on_begin_node_leave]&.each { |listener| listener.on_begin_node_leave(node) }
1250
+ end
1251
+
1252
+ # Dispatch enter and leave events for BlockArgumentNode nodes.
1253
+ #
1254
+ #: (BlockArgumentNode node) -> void
1255
+ def visit_block_argument_node(node)
1256
+ listeners[:on_block_argument_node_enter]&.each { |listener| listener.on_block_argument_node_enter(node) }
1257
+ listeners[:on_block_argument_node_leave]&.each { |listener| listener.on_block_argument_node_leave(node) }
1258
+ end
1259
+
1260
+ # Dispatch enter and leave events for BlockLocalVariableNode nodes.
1261
+ #
1262
+ #: (BlockLocalVariableNode node) -> void
1263
+ def visit_block_local_variable_node(node)
1264
+ listeners[:on_block_local_variable_node_enter]&.each { |listener| listener.on_block_local_variable_node_enter(node) }
1265
+ listeners[:on_block_local_variable_node_leave]&.each { |listener| listener.on_block_local_variable_node_leave(node) }
1266
+ end
1267
+
1268
+ # Dispatch enter and leave events for BlockNode nodes.
1269
+ #
1270
+ #: (BlockNode node) -> void
1271
+ def visit_block_node(node)
1272
+ listeners[:on_block_node_enter]&.each { |listener| listener.on_block_node_enter(node) }
1273
+ listeners[:on_block_node_leave]&.each { |listener| listener.on_block_node_leave(node) }
1274
+ end
1275
+
1276
+ # Dispatch enter and leave events for BlockParameterNode nodes.
1277
+ #
1278
+ #: (BlockParameterNode node) -> void
1279
+ def visit_block_parameter_node(node)
1280
+ listeners[:on_block_parameter_node_enter]&.each { |listener| listener.on_block_parameter_node_enter(node) }
1281
+ listeners[:on_block_parameter_node_leave]&.each { |listener| listener.on_block_parameter_node_leave(node) }
1282
+ end
1283
+
1284
+ # Dispatch enter and leave events for BlockParametersNode nodes.
1285
+ #
1286
+ #: (BlockParametersNode node) -> void
1287
+ def visit_block_parameters_node(node)
1288
+ listeners[:on_block_parameters_node_enter]&.each { |listener| listener.on_block_parameters_node_enter(node) }
1289
+ listeners[:on_block_parameters_node_leave]&.each { |listener| listener.on_block_parameters_node_leave(node) }
1290
+ end
1291
+
1292
+ # Dispatch enter and leave events for BreakNode nodes.
1293
+ #
1294
+ #: (BreakNode node) -> void
1295
+ def visit_break_node(node)
1296
+ listeners[:on_break_node_enter]&.each { |listener| listener.on_break_node_enter(node) }
1297
+ listeners[:on_break_node_leave]&.each { |listener| listener.on_break_node_leave(node) }
1298
+ end
1299
+
1300
+ # Dispatch enter and leave events for CallAndWriteNode nodes.
1301
+ #
1302
+ #: (CallAndWriteNode node) -> void
1303
+ def visit_call_and_write_node(node)
1304
+ listeners[:on_call_and_write_node_enter]&.each { |listener| listener.on_call_and_write_node_enter(node) }
1305
+ listeners[:on_call_and_write_node_leave]&.each { |listener| listener.on_call_and_write_node_leave(node) }
1306
+ end
1307
+
1308
+ # Dispatch enter and leave events for CallNode nodes.
1309
+ #
1310
+ #: (CallNode node) -> void
1311
+ def visit_call_node(node)
1312
+ listeners[:on_call_node_enter]&.each { |listener| listener.on_call_node_enter(node) }
1313
+ listeners[:on_call_node_leave]&.each { |listener| listener.on_call_node_leave(node) }
1314
+ end
1315
+
1316
+ # Dispatch enter and leave events for CallOperatorWriteNode nodes.
1317
+ #
1318
+ #: (CallOperatorWriteNode node) -> void
1319
+ def visit_call_operator_write_node(node)
1320
+ listeners[:on_call_operator_write_node_enter]&.each { |listener| listener.on_call_operator_write_node_enter(node) }
1321
+ listeners[:on_call_operator_write_node_leave]&.each { |listener| listener.on_call_operator_write_node_leave(node) }
1322
+ end
1323
+
1324
+ # Dispatch enter and leave events for CallOrWriteNode nodes.
1325
+ #
1326
+ #: (CallOrWriteNode node) -> void
1327
+ def visit_call_or_write_node(node)
1328
+ listeners[:on_call_or_write_node_enter]&.each { |listener| listener.on_call_or_write_node_enter(node) }
1329
+ listeners[:on_call_or_write_node_leave]&.each { |listener| listener.on_call_or_write_node_leave(node) }
1330
+ end
1331
+
1332
+ # Dispatch enter and leave events for CallTargetNode nodes.
1333
+ #
1334
+ #: (CallTargetNode node) -> void
1335
+ def visit_call_target_node(node)
1336
+ listeners[:on_call_target_node_enter]&.each { |listener| listener.on_call_target_node_enter(node) }
1337
+ listeners[:on_call_target_node_leave]&.each { |listener| listener.on_call_target_node_leave(node) }
1338
+ end
1339
+
1340
+ # Dispatch enter and leave events for CapturePatternNode nodes.
1341
+ #
1342
+ #: (CapturePatternNode node) -> void
1343
+ def visit_capture_pattern_node(node)
1344
+ listeners[:on_capture_pattern_node_enter]&.each { |listener| listener.on_capture_pattern_node_enter(node) }
1345
+ listeners[:on_capture_pattern_node_leave]&.each { |listener| listener.on_capture_pattern_node_leave(node) }
1346
+ end
1347
+
1348
+ # Dispatch enter and leave events for CaseMatchNode nodes.
1349
+ #
1350
+ #: (CaseMatchNode node) -> void
1351
+ def visit_case_match_node(node)
1352
+ listeners[:on_case_match_node_enter]&.each { |listener| listener.on_case_match_node_enter(node) }
1353
+ listeners[:on_case_match_node_leave]&.each { |listener| listener.on_case_match_node_leave(node) }
1354
+ end
1355
+
1356
+ # Dispatch enter and leave events for CaseNode nodes.
1357
+ #
1358
+ #: (CaseNode node) -> void
1359
+ def visit_case_node(node)
1360
+ listeners[:on_case_node_enter]&.each { |listener| listener.on_case_node_enter(node) }
1361
+ listeners[:on_case_node_leave]&.each { |listener| listener.on_case_node_leave(node) }
1362
+ end
1363
+
1364
+ # Dispatch enter and leave events for ClassNode nodes.
1365
+ #
1366
+ #: (ClassNode node) -> void
1367
+ def visit_class_node(node)
1368
+ listeners[:on_class_node_enter]&.each { |listener| listener.on_class_node_enter(node) }
1369
+ listeners[:on_class_node_leave]&.each { |listener| listener.on_class_node_leave(node) }
1370
+ end
1371
+
1372
+ # Dispatch enter and leave events for ClassVariableAndWriteNode nodes.
1373
+ #
1374
+ #: (ClassVariableAndWriteNode node) -> void
1375
+ def visit_class_variable_and_write_node(node)
1376
+ listeners[:on_class_variable_and_write_node_enter]&.each { |listener| listener.on_class_variable_and_write_node_enter(node) }
1377
+ listeners[:on_class_variable_and_write_node_leave]&.each { |listener| listener.on_class_variable_and_write_node_leave(node) }
1378
+ end
1379
+
1380
+ # Dispatch enter and leave events for ClassVariableOperatorWriteNode nodes.
1381
+ #
1382
+ #: (ClassVariableOperatorWriteNode node) -> void
1383
+ def visit_class_variable_operator_write_node(node)
1384
+ listeners[:on_class_variable_operator_write_node_enter]&.each { |listener| listener.on_class_variable_operator_write_node_enter(node) }
1385
+ listeners[:on_class_variable_operator_write_node_leave]&.each { |listener| listener.on_class_variable_operator_write_node_leave(node) }
1386
+ end
1387
+
1388
+ # Dispatch enter and leave events for ClassVariableOrWriteNode nodes.
1389
+ #
1390
+ #: (ClassVariableOrWriteNode node) -> void
1391
+ def visit_class_variable_or_write_node(node)
1392
+ listeners[:on_class_variable_or_write_node_enter]&.each { |listener| listener.on_class_variable_or_write_node_enter(node) }
1393
+ listeners[:on_class_variable_or_write_node_leave]&.each { |listener| listener.on_class_variable_or_write_node_leave(node) }
1394
+ end
1395
+
1396
+ # Dispatch enter and leave events for ClassVariableReadNode nodes.
1397
+ #
1398
+ #: (ClassVariableReadNode node) -> void
1399
+ def visit_class_variable_read_node(node)
1400
+ listeners[:on_class_variable_read_node_enter]&.each { |listener| listener.on_class_variable_read_node_enter(node) }
1401
+ listeners[:on_class_variable_read_node_leave]&.each { |listener| listener.on_class_variable_read_node_leave(node) }
1402
+ end
1403
+
1404
+ # Dispatch enter and leave events for ClassVariableTargetNode nodes.
1405
+ #
1406
+ #: (ClassVariableTargetNode node) -> void
1407
+ def visit_class_variable_target_node(node)
1408
+ listeners[:on_class_variable_target_node_enter]&.each { |listener| listener.on_class_variable_target_node_enter(node) }
1409
+ listeners[:on_class_variable_target_node_leave]&.each { |listener| listener.on_class_variable_target_node_leave(node) }
1410
+ end
1411
+
1412
+ # Dispatch enter and leave events for ClassVariableWriteNode nodes.
1413
+ #
1414
+ #: (ClassVariableWriteNode node) -> void
1415
+ def visit_class_variable_write_node(node)
1416
+ listeners[:on_class_variable_write_node_enter]&.each { |listener| listener.on_class_variable_write_node_enter(node) }
1417
+ listeners[:on_class_variable_write_node_leave]&.each { |listener| listener.on_class_variable_write_node_leave(node) }
1418
+ end
1419
+
1420
+ # Dispatch enter and leave events for ConstantAndWriteNode nodes.
1421
+ #
1422
+ #: (ConstantAndWriteNode node) -> void
1423
+ def visit_constant_and_write_node(node)
1424
+ listeners[:on_constant_and_write_node_enter]&.each { |listener| listener.on_constant_and_write_node_enter(node) }
1425
+ listeners[:on_constant_and_write_node_leave]&.each { |listener| listener.on_constant_and_write_node_leave(node) }
1426
+ end
1427
+
1428
+ # Dispatch enter and leave events for ConstantOperatorWriteNode nodes.
1429
+ #
1430
+ #: (ConstantOperatorWriteNode node) -> void
1431
+ def visit_constant_operator_write_node(node)
1432
+ listeners[:on_constant_operator_write_node_enter]&.each { |listener| listener.on_constant_operator_write_node_enter(node) }
1433
+ listeners[:on_constant_operator_write_node_leave]&.each { |listener| listener.on_constant_operator_write_node_leave(node) }
1434
+ end
1435
+
1436
+ # Dispatch enter and leave events for ConstantOrWriteNode nodes.
1437
+ #
1438
+ #: (ConstantOrWriteNode node) -> void
1439
+ def visit_constant_or_write_node(node)
1440
+ listeners[:on_constant_or_write_node_enter]&.each { |listener| listener.on_constant_or_write_node_enter(node) }
1441
+ listeners[:on_constant_or_write_node_leave]&.each { |listener| listener.on_constant_or_write_node_leave(node) }
1442
+ end
1443
+
1444
+ # Dispatch enter and leave events for ConstantPathAndWriteNode nodes.
1445
+ #
1446
+ #: (ConstantPathAndWriteNode node) -> void
1447
+ def visit_constant_path_and_write_node(node)
1448
+ listeners[:on_constant_path_and_write_node_enter]&.each { |listener| listener.on_constant_path_and_write_node_enter(node) }
1449
+ listeners[:on_constant_path_and_write_node_leave]&.each { |listener| listener.on_constant_path_and_write_node_leave(node) }
1450
+ end
1451
+
1452
+ # Dispatch enter and leave events for ConstantPathNode nodes.
1453
+ #
1454
+ #: (ConstantPathNode node) -> void
1455
+ def visit_constant_path_node(node)
1456
+ listeners[:on_constant_path_node_enter]&.each { |listener| listener.on_constant_path_node_enter(node) }
1457
+ listeners[:on_constant_path_node_leave]&.each { |listener| listener.on_constant_path_node_leave(node) }
1458
+ end
1459
+
1460
+ # Dispatch enter and leave events for ConstantPathOperatorWriteNode nodes.
1461
+ #
1462
+ #: (ConstantPathOperatorWriteNode node) -> void
1463
+ def visit_constant_path_operator_write_node(node)
1464
+ listeners[:on_constant_path_operator_write_node_enter]&.each { |listener| listener.on_constant_path_operator_write_node_enter(node) }
1465
+ listeners[:on_constant_path_operator_write_node_leave]&.each { |listener| listener.on_constant_path_operator_write_node_leave(node) }
1466
+ end
1467
+
1468
+ # Dispatch enter and leave events for ConstantPathOrWriteNode nodes.
1469
+ #
1470
+ #: (ConstantPathOrWriteNode node) -> void
1471
+ def visit_constant_path_or_write_node(node)
1472
+ listeners[:on_constant_path_or_write_node_enter]&.each { |listener| listener.on_constant_path_or_write_node_enter(node) }
1473
+ listeners[:on_constant_path_or_write_node_leave]&.each { |listener| listener.on_constant_path_or_write_node_leave(node) }
1474
+ end
1475
+
1476
+ # Dispatch enter and leave events for ConstantPathTargetNode nodes.
1477
+ #
1478
+ #: (ConstantPathTargetNode node) -> void
1479
+ def visit_constant_path_target_node(node)
1480
+ listeners[:on_constant_path_target_node_enter]&.each { |listener| listener.on_constant_path_target_node_enter(node) }
1481
+ listeners[:on_constant_path_target_node_leave]&.each { |listener| listener.on_constant_path_target_node_leave(node) }
1482
+ end
1483
+
1484
+ # Dispatch enter and leave events for ConstantPathWriteNode nodes.
1485
+ #
1486
+ #: (ConstantPathWriteNode node) -> void
1487
+ def visit_constant_path_write_node(node)
1488
+ listeners[:on_constant_path_write_node_enter]&.each { |listener| listener.on_constant_path_write_node_enter(node) }
1489
+ listeners[:on_constant_path_write_node_leave]&.each { |listener| listener.on_constant_path_write_node_leave(node) }
1490
+ end
1491
+
1492
+ # Dispatch enter and leave events for ConstantReadNode nodes.
1493
+ #
1494
+ #: (ConstantReadNode node) -> void
1495
+ def visit_constant_read_node(node)
1496
+ listeners[:on_constant_read_node_enter]&.each { |listener| listener.on_constant_read_node_enter(node) }
1497
+ listeners[:on_constant_read_node_leave]&.each { |listener| listener.on_constant_read_node_leave(node) }
1498
+ end
1499
+
1500
+ # Dispatch enter and leave events for ConstantTargetNode nodes.
1501
+ #
1502
+ #: (ConstantTargetNode node) -> void
1503
+ def visit_constant_target_node(node)
1504
+ listeners[:on_constant_target_node_enter]&.each { |listener| listener.on_constant_target_node_enter(node) }
1505
+ listeners[:on_constant_target_node_leave]&.each { |listener| listener.on_constant_target_node_leave(node) }
1506
+ end
1507
+
1508
+ # Dispatch enter and leave events for ConstantWriteNode nodes.
1509
+ #
1510
+ #: (ConstantWriteNode node) -> void
1511
+ def visit_constant_write_node(node)
1512
+ listeners[:on_constant_write_node_enter]&.each { |listener| listener.on_constant_write_node_enter(node) }
1513
+ listeners[:on_constant_write_node_leave]&.each { |listener| listener.on_constant_write_node_leave(node) }
1514
+ end
1515
+
1516
+ # Dispatch enter and leave events for DefNode nodes.
1517
+ #
1518
+ #: (DefNode node) -> void
1519
+ def visit_def_node(node)
1520
+ listeners[:on_def_node_enter]&.each { |listener| listener.on_def_node_enter(node) }
1521
+ listeners[:on_def_node_leave]&.each { |listener| listener.on_def_node_leave(node) }
1522
+ end
1523
+
1524
+ # Dispatch enter and leave events for DefinedNode nodes.
1525
+ #
1526
+ #: (DefinedNode node) -> void
1527
+ def visit_defined_node(node)
1528
+ listeners[:on_defined_node_enter]&.each { |listener| listener.on_defined_node_enter(node) }
1529
+ listeners[:on_defined_node_leave]&.each { |listener| listener.on_defined_node_leave(node) }
1530
+ end
1531
+
1532
+ # Dispatch enter and leave events for ElseNode nodes.
1533
+ #
1534
+ #: (ElseNode node) -> void
1535
+ def visit_else_node(node)
1536
+ listeners[:on_else_node_enter]&.each { |listener| listener.on_else_node_enter(node) }
1537
+ listeners[:on_else_node_leave]&.each { |listener| listener.on_else_node_leave(node) }
1538
+ end
1539
+
1540
+ # Dispatch enter and leave events for EmbeddedStatementsNode nodes.
1541
+ #
1542
+ #: (EmbeddedStatementsNode node) -> void
1543
+ def visit_embedded_statements_node(node)
1544
+ listeners[:on_embedded_statements_node_enter]&.each { |listener| listener.on_embedded_statements_node_enter(node) }
1545
+ listeners[:on_embedded_statements_node_leave]&.each { |listener| listener.on_embedded_statements_node_leave(node) }
1546
+ end
1547
+
1548
+ # Dispatch enter and leave events for EmbeddedVariableNode nodes.
1549
+ #
1550
+ #: (EmbeddedVariableNode node) -> void
1551
+ def visit_embedded_variable_node(node)
1552
+ listeners[:on_embedded_variable_node_enter]&.each { |listener| listener.on_embedded_variable_node_enter(node) }
1553
+ listeners[:on_embedded_variable_node_leave]&.each { |listener| listener.on_embedded_variable_node_leave(node) }
1554
+ end
1555
+
1556
+ # Dispatch enter and leave events for EnsureNode nodes.
1557
+ #
1558
+ #: (EnsureNode node) -> void
1559
+ def visit_ensure_node(node)
1560
+ listeners[:on_ensure_node_enter]&.each { |listener| listener.on_ensure_node_enter(node) }
1561
+ listeners[:on_ensure_node_leave]&.each { |listener| listener.on_ensure_node_leave(node) }
1562
+ end
1563
+
1564
+ # Dispatch enter and leave events for ErrorRecoveryNode nodes.
1565
+ #
1566
+ #: (ErrorRecoveryNode node) -> void
1567
+ def visit_error_recovery_node(node)
1568
+ listeners[:on_error_recovery_node_enter]&.each { |listener| listener.on_error_recovery_node_enter(node) }
1569
+ listeners[:on_error_recovery_node_leave]&.each { |listener| listener.on_error_recovery_node_leave(node) }
1570
+ end
1571
+
1572
+ # Dispatch enter and leave events for FalseNode nodes.
1573
+ #
1574
+ #: (FalseNode node) -> void
1575
+ def visit_false_node(node)
1576
+ listeners[:on_false_node_enter]&.each { |listener| listener.on_false_node_enter(node) }
1577
+ listeners[:on_false_node_leave]&.each { |listener| listener.on_false_node_leave(node) }
1578
+ end
1579
+
1580
+ # Dispatch enter and leave events for FindPatternNode nodes.
1581
+ #
1582
+ #: (FindPatternNode node) -> void
1583
+ def visit_find_pattern_node(node)
1584
+ listeners[:on_find_pattern_node_enter]&.each { |listener| listener.on_find_pattern_node_enter(node) }
1585
+ listeners[:on_find_pattern_node_leave]&.each { |listener| listener.on_find_pattern_node_leave(node) }
1586
+ end
1587
+
1588
+ # Dispatch enter and leave events for FlipFlopNode nodes.
1589
+ #
1590
+ #: (FlipFlopNode node) -> void
1591
+ def visit_flip_flop_node(node)
1592
+ listeners[:on_flip_flop_node_enter]&.each { |listener| listener.on_flip_flop_node_enter(node) }
1593
+ listeners[:on_flip_flop_node_leave]&.each { |listener| listener.on_flip_flop_node_leave(node) }
1594
+ end
1595
+
1596
+ # Dispatch enter and leave events for FloatNode nodes.
1597
+ #
1598
+ #: (FloatNode node) -> void
1599
+ def visit_float_node(node)
1600
+ listeners[:on_float_node_enter]&.each { |listener| listener.on_float_node_enter(node) }
1601
+ listeners[:on_float_node_leave]&.each { |listener| listener.on_float_node_leave(node) }
1602
+ end
1603
+
1604
+ # Dispatch enter and leave events for ForNode nodes.
1605
+ #
1606
+ #: (ForNode node) -> void
1607
+ def visit_for_node(node)
1608
+ listeners[:on_for_node_enter]&.each { |listener| listener.on_for_node_enter(node) }
1609
+ listeners[:on_for_node_leave]&.each { |listener| listener.on_for_node_leave(node) }
1610
+ end
1611
+
1612
+ # Dispatch enter and leave events for ForwardingArgumentsNode nodes.
1613
+ #
1614
+ #: (ForwardingArgumentsNode node) -> void
1615
+ def visit_forwarding_arguments_node(node)
1616
+ listeners[:on_forwarding_arguments_node_enter]&.each { |listener| listener.on_forwarding_arguments_node_enter(node) }
1617
+ listeners[:on_forwarding_arguments_node_leave]&.each { |listener| listener.on_forwarding_arguments_node_leave(node) }
1618
+ end
1619
+
1620
+ # Dispatch enter and leave events for ForwardingParameterNode nodes.
1621
+ #
1622
+ #: (ForwardingParameterNode node) -> void
1623
+ def visit_forwarding_parameter_node(node)
1624
+ listeners[:on_forwarding_parameter_node_enter]&.each { |listener| listener.on_forwarding_parameter_node_enter(node) }
1625
+ listeners[:on_forwarding_parameter_node_leave]&.each { |listener| listener.on_forwarding_parameter_node_leave(node) }
1626
+ end
1627
+
1628
+ # Dispatch enter and leave events for ForwardingSuperNode nodes.
1629
+ #
1630
+ #: (ForwardingSuperNode node) -> void
1631
+ def visit_forwarding_super_node(node)
1632
+ listeners[:on_forwarding_super_node_enter]&.each { |listener| listener.on_forwarding_super_node_enter(node) }
1633
+ listeners[:on_forwarding_super_node_leave]&.each { |listener| listener.on_forwarding_super_node_leave(node) }
1634
+ end
1635
+
1636
+ # Dispatch enter and leave events for GlobalVariableAndWriteNode nodes.
1637
+ #
1638
+ #: (GlobalVariableAndWriteNode node) -> void
1639
+ def visit_global_variable_and_write_node(node)
1640
+ listeners[:on_global_variable_and_write_node_enter]&.each { |listener| listener.on_global_variable_and_write_node_enter(node) }
1641
+ listeners[:on_global_variable_and_write_node_leave]&.each { |listener| listener.on_global_variable_and_write_node_leave(node) }
1642
+ end
1643
+
1644
+ # Dispatch enter and leave events for GlobalVariableOperatorWriteNode nodes.
1645
+ #
1646
+ #: (GlobalVariableOperatorWriteNode node) -> void
1647
+ def visit_global_variable_operator_write_node(node)
1648
+ listeners[:on_global_variable_operator_write_node_enter]&.each { |listener| listener.on_global_variable_operator_write_node_enter(node) }
1649
+ listeners[:on_global_variable_operator_write_node_leave]&.each { |listener| listener.on_global_variable_operator_write_node_leave(node) }
1650
+ end
1651
+
1652
+ # Dispatch enter and leave events for GlobalVariableOrWriteNode nodes.
1653
+ #
1654
+ #: (GlobalVariableOrWriteNode node) -> void
1655
+ def visit_global_variable_or_write_node(node)
1656
+ listeners[:on_global_variable_or_write_node_enter]&.each { |listener| listener.on_global_variable_or_write_node_enter(node) }
1657
+ listeners[:on_global_variable_or_write_node_leave]&.each { |listener| listener.on_global_variable_or_write_node_leave(node) }
1658
+ end
1659
+
1660
+ # Dispatch enter and leave events for GlobalVariableReadNode nodes.
1661
+ #
1662
+ #: (GlobalVariableReadNode node) -> void
1663
+ def visit_global_variable_read_node(node)
1664
+ listeners[:on_global_variable_read_node_enter]&.each { |listener| listener.on_global_variable_read_node_enter(node) }
1665
+ listeners[:on_global_variable_read_node_leave]&.each { |listener| listener.on_global_variable_read_node_leave(node) }
1666
+ end
1667
+
1668
+ # Dispatch enter and leave events for GlobalVariableTargetNode nodes.
1669
+ #
1670
+ #: (GlobalVariableTargetNode node) -> void
1671
+ def visit_global_variable_target_node(node)
1672
+ listeners[:on_global_variable_target_node_enter]&.each { |listener| listener.on_global_variable_target_node_enter(node) }
1673
+ listeners[:on_global_variable_target_node_leave]&.each { |listener| listener.on_global_variable_target_node_leave(node) }
1674
+ end
1675
+
1676
+ # Dispatch enter and leave events for GlobalVariableWriteNode nodes.
1677
+ #
1678
+ #: (GlobalVariableWriteNode node) -> void
1679
+ def visit_global_variable_write_node(node)
1680
+ listeners[:on_global_variable_write_node_enter]&.each { |listener| listener.on_global_variable_write_node_enter(node) }
1681
+ listeners[:on_global_variable_write_node_leave]&.each { |listener| listener.on_global_variable_write_node_leave(node) }
1682
+ end
1683
+
1684
+ # Dispatch enter and leave events for HashNode nodes.
1685
+ #
1686
+ #: (HashNode node) -> void
1687
+ def visit_hash_node(node)
1688
+ listeners[:on_hash_node_enter]&.each { |listener| listener.on_hash_node_enter(node) }
1689
+ listeners[:on_hash_node_leave]&.each { |listener| listener.on_hash_node_leave(node) }
1690
+ end
1691
+
1692
+ # Dispatch enter and leave events for HashPatternNode nodes.
1693
+ #
1694
+ #: (HashPatternNode node) -> void
1695
+ def visit_hash_pattern_node(node)
1696
+ listeners[:on_hash_pattern_node_enter]&.each { |listener| listener.on_hash_pattern_node_enter(node) }
1697
+ listeners[:on_hash_pattern_node_leave]&.each { |listener| listener.on_hash_pattern_node_leave(node) }
1698
+ end
1699
+
1700
+ # Dispatch enter and leave events for IfNode nodes.
1701
+ #
1702
+ #: (IfNode node) -> void
1703
+ def visit_if_node(node)
1704
+ listeners[:on_if_node_enter]&.each { |listener| listener.on_if_node_enter(node) }
1705
+ listeners[:on_if_node_leave]&.each { |listener| listener.on_if_node_leave(node) }
1706
+ end
1707
+
1708
+ # Dispatch enter and leave events for ImaginaryNode nodes.
1709
+ #
1710
+ #: (ImaginaryNode node) -> void
1711
+ def visit_imaginary_node(node)
1712
+ listeners[:on_imaginary_node_enter]&.each { |listener| listener.on_imaginary_node_enter(node) }
1713
+ listeners[:on_imaginary_node_leave]&.each { |listener| listener.on_imaginary_node_leave(node) }
1714
+ end
1715
+
1716
+ # Dispatch enter and leave events for ImplicitNode nodes.
1717
+ #
1718
+ #: (ImplicitNode node) -> void
1719
+ def visit_implicit_node(node)
1720
+ listeners[:on_implicit_node_enter]&.each { |listener| listener.on_implicit_node_enter(node) }
1721
+ listeners[:on_implicit_node_leave]&.each { |listener| listener.on_implicit_node_leave(node) }
1722
+ end
1723
+
1724
+ # Dispatch enter and leave events for ImplicitRestNode nodes.
1725
+ #
1726
+ #: (ImplicitRestNode node) -> void
1727
+ def visit_implicit_rest_node(node)
1728
+ listeners[:on_implicit_rest_node_enter]&.each { |listener| listener.on_implicit_rest_node_enter(node) }
1729
+ listeners[:on_implicit_rest_node_leave]&.each { |listener| listener.on_implicit_rest_node_leave(node) }
1730
+ end
1731
+
1732
+ # Dispatch enter and leave events for InNode nodes.
1733
+ #
1734
+ #: (InNode node) -> void
1735
+ def visit_in_node(node)
1736
+ listeners[:on_in_node_enter]&.each { |listener| listener.on_in_node_enter(node) }
1737
+ listeners[:on_in_node_leave]&.each { |listener| listener.on_in_node_leave(node) }
1738
+ end
1739
+
1740
+ # Dispatch enter and leave events for IndexAndWriteNode nodes.
1741
+ #
1742
+ #: (IndexAndWriteNode node) -> void
1743
+ def visit_index_and_write_node(node)
1744
+ listeners[:on_index_and_write_node_enter]&.each { |listener| listener.on_index_and_write_node_enter(node) }
1745
+ listeners[:on_index_and_write_node_leave]&.each { |listener| listener.on_index_and_write_node_leave(node) }
1746
+ end
1747
+
1748
+ # Dispatch enter and leave events for IndexOperatorWriteNode nodes.
1749
+ #
1750
+ #: (IndexOperatorWriteNode node) -> void
1751
+ def visit_index_operator_write_node(node)
1752
+ listeners[:on_index_operator_write_node_enter]&.each { |listener| listener.on_index_operator_write_node_enter(node) }
1753
+ listeners[:on_index_operator_write_node_leave]&.each { |listener| listener.on_index_operator_write_node_leave(node) }
1754
+ end
1755
+
1756
+ # Dispatch enter and leave events for IndexOrWriteNode nodes.
1757
+ #
1758
+ #: (IndexOrWriteNode node) -> void
1759
+ def visit_index_or_write_node(node)
1760
+ listeners[:on_index_or_write_node_enter]&.each { |listener| listener.on_index_or_write_node_enter(node) }
1761
+ listeners[:on_index_or_write_node_leave]&.each { |listener| listener.on_index_or_write_node_leave(node) }
1762
+ end
1763
+
1764
+ # Dispatch enter and leave events for IndexTargetNode nodes.
1765
+ #
1766
+ #: (IndexTargetNode node) -> void
1767
+ def visit_index_target_node(node)
1768
+ listeners[:on_index_target_node_enter]&.each { |listener| listener.on_index_target_node_enter(node) }
1769
+ listeners[:on_index_target_node_leave]&.each { |listener| listener.on_index_target_node_leave(node) }
1770
+ end
1771
+
1772
+ # Dispatch enter and leave events for InstanceVariableAndWriteNode nodes.
1773
+ #
1774
+ #: (InstanceVariableAndWriteNode node) -> void
1775
+ def visit_instance_variable_and_write_node(node)
1776
+ listeners[:on_instance_variable_and_write_node_enter]&.each { |listener| listener.on_instance_variable_and_write_node_enter(node) }
1777
+ listeners[:on_instance_variable_and_write_node_leave]&.each { |listener| listener.on_instance_variable_and_write_node_leave(node) }
1778
+ end
1779
+
1780
+ # Dispatch enter and leave events for InstanceVariableOperatorWriteNode nodes.
1781
+ #
1782
+ #: (InstanceVariableOperatorWriteNode node) -> void
1783
+ def visit_instance_variable_operator_write_node(node)
1784
+ listeners[:on_instance_variable_operator_write_node_enter]&.each { |listener| listener.on_instance_variable_operator_write_node_enter(node) }
1785
+ listeners[:on_instance_variable_operator_write_node_leave]&.each { |listener| listener.on_instance_variable_operator_write_node_leave(node) }
1786
+ end
1787
+
1788
+ # Dispatch enter and leave events for InstanceVariableOrWriteNode nodes.
1789
+ #
1790
+ #: (InstanceVariableOrWriteNode node) -> void
1791
+ def visit_instance_variable_or_write_node(node)
1792
+ listeners[:on_instance_variable_or_write_node_enter]&.each { |listener| listener.on_instance_variable_or_write_node_enter(node) }
1793
+ listeners[:on_instance_variable_or_write_node_leave]&.each { |listener| listener.on_instance_variable_or_write_node_leave(node) }
1794
+ end
1795
+
1796
+ # Dispatch enter and leave events for InstanceVariableReadNode nodes.
1797
+ #
1798
+ #: (InstanceVariableReadNode node) -> void
1799
+ def visit_instance_variable_read_node(node)
1800
+ listeners[:on_instance_variable_read_node_enter]&.each { |listener| listener.on_instance_variable_read_node_enter(node) }
1801
+ listeners[:on_instance_variable_read_node_leave]&.each { |listener| listener.on_instance_variable_read_node_leave(node) }
1802
+ end
1803
+
1804
+ # Dispatch enter and leave events for InstanceVariableTargetNode nodes.
1805
+ #
1806
+ #: (InstanceVariableTargetNode node) -> void
1807
+ def visit_instance_variable_target_node(node)
1808
+ listeners[:on_instance_variable_target_node_enter]&.each { |listener| listener.on_instance_variable_target_node_enter(node) }
1809
+ listeners[:on_instance_variable_target_node_leave]&.each { |listener| listener.on_instance_variable_target_node_leave(node) }
1810
+ end
1811
+
1812
+ # Dispatch enter and leave events for InstanceVariableWriteNode nodes.
1813
+ #
1814
+ #: (InstanceVariableWriteNode node) -> void
1815
+ def visit_instance_variable_write_node(node)
1816
+ listeners[:on_instance_variable_write_node_enter]&.each { |listener| listener.on_instance_variable_write_node_enter(node) }
1817
+ listeners[:on_instance_variable_write_node_leave]&.each { |listener| listener.on_instance_variable_write_node_leave(node) }
1818
+ end
1819
+
1820
+ # Dispatch enter and leave events for IntegerNode nodes.
1821
+ #
1822
+ #: (IntegerNode node) -> void
1823
+ def visit_integer_node(node)
1824
+ listeners[:on_integer_node_enter]&.each { |listener| listener.on_integer_node_enter(node) }
1825
+ listeners[:on_integer_node_leave]&.each { |listener| listener.on_integer_node_leave(node) }
1826
+ end
1827
+
1828
+ # Dispatch enter and leave events for InterpolatedMatchLastLineNode nodes.
1829
+ #
1830
+ #: (InterpolatedMatchLastLineNode node) -> void
1831
+ def visit_interpolated_match_last_line_node(node)
1832
+ listeners[:on_interpolated_match_last_line_node_enter]&.each { |listener| listener.on_interpolated_match_last_line_node_enter(node) }
1833
+ listeners[:on_interpolated_match_last_line_node_leave]&.each { |listener| listener.on_interpolated_match_last_line_node_leave(node) }
1834
+ end
1835
+
1836
+ # Dispatch enter and leave events for InterpolatedRegularExpressionNode nodes.
1837
+ #
1838
+ #: (InterpolatedRegularExpressionNode node) -> void
1839
+ def visit_interpolated_regular_expression_node(node)
1840
+ listeners[:on_interpolated_regular_expression_node_enter]&.each { |listener| listener.on_interpolated_regular_expression_node_enter(node) }
1841
+ listeners[:on_interpolated_regular_expression_node_leave]&.each { |listener| listener.on_interpolated_regular_expression_node_leave(node) }
1842
+ end
1843
+
1844
+ # Dispatch enter and leave events for InterpolatedStringNode nodes.
1845
+ #
1846
+ #: (InterpolatedStringNode node) -> void
1847
+ def visit_interpolated_string_node(node)
1848
+ listeners[:on_interpolated_string_node_enter]&.each { |listener| listener.on_interpolated_string_node_enter(node) }
1849
+ listeners[:on_interpolated_string_node_leave]&.each { |listener| listener.on_interpolated_string_node_leave(node) }
1850
+ end
1851
+
1852
+ # Dispatch enter and leave events for InterpolatedSymbolNode nodes.
1853
+ #
1854
+ #: (InterpolatedSymbolNode node) -> void
1855
+ def visit_interpolated_symbol_node(node)
1856
+ listeners[:on_interpolated_symbol_node_enter]&.each { |listener| listener.on_interpolated_symbol_node_enter(node) }
1857
+ listeners[:on_interpolated_symbol_node_leave]&.each { |listener| listener.on_interpolated_symbol_node_leave(node) }
1858
+ end
1859
+
1860
+ # Dispatch enter and leave events for InterpolatedXStringNode nodes.
1861
+ #
1862
+ #: (InterpolatedXStringNode node) -> void
1863
+ def visit_interpolated_x_string_node(node)
1864
+ listeners[:on_interpolated_x_string_node_enter]&.each { |listener| listener.on_interpolated_x_string_node_enter(node) }
1865
+ listeners[:on_interpolated_x_string_node_leave]&.each { |listener| listener.on_interpolated_x_string_node_leave(node) }
1866
+ end
1867
+
1868
+ # Dispatch enter and leave events for ItLocalVariableReadNode nodes.
1869
+ #
1870
+ #: (ItLocalVariableReadNode node) -> void
1871
+ def visit_it_local_variable_read_node(node)
1872
+ listeners[:on_it_local_variable_read_node_enter]&.each { |listener| listener.on_it_local_variable_read_node_enter(node) }
1873
+ listeners[:on_it_local_variable_read_node_leave]&.each { |listener| listener.on_it_local_variable_read_node_leave(node) }
1874
+ end
1875
+
1876
+ # Dispatch enter and leave events for ItParametersNode nodes.
1877
+ #
1878
+ #: (ItParametersNode node) -> void
1879
+ def visit_it_parameters_node(node)
1880
+ listeners[:on_it_parameters_node_enter]&.each { |listener| listener.on_it_parameters_node_enter(node) }
1881
+ listeners[:on_it_parameters_node_leave]&.each { |listener| listener.on_it_parameters_node_leave(node) }
1882
+ end
1883
+
1884
+ # Dispatch enter and leave events for KeywordHashNode nodes.
1885
+ #
1886
+ #: (KeywordHashNode node) -> void
1887
+ def visit_keyword_hash_node(node)
1888
+ listeners[:on_keyword_hash_node_enter]&.each { |listener| listener.on_keyword_hash_node_enter(node) }
1889
+ listeners[:on_keyword_hash_node_leave]&.each { |listener| listener.on_keyword_hash_node_leave(node) }
1890
+ end
1891
+
1892
+ # Dispatch enter and leave events for KeywordRestParameterNode nodes.
1893
+ #
1894
+ #: (KeywordRestParameterNode node) -> void
1895
+ def visit_keyword_rest_parameter_node(node)
1896
+ listeners[:on_keyword_rest_parameter_node_enter]&.each { |listener| listener.on_keyword_rest_parameter_node_enter(node) }
1897
+ listeners[:on_keyword_rest_parameter_node_leave]&.each { |listener| listener.on_keyword_rest_parameter_node_leave(node) }
1898
+ end
1899
+
1900
+ # Dispatch enter and leave events for LambdaNode nodes.
1901
+ #
1902
+ #: (LambdaNode node) -> void
1903
+ def visit_lambda_node(node)
1904
+ listeners[:on_lambda_node_enter]&.each { |listener| listener.on_lambda_node_enter(node) }
1905
+ listeners[:on_lambda_node_leave]&.each { |listener| listener.on_lambda_node_leave(node) }
1906
+ end
1907
+
1908
+ # Dispatch enter and leave events for LocalVariableAndWriteNode nodes.
1909
+ #
1910
+ #: (LocalVariableAndWriteNode node) -> void
1911
+ def visit_local_variable_and_write_node(node)
1912
+ listeners[:on_local_variable_and_write_node_enter]&.each { |listener| listener.on_local_variable_and_write_node_enter(node) }
1913
+ listeners[:on_local_variable_and_write_node_leave]&.each { |listener| listener.on_local_variable_and_write_node_leave(node) }
1914
+ end
1915
+
1916
+ # Dispatch enter and leave events for LocalVariableOperatorWriteNode nodes.
1917
+ #
1918
+ #: (LocalVariableOperatorWriteNode node) -> void
1919
+ def visit_local_variable_operator_write_node(node)
1920
+ listeners[:on_local_variable_operator_write_node_enter]&.each { |listener| listener.on_local_variable_operator_write_node_enter(node) }
1921
+ listeners[:on_local_variable_operator_write_node_leave]&.each { |listener| listener.on_local_variable_operator_write_node_leave(node) }
1922
+ end
1923
+
1924
+ # Dispatch enter and leave events for LocalVariableOrWriteNode nodes.
1925
+ #
1926
+ #: (LocalVariableOrWriteNode node) -> void
1927
+ def visit_local_variable_or_write_node(node)
1928
+ listeners[:on_local_variable_or_write_node_enter]&.each { |listener| listener.on_local_variable_or_write_node_enter(node) }
1929
+ listeners[:on_local_variable_or_write_node_leave]&.each { |listener| listener.on_local_variable_or_write_node_leave(node) }
1930
+ end
1931
+
1932
+ # Dispatch enter and leave events for LocalVariableReadNode nodes.
1933
+ #
1934
+ #: (LocalVariableReadNode node) -> void
1935
+ def visit_local_variable_read_node(node)
1936
+ listeners[:on_local_variable_read_node_enter]&.each { |listener| listener.on_local_variable_read_node_enter(node) }
1937
+ listeners[:on_local_variable_read_node_leave]&.each { |listener| listener.on_local_variable_read_node_leave(node) }
1938
+ end
1939
+
1940
+ # Dispatch enter and leave events for LocalVariableTargetNode nodes.
1941
+ #
1942
+ #: (LocalVariableTargetNode node) -> void
1943
+ def visit_local_variable_target_node(node)
1944
+ listeners[:on_local_variable_target_node_enter]&.each { |listener| listener.on_local_variable_target_node_enter(node) }
1945
+ listeners[:on_local_variable_target_node_leave]&.each { |listener| listener.on_local_variable_target_node_leave(node) }
1946
+ end
1947
+
1948
+ # Dispatch enter and leave events for LocalVariableWriteNode nodes.
1949
+ #
1950
+ #: (LocalVariableWriteNode node) -> void
1951
+ def visit_local_variable_write_node(node)
1952
+ listeners[:on_local_variable_write_node_enter]&.each { |listener| listener.on_local_variable_write_node_enter(node) }
1953
+ listeners[:on_local_variable_write_node_leave]&.each { |listener| listener.on_local_variable_write_node_leave(node) }
1954
+ end
1955
+
1956
+ # Dispatch enter and leave events for MatchLastLineNode nodes.
1957
+ #
1958
+ #: (MatchLastLineNode node) -> void
1959
+ def visit_match_last_line_node(node)
1960
+ listeners[:on_match_last_line_node_enter]&.each { |listener| listener.on_match_last_line_node_enter(node) }
1961
+ listeners[:on_match_last_line_node_leave]&.each { |listener| listener.on_match_last_line_node_leave(node) }
1962
+ end
1963
+
1964
+ # Dispatch enter and leave events for MatchPredicateNode nodes.
1965
+ #
1966
+ #: (MatchPredicateNode node) -> void
1967
+ def visit_match_predicate_node(node)
1968
+ listeners[:on_match_predicate_node_enter]&.each { |listener| listener.on_match_predicate_node_enter(node) }
1969
+ listeners[:on_match_predicate_node_leave]&.each { |listener| listener.on_match_predicate_node_leave(node) }
1970
+ end
1971
+
1972
+ # Dispatch enter and leave events for MatchRequiredNode nodes.
1973
+ #
1974
+ #: (MatchRequiredNode node) -> void
1975
+ def visit_match_required_node(node)
1976
+ listeners[:on_match_required_node_enter]&.each { |listener| listener.on_match_required_node_enter(node) }
1977
+ listeners[:on_match_required_node_leave]&.each { |listener| listener.on_match_required_node_leave(node) }
1978
+ end
1979
+
1980
+ # Dispatch enter and leave events for MatchWriteNode nodes.
1981
+ #
1982
+ #: (MatchWriteNode node) -> void
1983
+ def visit_match_write_node(node)
1984
+ listeners[:on_match_write_node_enter]&.each { |listener| listener.on_match_write_node_enter(node) }
1985
+ listeners[:on_match_write_node_leave]&.each { |listener| listener.on_match_write_node_leave(node) }
1986
+ end
1987
+
1988
+ # Dispatch enter and leave events for ModuleNode nodes.
1989
+ #
1990
+ #: (ModuleNode node) -> void
1991
+ def visit_module_node(node)
1992
+ listeners[:on_module_node_enter]&.each { |listener| listener.on_module_node_enter(node) }
1993
+ listeners[:on_module_node_leave]&.each { |listener| listener.on_module_node_leave(node) }
1994
+ end
1995
+
1996
+ # Dispatch enter and leave events for MultiTargetNode nodes.
1997
+ #
1998
+ #: (MultiTargetNode node) -> void
1999
+ def visit_multi_target_node(node)
2000
+ listeners[:on_multi_target_node_enter]&.each { |listener| listener.on_multi_target_node_enter(node) }
2001
+ listeners[:on_multi_target_node_leave]&.each { |listener| listener.on_multi_target_node_leave(node) }
2002
+ end
2003
+
2004
+ # Dispatch enter and leave events for MultiWriteNode nodes.
2005
+ #
2006
+ #: (MultiWriteNode node) -> void
2007
+ def visit_multi_write_node(node)
2008
+ listeners[:on_multi_write_node_enter]&.each { |listener| listener.on_multi_write_node_enter(node) }
2009
+ listeners[:on_multi_write_node_leave]&.each { |listener| listener.on_multi_write_node_leave(node) }
2010
+ end
2011
+
2012
+ # Dispatch enter and leave events for NextNode nodes.
2013
+ #
2014
+ #: (NextNode node) -> void
2015
+ def visit_next_node(node)
2016
+ listeners[:on_next_node_enter]&.each { |listener| listener.on_next_node_enter(node) }
2017
+ listeners[:on_next_node_leave]&.each { |listener| listener.on_next_node_leave(node) }
2018
+ end
2019
+
2020
+ # Dispatch enter and leave events for NilNode nodes.
2021
+ #
2022
+ #: (NilNode node) -> void
2023
+ def visit_nil_node(node)
2024
+ listeners[:on_nil_node_enter]&.each { |listener| listener.on_nil_node_enter(node) }
2025
+ listeners[:on_nil_node_leave]&.each { |listener| listener.on_nil_node_leave(node) }
2026
+ end
2027
+
2028
+ # Dispatch enter and leave events for NoBlockParameterNode nodes.
2029
+ #
2030
+ #: (NoBlockParameterNode node) -> void
2031
+ def visit_no_block_parameter_node(node)
2032
+ listeners[:on_no_block_parameter_node_enter]&.each { |listener| listener.on_no_block_parameter_node_enter(node) }
2033
+ listeners[:on_no_block_parameter_node_leave]&.each { |listener| listener.on_no_block_parameter_node_leave(node) }
2034
+ end
2035
+
2036
+ # Dispatch enter and leave events for NoKeywordsParameterNode nodes.
2037
+ #
2038
+ #: (NoKeywordsParameterNode node) -> void
2039
+ def visit_no_keywords_parameter_node(node)
2040
+ listeners[:on_no_keywords_parameter_node_enter]&.each { |listener| listener.on_no_keywords_parameter_node_enter(node) }
2041
+ listeners[:on_no_keywords_parameter_node_leave]&.each { |listener| listener.on_no_keywords_parameter_node_leave(node) }
2042
+ end
2043
+
2044
+ # Dispatch enter and leave events for NumberedParametersNode nodes.
2045
+ #
2046
+ #: (NumberedParametersNode node) -> void
2047
+ def visit_numbered_parameters_node(node)
2048
+ listeners[:on_numbered_parameters_node_enter]&.each { |listener| listener.on_numbered_parameters_node_enter(node) }
2049
+ listeners[:on_numbered_parameters_node_leave]&.each { |listener| listener.on_numbered_parameters_node_leave(node) }
2050
+ end
2051
+
2052
+ # Dispatch enter and leave events for NumberedReferenceReadNode nodes.
2053
+ #
2054
+ #: (NumberedReferenceReadNode node) -> void
2055
+ def visit_numbered_reference_read_node(node)
2056
+ listeners[:on_numbered_reference_read_node_enter]&.each { |listener| listener.on_numbered_reference_read_node_enter(node) }
2057
+ listeners[:on_numbered_reference_read_node_leave]&.each { |listener| listener.on_numbered_reference_read_node_leave(node) }
2058
+ end
2059
+
2060
+ # Dispatch enter and leave events for OptionalKeywordParameterNode nodes.
2061
+ #
2062
+ #: (OptionalKeywordParameterNode node) -> void
2063
+ def visit_optional_keyword_parameter_node(node)
2064
+ listeners[:on_optional_keyword_parameter_node_enter]&.each { |listener| listener.on_optional_keyword_parameter_node_enter(node) }
2065
+ listeners[:on_optional_keyword_parameter_node_leave]&.each { |listener| listener.on_optional_keyword_parameter_node_leave(node) }
2066
+ end
2067
+
2068
+ # Dispatch enter and leave events for OptionalParameterNode nodes.
2069
+ #
2070
+ #: (OptionalParameterNode node) -> void
2071
+ def visit_optional_parameter_node(node)
2072
+ listeners[:on_optional_parameter_node_enter]&.each { |listener| listener.on_optional_parameter_node_enter(node) }
2073
+ listeners[:on_optional_parameter_node_leave]&.each { |listener| listener.on_optional_parameter_node_leave(node) }
2074
+ end
2075
+
2076
+ # Dispatch enter and leave events for OrNode nodes.
2077
+ #
2078
+ #: (OrNode node) -> void
2079
+ def visit_or_node(node)
2080
+ listeners[:on_or_node_enter]&.each { |listener| listener.on_or_node_enter(node) }
2081
+ listeners[:on_or_node_leave]&.each { |listener| listener.on_or_node_leave(node) }
2082
+ end
2083
+
2084
+ # Dispatch enter and leave events for ParametersNode nodes.
2085
+ #
2086
+ #: (ParametersNode node) -> void
2087
+ def visit_parameters_node(node)
2088
+ listeners[:on_parameters_node_enter]&.each { |listener| listener.on_parameters_node_enter(node) }
2089
+ listeners[:on_parameters_node_leave]&.each { |listener| listener.on_parameters_node_leave(node) }
2090
+ end
2091
+
2092
+ # Dispatch enter and leave events for ParenthesesNode nodes.
2093
+ #
2094
+ #: (ParenthesesNode node) -> void
2095
+ def visit_parentheses_node(node)
2096
+ listeners[:on_parentheses_node_enter]&.each { |listener| listener.on_parentheses_node_enter(node) }
2097
+ listeners[:on_parentheses_node_leave]&.each { |listener| listener.on_parentheses_node_leave(node) }
2098
+ end
2099
+
2100
+ # Dispatch enter and leave events for PinnedExpressionNode nodes.
2101
+ #
2102
+ #: (PinnedExpressionNode node) -> void
2103
+ def visit_pinned_expression_node(node)
2104
+ listeners[:on_pinned_expression_node_enter]&.each { |listener| listener.on_pinned_expression_node_enter(node) }
2105
+ listeners[:on_pinned_expression_node_leave]&.each { |listener| listener.on_pinned_expression_node_leave(node) }
2106
+ end
2107
+
2108
+ # Dispatch enter and leave events for PinnedVariableNode nodes.
2109
+ #
2110
+ #: (PinnedVariableNode node) -> void
2111
+ def visit_pinned_variable_node(node)
2112
+ listeners[:on_pinned_variable_node_enter]&.each { |listener| listener.on_pinned_variable_node_enter(node) }
2113
+ listeners[:on_pinned_variable_node_leave]&.each { |listener| listener.on_pinned_variable_node_leave(node) }
2114
+ end
2115
+
2116
+ # Dispatch enter and leave events for PostExecutionNode nodes.
2117
+ #
2118
+ #: (PostExecutionNode node) -> void
2119
+ def visit_post_execution_node(node)
2120
+ listeners[:on_post_execution_node_enter]&.each { |listener| listener.on_post_execution_node_enter(node) }
2121
+ listeners[:on_post_execution_node_leave]&.each { |listener| listener.on_post_execution_node_leave(node) }
2122
+ end
2123
+
2124
+ # Dispatch enter and leave events for PreExecutionNode nodes.
2125
+ #
2126
+ #: (PreExecutionNode node) -> void
2127
+ def visit_pre_execution_node(node)
2128
+ listeners[:on_pre_execution_node_enter]&.each { |listener| listener.on_pre_execution_node_enter(node) }
2129
+ listeners[:on_pre_execution_node_leave]&.each { |listener| listener.on_pre_execution_node_leave(node) }
2130
+ end
2131
+
2132
+ # Dispatch enter and leave events for ProgramNode nodes.
2133
+ #
2134
+ #: (ProgramNode node) -> void
2135
+ def visit_program_node(node)
2136
+ listeners[:on_program_node_enter]&.each { |listener| listener.on_program_node_enter(node) }
2137
+ listeners[:on_program_node_leave]&.each { |listener| listener.on_program_node_leave(node) }
2138
+ end
2139
+
2140
+ # Dispatch enter and leave events for RangeNode nodes.
2141
+ #
2142
+ #: (RangeNode node) -> void
2143
+ def visit_range_node(node)
2144
+ listeners[:on_range_node_enter]&.each { |listener| listener.on_range_node_enter(node) }
2145
+ listeners[:on_range_node_leave]&.each { |listener| listener.on_range_node_leave(node) }
2146
+ end
2147
+
2148
+ # Dispatch enter and leave events for RationalNode nodes.
2149
+ #
2150
+ #: (RationalNode node) -> void
2151
+ def visit_rational_node(node)
2152
+ listeners[:on_rational_node_enter]&.each { |listener| listener.on_rational_node_enter(node) }
2153
+ listeners[:on_rational_node_leave]&.each { |listener| listener.on_rational_node_leave(node) }
2154
+ end
2155
+
2156
+ # Dispatch enter and leave events for RedoNode nodes.
2157
+ #
2158
+ #: (RedoNode node) -> void
2159
+ def visit_redo_node(node)
2160
+ listeners[:on_redo_node_enter]&.each { |listener| listener.on_redo_node_enter(node) }
2161
+ listeners[:on_redo_node_leave]&.each { |listener| listener.on_redo_node_leave(node) }
2162
+ end
2163
+
2164
+ # Dispatch enter and leave events for RegularExpressionNode nodes.
2165
+ #
2166
+ #: (RegularExpressionNode node) -> void
2167
+ def visit_regular_expression_node(node)
2168
+ listeners[:on_regular_expression_node_enter]&.each { |listener| listener.on_regular_expression_node_enter(node) }
2169
+ listeners[:on_regular_expression_node_leave]&.each { |listener| listener.on_regular_expression_node_leave(node) }
2170
+ end
2171
+
2172
+ # Dispatch enter and leave events for RequiredKeywordParameterNode nodes.
2173
+ #
2174
+ #: (RequiredKeywordParameterNode node) -> void
2175
+ def visit_required_keyword_parameter_node(node)
2176
+ listeners[:on_required_keyword_parameter_node_enter]&.each { |listener| listener.on_required_keyword_parameter_node_enter(node) }
2177
+ listeners[:on_required_keyword_parameter_node_leave]&.each { |listener| listener.on_required_keyword_parameter_node_leave(node) }
2178
+ end
2179
+
2180
+ # Dispatch enter and leave events for RequiredParameterNode nodes.
2181
+ #
2182
+ #: (RequiredParameterNode node) -> void
2183
+ def visit_required_parameter_node(node)
2184
+ listeners[:on_required_parameter_node_enter]&.each { |listener| listener.on_required_parameter_node_enter(node) }
2185
+ listeners[:on_required_parameter_node_leave]&.each { |listener| listener.on_required_parameter_node_leave(node) }
2186
+ end
2187
+
2188
+ # Dispatch enter and leave events for RescueModifierNode nodes.
2189
+ #
2190
+ #: (RescueModifierNode node) -> void
2191
+ def visit_rescue_modifier_node(node)
2192
+ listeners[:on_rescue_modifier_node_enter]&.each { |listener| listener.on_rescue_modifier_node_enter(node) }
2193
+ listeners[:on_rescue_modifier_node_leave]&.each { |listener| listener.on_rescue_modifier_node_leave(node) }
2194
+ end
2195
+
2196
+ # Dispatch enter and leave events for RescueNode nodes.
2197
+ #
2198
+ #: (RescueNode node) -> void
2199
+ def visit_rescue_node(node)
2200
+ listeners[:on_rescue_node_enter]&.each { |listener| listener.on_rescue_node_enter(node) }
2201
+ listeners[:on_rescue_node_leave]&.each { |listener| listener.on_rescue_node_leave(node) }
2202
+ end
2203
+
2204
+ # Dispatch enter and leave events for RestParameterNode nodes.
2205
+ #
2206
+ #: (RestParameterNode node) -> void
2207
+ def visit_rest_parameter_node(node)
2208
+ listeners[:on_rest_parameter_node_enter]&.each { |listener| listener.on_rest_parameter_node_enter(node) }
2209
+ listeners[:on_rest_parameter_node_leave]&.each { |listener| listener.on_rest_parameter_node_leave(node) }
2210
+ end
2211
+
2212
+ # Dispatch enter and leave events for RetryNode nodes.
2213
+ #
2214
+ #: (RetryNode node) -> void
2215
+ def visit_retry_node(node)
2216
+ listeners[:on_retry_node_enter]&.each { |listener| listener.on_retry_node_enter(node) }
2217
+ listeners[:on_retry_node_leave]&.each { |listener| listener.on_retry_node_leave(node) }
2218
+ end
2219
+
2220
+ # Dispatch enter and leave events for ReturnNode nodes.
2221
+ #
2222
+ #: (ReturnNode node) -> void
2223
+ def visit_return_node(node)
2224
+ listeners[:on_return_node_enter]&.each { |listener| listener.on_return_node_enter(node) }
2225
+ listeners[:on_return_node_leave]&.each { |listener| listener.on_return_node_leave(node) }
2226
+ end
2227
+
2228
+ # Dispatch enter and leave events for SelfNode nodes.
2229
+ #
2230
+ #: (SelfNode node) -> void
2231
+ def visit_self_node(node)
2232
+ listeners[:on_self_node_enter]&.each { |listener| listener.on_self_node_enter(node) }
2233
+ listeners[:on_self_node_leave]&.each { |listener| listener.on_self_node_leave(node) }
2234
+ end
2235
+
2236
+ # Dispatch enter and leave events for ShareableConstantNode nodes.
2237
+ #
2238
+ #: (ShareableConstantNode node) -> void
2239
+ def visit_shareable_constant_node(node)
2240
+ listeners[:on_shareable_constant_node_enter]&.each { |listener| listener.on_shareable_constant_node_enter(node) }
2241
+ listeners[:on_shareable_constant_node_leave]&.each { |listener| listener.on_shareable_constant_node_leave(node) }
2242
+ end
2243
+
2244
+ # Dispatch enter and leave events for SingletonClassNode nodes.
2245
+ #
2246
+ #: (SingletonClassNode node) -> void
2247
+ def visit_singleton_class_node(node)
2248
+ listeners[:on_singleton_class_node_enter]&.each { |listener| listener.on_singleton_class_node_enter(node) }
2249
+ listeners[:on_singleton_class_node_leave]&.each { |listener| listener.on_singleton_class_node_leave(node) }
2250
+ end
2251
+
2252
+ # Dispatch enter and leave events for SourceEncodingNode nodes.
2253
+ #
2254
+ #: (SourceEncodingNode node) -> void
2255
+ def visit_source_encoding_node(node)
2256
+ listeners[:on_source_encoding_node_enter]&.each { |listener| listener.on_source_encoding_node_enter(node) }
2257
+ listeners[:on_source_encoding_node_leave]&.each { |listener| listener.on_source_encoding_node_leave(node) }
2258
+ end
2259
+
2260
+ # Dispatch enter and leave events for SourceFileNode nodes.
2261
+ #
2262
+ #: (SourceFileNode node) -> void
2263
+ def visit_source_file_node(node)
2264
+ listeners[:on_source_file_node_enter]&.each { |listener| listener.on_source_file_node_enter(node) }
2265
+ listeners[:on_source_file_node_leave]&.each { |listener| listener.on_source_file_node_leave(node) }
2266
+ end
2267
+
2268
+ # Dispatch enter and leave events for SourceLineNode nodes.
2269
+ #
2270
+ #: (SourceLineNode node) -> void
2271
+ def visit_source_line_node(node)
2272
+ listeners[:on_source_line_node_enter]&.each { |listener| listener.on_source_line_node_enter(node) }
2273
+ listeners[:on_source_line_node_leave]&.each { |listener| listener.on_source_line_node_leave(node) }
2274
+ end
2275
+
2276
+ # Dispatch enter and leave events for SplatNode nodes.
2277
+ #
2278
+ #: (SplatNode node) -> void
2279
+ def visit_splat_node(node)
2280
+ listeners[:on_splat_node_enter]&.each { |listener| listener.on_splat_node_enter(node) }
2281
+ listeners[:on_splat_node_leave]&.each { |listener| listener.on_splat_node_leave(node) }
2282
+ end
2283
+
2284
+ # Dispatch enter and leave events for StatementsNode nodes.
2285
+ #
2286
+ #: (StatementsNode node) -> void
2287
+ def visit_statements_node(node)
2288
+ listeners[:on_statements_node_enter]&.each { |listener| listener.on_statements_node_enter(node) }
2289
+ listeners[:on_statements_node_leave]&.each { |listener| listener.on_statements_node_leave(node) }
2290
+ end
2291
+
2292
+ # Dispatch enter and leave events for StringNode nodes.
2293
+ #
2294
+ #: (StringNode node) -> void
2295
+ def visit_string_node(node)
2296
+ listeners[:on_string_node_enter]&.each { |listener| listener.on_string_node_enter(node) }
2297
+ listeners[:on_string_node_leave]&.each { |listener| listener.on_string_node_leave(node) }
2298
+ end
2299
+
2300
+ # Dispatch enter and leave events for SuperNode nodes.
2301
+ #
2302
+ #: (SuperNode node) -> void
2303
+ def visit_super_node(node)
2304
+ listeners[:on_super_node_enter]&.each { |listener| listener.on_super_node_enter(node) }
2305
+ listeners[:on_super_node_leave]&.each { |listener| listener.on_super_node_leave(node) }
2306
+ end
2307
+
2308
+ # Dispatch enter and leave events for SymbolNode nodes.
2309
+ #
2310
+ #: (SymbolNode node) -> void
2311
+ def visit_symbol_node(node)
2312
+ listeners[:on_symbol_node_enter]&.each { |listener| listener.on_symbol_node_enter(node) }
2313
+ listeners[:on_symbol_node_leave]&.each { |listener| listener.on_symbol_node_leave(node) }
2314
+ end
2315
+
2316
+ # Dispatch enter and leave events for TrueNode nodes.
2317
+ #
2318
+ #: (TrueNode node) -> void
2319
+ def visit_true_node(node)
2320
+ listeners[:on_true_node_enter]&.each { |listener| listener.on_true_node_enter(node) }
2321
+ listeners[:on_true_node_leave]&.each { |listener| listener.on_true_node_leave(node) }
2322
+ end
2323
+
2324
+ # Dispatch enter and leave events for UndefNode nodes.
2325
+ #
2326
+ #: (UndefNode node) -> void
2327
+ def visit_undef_node(node)
2328
+ listeners[:on_undef_node_enter]&.each { |listener| listener.on_undef_node_enter(node) }
2329
+ listeners[:on_undef_node_leave]&.each { |listener| listener.on_undef_node_leave(node) }
2330
+ end
2331
+
2332
+ # Dispatch enter and leave events for UnlessNode nodes.
2333
+ #
2334
+ #: (UnlessNode node) -> void
2335
+ def visit_unless_node(node)
2336
+ listeners[:on_unless_node_enter]&.each { |listener| listener.on_unless_node_enter(node) }
2337
+ listeners[:on_unless_node_leave]&.each { |listener| listener.on_unless_node_leave(node) }
2338
+ end
2339
+
2340
+ # Dispatch enter and leave events for UntilNode nodes.
2341
+ #
2342
+ #: (UntilNode node) -> void
2343
+ def visit_until_node(node)
2344
+ listeners[:on_until_node_enter]&.each { |listener| listener.on_until_node_enter(node) }
2345
+ listeners[:on_until_node_leave]&.each { |listener| listener.on_until_node_leave(node) }
2346
+ end
2347
+
2348
+ # Dispatch enter and leave events for WhenNode nodes.
2349
+ #
2350
+ #: (WhenNode node) -> void
2351
+ def visit_when_node(node)
2352
+ listeners[:on_when_node_enter]&.each { |listener| listener.on_when_node_enter(node) }
2353
+ listeners[:on_when_node_leave]&.each { |listener| listener.on_when_node_leave(node) }
2354
+ end
2355
+
2356
+ # Dispatch enter and leave events for WhileNode nodes.
2357
+ #
2358
+ #: (WhileNode node) -> void
2359
+ def visit_while_node(node)
2360
+ listeners[:on_while_node_enter]&.each { |listener| listener.on_while_node_enter(node) }
2361
+ listeners[:on_while_node_leave]&.each { |listener| listener.on_while_node_leave(node) }
2362
+ end
2363
+
2364
+ # Dispatch enter and leave events for XStringNode nodes.
2365
+ #
2366
+ #: (XStringNode node) -> void
2367
+ def visit_x_string_node(node)
2368
+ listeners[:on_x_string_node_enter]&.each { |listener| listener.on_x_string_node_enter(node) }
2369
+ listeners[:on_x_string_node_leave]&.each { |listener| listener.on_x_string_node_leave(node) }
2370
+ end
2371
+
2372
+ # Dispatch enter and leave events for YieldNode nodes.
2373
+ #
2374
+ #: (YieldNode node) -> void
2375
+ def visit_yield_node(node)
2376
+ listeners[:on_yield_node_enter]&.each { |listener| listener.on_yield_node_enter(node) }
2377
+ listeners[:on_yield_node_leave]&.each { |listener| listener.on_yield_node_leave(node) }
2378
+ end
2379
+ end
2380
+
2381
+ private_constant :DispatchOnce
2382
+ end
2383
+ end