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,509 @@
1
+ # Generated from lib/prism/inspect_visitor.rb with RBS::Inline
2
+
3
+ module Prism
4
+ # This visitor is responsible for composing the strings that get returned by
5
+ # the various #inspect methods defined on each of the nodes.
6
+ class InspectVisitor < Visitor
7
+ # Most of the time, we can simply pass down the indent to the next node.
8
+ # However, when we are inside a list we want some extra special formatting
9
+ # when we hit an element in that list. In this case, we have a special
10
+ # command that replaces the subsequent indent with the given value.
11
+ class Replace
12
+ # :nodoc:
13
+ attr_reader value: String
14
+
15
+ # : (String value) -> void
16
+ def initialize: (String value) -> void
17
+ end
18
+
19
+ # The current prefix string.
20
+ # :stopdoc:
21
+ attr_reader indent: String
22
+
23
+ # The list of commands that we need to execute in order to compose the
24
+ # final string.
25
+ # : stopdoc:
26
+ attr_reader commands: Array[[ String | node | Replace, String ]]
27
+
28
+ # : (?String indent) -> void
29
+ def initialize: (?String indent) -> void
30
+
31
+ # Compose an inspect string for the given node.
32
+ #
33
+ # : (node node) -> String
34
+ def self.compose: (node node) -> String
35
+
36
+ # Compose the final string.
37
+ #
38
+ # : () -> String
39
+ def compose: () -> String
40
+
41
+ # : (AliasGlobalVariableNode node) -> void
42
+ def visit_alias_global_variable_node: (AliasGlobalVariableNode node) -> void
43
+
44
+ # : (AliasMethodNode node) -> void
45
+ def visit_alias_method_node: (AliasMethodNode node) -> void
46
+
47
+ # : (AlternationPatternNode node) -> void
48
+ def visit_alternation_pattern_node: (AlternationPatternNode node) -> void
49
+
50
+ # : (AndNode node) -> void
51
+ def visit_and_node: (AndNode node) -> void
52
+
53
+ # : (ArgumentsNode node) -> void
54
+ def visit_arguments_node: (ArgumentsNode node) -> void
55
+
56
+ # : (ArrayNode node) -> void
57
+ def visit_array_node: (ArrayNode node) -> void
58
+
59
+ # : (ArrayPatternNode node) -> void
60
+ def visit_array_pattern_node: (ArrayPatternNode node) -> void
61
+
62
+ # : (AssocNode node) -> void
63
+ def visit_assoc_node: (AssocNode node) -> void
64
+
65
+ # : (AssocSplatNode node) -> void
66
+ def visit_assoc_splat_node: (AssocSplatNode node) -> void
67
+
68
+ # : (BackReferenceReadNode node) -> void
69
+ def visit_back_reference_read_node: (BackReferenceReadNode node) -> void
70
+
71
+ # : (BeginNode node) -> void
72
+ def visit_begin_node: (BeginNode node) -> void
73
+
74
+ # : (BlockArgumentNode node) -> void
75
+ def visit_block_argument_node: (BlockArgumentNode node) -> void
76
+
77
+ # : (BlockLocalVariableNode node) -> void
78
+ def visit_block_local_variable_node: (BlockLocalVariableNode node) -> void
79
+
80
+ # : (BlockNode node) -> void
81
+ def visit_block_node: (BlockNode node) -> void
82
+
83
+ # : (BlockParameterNode node) -> void
84
+ def visit_block_parameter_node: (BlockParameterNode node) -> void
85
+
86
+ # : (BlockParametersNode node) -> void
87
+ def visit_block_parameters_node: (BlockParametersNode node) -> void
88
+
89
+ # : (BreakNode node) -> void
90
+ def visit_break_node: (BreakNode node) -> void
91
+
92
+ # : (CallAndWriteNode node) -> void
93
+ def visit_call_and_write_node: (CallAndWriteNode node) -> void
94
+
95
+ # : (CallNode node) -> void
96
+ def visit_call_node: (CallNode node) -> void
97
+
98
+ # : (CallOperatorWriteNode node) -> void
99
+ def visit_call_operator_write_node: (CallOperatorWriteNode node) -> void
100
+
101
+ # : (CallOrWriteNode node) -> void
102
+ def visit_call_or_write_node: (CallOrWriteNode node) -> void
103
+
104
+ # : (CallTargetNode node) -> void
105
+ def visit_call_target_node: (CallTargetNode node) -> void
106
+
107
+ # : (CapturePatternNode node) -> void
108
+ def visit_capture_pattern_node: (CapturePatternNode node) -> void
109
+
110
+ # : (CaseMatchNode node) -> void
111
+ def visit_case_match_node: (CaseMatchNode node) -> void
112
+
113
+ # : (CaseNode node) -> void
114
+ def visit_case_node: (CaseNode node) -> void
115
+
116
+ # : (ClassNode node) -> void
117
+ def visit_class_node: (ClassNode node) -> void
118
+
119
+ # : (ClassVariableAndWriteNode node) -> void
120
+ def visit_class_variable_and_write_node: (ClassVariableAndWriteNode node) -> void
121
+
122
+ # : (ClassVariableOperatorWriteNode node) -> void
123
+ def visit_class_variable_operator_write_node: (ClassVariableOperatorWriteNode node) -> void
124
+
125
+ # : (ClassVariableOrWriteNode node) -> void
126
+ def visit_class_variable_or_write_node: (ClassVariableOrWriteNode node) -> void
127
+
128
+ # : (ClassVariableReadNode node) -> void
129
+ def visit_class_variable_read_node: (ClassVariableReadNode node) -> void
130
+
131
+ # : (ClassVariableTargetNode node) -> void
132
+ def visit_class_variable_target_node: (ClassVariableTargetNode node) -> void
133
+
134
+ # : (ClassVariableWriteNode node) -> void
135
+ def visit_class_variable_write_node: (ClassVariableWriteNode node) -> void
136
+
137
+ # : (ConstantAndWriteNode node) -> void
138
+ def visit_constant_and_write_node: (ConstantAndWriteNode node) -> void
139
+
140
+ # : (ConstantOperatorWriteNode node) -> void
141
+ def visit_constant_operator_write_node: (ConstantOperatorWriteNode node) -> void
142
+
143
+ # : (ConstantOrWriteNode node) -> void
144
+ def visit_constant_or_write_node: (ConstantOrWriteNode node) -> void
145
+
146
+ # : (ConstantPathAndWriteNode node) -> void
147
+ def visit_constant_path_and_write_node: (ConstantPathAndWriteNode node) -> void
148
+
149
+ # : (ConstantPathNode node) -> void
150
+ def visit_constant_path_node: (ConstantPathNode node) -> void
151
+
152
+ # : (ConstantPathOperatorWriteNode node) -> void
153
+ def visit_constant_path_operator_write_node: (ConstantPathOperatorWriteNode node) -> void
154
+
155
+ # : (ConstantPathOrWriteNode node) -> void
156
+ def visit_constant_path_or_write_node: (ConstantPathOrWriteNode node) -> void
157
+
158
+ # : (ConstantPathTargetNode node) -> void
159
+ def visit_constant_path_target_node: (ConstantPathTargetNode node) -> void
160
+
161
+ # : (ConstantPathWriteNode node) -> void
162
+ def visit_constant_path_write_node: (ConstantPathWriteNode node) -> void
163
+
164
+ # : (ConstantReadNode node) -> void
165
+ def visit_constant_read_node: (ConstantReadNode node) -> void
166
+
167
+ # : (ConstantTargetNode node) -> void
168
+ def visit_constant_target_node: (ConstantTargetNode node) -> void
169
+
170
+ # : (ConstantWriteNode node) -> void
171
+ def visit_constant_write_node: (ConstantWriteNode node) -> void
172
+
173
+ # : (DefNode node) -> void
174
+ def visit_def_node: (DefNode node) -> void
175
+
176
+ # : (DefinedNode node) -> void
177
+ def visit_defined_node: (DefinedNode node) -> void
178
+
179
+ # : (ElseNode node) -> void
180
+ def visit_else_node: (ElseNode node) -> void
181
+
182
+ # : (EmbeddedStatementsNode node) -> void
183
+ def visit_embedded_statements_node: (EmbeddedStatementsNode node) -> void
184
+
185
+ # : (EmbeddedVariableNode node) -> void
186
+ def visit_embedded_variable_node: (EmbeddedVariableNode node) -> void
187
+
188
+ # : (EnsureNode node) -> void
189
+ def visit_ensure_node: (EnsureNode node) -> void
190
+
191
+ # : (ErrorRecoveryNode node) -> void
192
+ def visit_error_recovery_node: (ErrorRecoveryNode node) -> void
193
+
194
+ # : (FalseNode node) -> void
195
+ def visit_false_node: (FalseNode node) -> void
196
+
197
+ # : (FindPatternNode node) -> void
198
+ def visit_find_pattern_node: (FindPatternNode node) -> void
199
+
200
+ # : (FlipFlopNode node) -> void
201
+ def visit_flip_flop_node: (FlipFlopNode node) -> void
202
+
203
+ # : (FloatNode node) -> void
204
+ def visit_float_node: (FloatNode node) -> void
205
+
206
+ # : (ForNode node) -> void
207
+ def visit_for_node: (ForNode node) -> void
208
+
209
+ # : (ForwardingArgumentsNode node) -> void
210
+ def visit_forwarding_arguments_node: (ForwardingArgumentsNode node) -> void
211
+
212
+ # : (ForwardingParameterNode node) -> void
213
+ def visit_forwarding_parameter_node: (ForwardingParameterNode node) -> void
214
+
215
+ # : (ForwardingSuperNode node) -> void
216
+ def visit_forwarding_super_node: (ForwardingSuperNode node) -> void
217
+
218
+ # : (GlobalVariableAndWriteNode node) -> void
219
+ def visit_global_variable_and_write_node: (GlobalVariableAndWriteNode node) -> void
220
+
221
+ # : (GlobalVariableOperatorWriteNode node) -> void
222
+ def visit_global_variable_operator_write_node: (GlobalVariableOperatorWriteNode node) -> void
223
+
224
+ # : (GlobalVariableOrWriteNode node) -> void
225
+ def visit_global_variable_or_write_node: (GlobalVariableOrWriteNode node) -> void
226
+
227
+ # : (GlobalVariableReadNode node) -> void
228
+ def visit_global_variable_read_node: (GlobalVariableReadNode node) -> void
229
+
230
+ # : (GlobalVariableTargetNode node) -> void
231
+ def visit_global_variable_target_node: (GlobalVariableTargetNode node) -> void
232
+
233
+ # : (GlobalVariableWriteNode node) -> void
234
+ def visit_global_variable_write_node: (GlobalVariableWriteNode node) -> void
235
+
236
+ # : (HashNode node) -> void
237
+ def visit_hash_node: (HashNode node) -> void
238
+
239
+ # : (HashPatternNode node) -> void
240
+ def visit_hash_pattern_node: (HashPatternNode node) -> void
241
+
242
+ # : (IfNode node) -> void
243
+ def visit_if_node: (IfNode node) -> void
244
+
245
+ # : (ImaginaryNode node) -> void
246
+ def visit_imaginary_node: (ImaginaryNode node) -> void
247
+
248
+ # : (ImplicitNode node) -> void
249
+ def visit_implicit_node: (ImplicitNode node) -> void
250
+
251
+ # : (ImplicitRestNode node) -> void
252
+ def visit_implicit_rest_node: (ImplicitRestNode node) -> void
253
+
254
+ # : (InNode node) -> void
255
+ def visit_in_node: (InNode node) -> void
256
+
257
+ # : (IndexAndWriteNode node) -> void
258
+ def visit_index_and_write_node: (IndexAndWriteNode node) -> void
259
+
260
+ # : (IndexOperatorWriteNode node) -> void
261
+ def visit_index_operator_write_node: (IndexOperatorWriteNode node) -> void
262
+
263
+ # : (IndexOrWriteNode node) -> void
264
+ def visit_index_or_write_node: (IndexOrWriteNode node) -> void
265
+
266
+ # : (IndexTargetNode node) -> void
267
+ def visit_index_target_node: (IndexTargetNode node) -> void
268
+
269
+ # : (InstanceVariableAndWriteNode node) -> void
270
+ def visit_instance_variable_and_write_node: (InstanceVariableAndWriteNode node) -> void
271
+
272
+ # : (InstanceVariableOperatorWriteNode node) -> void
273
+ def visit_instance_variable_operator_write_node: (InstanceVariableOperatorWriteNode node) -> void
274
+
275
+ # : (InstanceVariableOrWriteNode node) -> void
276
+ def visit_instance_variable_or_write_node: (InstanceVariableOrWriteNode node) -> void
277
+
278
+ # : (InstanceVariableReadNode node) -> void
279
+ def visit_instance_variable_read_node: (InstanceVariableReadNode node) -> void
280
+
281
+ # : (InstanceVariableTargetNode node) -> void
282
+ def visit_instance_variable_target_node: (InstanceVariableTargetNode node) -> void
283
+
284
+ # : (InstanceVariableWriteNode node) -> void
285
+ def visit_instance_variable_write_node: (InstanceVariableWriteNode node) -> void
286
+
287
+ # : (IntegerNode node) -> void
288
+ def visit_integer_node: (IntegerNode node) -> void
289
+
290
+ # : (InterpolatedMatchLastLineNode node) -> void
291
+ def visit_interpolated_match_last_line_node: (InterpolatedMatchLastLineNode node) -> void
292
+
293
+ # : (InterpolatedRegularExpressionNode node) -> void
294
+ def visit_interpolated_regular_expression_node: (InterpolatedRegularExpressionNode node) -> void
295
+
296
+ # : (InterpolatedStringNode node) -> void
297
+ def visit_interpolated_string_node: (InterpolatedStringNode node) -> void
298
+
299
+ # : (InterpolatedSymbolNode node) -> void
300
+ def visit_interpolated_symbol_node: (InterpolatedSymbolNode node) -> void
301
+
302
+ # : (InterpolatedXStringNode node) -> void
303
+ def visit_interpolated_x_string_node: (InterpolatedXStringNode node) -> void
304
+
305
+ # : (ItLocalVariableReadNode node) -> void
306
+ def visit_it_local_variable_read_node: (ItLocalVariableReadNode node) -> void
307
+
308
+ # : (ItParametersNode node) -> void
309
+ def visit_it_parameters_node: (ItParametersNode node) -> void
310
+
311
+ # : (KeywordHashNode node) -> void
312
+ def visit_keyword_hash_node: (KeywordHashNode node) -> void
313
+
314
+ # : (KeywordRestParameterNode node) -> void
315
+ def visit_keyword_rest_parameter_node: (KeywordRestParameterNode node) -> void
316
+
317
+ # : (LambdaNode node) -> void
318
+ def visit_lambda_node: (LambdaNode node) -> void
319
+
320
+ # : (LocalVariableAndWriteNode node) -> void
321
+ def visit_local_variable_and_write_node: (LocalVariableAndWriteNode node) -> void
322
+
323
+ # : (LocalVariableOperatorWriteNode node) -> void
324
+ def visit_local_variable_operator_write_node: (LocalVariableOperatorWriteNode node) -> void
325
+
326
+ # : (LocalVariableOrWriteNode node) -> void
327
+ def visit_local_variable_or_write_node: (LocalVariableOrWriteNode node) -> void
328
+
329
+ # : (LocalVariableReadNode node) -> void
330
+ def visit_local_variable_read_node: (LocalVariableReadNode node) -> void
331
+
332
+ # : (LocalVariableTargetNode node) -> void
333
+ def visit_local_variable_target_node: (LocalVariableTargetNode node) -> void
334
+
335
+ # : (LocalVariableWriteNode node) -> void
336
+ def visit_local_variable_write_node: (LocalVariableWriteNode node) -> void
337
+
338
+ # : (MatchLastLineNode node) -> void
339
+ def visit_match_last_line_node: (MatchLastLineNode node) -> void
340
+
341
+ # : (MatchPredicateNode node) -> void
342
+ def visit_match_predicate_node: (MatchPredicateNode node) -> void
343
+
344
+ # : (MatchRequiredNode node) -> void
345
+ def visit_match_required_node: (MatchRequiredNode node) -> void
346
+
347
+ # : (MatchWriteNode node) -> void
348
+ def visit_match_write_node: (MatchWriteNode node) -> void
349
+
350
+ # : (ModuleNode node) -> void
351
+ def visit_module_node: (ModuleNode node) -> void
352
+
353
+ # : (MultiTargetNode node) -> void
354
+ def visit_multi_target_node: (MultiTargetNode node) -> void
355
+
356
+ # : (MultiWriteNode node) -> void
357
+ def visit_multi_write_node: (MultiWriteNode node) -> void
358
+
359
+ # : (NextNode node) -> void
360
+ def visit_next_node: (NextNode node) -> void
361
+
362
+ # : (NilNode node) -> void
363
+ def visit_nil_node: (NilNode node) -> void
364
+
365
+ # : (NoBlockParameterNode node) -> void
366
+ def visit_no_block_parameter_node: (NoBlockParameterNode node) -> void
367
+
368
+ # : (NoKeywordsParameterNode node) -> void
369
+ def visit_no_keywords_parameter_node: (NoKeywordsParameterNode node) -> void
370
+
371
+ # : (NumberedParametersNode node) -> void
372
+ def visit_numbered_parameters_node: (NumberedParametersNode node) -> void
373
+
374
+ # : (NumberedReferenceReadNode node) -> void
375
+ def visit_numbered_reference_read_node: (NumberedReferenceReadNode node) -> void
376
+
377
+ # : (OptionalKeywordParameterNode node) -> void
378
+ def visit_optional_keyword_parameter_node: (OptionalKeywordParameterNode node) -> void
379
+
380
+ # : (OptionalParameterNode node) -> void
381
+ def visit_optional_parameter_node: (OptionalParameterNode node) -> void
382
+
383
+ # : (OrNode node) -> void
384
+ def visit_or_node: (OrNode node) -> void
385
+
386
+ # : (ParametersNode node) -> void
387
+ def visit_parameters_node: (ParametersNode node) -> void
388
+
389
+ # : (ParenthesesNode node) -> void
390
+ def visit_parentheses_node: (ParenthesesNode node) -> void
391
+
392
+ # : (PinnedExpressionNode node) -> void
393
+ def visit_pinned_expression_node: (PinnedExpressionNode node) -> void
394
+
395
+ # : (PinnedVariableNode node) -> void
396
+ def visit_pinned_variable_node: (PinnedVariableNode node) -> void
397
+
398
+ # : (PostExecutionNode node) -> void
399
+ def visit_post_execution_node: (PostExecutionNode node) -> void
400
+
401
+ # : (PreExecutionNode node) -> void
402
+ def visit_pre_execution_node: (PreExecutionNode node) -> void
403
+
404
+ # : (ProgramNode node) -> void
405
+ def visit_program_node: (ProgramNode node) -> void
406
+
407
+ # : (RangeNode node) -> void
408
+ def visit_range_node: (RangeNode node) -> void
409
+
410
+ # : (RationalNode node) -> void
411
+ def visit_rational_node: (RationalNode node) -> void
412
+
413
+ # : (RedoNode node) -> void
414
+ def visit_redo_node: (RedoNode node) -> void
415
+
416
+ # : (RegularExpressionNode node) -> void
417
+ def visit_regular_expression_node: (RegularExpressionNode node) -> void
418
+
419
+ # : (RequiredKeywordParameterNode node) -> void
420
+ def visit_required_keyword_parameter_node: (RequiredKeywordParameterNode node) -> void
421
+
422
+ # : (RequiredParameterNode node) -> void
423
+ def visit_required_parameter_node: (RequiredParameterNode node) -> void
424
+
425
+ # : (RescueModifierNode node) -> void
426
+ def visit_rescue_modifier_node: (RescueModifierNode node) -> void
427
+
428
+ # : (RescueNode node) -> void
429
+ def visit_rescue_node: (RescueNode node) -> void
430
+
431
+ # : (RestParameterNode node) -> void
432
+ def visit_rest_parameter_node: (RestParameterNode node) -> void
433
+
434
+ # : (RetryNode node) -> void
435
+ def visit_retry_node: (RetryNode node) -> void
436
+
437
+ # : (ReturnNode node) -> void
438
+ def visit_return_node: (ReturnNode node) -> void
439
+
440
+ # : (SelfNode node) -> void
441
+ def visit_self_node: (SelfNode node) -> void
442
+
443
+ # : (ShareableConstantNode node) -> void
444
+ def visit_shareable_constant_node: (ShareableConstantNode node) -> void
445
+
446
+ # : (SingletonClassNode node) -> void
447
+ def visit_singleton_class_node: (SingletonClassNode node) -> void
448
+
449
+ # : (SourceEncodingNode node) -> void
450
+ def visit_source_encoding_node: (SourceEncodingNode node) -> void
451
+
452
+ # : (SourceFileNode node) -> void
453
+ def visit_source_file_node: (SourceFileNode node) -> void
454
+
455
+ # : (SourceLineNode node) -> void
456
+ def visit_source_line_node: (SourceLineNode node) -> void
457
+
458
+ # : (SplatNode node) -> void
459
+ def visit_splat_node: (SplatNode node) -> void
460
+
461
+ # : (StatementsNode node) -> void
462
+ def visit_statements_node: (StatementsNode node) -> void
463
+
464
+ # : (StringNode node) -> void
465
+ def visit_string_node: (StringNode node) -> void
466
+
467
+ # : (SuperNode node) -> void
468
+ def visit_super_node: (SuperNode node) -> void
469
+
470
+ # : (SymbolNode node) -> void
471
+ def visit_symbol_node: (SymbolNode node) -> void
472
+
473
+ # : (TrueNode node) -> void
474
+ def visit_true_node: (TrueNode node) -> void
475
+
476
+ # : (UndefNode node) -> void
477
+ def visit_undef_node: (UndefNode node) -> void
478
+
479
+ # : (UnlessNode node) -> void
480
+ def visit_unless_node: (UnlessNode node) -> void
481
+
482
+ # : (UntilNode node) -> void
483
+ def visit_until_node: (UntilNode node) -> void
484
+
485
+ # : (WhenNode node) -> void
486
+ def visit_when_node: (WhenNode node) -> void
487
+
488
+ # : (WhileNode node) -> void
489
+ def visit_while_node: (WhileNode node) -> void
490
+
491
+ # : (XStringNode node) -> void
492
+ def visit_x_string_node: (XStringNode node) -> void
493
+
494
+ # : (YieldNode node) -> void
495
+ def visit_yield_node: (YieldNode node) -> void
496
+
497
+ private
498
+
499
+ # Compose a header for the given node.
500
+ #
501
+ # : (String name, node node) -> String
502
+ def inspect_node: (String name, node node) -> String
503
+
504
+ # Compose a string representing the given inner location field.
505
+ #
506
+ # : (Location? location) -> String
507
+ def inspect_location: (Location? location) -> String
508
+ end
509
+ end
@@ -0,0 +1,166 @@
1
+ # Generated from lib/prism/lex_compat.rb with RBS::Inline
2
+
3
+ module Prism
4
+ module Translation
5
+ class Ripper
6
+ EXPR_NONE: Integer
7
+ EXPR_BEG: Integer
8
+ EXPR_MID: Integer
9
+ EXPR_END: Integer
10
+ EXPR_CLASS: Integer
11
+ EXPR_VALUE: Integer
12
+ EXPR_ARG: Integer
13
+ EXPR_CMDARG: Integer
14
+ EXPR_ENDARG: Integer
15
+ EXPR_ENDFN: Integer
16
+
17
+ class Lexer < Ripper
18
+ class State
19
+ def self.[]: (Integer value) -> State
20
+ end
21
+ end
22
+
23
+ class LineAndColumnCache
24
+ def initialize: (Source source) -> void
25
+
26
+ def line_and_column: (Integer byte_offset) -> [ Integer, Integer ]
27
+ end
28
+ end
29
+ end
30
+
31
+ # This class is responsible for lexing the source using prism and then
32
+ # converting those tokens to be compatible with Ripper. In the vast majority
33
+ # of cases, this is a one-to-one mapping of the token type. Everything else
34
+ # generally lines up. However, there are a few cases that require special
35
+ # handling.
36
+ class LexCompat
37
+ # A token produced by the Ripper lexer that Prism is replicating.
38
+ type lex_compat_token = [ [ Integer, Integer ], Symbol, String, untyped ]
39
+
40
+ # A result class specialized for holding tokens produced by the lexer.
41
+ class Result < Prism::Result
42
+ # The list of tokens that were produced by the lexer.
43
+ attr_reader value: Array[lex_compat_token]
44
+
45
+ # Create a new lex compat result object with the given values.
46
+ #
47
+ # : (Array[lex_compat_token] value, Array[MagicComment] magic_comments, Location? data_loc, Array[ParseError] errors, Array[ParseWarning] warnings, bool continuable, Source source) -> void
48
+ def initialize: (Array[lex_compat_token] value, Array[MagicComment] magic_comments, Location? data_loc, Array[ParseError] errors, Array[ParseWarning] warnings, bool continuable, Source source) -> void
49
+
50
+ # Implement the hash pattern matching interface for Result.
51
+ #
52
+ # : (Array[Symbol]? keys) -> Hash[Symbol, untyped]
53
+ def deconstruct_keys: (Array[Symbol]? keys) -> Hash[Symbol, untyped]
54
+ end
55
+
56
+ # This is a mapping of prism token types to Ripper token types. This is a
57
+ # many-to-one mapping because we split up our token types, whereas Ripper
58
+ # tends to group them.
59
+ RIPPER: untyped
60
+
61
+ # A heredoc in this case is a list of tokens that belong to the body of the
62
+ # heredoc that should be appended onto the list of tokens when the heredoc
63
+ # closes.
64
+ module Heredoc
65
+ # Heredocs that are no dash or tilde heredocs are just a list of tokens.
66
+ # We need to keep them around so that we can insert them in the correct
67
+ # order back into the token stream and set the state of the last token to
68
+ # the state that the heredoc was opened in.
69
+ class PlainHeredoc
70
+ # :nodoc:
71
+ attr_reader tokens: Array[lex_compat_token]
72
+
73
+ # : () -> void
74
+ def initialize: () -> void
75
+
76
+ # : (lex_compat_token token) -> void
77
+ def <<: (lex_compat_token token) -> void
78
+
79
+ # : () -> Array[lex_compat_token]
80
+ def to_a: () -> Array[lex_compat_token]
81
+ end
82
+
83
+ # Dash heredocs are a little more complicated. They are a list of tokens
84
+ # that need to be split on "\\\n" to mimic Ripper's behavior. We also need
85
+ # to keep track of the state that the heredoc was opened in.
86
+ class DashHeredoc
87
+ # :nodoc:
88
+ attr_reader split: bool
89
+
90
+ attr_reader tokens: Array[lex_compat_token]
91
+
92
+ # : (bool split) -> void
93
+ def initialize: (bool split) -> void
94
+
95
+ # : (lex_compat_token token) -> void
96
+ def <<: (lex_compat_token token) -> void
97
+
98
+ # : () -> Array[lex_compat_token]
99
+ def to_a: () -> Array[lex_compat_token]
100
+ end
101
+
102
+ # Heredocs that are dedenting heredocs are a little more complicated.
103
+ # Ripper outputs on_ignored_sp tokens for the whitespace that is being
104
+ # removed from the output. prism only modifies the node itself and keeps
105
+ # the token the same. This simplifies prism, but makes comparing against
106
+ # Ripper much harder because there is a length mismatch.
107
+ #
108
+ # Fortunately, we already have to pull out the heredoc tokens in order to
109
+ # insert them into the stream in the correct order. As such, we can do
110
+ # some extra manipulation on the tokens to make them match Ripper's
111
+ # output by mirroring the dedent logic that Ripper uses.
112
+ class DedentingHeredoc
113
+ # :nodoc:
114
+ TAB_WIDTH: ::Integer
115
+
116
+ attr_reader tokens: Array[lex_compat_token]
117
+
118
+ attr_reader dedent_next: bool
119
+
120
+ attr_reader dedent: Integer?
121
+
122
+ attr_reader embexpr_balance: Integer
123
+
124
+ @ended_on_newline: bool
125
+
126
+ # : () -> void
127
+ def initialize: () -> void
128
+
129
+ # As tokens are coming in, we track the minimum amount of common leading
130
+ # whitespace on plain string content tokens. This allows us to later
131
+ # remove that amount of whitespace from the beginning of each line.
132
+ #
133
+ # : (lex_compat_token token) -> void
134
+ def <<: (lex_compat_token token) -> void
135
+
136
+ # : () -> Array[lex_compat_token]
137
+ def to_a: () -> Array[lex_compat_token]
138
+ end
139
+
140
+ # Here we will split between the two types of heredocs and return the
141
+ # object that will store their tokens.
142
+ #
143
+ # : (lex_compat_token opening) -> (PlainHeredoc | DashHeredoc | DedentingHeredoc)
144
+ def self.build: (lex_compat_token opening) -> (PlainHeredoc | DashHeredoc | DedentingHeredoc)
145
+ end
146
+
147
+ # In previous versions of Ruby, Ripper wouldn't flush the bom before the
148
+ # first token, so we had to have a hack in place to account for that.
149
+ BOM_FLUSHED: untyped
150
+
151
+ attr_reader options: Hash[Symbol, untyped]
152
+
153
+ @source: String
154
+
155
+ # : (String source, **untyped options) -> void
156
+ def initialize: (String source, **untyped options) -> void
157
+
158
+ # : () -> Result
159
+ def result: () -> Result
160
+
161
+ private
162
+
163
+ # : (Array[lex_compat_token] tokens, Source source, Location? data_loc, bool bom, Token? eof_token) -> Array[lex_compat_token]
164
+ def post_process_tokens: (Array[lex_compat_token] tokens, Source source, Location? data_loc, bool bom, Token? eof_token) -> Array[lex_compat_token]
165
+ end
166
+ end