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,305 @@
1
+ # Generated from lib/prism/desugar_compiler.rb with RBS::Inline
2
+
3
+ module Prism
4
+ class DesugarAndWriteNode
5
+ include DSL
6
+
7
+ attr_reader node: ClassVariableAndWriteNode | ConstantAndWriteNode | GlobalVariableAndWriteNode | InstanceVariableAndWriteNode | LocalVariableAndWriteNode
8
+
9
+ attr_reader default_source: Source
10
+
11
+ attr_reader read_class: Symbol
12
+
13
+ attr_reader write_class: Symbol
14
+
15
+ attr_reader arguments: Hash[Symbol, untyped]
16
+
17
+ # : ((ClassVariableAndWriteNode | ConstantAndWriteNode | GlobalVariableAndWriteNode | InstanceVariableAndWriteNode | LocalVariableAndWriteNode) node, Source default_source, Symbol read_class, Symbol write_class, **untyped arguments) -> void
18
+ def initialize: (ClassVariableAndWriteNode | ConstantAndWriteNode | GlobalVariableAndWriteNode | InstanceVariableAndWriteNode | LocalVariableAndWriteNode node, Source default_source, Symbol read_class, Symbol write_class, **untyped arguments) -> void
19
+
20
+ # Desugar `x &&= y` to `x && x = y`
21
+ #
22
+ # : () -> node
23
+ def compile: () -> node
24
+ end
25
+
26
+ class DesugarOrWriteDefinedNode
27
+ include DSL
28
+
29
+ attr_reader node: ClassVariableOrWriteNode | ConstantOrWriteNode | GlobalVariableOrWriteNode
30
+
31
+ attr_reader default_source: Source
32
+
33
+ attr_reader read_class: Symbol
34
+
35
+ attr_reader write_class: Symbol
36
+
37
+ attr_reader arguments: Hash[Symbol, untyped]
38
+
39
+ # : ((ClassVariableOrWriteNode | ConstantOrWriteNode | GlobalVariableOrWriteNode) node, Source default_source, Symbol read_class, Symbol write_class, **untyped arguments) -> void
40
+ def initialize: (ClassVariableOrWriteNode | ConstantOrWriteNode | GlobalVariableOrWriteNode node, Source default_source, Symbol read_class, Symbol write_class, **untyped arguments) -> void
41
+
42
+ # Desugar `x ||= y` to `defined?(x) ? x : x = y`
43
+ #
44
+ # : () -> node
45
+ def compile: () -> node
46
+ end
47
+
48
+ class DesugarOperatorWriteNode
49
+ include DSL
50
+
51
+ attr_reader node: ClassVariableOperatorWriteNode | ConstantOperatorWriteNode | GlobalVariableOperatorWriteNode | InstanceVariableOperatorWriteNode | LocalVariableOperatorWriteNode
52
+
53
+ attr_reader default_source: Source
54
+
55
+ attr_reader read_class: Symbol
56
+
57
+ attr_reader write_class: Symbol
58
+
59
+ attr_reader arguments: Hash[Symbol, untyped]
60
+
61
+ # : ((ClassVariableOperatorWriteNode | ConstantOperatorWriteNode | GlobalVariableOperatorWriteNode | InstanceVariableOperatorWriteNode | LocalVariableOperatorWriteNode) node, Source default_source, Symbol read_class, Symbol write_class, **untyped arguments) -> void
62
+ def initialize: (ClassVariableOperatorWriteNode | ConstantOperatorWriteNode | GlobalVariableOperatorWriteNode | InstanceVariableOperatorWriteNode | LocalVariableOperatorWriteNode node, Source default_source, Symbol read_class, Symbol write_class, **untyped arguments) -> void
63
+
64
+ # Desugar `x += y` to `x = x + y`
65
+ #
66
+ # : () -> node
67
+ def compile: () -> node
68
+ end
69
+
70
+ class DesugarOrWriteNode
71
+ include DSL
72
+
73
+ attr_reader node: InstanceVariableOrWriteNode | LocalVariableOrWriteNode
74
+
75
+ attr_reader default_source: Source
76
+
77
+ attr_reader read_class: Symbol
78
+
79
+ attr_reader write_class: Symbol
80
+
81
+ attr_reader arguments: Hash[Symbol, untyped]
82
+
83
+ # : ((InstanceVariableOrWriteNode | LocalVariableOrWriteNode) node, Source default_source, Symbol read_class, Symbol write_class, **untyped arguments) -> void
84
+ def initialize: (InstanceVariableOrWriteNode | LocalVariableOrWriteNode node, Source default_source, Symbol read_class, Symbol write_class, **untyped arguments) -> void
85
+
86
+ # Desugar `x ||= y` to `x || x = y`
87
+ #
88
+ # : () -> node
89
+ def compile: () -> node
90
+ end
91
+
92
+ class ClassVariableAndWriteNode
93
+ # : () -> node
94
+ def desugar: () -> node
95
+ end
96
+
97
+ class ClassVariableOrWriteNode
98
+ # : () -> node
99
+ def desugar: () -> node
100
+ end
101
+
102
+ class ClassVariableOperatorWriteNode
103
+ # : () -> node
104
+ def desugar: () -> node
105
+ end
106
+
107
+ class ConstantAndWriteNode
108
+ # : () -> node
109
+ def desugar: () -> node
110
+ end
111
+
112
+ class ConstantOrWriteNode
113
+ # : () -> node
114
+ def desugar: () -> node
115
+ end
116
+
117
+ class ConstantOperatorWriteNode
118
+ # : () -> node
119
+ def desugar: () -> node
120
+ end
121
+
122
+ class GlobalVariableAndWriteNode
123
+ # : () -> node
124
+ def desugar: () -> node
125
+ end
126
+
127
+ class GlobalVariableOrWriteNode
128
+ # : () -> node
129
+ def desugar: () -> node
130
+ end
131
+
132
+ class GlobalVariableOperatorWriteNode
133
+ # : () -> node
134
+ def desugar: () -> node
135
+ end
136
+
137
+ class InstanceVariableAndWriteNode
138
+ # : () -> node
139
+ def desugar: () -> node
140
+ end
141
+
142
+ class InstanceVariableOrWriteNode
143
+ # : () -> node
144
+ def desugar: () -> node
145
+ end
146
+
147
+ class InstanceVariableOperatorWriteNode
148
+ # : () -> node
149
+ def desugar: () -> node
150
+ end
151
+
152
+ class LocalVariableAndWriteNode
153
+ # : () -> node
154
+ def desugar: () -> node
155
+ end
156
+
157
+ class LocalVariableOrWriteNode
158
+ # : () -> node
159
+ def desugar: () -> node
160
+ end
161
+
162
+ class LocalVariableOperatorWriteNode
163
+ # : () -> node
164
+ def desugar: () -> node
165
+ end
166
+
167
+ # DesugarCompiler is a compiler that desugars Ruby code into a more primitive
168
+ # form. This is useful for consumers that want to deal with fewer node types.
169
+ class DesugarCompiler < MutationCompiler
170
+ # `@@foo &&= bar`
171
+ #
172
+ # becomes
173
+ #
174
+ # `@@foo && @@foo = bar`
175
+ #
176
+ # : (ClassVariableAndWriteNode node) -> node
177
+ def visit_class_variable_and_write_node: (ClassVariableAndWriteNode node) -> node
178
+
179
+ # `@@foo ||= bar`
180
+ #
181
+ # becomes
182
+ #
183
+ # `defined?(@@foo) ? @@foo : @@foo = bar`
184
+ #
185
+ # : (ClassVariableOrWriteNode node) -> node
186
+ def visit_class_variable_or_write_node: (ClassVariableOrWriteNode node) -> node
187
+
188
+ # `@@foo += bar`
189
+ #
190
+ # becomes
191
+ #
192
+ # `@@foo = @@foo + bar`
193
+ #
194
+ # : (ClassVariableOperatorWriteNode node) -> node
195
+ def visit_class_variable_operator_write_node: (ClassVariableOperatorWriteNode node) -> node
196
+
197
+ # `Foo &&= bar`
198
+ #
199
+ # becomes
200
+ #
201
+ # `Foo && Foo = bar`
202
+ #
203
+ # : (ConstantAndWriteNode node) -> node
204
+ def visit_constant_and_write_node: (ConstantAndWriteNode node) -> node
205
+
206
+ # `Foo ||= bar`
207
+ #
208
+ # becomes
209
+ #
210
+ # `defined?(Foo) ? Foo : Foo = bar`
211
+ #
212
+ # : (ConstantOrWriteNode node) -> node
213
+ def visit_constant_or_write_node: (ConstantOrWriteNode node) -> node
214
+
215
+ # `Foo += bar`
216
+ #
217
+ # becomes
218
+ #
219
+ # `Foo = Foo + bar`
220
+ #
221
+ # : (ConstantOperatorWriteNode node) -> node
222
+ def visit_constant_operator_write_node: (ConstantOperatorWriteNode node) -> node
223
+
224
+ # `$foo &&= bar`
225
+ #
226
+ # becomes
227
+ #
228
+ # `$foo && $foo = bar`
229
+ #
230
+ # : (GlobalVariableAndWriteNode node) -> node
231
+ def visit_global_variable_and_write_node: (GlobalVariableAndWriteNode node) -> node
232
+
233
+ # `$foo ||= bar`
234
+ #
235
+ # becomes
236
+ #
237
+ # `defined?($foo) ? $foo : $foo = bar`
238
+ #
239
+ # : (GlobalVariableOrWriteNode node) -> node
240
+ def visit_global_variable_or_write_node: (GlobalVariableOrWriteNode node) -> node
241
+
242
+ # `$foo += bar`
243
+ #
244
+ # becomes
245
+ #
246
+ # `$foo = $foo + bar`
247
+ #
248
+ # : (GlobalVariableOperatorWriteNode node) -> node
249
+ def visit_global_variable_operator_write_node: (GlobalVariableOperatorWriteNode node) -> node
250
+
251
+ # `@foo &&= bar`
252
+ #
253
+ # becomes
254
+ #
255
+ # `@foo && @foo = bar`
256
+ #
257
+ # : (InstanceVariableAndWriteNode node) -> node
258
+ def visit_instance_variable_and_write_node: (InstanceVariableAndWriteNode node) -> node
259
+
260
+ # `@foo ||= bar`
261
+ #
262
+ # becomes
263
+ #
264
+ # `@foo || @foo = bar`
265
+ #
266
+ # : (InstanceVariableOrWriteNode node) -> node
267
+ def visit_instance_variable_or_write_node: (InstanceVariableOrWriteNode node) -> node
268
+
269
+ # `@foo += bar`
270
+ #
271
+ # becomes
272
+ #
273
+ # `@foo = @foo + bar`
274
+ #
275
+ # : (InstanceVariableOperatorWriteNode node) -> node
276
+ def visit_instance_variable_operator_write_node: (InstanceVariableOperatorWriteNode node) -> node
277
+
278
+ # `foo &&= bar`
279
+ #
280
+ # becomes
281
+ #
282
+ # `foo && foo = bar`
283
+ #
284
+ # : (LocalVariableAndWriteNode node) -> node
285
+ def visit_local_variable_and_write_node: (LocalVariableAndWriteNode node) -> node
286
+
287
+ # `foo ||= bar`
288
+ #
289
+ # becomes
290
+ #
291
+ # `foo || foo = bar`
292
+ #
293
+ # : (LocalVariableOrWriteNode node) -> node
294
+ def visit_local_variable_or_write_node: (LocalVariableOrWriteNode node) -> node
295
+
296
+ # `foo += bar`
297
+ #
298
+ # becomes
299
+ #
300
+ # `foo = foo + bar`
301
+ #
302
+ # : (LocalVariableOperatorWriteNode node) -> node
303
+ def visit_local_variable_operator_write_node: (LocalVariableOperatorWriteNode node) -> node
304
+ end
305
+ end