prism 0.29.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +115 -1
- data/CONTRIBUTING.md +0 -4
- data/Makefile +1 -1
- data/README.md +4 -0
- data/config.yml +920 -148
- data/docs/build_system.md +8 -11
- data/docs/fuzzing.md +1 -1
- data/docs/parsing_rules.md +4 -1
- data/docs/relocation.md +34 -0
- data/docs/ripper_translation.md +22 -0
- data/docs/serialization.md +3 -0
- data/ext/prism/api_node.c +2863 -2079
- data/ext/prism/extconf.rb +14 -37
- data/ext/prism/extension.c +241 -391
- data/ext/prism/extension.h +2 -2
- data/include/prism/ast.h +2156 -453
- data/include/prism/defines.h +58 -7
- data/include/prism/diagnostic.h +24 -6
- data/include/prism/node.h +0 -21
- data/include/prism/options.h +94 -3
- data/include/prism/parser.h +82 -40
- data/include/prism/regexp.h +18 -8
- data/include/prism/static_literals.h +3 -2
- data/include/prism/util/pm_char.h +1 -2
- data/include/prism/util/pm_constant_pool.h +0 -8
- data/include/prism/util/pm_integer.h +22 -15
- data/include/prism/util/pm_newline_list.h +11 -0
- data/include/prism/util/pm_string.h +28 -12
- data/include/prism/version.h +3 -3
- data/include/prism.h +47 -11
- data/lib/prism/compiler.rb +3 -0
- data/lib/prism/desugar_compiler.rb +111 -74
- data/lib/prism/dispatcher.rb +16 -1
- data/lib/prism/dot_visitor.rb +55 -34
- data/lib/prism/dsl.rb +660 -468
- data/lib/prism/ffi.rb +113 -8
- data/lib/prism/inspect_visitor.rb +296 -64
- data/lib/prism/lex_compat.rb +1 -1
- data/lib/prism/mutation_compiler.rb +11 -6
- data/lib/prism/node.rb +4262 -5023
- data/lib/prism/node_ext.rb +91 -14
- data/lib/prism/parse_result/comments.rb +0 -7
- data/lib/prism/parse_result/errors.rb +65 -0
- data/lib/prism/parse_result/newlines.rb +101 -11
- data/lib/prism/parse_result.rb +183 -6
- data/lib/prism/reflection.rb +12 -10
- data/lib/prism/relocation.rb +504 -0
- data/lib/prism/serialize.rb +496 -609
- data/lib/prism/string_query.rb +30 -0
- data/lib/prism/translation/parser/compiler.rb +185 -155
- data/lib/prism/translation/parser/lexer.rb +26 -4
- data/lib/prism/translation/parser.rb +9 -4
- data/lib/prism/translation/ripper.rb +23 -25
- data/lib/prism/translation/ruby_parser.rb +86 -17
- data/lib/prism/visitor.rb +3 -0
- data/lib/prism.rb +6 -8
- data/prism.gemspec +9 -5
- data/rbi/prism/dsl.rbi +521 -0
- data/rbi/prism/node.rbi +1115 -1120
- data/rbi/prism/parse_result.rbi +29 -0
- data/rbi/prism/string_query.rbi +12 -0
- data/rbi/prism/visitor.rbi +3 -0
- data/rbi/prism.rbi +36 -30
- data/sig/prism/dsl.rbs +190 -303
- data/sig/prism/mutation_compiler.rbs +1 -0
- data/sig/prism/node.rbs +678 -632
- data/sig/prism/parse_result.rbs +22 -0
- data/sig/prism/relocation.rbs +185 -0
- data/sig/prism/string_query.rbs +11 -0
- data/sig/prism/visitor.rbs +1 -0
- data/sig/prism.rbs +103 -64
- data/src/diagnostic.c +64 -28
- data/src/node.c +502 -1739
- data/src/options.c +76 -27
- data/src/prettyprint.c +188 -112
- data/src/prism.c +3376 -2293
- data/src/regexp.c +208 -71
- data/src/serialize.c +182 -50
- data/src/static_literals.c +64 -85
- data/src/token_type.c +4 -4
- data/src/util/pm_char.c +1 -1
- data/src/util/pm_constant_pool.c +0 -8
- data/src/util/pm_integer.c +53 -25
- data/src/util/pm_newline_list.c +29 -0
- data/src/util/pm_string.c +131 -80
- data/src/util/pm_strpbrk.c +32 -6
- metadata +11 -7
- data/include/prism/util/pm_string_list.h +0 -44
- data/lib/prism/debug.rb +0 -249
- data/lib/prism/translation/parser/rubocop.rb +0 -73
- data/src/util/pm_string_list.c +0 -28
data/src/node.c
CHANGED
@@ -1,27 +1,14 @@
|
|
1
|
-
|
1
|
+
/*----------------------------------------------------------------------------*/
|
2
2
|
/* This file is generated by the templates/template.rb script and should not */
|
3
3
|
/* be modified manually. See */
|
4
4
|
/* templates/src/node.c.erb */
|
5
5
|
/* if you are looking to modify the */
|
6
6
|
/* template */
|
7
|
-
|
7
|
+
/*----------------------------------------------------------------------------*/
|
8
8
|
|
9
|
-
#line 2 "node.c.erb"
|
9
|
+
#line 2 "prism/templates/src/node.c.erb"
|
10
10
|
#include "prism/node.h"
|
11
11
|
|
12
|
-
static void
|
13
|
-
pm_node_memsize_node(pm_node_t *node, pm_memsize_t *memsize);
|
14
|
-
|
15
|
-
/**
|
16
|
-
* Calculate the size of the node list in bytes.
|
17
|
-
*/
|
18
|
-
static size_t
|
19
|
-
pm_node_list_memsize(pm_node_list_t *node_list, pm_memsize_t *memsize) {
|
20
|
-
pm_node_t *node;
|
21
|
-
PM_NODE_LIST_FOREACH(node_list, index, node) pm_node_memsize_node(node, memsize);
|
22
|
-
return sizeof(pm_node_list_t) + (node_list->capacity * sizeof(pm_node_t *));
|
23
|
-
}
|
24
|
-
|
25
12
|
/**
|
26
13
|
* Attempts to grow the node list to the next size. If there is already
|
27
14
|
* capacity in the list, this function does nothing. Otherwise it reallocates
|
@@ -126,47 +113,47 @@ pm_node_list_destroy(pm_parser_t *parser, pm_node_list_t *list) {
|
|
126
113
|
PRISM_EXPORTED_FUNCTION void
|
127
114
|
pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
128
115
|
switch (PM_NODE_TYPE(node)) {
|
129
|
-
#line
|
116
|
+
#line 110 "prism/templates/src/node.c.erb"
|
130
117
|
case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
|
131
118
|
pm_alias_global_variable_node_t *cast = (pm_alias_global_variable_node_t *) node;
|
132
119
|
pm_node_destroy(parser, (pm_node_t *)cast->new_name);
|
133
120
|
pm_node_destroy(parser, (pm_node_t *)cast->old_name);
|
134
121
|
break;
|
135
122
|
}
|
136
|
-
#line
|
123
|
+
#line 110 "prism/templates/src/node.c.erb"
|
137
124
|
case PM_ALIAS_METHOD_NODE: {
|
138
125
|
pm_alias_method_node_t *cast = (pm_alias_method_node_t *) node;
|
139
126
|
pm_node_destroy(parser, (pm_node_t *)cast->new_name);
|
140
127
|
pm_node_destroy(parser, (pm_node_t *)cast->old_name);
|
141
128
|
break;
|
142
129
|
}
|
143
|
-
#line
|
130
|
+
#line 110 "prism/templates/src/node.c.erb"
|
144
131
|
case PM_ALTERNATION_PATTERN_NODE: {
|
145
132
|
pm_alternation_pattern_node_t *cast = (pm_alternation_pattern_node_t *) node;
|
146
133
|
pm_node_destroy(parser, (pm_node_t *)cast->left);
|
147
134
|
pm_node_destroy(parser, (pm_node_t *)cast->right);
|
148
135
|
break;
|
149
136
|
}
|
150
|
-
#line
|
137
|
+
#line 110 "prism/templates/src/node.c.erb"
|
151
138
|
case PM_AND_NODE: {
|
152
139
|
pm_and_node_t *cast = (pm_and_node_t *) node;
|
153
140
|
pm_node_destroy(parser, (pm_node_t *)cast->left);
|
154
141
|
pm_node_destroy(parser, (pm_node_t *)cast->right);
|
155
142
|
break;
|
156
143
|
}
|
157
|
-
#line
|
144
|
+
#line 110 "prism/templates/src/node.c.erb"
|
158
145
|
case PM_ARGUMENTS_NODE: {
|
159
146
|
pm_arguments_node_t *cast = (pm_arguments_node_t *) node;
|
160
147
|
pm_node_list_destroy(parser, &cast->arguments);
|
161
148
|
break;
|
162
149
|
}
|
163
|
-
#line
|
150
|
+
#line 110 "prism/templates/src/node.c.erb"
|
164
151
|
case PM_ARRAY_NODE: {
|
165
152
|
pm_array_node_t *cast = (pm_array_node_t *) node;
|
166
153
|
pm_node_list_destroy(parser, &cast->elements);
|
167
154
|
break;
|
168
155
|
}
|
169
|
-
#line
|
156
|
+
#line 110 "prism/templates/src/node.c.erb"
|
170
157
|
case PM_ARRAY_PATTERN_NODE: {
|
171
158
|
pm_array_pattern_node_t *cast = (pm_array_pattern_node_t *) node;
|
172
159
|
if (cast->constant != NULL) {
|
@@ -179,14 +166,14 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
179
166
|
pm_node_list_destroy(parser, &cast->posts);
|
180
167
|
break;
|
181
168
|
}
|
182
|
-
#line
|
169
|
+
#line 110 "prism/templates/src/node.c.erb"
|
183
170
|
case PM_ASSOC_NODE: {
|
184
171
|
pm_assoc_node_t *cast = (pm_assoc_node_t *) node;
|
185
172
|
pm_node_destroy(parser, (pm_node_t *)cast->key);
|
186
173
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
187
174
|
break;
|
188
175
|
}
|
189
|
-
#line
|
176
|
+
#line 110 "prism/templates/src/node.c.erb"
|
190
177
|
case PM_ASSOC_SPLAT_NODE: {
|
191
178
|
pm_assoc_splat_node_t *cast = (pm_assoc_splat_node_t *) node;
|
192
179
|
if (cast->value != NULL) {
|
@@ -194,11 +181,11 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
194
181
|
}
|
195
182
|
break;
|
196
183
|
}
|
197
|
-
#line
|
184
|
+
#line 110 "prism/templates/src/node.c.erb"
|
198
185
|
case PM_BACK_REFERENCE_READ_NODE: {
|
199
186
|
break;
|
200
187
|
}
|
201
|
-
#line
|
188
|
+
#line 110 "prism/templates/src/node.c.erb"
|
202
189
|
case PM_BEGIN_NODE: {
|
203
190
|
pm_begin_node_t *cast = (pm_begin_node_t *) node;
|
204
191
|
if (cast->statements != NULL) {
|
@@ -215,7 +202,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
215
202
|
}
|
216
203
|
break;
|
217
204
|
}
|
218
|
-
#line
|
205
|
+
#line 110 "prism/templates/src/node.c.erb"
|
219
206
|
case PM_BLOCK_ARGUMENT_NODE: {
|
220
207
|
pm_block_argument_node_t *cast = (pm_block_argument_node_t *) node;
|
221
208
|
if (cast->expression != NULL) {
|
@@ -223,11 +210,11 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
223
210
|
}
|
224
211
|
break;
|
225
212
|
}
|
226
|
-
#line
|
213
|
+
#line 110 "prism/templates/src/node.c.erb"
|
227
214
|
case PM_BLOCK_LOCAL_VARIABLE_NODE: {
|
228
215
|
break;
|
229
216
|
}
|
230
|
-
#line
|
217
|
+
#line 110 "prism/templates/src/node.c.erb"
|
231
218
|
case PM_BLOCK_NODE: {
|
232
219
|
pm_block_node_t *cast = (pm_block_node_t *) node;
|
233
220
|
pm_constant_id_list_free(&cast->locals);
|
@@ -239,11 +226,11 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
239
226
|
}
|
240
227
|
break;
|
241
228
|
}
|
242
|
-
#line
|
229
|
+
#line 110 "prism/templates/src/node.c.erb"
|
243
230
|
case PM_BLOCK_PARAMETER_NODE: {
|
244
231
|
break;
|
245
232
|
}
|
246
|
-
#line
|
233
|
+
#line 110 "prism/templates/src/node.c.erb"
|
247
234
|
case PM_BLOCK_PARAMETERS_NODE: {
|
248
235
|
pm_block_parameters_node_t *cast = (pm_block_parameters_node_t *) node;
|
249
236
|
if (cast->parameters != NULL) {
|
@@ -252,7 +239,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
252
239
|
pm_node_list_destroy(parser, &cast->locals);
|
253
240
|
break;
|
254
241
|
}
|
255
|
-
#line
|
242
|
+
#line 110 "prism/templates/src/node.c.erb"
|
256
243
|
case PM_BREAK_NODE: {
|
257
244
|
pm_break_node_t *cast = (pm_break_node_t *) node;
|
258
245
|
if (cast->arguments != NULL) {
|
@@ -260,7 +247,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
260
247
|
}
|
261
248
|
break;
|
262
249
|
}
|
263
|
-
#line
|
250
|
+
#line 110 "prism/templates/src/node.c.erb"
|
264
251
|
case PM_CALL_AND_WRITE_NODE: {
|
265
252
|
pm_call_and_write_node_t *cast = (pm_call_and_write_node_t *) node;
|
266
253
|
if (cast->receiver != NULL) {
|
@@ -269,7 +256,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
269
256
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
270
257
|
break;
|
271
258
|
}
|
272
|
-
#line
|
259
|
+
#line 110 "prism/templates/src/node.c.erb"
|
273
260
|
case PM_CALL_NODE: {
|
274
261
|
pm_call_node_t *cast = (pm_call_node_t *) node;
|
275
262
|
if (cast->receiver != NULL) {
|
@@ -283,7 +270,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
283
270
|
}
|
284
271
|
break;
|
285
272
|
}
|
286
|
-
#line
|
273
|
+
#line 110 "prism/templates/src/node.c.erb"
|
287
274
|
case PM_CALL_OPERATOR_WRITE_NODE: {
|
288
275
|
pm_call_operator_write_node_t *cast = (pm_call_operator_write_node_t *) node;
|
289
276
|
if (cast->receiver != NULL) {
|
@@ -292,7 +279,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
292
279
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
293
280
|
break;
|
294
281
|
}
|
295
|
-
#line
|
282
|
+
#line 110 "prism/templates/src/node.c.erb"
|
296
283
|
case PM_CALL_OR_WRITE_NODE: {
|
297
284
|
pm_call_or_write_node_t *cast = (pm_call_or_write_node_t *) node;
|
298
285
|
if (cast->receiver != NULL) {
|
@@ -301,44 +288,44 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
301
288
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
302
289
|
break;
|
303
290
|
}
|
304
|
-
#line
|
291
|
+
#line 110 "prism/templates/src/node.c.erb"
|
305
292
|
case PM_CALL_TARGET_NODE: {
|
306
293
|
pm_call_target_node_t *cast = (pm_call_target_node_t *) node;
|
307
294
|
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
308
295
|
break;
|
309
296
|
}
|
310
|
-
#line
|
297
|
+
#line 110 "prism/templates/src/node.c.erb"
|
311
298
|
case PM_CAPTURE_PATTERN_NODE: {
|
312
299
|
pm_capture_pattern_node_t *cast = (pm_capture_pattern_node_t *) node;
|
313
300
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
314
301
|
pm_node_destroy(parser, (pm_node_t *)cast->target);
|
315
302
|
break;
|
316
303
|
}
|
317
|
-
#line
|
304
|
+
#line 110 "prism/templates/src/node.c.erb"
|
318
305
|
case PM_CASE_MATCH_NODE: {
|
319
306
|
pm_case_match_node_t *cast = (pm_case_match_node_t *) node;
|
320
307
|
if (cast->predicate != NULL) {
|
321
308
|
pm_node_destroy(parser, (pm_node_t *)cast->predicate);
|
322
309
|
}
|
323
310
|
pm_node_list_destroy(parser, &cast->conditions);
|
324
|
-
if (cast->
|
325
|
-
pm_node_destroy(parser, (pm_node_t *)cast->
|
311
|
+
if (cast->else_clause != NULL) {
|
312
|
+
pm_node_destroy(parser, (pm_node_t *)cast->else_clause);
|
326
313
|
}
|
327
314
|
break;
|
328
315
|
}
|
329
|
-
#line
|
316
|
+
#line 110 "prism/templates/src/node.c.erb"
|
330
317
|
case PM_CASE_NODE: {
|
331
318
|
pm_case_node_t *cast = (pm_case_node_t *) node;
|
332
319
|
if (cast->predicate != NULL) {
|
333
320
|
pm_node_destroy(parser, (pm_node_t *)cast->predicate);
|
334
321
|
}
|
335
322
|
pm_node_list_destroy(parser, &cast->conditions);
|
336
|
-
if (cast->
|
337
|
-
pm_node_destroy(parser, (pm_node_t *)cast->
|
323
|
+
if (cast->else_clause != NULL) {
|
324
|
+
pm_node_destroy(parser, (pm_node_t *)cast->else_clause);
|
338
325
|
}
|
339
326
|
break;
|
340
327
|
}
|
341
|
-
#line
|
328
|
+
#line 110 "prism/templates/src/node.c.erb"
|
342
329
|
case PM_CLASS_NODE: {
|
343
330
|
pm_class_node_t *cast = (pm_class_node_t *) node;
|
344
331
|
pm_constant_id_list_free(&cast->locals);
|
@@ -351,64 +338,64 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
351
338
|
}
|
352
339
|
break;
|
353
340
|
}
|
354
|
-
#line
|
341
|
+
#line 110 "prism/templates/src/node.c.erb"
|
355
342
|
case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
|
356
343
|
pm_class_variable_and_write_node_t *cast = (pm_class_variable_and_write_node_t *) node;
|
357
344
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
358
345
|
break;
|
359
346
|
}
|
360
|
-
#line
|
347
|
+
#line 110 "prism/templates/src/node.c.erb"
|
361
348
|
case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
362
349
|
pm_class_variable_operator_write_node_t *cast = (pm_class_variable_operator_write_node_t *) node;
|
363
350
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
364
351
|
break;
|
365
352
|
}
|
366
|
-
#line
|
353
|
+
#line 110 "prism/templates/src/node.c.erb"
|
367
354
|
case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
|
368
355
|
pm_class_variable_or_write_node_t *cast = (pm_class_variable_or_write_node_t *) node;
|
369
356
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
370
357
|
break;
|
371
358
|
}
|
372
|
-
#line
|
359
|
+
#line 110 "prism/templates/src/node.c.erb"
|
373
360
|
case PM_CLASS_VARIABLE_READ_NODE: {
|
374
361
|
break;
|
375
362
|
}
|
376
|
-
#line
|
363
|
+
#line 110 "prism/templates/src/node.c.erb"
|
377
364
|
case PM_CLASS_VARIABLE_TARGET_NODE: {
|
378
365
|
break;
|
379
366
|
}
|
380
|
-
#line
|
367
|
+
#line 110 "prism/templates/src/node.c.erb"
|
381
368
|
case PM_CLASS_VARIABLE_WRITE_NODE: {
|
382
369
|
pm_class_variable_write_node_t *cast = (pm_class_variable_write_node_t *) node;
|
383
370
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
384
371
|
break;
|
385
372
|
}
|
386
|
-
#line
|
373
|
+
#line 110 "prism/templates/src/node.c.erb"
|
387
374
|
case PM_CONSTANT_AND_WRITE_NODE: {
|
388
375
|
pm_constant_and_write_node_t *cast = (pm_constant_and_write_node_t *) node;
|
389
376
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
390
377
|
break;
|
391
378
|
}
|
392
|
-
#line
|
379
|
+
#line 110 "prism/templates/src/node.c.erb"
|
393
380
|
case PM_CONSTANT_OPERATOR_WRITE_NODE: {
|
394
381
|
pm_constant_operator_write_node_t *cast = (pm_constant_operator_write_node_t *) node;
|
395
382
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
396
383
|
break;
|
397
384
|
}
|
398
|
-
#line
|
385
|
+
#line 110 "prism/templates/src/node.c.erb"
|
399
386
|
case PM_CONSTANT_OR_WRITE_NODE: {
|
400
387
|
pm_constant_or_write_node_t *cast = (pm_constant_or_write_node_t *) node;
|
401
388
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
402
389
|
break;
|
403
390
|
}
|
404
|
-
#line
|
391
|
+
#line 110 "prism/templates/src/node.c.erb"
|
405
392
|
case PM_CONSTANT_PATH_AND_WRITE_NODE: {
|
406
393
|
pm_constant_path_and_write_node_t *cast = (pm_constant_path_and_write_node_t *) node;
|
407
394
|
pm_node_destroy(parser, (pm_node_t *)cast->target);
|
408
395
|
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
409
396
|
break;
|
410
397
|
}
|
411
|
-
#line
|
398
|
+
#line 110 "prism/templates/src/node.c.erb"
|
412
399
|
case PM_CONSTANT_PATH_NODE: {
|
413
400
|
pm_constant_path_node_t *cast = (pm_constant_path_node_t *) node;
|
414
401
|
if (cast->parent != NULL) {
|
@@ -416,2094 +403,810 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
416
403
|
}
|
417
404
|
break;
|
418
405
|
}
|
419
|
-
#line
|
420
|
-
case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
421
|
-
pm_constant_path_operator_write_node_t *cast = (pm_constant_path_operator_write_node_t *) node;
|
422
|
-
pm_node_destroy(parser, (pm_node_t *)cast->target);
|
423
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
424
|
-
break;
|
425
|
-
}
|
426
|
-
#line 123 "node.c.erb"
|
427
|
-
case PM_CONSTANT_PATH_OR_WRITE_NODE: {
|
428
|
-
pm_constant_path_or_write_node_t *cast = (pm_constant_path_or_write_node_t *) node;
|
429
|
-
pm_node_destroy(parser, (pm_node_t *)cast->target);
|
430
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
431
|
-
break;
|
432
|
-
}
|
433
|
-
#line 123 "node.c.erb"
|
434
|
-
case PM_CONSTANT_PATH_TARGET_NODE: {
|
435
|
-
pm_constant_path_target_node_t *cast = (pm_constant_path_target_node_t *) node;
|
436
|
-
if (cast->parent != NULL) {
|
437
|
-
pm_node_destroy(parser, (pm_node_t *)cast->parent);
|
438
|
-
}
|
439
|
-
break;
|
440
|
-
}
|
441
|
-
#line 123 "node.c.erb"
|
442
|
-
case PM_CONSTANT_PATH_WRITE_NODE: {
|
443
|
-
pm_constant_path_write_node_t *cast = (pm_constant_path_write_node_t *) node;
|
444
|
-
pm_node_destroy(parser, (pm_node_t *)cast->target);
|
445
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
446
|
-
break;
|
447
|
-
}
|
448
|
-
#line 123 "node.c.erb"
|
449
|
-
case PM_CONSTANT_READ_NODE: {
|
450
|
-
break;
|
451
|
-
}
|
452
|
-
#line 123 "node.c.erb"
|
453
|
-
case PM_CONSTANT_TARGET_NODE: {
|
454
|
-
break;
|
455
|
-
}
|
456
|
-
#line 123 "node.c.erb"
|
457
|
-
case PM_CONSTANT_WRITE_NODE: {
|
458
|
-
pm_constant_write_node_t *cast = (pm_constant_write_node_t *) node;
|
459
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
460
|
-
break;
|
461
|
-
}
|
462
|
-
#line 123 "node.c.erb"
|
463
|
-
case PM_DEF_NODE: {
|
464
|
-
pm_def_node_t *cast = (pm_def_node_t *) node;
|
465
|
-
if (cast->receiver != NULL) {
|
466
|
-
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
467
|
-
}
|
468
|
-
if (cast->parameters != NULL) {
|
469
|
-
pm_node_destroy(parser, (pm_node_t *)cast->parameters);
|
470
|
-
}
|
471
|
-
if (cast->body != NULL) {
|
472
|
-
pm_node_destroy(parser, (pm_node_t *)cast->body);
|
473
|
-
}
|
474
|
-
pm_constant_id_list_free(&cast->locals);
|
475
|
-
break;
|
476
|
-
}
|
477
|
-
#line 123 "node.c.erb"
|
478
|
-
case PM_DEFINED_NODE: {
|
479
|
-
pm_defined_node_t *cast = (pm_defined_node_t *) node;
|
480
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
481
|
-
break;
|
482
|
-
}
|
483
|
-
#line 123 "node.c.erb"
|
484
|
-
case PM_ELSE_NODE: {
|
485
|
-
pm_else_node_t *cast = (pm_else_node_t *) node;
|
486
|
-
if (cast->statements != NULL) {
|
487
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
488
|
-
}
|
489
|
-
break;
|
490
|
-
}
|
491
|
-
#line 123 "node.c.erb"
|
492
|
-
case PM_EMBEDDED_STATEMENTS_NODE: {
|
493
|
-
pm_embedded_statements_node_t *cast = (pm_embedded_statements_node_t *) node;
|
494
|
-
if (cast->statements != NULL) {
|
495
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
496
|
-
}
|
497
|
-
break;
|
498
|
-
}
|
499
|
-
#line 123 "node.c.erb"
|
500
|
-
case PM_EMBEDDED_VARIABLE_NODE: {
|
501
|
-
pm_embedded_variable_node_t *cast = (pm_embedded_variable_node_t *) node;
|
502
|
-
pm_node_destroy(parser, (pm_node_t *)cast->variable);
|
503
|
-
break;
|
504
|
-
}
|
505
|
-
#line 123 "node.c.erb"
|
506
|
-
case PM_ENSURE_NODE: {
|
507
|
-
pm_ensure_node_t *cast = (pm_ensure_node_t *) node;
|
508
|
-
if (cast->statements != NULL) {
|
509
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
510
|
-
}
|
511
|
-
break;
|
512
|
-
}
|
513
|
-
#line 123 "node.c.erb"
|
514
|
-
case PM_FALSE_NODE: {
|
515
|
-
break;
|
516
|
-
}
|
517
|
-
#line 123 "node.c.erb"
|
518
|
-
case PM_FIND_PATTERN_NODE: {
|
519
|
-
pm_find_pattern_node_t *cast = (pm_find_pattern_node_t *) node;
|
520
|
-
if (cast->constant != NULL) {
|
521
|
-
pm_node_destroy(parser, (pm_node_t *)cast->constant);
|
522
|
-
}
|
523
|
-
pm_node_destroy(parser, (pm_node_t *)cast->left);
|
524
|
-
pm_node_list_destroy(parser, &cast->requireds);
|
525
|
-
pm_node_destroy(parser, (pm_node_t *)cast->right);
|
526
|
-
break;
|
527
|
-
}
|
528
|
-
#line 123 "node.c.erb"
|
529
|
-
case PM_FLIP_FLOP_NODE: {
|
530
|
-
pm_flip_flop_node_t *cast = (pm_flip_flop_node_t *) node;
|
531
|
-
if (cast->left != NULL) {
|
532
|
-
pm_node_destroy(parser, (pm_node_t *)cast->left);
|
533
|
-
}
|
534
|
-
if (cast->right != NULL) {
|
535
|
-
pm_node_destroy(parser, (pm_node_t *)cast->right);
|
536
|
-
}
|
537
|
-
break;
|
538
|
-
}
|
539
|
-
#line 123 "node.c.erb"
|
540
|
-
case PM_FLOAT_NODE: {
|
541
|
-
break;
|
542
|
-
}
|
543
|
-
#line 123 "node.c.erb"
|
544
|
-
case PM_FOR_NODE: {
|
545
|
-
pm_for_node_t *cast = (pm_for_node_t *) node;
|
546
|
-
pm_node_destroy(parser, (pm_node_t *)cast->index);
|
547
|
-
pm_node_destroy(parser, (pm_node_t *)cast->collection);
|
548
|
-
if (cast->statements != NULL) {
|
549
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
550
|
-
}
|
551
|
-
break;
|
552
|
-
}
|
553
|
-
#line 123 "node.c.erb"
|
554
|
-
case PM_FORWARDING_ARGUMENTS_NODE: {
|
555
|
-
break;
|
556
|
-
}
|
557
|
-
#line 123 "node.c.erb"
|
558
|
-
case PM_FORWARDING_PARAMETER_NODE: {
|
559
|
-
break;
|
560
|
-
}
|
561
|
-
#line 123 "node.c.erb"
|
562
|
-
case PM_FORWARDING_SUPER_NODE: {
|
563
|
-
pm_forwarding_super_node_t *cast = (pm_forwarding_super_node_t *) node;
|
564
|
-
if (cast->block != NULL) {
|
565
|
-
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
566
|
-
}
|
567
|
-
break;
|
568
|
-
}
|
569
|
-
#line 123 "node.c.erb"
|
570
|
-
case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
|
571
|
-
pm_global_variable_and_write_node_t *cast = (pm_global_variable_and_write_node_t *) node;
|
572
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
573
|
-
break;
|
574
|
-
}
|
575
|
-
#line 123 "node.c.erb"
|
576
|
-
case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
577
|
-
pm_global_variable_operator_write_node_t *cast = (pm_global_variable_operator_write_node_t *) node;
|
578
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
579
|
-
break;
|
580
|
-
}
|
581
|
-
#line 123 "node.c.erb"
|
582
|
-
case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
|
583
|
-
pm_global_variable_or_write_node_t *cast = (pm_global_variable_or_write_node_t *) node;
|
584
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
585
|
-
break;
|
586
|
-
}
|
587
|
-
#line 123 "node.c.erb"
|
588
|
-
case PM_GLOBAL_VARIABLE_READ_NODE: {
|
589
|
-
break;
|
590
|
-
}
|
591
|
-
#line 123 "node.c.erb"
|
592
|
-
case PM_GLOBAL_VARIABLE_TARGET_NODE: {
|
593
|
-
break;
|
594
|
-
}
|
595
|
-
#line 123 "node.c.erb"
|
596
|
-
case PM_GLOBAL_VARIABLE_WRITE_NODE: {
|
597
|
-
pm_global_variable_write_node_t *cast = (pm_global_variable_write_node_t *) node;
|
598
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
599
|
-
break;
|
600
|
-
}
|
601
|
-
#line 123 "node.c.erb"
|
602
|
-
case PM_HASH_NODE: {
|
603
|
-
pm_hash_node_t *cast = (pm_hash_node_t *) node;
|
604
|
-
pm_node_list_destroy(parser, &cast->elements);
|
605
|
-
break;
|
606
|
-
}
|
607
|
-
#line 123 "node.c.erb"
|
608
|
-
case PM_HASH_PATTERN_NODE: {
|
609
|
-
pm_hash_pattern_node_t *cast = (pm_hash_pattern_node_t *) node;
|
610
|
-
if (cast->constant != NULL) {
|
611
|
-
pm_node_destroy(parser, (pm_node_t *)cast->constant);
|
612
|
-
}
|
613
|
-
pm_node_list_destroy(parser, &cast->elements);
|
614
|
-
if (cast->rest != NULL) {
|
615
|
-
pm_node_destroy(parser, (pm_node_t *)cast->rest);
|
616
|
-
}
|
617
|
-
break;
|
618
|
-
}
|
619
|
-
#line 123 "node.c.erb"
|
620
|
-
case PM_IF_NODE: {
|
621
|
-
pm_if_node_t *cast = (pm_if_node_t *) node;
|
622
|
-
pm_node_destroy(parser, (pm_node_t *)cast->predicate);
|
623
|
-
if (cast->statements != NULL) {
|
624
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
625
|
-
}
|
626
|
-
if (cast->consequent != NULL) {
|
627
|
-
pm_node_destroy(parser, (pm_node_t *)cast->consequent);
|
628
|
-
}
|
629
|
-
break;
|
630
|
-
}
|
631
|
-
#line 123 "node.c.erb"
|
632
|
-
case PM_IMAGINARY_NODE: {
|
633
|
-
pm_imaginary_node_t *cast = (pm_imaginary_node_t *) node;
|
634
|
-
pm_node_destroy(parser, (pm_node_t *)cast->numeric);
|
635
|
-
break;
|
636
|
-
}
|
637
|
-
#line 123 "node.c.erb"
|
638
|
-
case PM_IMPLICIT_NODE: {
|
639
|
-
pm_implicit_node_t *cast = (pm_implicit_node_t *) node;
|
640
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
641
|
-
break;
|
642
|
-
}
|
643
|
-
#line 123 "node.c.erb"
|
644
|
-
case PM_IMPLICIT_REST_NODE: {
|
645
|
-
break;
|
646
|
-
}
|
647
|
-
#line 123 "node.c.erb"
|
648
|
-
case PM_IN_NODE: {
|
649
|
-
pm_in_node_t *cast = (pm_in_node_t *) node;
|
650
|
-
pm_node_destroy(parser, (pm_node_t *)cast->pattern);
|
651
|
-
if (cast->statements != NULL) {
|
652
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
653
|
-
}
|
654
|
-
break;
|
655
|
-
}
|
656
|
-
#line 123 "node.c.erb"
|
657
|
-
case PM_INDEX_AND_WRITE_NODE: {
|
658
|
-
pm_index_and_write_node_t *cast = (pm_index_and_write_node_t *) node;
|
659
|
-
if (cast->receiver != NULL) {
|
660
|
-
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
661
|
-
}
|
662
|
-
if (cast->arguments != NULL) {
|
663
|
-
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
664
|
-
}
|
665
|
-
if (cast->block != NULL) {
|
666
|
-
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
667
|
-
}
|
668
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
669
|
-
break;
|
670
|
-
}
|
671
|
-
#line 123 "node.c.erb"
|
672
|
-
case PM_INDEX_OPERATOR_WRITE_NODE: {
|
673
|
-
pm_index_operator_write_node_t *cast = (pm_index_operator_write_node_t *) node;
|
674
|
-
if (cast->receiver != NULL) {
|
675
|
-
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
676
|
-
}
|
677
|
-
if (cast->arguments != NULL) {
|
678
|
-
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
679
|
-
}
|
680
|
-
if (cast->block != NULL) {
|
681
|
-
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
682
|
-
}
|
683
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
684
|
-
break;
|
685
|
-
}
|
686
|
-
#line 123 "node.c.erb"
|
687
|
-
case PM_INDEX_OR_WRITE_NODE: {
|
688
|
-
pm_index_or_write_node_t *cast = (pm_index_or_write_node_t *) node;
|
689
|
-
if (cast->receiver != NULL) {
|
690
|
-
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
691
|
-
}
|
692
|
-
if (cast->arguments != NULL) {
|
693
|
-
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
694
|
-
}
|
695
|
-
if (cast->block != NULL) {
|
696
|
-
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
697
|
-
}
|
698
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
699
|
-
break;
|
700
|
-
}
|
701
|
-
#line 123 "node.c.erb"
|
702
|
-
case PM_INDEX_TARGET_NODE: {
|
703
|
-
pm_index_target_node_t *cast = (pm_index_target_node_t *) node;
|
704
|
-
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
705
|
-
if (cast->arguments != NULL) {
|
706
|
-
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
707
|
-
}
|
708
|
-
if (cast->block != NULL) {
|
709
|
-
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
710
|
-
}
|
711
|
-
break;
|
712
|
-
}
|
713
|
-
#line 123 "node.c.erb"
|
714
|
-
case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
715
|
-
pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
|
716
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
717
|
-
break;
|
718
|
-
}
|
719
|
-
#line 123 "node.c.erb"
|
720
|
-
case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
721
|
-
pm_instance_variable_operator_write_node_t *cast = (pm_instance_variable_operator_write_node_t *) node;
|
722
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
723
|
-
break;
|
724
|
-
}
|
725
|
-
#line 123 "node.c.erb"
|
726
|
-
case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
|
727
|
-
pm_instance_variable_or_write_node_t *cast = (pm_instance_variable_or_write_node_t *) node;
|
728
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
729
|
-
break;
|
730
|
-
}
|
731
|
-
#line 123 "node.c.erb"
|
732
|
-
case PM_INSTANCE_VARIABLE_READ_NODE: {
|
733
|
-
break;
|
734
|
-
}
|
735
|
-
#line 123 "node.c.erb"
|
736
|
-
case PM_INSTANCE_VARIABLE_TARGET_NODE: {
|
737
|
-
break;
|
738
|
-
}
|
739
|
-
#line 123 "node.c.erb"
|
740
|
-
case PM_INSTANCE_VARIABLE_WRITE_NODE: {
|
741
|
-
pm_instance_variable_write_node_t *cast = (pm_instance_variable_write_node_t *) node;
|
742
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
743
|
-
break;
|
744
|
-
}
|
745
|
-
#line 123 "node.c.erb"
|
746
|
-
case PM_INTEGER_NODE: {
|
747
|
-
pm_integer_node_t *cast = (pm_integer_node_t *) node;
|
748
|
-
pm_integer_free(&cast->value);
|
749
|
-
break;
|
750
|
-
}
|
751
|
-
#line 123 "node.c.erb"
|
752
|
-
case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
|
753
|
-
pm_interpolated_match_last_line_node_t *cast = (pm_interpolated_match_last_line_node_t *) node;
|
754
|
-
pm_node_list_destroy(parser, &cast->parts);
|
755
|
-
break;
|
756
|
-
}
|
757
|
-
#line 123 "node.c.erb"
|
758
|
-
case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
759
|
-
pm_interpolated_regular_expression_node_t *cast = (pm_interpolated_regular_expression_node_t *) node;
|
760
|
-
pm_node_list_destroy(parser, &cast->parts);
|
761
|
-
break;
|
762
|
-
}
|
763
|
-
#line 123 "node.c.erb"
|
764
|
-
case PM_INTERPOLATED_STRING_NODE: {
|
765
|
-
pm_interpolated_string_node_t *cast = (pm_interpolated_string_node_t *) node;
|
766
|
-
pm_node_list_destroy(parser, &cast->parts);
|
767
|
-
break;
|
768
|
-
}
|
769
|
-
#line 123 "node.c.erb"
|
770
|
-
case PM_INTERPOLATED_SYMBOL_NODE: {
|
771
|
-
pm_interpolated_symbol_node_t *cast = (pm_interpolated_symbol_node_t *) node;
|
772
|
-
pm_node_list_destroy(parser, &cast->parts);
|
773
|
-
break;
|
774
|
-
}
|
775
|
-
#line 123 "node.c.erb"
|
776
|
-
case PM_INTERPOLATED_X_STRING_NODE: {
|
777
|
-
pm_interpolated_x_string_node_t *cast = (pm_interpolated_x_string_node_t *) node;
|
778
|
-
pm_node_list_destroy(parser, &cast->parts);
|
779
|
-
break;
|
780
|
-
}
|
781
|
-
#line 123 "node.c.erb"
|
782
|
-
case PM_IT_PARAMETERS_NODE: {
|
783
|
-
break;
|
784
|
-
}
|
785
|
-
#line 123 "node.c.erb"
|
786
|
-
case PM_KEYWORD_HASH_NODE: {
|
787
|
-
pm_keyword_hash_node_t *cast = (pm_keyword_hash_node_t *) node;
|
788
|
-
pm_node_list_destroy(parser, &cast->elements);
|
789
|
-
break;
|
790
|
-
}
|
791
|
-
#line 123 "node.c.erb"
|
792
|
-
case PM_KEYWORD_REST_PARAMETER_NODE: {
|
793
|
-
break;
|
794
|
-
}
|
795
|
-
#line 123 "node.c.erb"
|
796
|
-
case PM_LAMBDA_NODE: {
|
797
|
-
pm_lambda_node_t *cast = (pm_lambda_node_t *) node;
|
798
|
-
pm_constant_id_list_free(&cast->locals);
|
799
|
-
if (cast->parameters != NULL) {
|
800
|
-
pm_node_destroy(parser, (pm_node_t *)cast->parameters);
|
801
|
-
}
|
802
|
-
if (cast->body != NULL) {
|
803
|
-
pm_node_destroy(parser, (pm_node_t *)cast->body);
|
804
|
-
}
|
805
|
-
break;
|
806
|
-
}
|
807
|
-
#line 123 "node.c.erb"
|
808
|
-
case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
|
809
|
-
pm_local_variable_and_write_node_t *cast = (pm_local_variable_and_write_node_t *) node;
|
810
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
811
|
-
break;
|
812
|
-
}
|
813
|
-
#line 123 "node.c.erb"
|
814
|
-
case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
815
|
-
pm_local_variable_operator_write_node_t *cast = (pm_local_variable_operator_write_node_t *) node;
|
816
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
817
|
-
break;
|
818
|
-
}
|
819
|
-
#line 123 "node.c.erb"
|
820
|
-
case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
|
821
|
-
pm_local_variable_or_write_node_t *cast = (pm_local_variable_or_write_node_t *) node;
|
822
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
823
|
-
break;
|
824
|
-
}
|
825
|
-
#line 123 "node.c.erb"
|
826
|
-
case PM_LOCAL_VARIABLE_READ_NODE: {
|
827
|
-
break;
|
828
|
-
}
|
829
|
-
#line 123 "node.c.erb"
|
830
|
-
case PM_LOCAL_VARIABLE_TARGET_NODE: {
|
831
|
-
break;
|
832
|
-
}
|
833
|
-
#line 123 "node.c.erb"
|
834
|
-
case PM_LOCAL_VARIABLE_WRITE_NODE: {
|
835
|
-
pm_local_variable_write_node_t *cast = (pm_local_variable_write_node_t *) node;
|
836
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
837
|
-
break;
|
838
|
-
}
|
839
|
-
#line 123 "node.c.erb"
|
840
|
-
case PM_MATCH_LAST_LINE_NODE: {
|
841
|
-
pm_match_last_line_node_t *cast = (pm_match_last_line_node_t *) node;
|
842
|
-
pm_string_free(&cast->unescaped);
|
843
|
-
break;
|
844
|
-
}
|
845
|
-
#line 123 "node.c.erb"
|
846
|
-
case PM_MATCH_PREDICATE_NODE: {
|
847
|
-
pm_match_predicate_node_t *cast = (pm_match_predicate_node_t *) node;
|
848
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
849
|
-
pm_node_destroy(parser, (pm_node_t *)cast->pattern);
|
850
|
-
break;
|
851
|
-
}
|
852
|
-
#line 123 "node.c.erb"
|
853
|
-
case PM_MATCH_REQUIRED_NODE: {
|
854
|
-
pm_match_required_node_t *cast = (pm_match_required_node_t *) node;
|
855
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
856
|
-
pm_node_destroy(parser, (pm_node_t *)cast->pattern);
|
857
|
-
break;
|
858
|
-
}
|
859
|
-
#line 123 "node.c.erb"
|
860
|
-
case PM_MATCH_WRITE_NODE: {
|
861
|
-
pm_match_write_node_t *cast = (pm_match_write_node_t *) node;
|
862
|
-
pm_node_destroy(parser, (pm_node_t *)cast->call);
|
863
|
-
pm_node_list_destroy(parser, &cast->targets);
|
864
|
-
break;
|
865
|
-
}
|
866
|
-
#line 123 "node.c.erb"
|
867
|
-
case PM_MISSING_NODE: {
|
868
|
-
break;
|
869
|
-
}
|
870
|
-
#line 123 "node.c.erb"
|
871
|
-
case PM_MODULE_NODE: {
|
872
|
-
pm_module_node_t *cast = (pm_module_node_t *) node;
|
873
|
-
pm_constant_id_list_free(&cast->locals);
|
874
|
-
pm_node_destroy(parser, (pm_node_t *)cast->constant_path);
|
875
|
-
if (cast->body != NULL) {
|
876
|
-
pm_node_destroy(parser, (pm_node_t *)cast->body);
|
877
|
-
}
|
878
|
-
break;
|
879
|
-
}
|
880
|
-
#line 123 "node.c.erb"
|
881
|
-
case PM_MULTI_TARGET_NODE: {
|
882
|
-
pm_multi_target_node_t *cast = (pm_multi_target_node_t *) node;
|
883
|
-
pm_node_list_destroy(parser, &cast->lefts);
|
884
|
-
if (cast->rest != NULL) {
|
885
|
-
pm_node_destroy(parser, (pm_node_t *)cast->rest);
|
886
|
-
}
|
887
|
-
pm_node_list_destroy(parser, &cast->rights);
|
888
|
-
break;
|
889
|
-
}
|
890
|
-
#line 123 "node.c.erb"
|
891
|
-
case PM_MULTI_WRITE_NODE: {
|
892
|
-
pm_multi_write_node_t *cast = (pm_multi_write_node_t *) node;
|
893
|
-
pm_node_list_destroy(parser, &cast->lefts);
|
894
|
-
if (cast->rest != NULL) {
|
895
|
-
pm_node_destroy(parser, (pm_node_t *)cast->rest);
|
896
|
-
}
|
897
|
-
pm_node_list_destroy(parser, &cast->rights);
|
898
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
899
|
-
break;
|
900
|
-
}
|
901
|
-
#line 123 "node.c.erb"
|
902
|
-
case PM_NEXT_NODE: {
|
903
|
-
pm_next_node_t *cast = (pm_next_node_t *) node;
|
904
|
-
if (cast->arguments != NULL) {
|
905
|
-
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
906
|
-
}
|
907
|
-
break;
|
908
|
-
}
|
909
|
-
#line 123 "node.c.erb"
|
910
|
-
case PM_NIL_NODE: {
|
911
|
-
break;
|
912
|
-
}
|
913
|
-
#line 123 "node.c.erb"
|
914
|
-
case PM_NO_KEYWORDS_PARAMETER_NODE: {
|
915
|
-
break;
|
916
|
-
}
|
917
|
-
#line 123 "node.c.erb"
|
918
|
-
case PM_NUMBERED_PARAMETERS_NODE: {
|
919
|
-
break;
|
920
|
-
}
|
921
|
-
#line 123 "node.c.erb"
|
922
|
-
case PM_NUMBERED_REFERENCE_READ_NODE: {
|
923
|
-
break;
|
924
|
-
}
|
925
|
-
#line 123 "node.c.erb"
|
926
|
-
case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
|
927
|
-
pm_optional_keyword_parameter_node_t *cast = (pm_optional_keyword_parameter_node_t *) node;
|
928
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
929
|
-
break;
|
930
|
-
}
|
931
|
-
#line 123 "node.c.erb"
|
932
|
-
case PM_OPTIONAL_PARAMETER_NODE: {
|
933
|
-
pm_optional_parameter_node_t *cast = (pm_optional_parameter_node_t *) node;
|
934
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
935
|
-
break;
|
936
|
-
}
|
937
|
-
#line 123 "node.c.erb"
|
938
|
-
case PM_OR_NODE: {
|
939
|
-
pm_or_node_t *cast = (pm_or_node_t *) node;
|
940
|
-
pm_node_destroy(parser, (pm_node_t *)cast->left);
|
941
|
-
pm_node_destroy(parser, (pm_node_t *)cast->right);
|
942
|
-
break;
|
943
|
-
}
|
944
|
-
#line 123 "node.c.erb"
|
945
|
-
case PM_PARAMETERS_NODE: {
|
946
|
-
pm_parameters_node_t *cast = (pm_parameters_node_t *) node;
|
947
|
-
pm_node_list_destroy(parser, &cast->requireds);
|
948
|
-
pm_node_list_destroy(parser, &cast->optionals);
|
949
|
-
if (cast->rest != NULL) {
|
950
|
-
pm_node_destroy(parser, (pm_node_t *)cast->rest);
|
951
|
-
}
|
952
|
-
pm_node_list_destroy(parser, &cast->posts);
|
953
|
-
pm_node_list_destroy(parser, &cast->keywords);
|
954
|
-
if (cast->keyword_rest != NULL) {
|
955
|
-
pm_node_destroy(parser, (pm_node_t *)cast->keyword_rest);
|
956
|
-
}
|
957
|
-
if (cast->block != NULL) {
|
958
|
-
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
959
|
-
}
|
960
|
-
break;
|
961
|
-
}
|
962
|
-
#line 123 "node.c.erb"
|
963
|
-
case PM_PARENTHESES_NODE: {
|
964
|
-
pm_parentheses_node_t *cast = (pm_parentheses_node_t *) node;
|
965
|
-
if (cast->body != NULL) {
|
966
|
-
pm_node_destroy(parser, (pm_node_t *)cast->body);
|
967
|
-
}
|
968
|
-
break;
|
969
|
-
}
|
970
|
-
#line 123 "node.c.erb"
|
971
|
-
case PM_PINNED_EXPRESSION_NODE: {
|
972
|
-
pm_pinned_expression_node_t *cast = (pm_pinned_expression_node_t *) node;
|
973
|
-
pm_node_destroy(parser, (pm_node_t *)cast->expression);
|
974
|
-
break;
|
975
|
-
}
|
976
|
-
#line 123 "node.c.erb"
|
977
|
-
case PM_PINNED_VARIABLE_NODE: {
|
978
|
-
pm_pinned_variable_node_t *cast = (pm_pinned_variable_node_t *) node;
|
979
|
-
pm_node_destroy(parser, (pm_node_t *)cast->variable);
|
980
|
-
break;
|
981
|
-
}
|
982
|
-
#line 123 "node.c.erb"
|
983
|
-
case PM_POST_EXECUTION_NODE: {
|
984
|
-
pm_post_execution_node_t *cast = (pm_post_execution_node_t *) node;
|
985
|
-
if (cast->statements != NULL) {
|
986
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
987
|
-
}
|
988
|
-
break;
|
989
|
-
}
|
990
|
-
#line 123 "node.c.erb"
|
991
|
-
case PM_PRE_EXECUTION_NODE: {
|
992
|
-
pm_pre_execution_node_t *cast = (pm_pre_execution_node_t *) node;
|
993
|
-
if (cast->statements != NULL) {
|
994
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
995
|
-
}
|
996
|
-
break;
|
997
|
-
}
|
998
|
-
#line 123 "node.c.erb"
|
999
|
-
case PM_PROGRAM_NODE: {
|
1000
|
-
pm_program_node_t *cast = (pm_program_node_t *) node;
|
1001
|
-
pm_constant_id_list_free(&cast->locals);
|
1002
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1003
|
-
break;
|
1004
|
-
}
|
1005
|
-
#line 123 "node.c.erb"
|
1006
|
-
case PM_RANGE_NODE: {
|
1007
|
-
pm_range_node_t *cast = (pm_range_node_t *) node;
|
1008
|
-
if (cast->left != NULL) {
|
1009
|
-
pm_node_destroy(parser, (pm_node_t *)cast->left);
|
1010
|
-
}
|
1011
|
-
if (cast->right != NULL) {
|
1012
|
-
pm_node_destroy(parser, (pm_node_t *)cast->right);
|
1013
|
-
}
|
1014
|
-
break;
|
1015
|
-
}
|
1016
|
-
#line 123 "node.c.erb"
|
1017
|
-
case PM_RATIONAL_NODE: {
|
1018
|
-
pm_rational_node_t *cast = (pm_rational_node_t *) node;
|
1019
|
-
pm_node_destroy(parser, (pm_node_t *)cast->numeric);
|
1020
|
-
break;
|
1021
|
-
}
|
1022
|
-
#line 123 "node.c.erb"
|
1023
|
-
case PM_REDO_NODE: {
|
1024
|
-
break;
|
1025
|
-
}
|
1026
|
-
#line 123 "node.c.erb"
|
1027
|
-
case PM_REGULAR_EXPRESSION_NODE: {
|
1028
|
-
pm_regular_expression_node_t *cast = (pm_regular_expression_node_t *) node;
|
1029
|
-
pm_string_free(&cast->unescaped);
|
1030
|
-
break;
|
1031
|
-
}
|
1032
|
-
#line 123 "node.c.erb"
|
1033
|
-
case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
|
1034
|
-
break;
|
1035
|
-
}
|
1036
|
-
#line 123 "node.c.erb"
|
1037
|
-
case PM_REQUIRED_PARAMETER_NODE: {
|
1038
|
-
break;
|
1039
|
-
}
|
1040
|
-
#line 123 "node.c.erb"
|
1041
|
-
case PM_RESCUE_MODIFIER_NODE: {
|
1042
|
-
pm_rescue_modifier_node_t *cast = (pm_rescue_modifier_node_t *) node;
|
1043
|
-
pm_node_destroy(parser, (pm_node_t *)cast->expression);
|
1044
|
-
pm_node_destroy(parser, (pm_node_t *)cast->rescue_expression);
|
1045
|
-
break;
|
1046
|
-
}
|
1047
|
-
#line 123 "node.c.erb"
|
1048
|
-
case PM_RESCUE_NODE: {
|
1049
|
-
pm_rescue_node_t *cast = (pm_rescue_node_t *) node;
|
1050
|
-
pm_node_list_destroy(parser, &cast->exceptions);
|
1051
|
-
if (cast->reference != NULL) {
|
1052
|
-
pm_node_destroy(parser, (pm_node_t *)cast->reference);
|
1053
|
-
}
|
1054
|
-
if (cast->statements != NULL) {
|
1055
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1056
|
-
}
|
1057
|
-
if (cast->consequent != NULL) {
|
1058
|
-
pm_node_destroy(parser, (pm_node_t *)cast->consequent);
|
1059
|
-
}
|
1060
|
-
break;
|
1061
|
-
}
|
1062
|
-
#line 123 "node.c.erb"
|
1063
|
-
case PM_REST_PARAMETER_NODE: {
|
1064
|
-
break;
|
1065
|
-
}
|
1066
|
-
#line 123 "node.c.erb"
|
1067
|
-
case PM_RETRY_NODE: {
|
1068
|
-
break;
|
1069
|
-
}
|
1070
|
-
#line 123 "node.c.erb"
|
1071
|
-
case PM_RETURN_NODE: {
|
1072
|
-
pm_return_node_t *cast = (pm_return_node_t *) node;
|
1073
|
-
if (cast->arguments != NULL) {
|
1074
|
-
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
1075
|
-
}
|
1076
|
-
break;
|
1077
|
-
}
|
1078
|
-
#line 123 "node.c.erb"
|
1079
|
-
case PM_SELF_NODE: {
|
1080
|
-
break;
|
1081
|
-
}
|
1082
|
-
#line 123 "node.c.erb"
|
1083
|
-
case PM_SHAREABLE_CONSTANT_NODE: {
|
1084
|
-
pm_shareable_constant_node_t *cast = (pm_shareable_constant_node_t *) node;
|
1085
|
-
pm_node_destroy(parser, (pm_node_t *)cast->write);
|
1086
|
-
break;
|
1087
|
-
}
|
1088
|
-
#line 123 "node.c.erb"
|
1089
|
-
case PM_SINGLETON_CLASS_NODE: {
|
1090
|
-
pm_singleton_class_node_t *cast = (pm_singleton_class_node_t *) node;
|
1091
|
-
pm_constant_id_list_free(&cast->locals);
|
1092
|
-
pm_node_destroy(parser, (pm_node_t *)cast->expression);
|
1093
|
-
if (cast->body != NULL) {
|
1094
|
-
pm_node_destroy(parser, (pm_node_t *)cast->body);
|
1095
|
-
}
|
1096
|
-
break;
|
1097
|
-
}
|
1098
|
-
#line 123 "node.c.erb"
|
1099
|
-
case PM_SOURCE_ENCODING_NODE: {
|
1100
|
-
break;
|
1101
|
-
}
|
1102
|
-
#line 123 "node.c.erb"
|
1103
|
-
case PM_SOURCE_FILE_NODE: {
|
1104
|
-
pm_source_file_node_t *cast = (pm_source_file_node_t *) node;
|
1105
|
-
pm_string_free(&cast->filepath);
|
1106
|
-
break;
|
1107
|
-
}
|
1108
|
-
#line 123 "node.c.erb"
|
1109
|
-
case PM_SOURCE_LINE_NODE: {
|
1110
|
-
break;
|
1111
|
-
}
|
1112
|
-
#line 123 "node.c.erb"
|
1113
|
-
case PM_SPLAT_NODE: {
|
1114
|
-
pm_splat_node_t *cast = (pm_splat_node_t *) node;
|
1115
|
-
if (cast->expression != NULL) {
|
1116
|
-
pm_node_destroy(parser, (pm_node_t *)cast->expression);
|
1117
|
-
}
|
1118
|
-
break;
|
1119
|
-
}
|
1120
|
-
#line 123 "node.c.erb"
|
1121
|
-
case PM_STATEMENTS_NODE: {
|
1122
|
-
pm_statements_node_t *cast = (pm_statements_node_t *) node;
|
1123
|
-
pm_node_list_destroy(parser, &cast->body);
|
1124
|
-
break;
|
1125
|
-
}
|
1126
|
-
#line 123 "node.c.erb"
|
1127
|
-
case PM_STRING_NODE: {
|
1128
|
-
pm_string_node_t *cast = (pm_string_node_t *) node;
|
1129
|
-
pm_string_free(&cast->unescaped);
|
1130
|
-
break;
|
1131
|
-
}
|
1132
|
-
#line 123 "node.c.erb"
|
1133
|
-
case PM_SUPER_NODE: {
|
1134
|
-
pm_super_node_t *cast = (pm_super_node_t *) node;
|
1135
|
-
if (cast->arguments != NULL) {
|
1136
|
-
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
1137
|
-
}
|
1138
|
-
if (cast->block != NULL) {
|
1139
|
-
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
1140
|
-
}
|
1141
|
-
break;
|
1142
|
-
}
|
1143
|
-
#line 123 "node.c.erb"
|
1144
|
-
case PM_SYMBOL_NODE: {
|
1145
|
-
pm_symbol_node_t *cast = (pm_symbol_node_t *) node;
|
1146
|
-
pm_string_free(&cast->unescaped);
|
1147
|
-
break;
|
1148
|
-
}
|
1149
|
-
#line 123 "node.c.erb"
|
1150
|
-
case PM_TRUE_NODE: {
|
1151
|
-
break;
|
1152
|
-
}
|
1153
|
-
#line 123 "node.c.erb"
|
1154
|
-
case PM_UNDEF_NODE: {
|
1155
|
-
pm_undef_node_t *cast = (pm_undef_node_t *) node;
|
1156
|
-
pm_node_list_destroy(parser, &cast->names);
|
1157
|
-
break;
|
1158
|
-
}
|
1159
|
-
#line 123 "node.c.erb"
|
1160
|
-
case PM_UNLESS_NODE: {
|
1161
|
-
pm_unless_node_t *cast = (pm_unless_node_t *) node;
|
1162
|
-
pm_node_destroy(parser, (pm_node_t *)cast->predicate);
|
1163
|
-
if (cast->statements != NULL) {
|
1164
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1165
|
-
}
|
1166
|
-
if (cast->consequent != NULL) {
|
1167
|
-
pm_node_destroy(parser, (pm_node_t *)cast->consequent);
|
1168
|
-
}
|
1169
|
-
break;
|
1170
|
-
}
|
1171
|
-
#line 123 "node.c.erb"
|
1172
|
-
case PM_UNTIL_NODE: {
|
1173
|
-
pm_until_node_t *cast = (pm_until_node_t *) node;
|
1174
|
-
pm_node_destroy(parser, (pm_node_t *)cast->predicate);
|
1175
|
-
if (cast->statements != NULL) {
|
1176
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1177
|
-
}
|
1178
|
-
break;
|
1179
|
-
}
|
1180
|
-
#line 123 "node.c.erb"
|
1181
|
-
case PM_WHEN_NODE: {
|
1182
|
-
pm_when_node_t *cast = (pm_when_node_t *) node;
|
1183
|
-
pm_node_list_destroy(parser, &cast->conditions);
|
1184
|
-
if (cast->statements != NULL) {
|
1185
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1186
|
-
}
|
1187
|
-
break;
|
1188
|
-
}
|
1189
|
-
#line 123 "node.c.erb"
|
1190
|
-
case PM_WHILE_NODE: {
|
1191
|
-
pm_while_node_t *cast = (pm_while_node_t *) node;
|
1192
|
-
pm_node_destroy(parser, (pm_node_t *)cast->predicate);
|
1193
|
-
if (cast->statements != NULL) {
|
1194
|
-
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1195
|
-
}
|
1196
|
-
break;
|
1197
|
-
}
|
1198
|
-
#line 123 "node.c.erb"
|
1199
|
-
case PM_X_STRING_NODE: {
|
1200
|
-
pm_x_string_node_t *cast = (pm_x_string_node_t *) node;
|
1201
|
-
pm_string_free(&cast->unescaped);
|
1202
|
-
break;
|
1203
|
-
}
|
1204
|
-
#line 123 "node.c.erb"
|
1205
|
-
case PM_YIELD_NODE: {
|
1206
|
-
pm_yield_node_t *cast = (pm_yield_node_t *) node;
|
1207
|
-
if (cast->arguments != NULL) {
|
1208
|
-
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
1209
|
-
}
|
1210
|
-
break;
|
1211
|
-
}
|
1212
|
-
#line 152 "node.c.erb"
|
1213
|
-
default:
|
1214
|
-
assert(false && "unreachable");
|
1215
|
-
break;
|
1216
|
-
}
|
1217
|
-
xfree(node);
|
1218
|
-
}
|
1219
|
-
|
1220
|
-
static void
|
1221
|
-
pm_node_memsize_node(pm_node_t *node, pm_memsize_t *memsize) {
|
1222
|
-
memsize->node_count++;
|
1223
|
-
|
1224
|
-
switch (PM_NODE_TYPE(node)) {
|
1225
|
-
// We do not calculate memsize of a ScopeNode
|
1226
|
-
// as it should never be generated
|
1227
|
-
case PM_SCOPE_NODE:
|
1228
|
-
return;
|
1229
|
-
#line 170 "node.c.erb"
|
1230
|
-
case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
|
1231
|
-
pm_alias_global_variable_node_t *cast = (pm_alias_global_variable_node_t *) node;
|
1232
|
-
memsize->memsize += sizeof(*cast);
|
1233
|
-
pm_node_memsize_node((pm_node_t *)cast->new_name, memsize);
|
1234
|
-
pm_node_memsize_node((pm_node_t *)cast->old_name, memsize);
|
1235
|
-
break;
|
1236
|
-
}
|
1237
|
-
#line 170 "node.c.erb"
|
1238
|
-
case PM_ALIAS_METHOD_NODE: {
|
1239
|
-
pm_alias_method_node_t *cast = (pm_alias_method_node_t *) node;
|
1240
|
-
memsize->memsize += sizeof(*cast);
|
1241
|
-
pm_node_memsize_node((pm_node_t *)cast->new_name, memsize);
|
1242
|
-
pm_node_memsize_node((pm_node_t *)cast->old_name, memsize);
|
1243
|
-
break;
|
1244
|
-
}
|
1245
|
-
#line 170 "node.c.erb"
|
1246
|
-
case PM_ALTERNATION_PATTERN_NODE: {
|
1247
|
-
pm_alternation_pattern_node_t *cast = (pm_alternation_pattern_node_t *) node;
|
1248
|
-
memsize->memsize += sizeof(*cast);
|
1249
|
-
pm_node_memsize_node((pm_node_t *)cast->left, memsize);
|
1250
|
-
pm_node_memsize_node((pm_node_t *)cast->right, memsize);
|
1251
|
-
break;
|
1252
|
-
}
|
1253
|
-
#line 170 "node.c.erb"
|
1254
|
-
case PM_AND_NODE: {
|
1255
|
-
pm_and_node_t *cast = (pm_and_node_t *) node;
|
1256
|
-
memsize->memsize += sizeof(*cast);
|
1257
|
-
pm_node_memsize_node((pm_node_t *)cast->left, memsize);
|
1258
|
-
pm_node_memsize_node((pm_node_t *)cast->right, memsize);
|
1259
|
-
break;
|
1260
|
-
}
|
1261
|
-
#line 170 "node.c.erb"
|
1262
|
-
case PM_ARGUMENTS_NODE: {
|
1263
|
-
pm_arguments_node_t *cast = (pm_arguments_node_t *) node;
|
1264
|
-
memsize->memsize += sizeof(*cast);
|
1265
|
-
memsize->memsize += (pm_node_list_memsize(&cast->arguments, memsize) - sizeof(pm_node_list_t));
|
1266
|
-
break;
|
1267
|
-
}
|
1268
|
-
#line 170 "node.c.erb"
|
1269
|
-
case PM_ARRAY_NODE: {
|
1270
|
-
pm_array_node_t *cast = (pm_array_node_t *) node;
|
1271
|
-
memsize->memsize += sizeof(*cast);
|
1272
|
-
memsize->memsize += (pm_node_list_memsize(&cast->elements, memsize) - sizeof(pm_node_list_t));
|
1273
|
-
break;
|
1274
|
-
}
|
1275
|
-
#line 170 "node.c.erb"
|
1276
|
-
case PM_ARRAY_PATTERN_NODE: {
|
1277
|
-
pm_array_pattern_node_t *cast = (pm_array_pattern_node_t *) node;
|
1278
|
-
memsize->memsize += sizeof(*cast);
|
1279
|
-
if (cast->constant != NULL) {
|
1280
|
-
pm_node_memsize_node((pm_node_t *)cast->constant, memsize);
|
1281
|
-
}
|
1282
|
-
memsize->memsize += (pm_node_list_memsize(&cast->requireds, memsize) - sizeof(pm_node_list_t));
|
1283
|
-
if (cast->rest != NULL) {
|
1284
|
-
pm_node_memsize_node((pm_node_t *)cast->rest, memsize);
|
1285
|
-
}
|
1286
|
-
memsize->memsize += (pm_node_list_memsize(&cast->posts, memsize) - sizeof(pm_node_list_t));
|
1287
|
-
break;
|
1288
|
-
}
|
1289
|
-
#line 170 "node.c.erb"
|
1290
|
-
case PM_ASSOC_NODE: {
|
1291
|
-
pm_assoc_node_t *cast = (pm_assoc_node_t *) node;
|
1292
|
-
memsize->memsize += sizeof(*cast);
|
1293
|
-
pm_node_memsize_node((pm_node_t *)cast->key, memsize);
|
1294
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1295
|
-
break;
|
1296
|
-
}
|
1297
|
-
#line 170 "node.c.erb"
|
1298
|
-
case PM_ASSOC_SPLAT_NODE: {
|
1299
|
-
pm_assoc_splat_node_t *cast = (pm_assoc_splat_node_t *) node;
|
1300
|
-
memsize->memsize += sizeof(*cast);
|
1301
|
-
if (cast->value != NULL) {
|
1302
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1303
|
-
}
|
1304
|
-
break;
|
1305
|
-
}
|
1306
|
-
#line 170 "node.c.erb"
|
1307
|
-
case PM_BACK_REFERENCE_READ_NODE: {
|
1308
|
-
pm_back_reference_read_node_t *cast = (pm_back_reference_read_node_t *) node;
|
1309
|
-
memsize->memsize += sizeof(*cast);
|
1310
|
-
break;
|
1311
|
-
}
|
1312
|
-
#line 170 "node.c.erb"
|
1313
|
-
case PM_BEGIN_NODE: {
|
1314
|
-
pm_begin_node_t *cast = (pm_begin_node_t *) node;
|
1315
|
-
memsize->memsize += sizeof(*cast);
|
1316
|
-
if (cast->statements != NULL) {
|
1317
|
-
pm_node_memsize_node((pm_node_t *)cast->statements, memsize);
|
1318
|
-
}
|
1319
|
-
if (cast->rescue_clause != NULL) {
|
1320
|
-
pm_node_memsize_node((pm_node_t *)cast->rescue_clause, memsize);
|
1321
|
-
}
|
1322
|
-
if (cast->else_clause != NULL) {
|
1323
|
-
pm_node_memsize_node((pm_node_t *)cast->else_clause, memsize);
|
1324
|
-
}
|
1325
|
-
if (cast->ensure_clause != NULL) {
|
1326
|
-
pm_node_memsize_node((pm_node_t *)cast->ensure_clause, memsize);
|
1327
|
-
}
|
1328
|
-
break;
|
1329
|
-
}
|
1330
|
-
#line 170 "node.c.erb"
|
1331
|
-
case PM_BLOCK_ARGUMENT_NODE: {
|
1332
|
-
pm_block_argument_node_t *cast = (pm_block_argument_node_t *) node;
|
1333
|
-
memsize->memsize += sizeof(*cast);
|
1334
|
-
if (cast->expression != NULL) {
|
1335
|
-
pm_node_memsize_node((pm_node_t *)cast->expression, memsize);
|
1336
|
-
}
|
1337
|
-
break;
|
1338
|
-
}
|
1339
|
-
#line 170 "node.c.erb"
|
1340
|
-
case PM_BLOCK_LOCAL_VARIABLE_NODE: {
|
1341
|
-
pm_block_local_variable_node_t *cast = (pm_block_local_variable_node_t *) node;
|
1342
|
-
memsize->memsize += sizeof(*cast);
|
1343
|
-
break;
|
1344
|
-
}
|
1345
|
-
#line 170 "node.c.erb"
|
1346
|
-
case PM_BLOCK_NODE: {
|
1347
|
-
pm_block_node_t *cast = (pm_block_node_t *) node;
|
1348
|
-
memsize->memsize += sizeof(*cast);
|
1349
|
-
memsize->memsize += (pm_constant_id_list_memsize(&cast->locals) - sizeof(pm_constant_id_list_t));
|
1350
|
-
if (cast->parameters != NULL) {
|
1351
|
-
pm_node_memsize_node((pm_node_t *)cast->parameters, memsize);
|
1352
|
-
}
|
1353
|
-
if (cast->body != NULL) {
|
1354
|
-
pm_node_memsize_node((pm_node_t *)cast->body, memsize);
|
1355
|
-
}
|
1356
|
-
break;
|
1357
|
-
}
|
1358
|
-
#line 170 "node.c.erb"
|
1359
|
-
case PM_BLOCK_PARAMETER_NODE: {
|
1360
|
-
pm_block_parameter_node_t *cast = (pm_block_parameter_node_t *) node;
|
1361
|
-
memsize->memsize += sizeof(*cast);
|
1362
|
-
break;
|
1363
|
-
}
|
1364
|
-
#line 170 "node.c.erb"
|
1365
|
-
case PM_BLOCK_PARAMETERS_NODE: {
|
1366
|
-
pm_block_parameters_node_t *cast = (pm_block_parameters_node_t *) node;
|
1367
|
-
memsize->memsize += sizeof(*cast);
|
1368
|
-
if (cast->parameters != NULL) {
|
1369
|
-
pm_node_memsize_node((pm_node_t *)cast->parameters, memsize);
|
1370
|
-
}
|
1371
|
-
memsize->memsize += (pm_node_list_memsize(&cast->locals, memsize) - sizeof(pm_node_list_t));
|
1372
|
-
break;
|
1373
|
-
}
|
1374
|
-
#line 170 "node.c.erb"
|
1375
|
-
case PM_BREAK_NODE: {
|
1376
|
-
pm_break_node_t *cast = (pm_break_node_t *) node;
|
1377
|
-
memsize->memsize += sizeof(*cast);
|
1378
|
-
if (cast->arguments != NULL) {
|
1379
|
-
pm_node_memsize_node((pm_node_t *)cast->arguments, memsize);
|
1380
|
-
}
|
1381
|
-
break;
|
1382
|
-
}
|
1383
|
-
#line 170 "node.c.erb"
|
1384
|
-
case PM_CALL_AND_WRITE_NODE: {
|
1385
|
-
pm_call_and_write_node_t *cast = (pm_call_and_write_node_t *) node;
|
1386
|
-
memsize->memsize += sizeof(*cast);
|
1387
|
-
if (cast->receiver != NULL) {
|
1388
|
-
pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
|
1389
|
-
}
|
1390
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1391
|
-
break;
|
1392
|
-
}
|
1393
|
-
#line 170 "node.c.erb"
|
1394
|
-
case PM_CALL_NODE: {
|
1395
|
-
pm_call_node_t *cast = (pm_call_node_t *) node;
|
1396
|
-
memsize->memsize += sizeof(*cast);
|
1397
|
-
if (cast->receiver != NULL) {
|
1398
|
-
pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
|
1399
|
-
}
|
1400
|
-
if (cast->arguments != NULL) {
|
1401
|
-
pm_node_memsize_node((pm_node_t *)cast->arguments, memsize);
|
1402
|
-
}
|
1403
|
-
if (cast->block != NULL) {
|
1404
|
-
pm_node_memsize_node((pm_node_t *)cast->block, memsize);
|
1405
|
-
}
|
1406
|
-
break;
|
1407
|
-
}
|
1408
|
-
#line 170 "node.c.erb"
|
1409
|
-
case PM_CALL_OPERATOR_WRITE_NODE: {
|
1410
|
-
pm_call_operator_write_node_t *cast = (pm_call_operator_write_node_t *) node;
|
1411
|
-
memsize->memsize += sizeof(*cast);
|
1412
|
-
if (cast->receiver != NULL) {
|
1413
|
-
pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
|
1414
|
-
}
|
1415
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1416
|
-
break;
|
1417
|
-
}
|
1418
|
-
#line 170 "node.c.erb"
|
1419
|
-
case PM_CALL_OR_WRITE_NODE: {
|
1420
|
-
pm_call_or_write_node_t *cast = (pm_call_or_write_node_t *) node;
|
1421
|
-
memsize->memsize += sizeof(*cast);
|
1422
|
-
if (cast->receiver != NULL) {
|
1423
|
-
pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
|
1424
|
-
}
|
1425
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1426
|
-
break;
|
1427
|
-
}
|
1428
|
-
#line 170 "node.c.erb"
|
1429
|
-
case PM_CALL_TARGET_NODE: {
|
1430
|
-
pm_call_target_node_t *cast = (pm_call_target_node_t *) node;
|
1431
|
-
memsize->memsize += sizeof(*cast);
|
1432
|
-
pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
|
1433
|
-
break;
|
1434
|
-
}
|
1435
|
-
#line 170 "node.c.erb"
|
1436
|
-
case PM_CAPTURE_PATTERN_NODE: {
|
1437
|
-
pm_capture_pattern_node_t *cast = (pm_capture_pattern_node_t *) node;
|
1438
|
-
memsize->memsize += sizeof(*cast);
|
1439
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1440
|
-
pm_node_memsize_node((pm_node_t *)cast->target, memsize);
|
1441
|
-
break;
|
1442
|
-
}
|
1443
|
-
#line 170 "node.c.erb"
|
1444
|
-
case PM_CASE_MATCH_NODE: {
|
1445
|
-
pm_case_match_node_t *cast = (pm_case_match_node_t *) node;
|
1446
|
-
memsize->memsize += sizeof(*cast);
|
1447
|
-
if (cast->predicate != NULL) {
|
1448
|
-
pm_node_memsize_node((pm_node_t *)cast->predicate, memsize);
|
1449
|
-
}
|
1450
|
-
memsize->memsize += (pm_node_list_memsize(&cast->conditions, memsize) - sizeof(pm_node_list_t));
|
1451
|
-
if (cast->consequent != NULL) {
|
1452
|
-
pm_node_memsize_node((pm_node_t *)cast->consequent, memsize);
|
1453
|
-
}
|
1454
|
-
break;
|
1455
|
-
}
|
1456
|
-
#line 170 "node.c.erb"
|
1457
|
-
case PM_CASE_NODE: {
|
1458
|
-
pm_case_node_t *cast = (pm_case_node_t *) node;
|
1459
|
-
memsize->memsize += sizeof(*cast);
|
1460
|
-
if (cast->predicate != NULL) {
|
1461
|
-
pm_node_memsize_node((pm_node_t *)cast->predicate, memsize);
|
1462
|
-
}
|
1463
|
-
memsize->memsize += (pm_node_list_memsize(&cast->conditions, memsize) - sizeof(pm_node_list_t));
|
1464
|
-
if (cast->consequent != NULL) {
|
1465
|
-
pm_node_memsize_node((pm_node_t *)cast->consequent, memsize);
|
1466
|
-
}
|
1467
|
-
break;
|
1468
|
-
}
|
1469
|
-
#line 170 "node.c.erb"
|
1470
|
-
case PM_CLASS_NODE: {
|
1471
|
-
pm_class_node_t *cast = (pm_class_node_t *) node;
|
1472
|
-
memsize->memsize += sizeof(*cast);
|
1473
|
-
memsize->memsize += (pm_constant_id_list_memsize(&cast->locals) - sizeof(pm_constant_id_list_t));
|
1474
|
-
pm_node_memsize_node((pm_node_t *)cast->constant_path, memsize);
|
1475
|
-
if (cast->superclass != NULL) {
|
1476
|
-
pm_node_memsize_node((pm_node_t *)cast->superclass, memsize);
|
1477
|
-
}
|
1478
|
-
if (cast->body != NULL) {
|
1479
|
-
pm_node_memsize_node((pm_node_t *)cast->body, memsize);
|
1480
|
-
}
|
1481
|
-
break;
|
1482
|
-
}
|
1483
|
-
#line 170 "node.c.erb"
|
1484
|
-
case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
|
1485
|
-
pm_class_variable_and_write_node_t *cast = (pm_class_variable_and_write_node_t *) node;
|
1486
|
-
memsize->memsize += sizeof(*cast);
|
1487
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1488
|
-
break;
|
1489
|
-
}
|
1490
|
-
#line 170 "node.c.erb"
|
1491
|
-
case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
1492
|
-
pm_class_variable_operator_write_node_t *cast = (pm_class_variable_operator_write_node_t *) node;
|
1493
|
-
memsize->memsize += sizeof(*cast);
|
1494
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1495
|
-
break;
|
1496
|
-
}
|
1497
|
-
#line 170 "node.c.erb"
|
1498
|
-
case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
|
1499
|
-
pm_class_variable_or_write_node_t *cast = (pm_class_variable_or_write_node_t *) node;
|
1500
|
-
memsize->memsize += sizeof(*cast);
|
1501
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1502
|
-
break;
|
1503
|
-
}
|
1504
|
-
#line 170 "node.c.erb"
|
1505
|
-
case PM_CLASS_VARIABLE_READ_NODE: {
|
1506
|
-
pm_class_variable_read_node_t *cast = (pm_class_variable_read_node_t *) node;
|
1507
|
-
memsize->memsize += sizeof(*cast);
|
1508
|
-
break;
|
1509
|
-
}
|
1510
|
-
#line 170 "node.c.erb"
|
1511
|
-
case PM_CLASS_VARIABLE_TARGET_NODE: {
|
1512
|
-
pm_class_variable_target_node_t *cast = (pm_class_variable_target_node_t *) node;
|
1513
|
-
memsize->memsize += sizeof(*cast);
|
1514
|
-
break;
|
1515
|
-
}
|
1516
|
-
#line 170 "node.c.erb"
|
1517
|
-
case PM_CLASS_VARIABLE_WRITE_NODE: {
|
1518
|
-
pm_class_variable_write_node_t *cast = (pm_class_variable_write_node_t *) node;
|
1519
|
-
memsize->memsize += sizeof(*cast);
|
1520
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1521
|
-
break;
|
1522
|
-
}
|
1523
|
-
#line 170 "node.c.erb"
|
1524
|
-
case PM_CONSTANT_AND_WRITE_NODE: {
|
1525
|
-
pm_constant_and_write_node_t *cast = (pm_constant_and_write_node_t *) node;
|
1526
|
-
memsize->memsize += sizeof(*cast);
|
1527
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1528
|
-
break;
|
1529
|
-
}
|
1530
|
-
#line 170 "node.c.erb"
|
1531
|
-
case PM_CONSTANT_OPERATOR_WRITE_NODE: {
|
1532
|
-
pm_constant_operator_write_node_t *cast = (pm_constant_operator_write_node_t *) node;
|
1533
|
-
memsize->memsize += sizeof(*cast);
|
1534
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1535
|
-
break;
|
1536
|
-
}
|
1537
|
-
#line 170 "node.c.erb"
|
1538
|
-
case PM_CONSTANT_OR_WRITE_NODE: {
|
1539
|
-
pm_constant_or_write_node_t *cast = (pm_constant_or_write_node_t *) node;
|
1540
|
-
memsize->memsize += sizeof(*cast);
|
1541
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1542
|
-
break;
|
1543
|
-
}
|
1544
|
-
#line 170 "node.c.erb"
|
1545
|
-
case PM_CONSTANT_PATH_AND_WRITE_NODE: {
|
1546
|
-
pm_constant_path_and_write_node_t *cast = (pm_constant_path_and_write_node_t *) node;
|
1547
|
-
memsize->memsize += sizeof(*cast);
|
1548
|
-
pm_node_memsize_node((pm_node_t *)cast->target, memsize);
|
1549
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1550
|
-
break;
|
1551
|
-
}
|
1552
|
-
#line 170 "node.c.erb"
|
1553
|
-
case PM_CONSTANT_PATH_NODE: {
|
1554
|
-
pm_constant_path_node_t *cast = (pm_constant_path_node_t *) node;
|
1555
|
-
memsize->memsize += sizeof(*cast);
|
1556
|
-
if (cast->parent != NULL) {
|
1557
|
-
pm_node_memsize_node((pm_node_t *)cast->parent, memsize);
|
1558
|
-
}
|
1559
|
-
break;
|
1560
|
-
}
|
1561
|
-
#line 170 "node.c.erb"
|
406
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1562
407
|
case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
1563
408
|
pm_constant_path_operator_write_node_t *cast = (pm_constant_path_operator_write_node_t *) node;
|
1564
|
-
|
1565
|
-
|
1566
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
409
|
+
pm_node_destroy(parser, (pm_node_t *)cast->target);
|
410
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1567
411
|
break;
|
1568
412
|
}
|
1569
|
-
#line
|
413
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1570
414
|
case PM_CONSTANT_PATH_OR_WRITE_NODE: {
|
1571
415
|
pm_constant_path_or_write_node_t *cast = (pm_constant_path_or_write_node_t *) node;
|
1572
|
-
|
1573
|
-
|
1574
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
416
|
+
pm_node_destroy(parser, (pm_node_t *)cast->target);
|
417
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1575
418
|
break;
|
1576
419
|
}
|
1577
|
-
#line
|
420
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1578
421
|
case PM_CONSTANT_PATH_TARGET_NODE: {
|
1579
422
|
pm_constant_path_target_node_t *cast = (pm_constant_path_target_node_t *) node;
|
1580
|
-
memsize->memsize += sizeof(*cast);
|
1581
423
|
if (cast->parent != NULL) {
|
1582
|
-
|
424
|
+
pm_node_destroy(parser, (pm_node_t *)cast->parent);
|
1583
425
|
}
|
1584
426
|
break;
|
1585
427
|
}
|
1586
|
-
#line
|
428
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1587
429
|
case PM_CONSTANT_PATH_WRITE_NODE: {
|
1588
430
|
pm_constant_path_write_node_t *cast = (pm_constant_path_write_node_t *) node;
|
1589
|
-
|
1590
|
-
|
1591
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
431
|
+
pm_node_destroy(parser, (pm_node_t *)cast->target);
|
432
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1592
433
|
break;
|
1593
434
|
}
|
1594
|
-
#line
|
435
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1595
436
|
case PM_CONSTANT_READ_NODE: {
|
1596
|
-
pm_constant_read_node_t *cast = (pm_constant_read_node_t *) node;
|
1597
|
-
memsize->memsize += sizeof(*cast);
|
1598
437
|
break;
|
1599
438
|
}
|
1600
|
-
#line
|
439
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1601
440
|
case PM_CONSTANT_TARGET_NODE: {
|
1602
|
-
pm_constant_target_node_t *cast = (pm_constant_target_node_t *) node;
|
1603
|
-
memsize->memsize += sizeof(*cast);
|
1604
441
|
break;
|
1605
442
|
}
|
1606
|
-
#line
|
443
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1607
444
|
case PM_CONSTANT_WRITE_NODE: {
|
1608
445
|
pm_constant_write_node_t *cast = (pm_constant_write_node_t *) node;
|
1609
|
-
|
1610
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
446
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1611
447
|
break;
|
1612
448
|
}
|
1613
|
-
#line
|
449
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1614
450
|
case PM_DEF_NODE: {
|
1615
451
|
pm_def_node_t *cast = (pm_def_node_t *) node;
|
1616
|
-
memsize->memsize += sizeof(*cast);
|
1617
452
|
if (cast->receiver != NULL) {
|
1618
|
-
|
453
|
+
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
1619
454
|
}
|
1620
455
|
if (cast->parameters != NULL) {
|
1621
|
-
|
456
|
+
pm_node_destroy(parser, (pm_node_t *)cast->parameters);
|
1622
457
|
}
|
1623
458
|
if (cast->body != NULL) {
|
1624
|
-
|
459
|
+
pm_node_destroy(parser, (pm_node_t *)cast->body);
|
1625
460
|
}
|
1626
|
-
|
461
|
+
pm_constant_id_list_free(&cast->locals);
|
1627
462
|
break;
|
1628
463
|
}
|
1629
|
-
#line
|
464
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1630
465
|
case PM_DEFINED_NODE: {
|
1631
466
|
pm_defined_node_t *cast = (pm_defined_node_t *) node;
|
1632
|
-
|
1633
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
467
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1634
468
|
break;
|
1635
469
|
}
|
1636
|
-
#line
|
470
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1637
471
|
case PM_ELSE_NODE: {
|
1638
472
|
pm_else_node_t *cast = (pm_else_node_t *) node;
|
1639
|
-
memsize->memsize += sizeof(*cast);
|
1640
473
|
if (cast->statements != NULL) {
|
1641
|
-
|
474
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1642
475
|
}
|
1643
476
|
break;
|
1644
477
|
}
|
1645
|
-
#line
|
478
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1646
479
|
case PM_EMBEDDED_STATEMENTS_NODE: {
|
1647
480
|
pm_embedded_statements_node_t *cast = (pm_embedded_statements_node_t *) node;
|
1648
|
-
memsize->memsize += sizeof(*cast);
|
1649
481
|
if (cast->statements != NULL) {
|
1650
|
-
|
482
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1651
483
|
}
|
1652
484
|
break;
|
1653
485
|
}
|
1654
|
-
#line
|
486
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1655
487
|
case PM_EMBEDDED_VARIABLE_NODE: {
|
1656
488
|
pm_embedded_variable_node_t *cast = (pm_embedded_variable_node_t *) node;
|
1657
|
-
|
1658
|
-
pm_node_memsize_node((pm_node_t *)cast->variable, memsize);
|
489
|
+
pm_node_destroy(parser, (pm_node_t *)cast->variable);
|
1659
490
|
break;
|
1660
491
|
}
|
1661
|
-
#line
|
492
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1662
493
|
case PM_ENSURE_NODE: {
|
1663
494
|
pm_ensure_node_t *cast = (pm_ensure_node_t *) node;
|
1664
|
-
memsize->memsize += sizeof(*cast);
|
1665
495
|
if (cast->statements != NULL) {
|
1666
|
-
|
496
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1667
497
|
}
|
1668
498
|
break;
|
1669
499
|
}
|
1670
|
-
#line
|
500
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1671
501
|
case PM_FALSE_NODE: {
|
1672
|
-
pm_false_node_t *cast = (pm_false_node_t *) node;
|
1673
|
-
memsize->memsize += sizeof(*cast);
|
1674
502
|
break;
|
1675
503
|
}
|
1676
|
-
#line
|
504
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1677
505
|
case PM_FIND_PATTERN_NODE: {
|
1678
506
|
pm_find_pattern_node_t *cast = (pm_find_pattern_node_t *) node;
|
1679
|
-
memsize->memsize += sizeof(*cast);
|
1680
507
|
if (cast->constant != NULL) {
|
1681
|
-
|
508
|
+
pm_node_destroy(parser, (pm_node_t *)cast->constant);
|
1682
509
|
}
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
510
|
+
pm_node_destroy(parser, (pm_node_t *)cast->left);
|
511
|
+
pm_node_list_destroy(parser, &cast->requireds);
|
512
|
+
pm_node_destroy(parser, (pm_node_t *)cast->right);
|
1686
513
|
break;
|
1687
514
|
}
|
1688
|
-
#line
|
515
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1689
516
|
case PM_FLIP_FLOP_NODE: {
|
1690
517
|
pm_flip_flop_node_t *cast = (pm_flip_flop_node_t *) node;
|
1691
|
-
memsize->memsize += sizeof(*cast);
|
1692
518
|
if (cast->left != NULL) {
|
1693
|
-
|
519
|
+
pm_node_destroy(parser, (pm_node_t *)cast->left);
|
1694
520
|
}
|
1695
521
|
if (cast->right != NULL) {
|
1696
|
-
|
522
|
+
pm_node_destroy(parser, (pm_node_t *)cast->right);
|
1697
523
|
}
|
1698
524
|
break;
|
1699
525
|
}
|
1700
|
-
#line
|
526
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1701
527
|
case PM_FLOAT_NODE: {
|
1702
|
-
pm_float_node_t *cast = (pm_float_node_t *) node;
|
1703
|
-
memsize->memsize += sizeof(*cast);
|
1704
528
|
break;
|
1705
529
|
}
|
1706
|
-
#line
|
530
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1707
531
|
case PM_FOR_NODE: {
|
1708
532
|
pm_for_node_t *cast = (pm_for_node_t *) node;
|
1709
|
-
|
1710
|
-
|
1711
|
-
pm_node_memsize_node((pm_node_t *)cast->collection, memsize);
|
533
|
+
pm_node_destroy(parser, (pm_node_t *)cast->index);
|
534
|
+
pm_node_destroy(parser, (pm_node_t *)cast->collection);
|
1712
535
|
if (cast->statements != NULL) {
|
1713
|
-
|
536
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1714
537
|
}
|
1715
538
|
break;
|
1716
539
|
}
|
1717
|
-
#line
|
540
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1718
541
|
case PM_FORWARDING_ARGUMENTS_NODE: {
|
1719
|
-
pm_forwarding_arguments_node_t *cast = (pm_forwarding_arguments_node_t *) node;
|
1720
|
-
memsize->memsize += sizeof(*cast);
|
1721
542
|
break;
|
1722
543
|
}
|
1723
|
-
#line
|
544
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1724
545
|
case PM_FORWARDING_PARAMETER_NODE: {
|
1725
|
-
pm_forwarding_parameter_node_t *cast = (pm_forwarding_parameter_node_t *) node;
|
1726
|
-
memsize->memsize += sizeof(*cast);
|
1727
546
|
break;
|
1728
547
|
}
|
1729
|
-
#line
|
548
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1730
549
|
case PM_FORWARDING_SUPER_NODE: {
|
1731
550
|
pm_forwarding_super_node_t *cast = (pm_forwarding_super_node_t *) node;
|
1732
|
-
memsize->memsize += sizeof(*cast);
|
1733
551
|
if (cast->block != NULL) {
|
1734
|
-
|
552
|
+
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
1735
553
|
}
|
1736
554
|
break;
|
1737
555
|
}
|
1738
|
-
#line
|
556
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1739
557
|
case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
|
1740
558
|
pm_global_variable_and_write_node_t *cast = (pm_global_variable_and_write_node_t *) node;
|
1741
|
-
|
1742
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
559
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1743
560
|
break;
|
1744
561
|
}
|
1745
|
-
#line
|
562
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1746
563
|
case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
1747
564
|
pm_global_variable_operator_write_node_t *cast = (pm_global_variable_operator_write_node_t *) node;
|
1748
|
-
|
1749
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
565
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1750
566
|
break;
|
1751
567
|
}
|
1752
|
-
#line
|
568
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1753
569
|
case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
|
1754
570
|
pm_global_variable_or_write_node_t *cast = (pm_global_variable_or_write_node_t *) node;
|
1755
|
-
|
1756
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
571
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1757
572
|
break;
|
1758
573
|
}
|
1759
|
-
#line
|
574
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1760
575
|
case PM_GLOBAL_VARIABLE_READ_NODE: {
|
1761
|
-
pm_global_variable_read_node_t *cast = (pm_global_variable_read_node_t *) node;
|
1762
|
-
memsize->memsize += sizeof(*cast);
|
1763
576
|
break;
|
1764
577
|
}
|
1765
|
-
#line
|
578
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1766
579
|
case PM_GLOBAL_VARIABLE_TARGET_NODE: {
|
1767
|
-
pm_global_variable_target_node_t *cast = (pm_global_variable_target_node_t *) node;
|
1768
|
-
memsize->memsize += sizeof(*cast);
|
1769
580
|
break;
|
1770
581
|
}
|
1771
|
-
#line
|
582
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1772
583
|
case PM_GLOBAL_VARIABLE_WRITE_NODE: {
|
1773
584
|
pm_global_variable_write_node_t *cast = (pm_global_variable_write_node_t *) node;
|
1774
|
-
|
1775
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
585
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1776
586
|
break;
|
1777
587
|
}
|
1778
|
-
#line
|
588
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1779
589
|
case PM_HASH_NODE: {
|
1780
590
|
pm_hash_node_t *cast = (pm_hash_node_t *) node;
|
1781
|
-
|
1782
|
-
memsize->memsize += (pm_node_list_memsize(&cast->elements, memsize) - sizeof(pm_node_list_t));
|
591
|
+
pm_node_list_destroy(parser, &cast->elements);
|
1783
592
|
break;
|
1784
593
|
}
|
1785
|
-
#line
|
594
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1786
595
|
case PM_HASH_PATTERN_NODE: {
|
1787
596
|
pm_hash_pattern_node_t *cast = (pm_hash_pattern_node_t *) node;
|
1788
|
-
memsize->memsize += sizeof(*cast);
|
1789
597
|
if (cast->constant != NULL) {
|
1790
|
-
|
598
|
+
pm_node_destroy(parser, (pm_node_t *)cast->constant);
|
1791
599
|
}
|
1792
|
-
|
600
|
+
pm_node_list_destroy(parser, &cast->elements);
|
1793
601
|
if (cast->rest != NULL) {
|
1794
|
-
|
602
|
+
pm_node_destroy(parser, (pm_node_t *)cast->rest);
|
1795
603
|
}
|
1796
604
|
break;
|
1797
605
|
}
|
1798
|
-
#line
|
606
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1799
607
|
case PM_IF_NODE: {
|
1800
608
|
pm_if_node_t *cast = (pm_if_node_t *) node;
|
1801
|
-
|
1802
|
-
pm_node_memsize_node((pm_node_t *)cast->predicate, memsize);
|
609
|
+
pm_node_destroy(parser, (pm_node_t *)cast->predicate);
|
1803
610
|
if (cast->statements != NULL) {
|
1804
|
-
|
611
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1805
612
|
}
|
1806
|
-
if (cast->
|
1807
|
-
|
613
|
+
if (cast->subsequent != NULL) {
|
614
|
+
pm_node_destroy(parser, (pm_node_t *)cast->subsequent);
|
1808
615
|
}
|
1809
616
|
break;
|
1810
617
|
}
|
1811
|
-
#line
|
618
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1812
619
|
case PM_IMAGINARY_NODE: {
|
1813
620
|
pm_imaginary_node_t *cast = (pm_imaginary_node_t *) node;
|
1814
|
-
|
1815
|
-
pm_node_memsize_node((pm_node_t *)cast->numeric, memsize);
|
621
|
+
pm_node_destroy(parser, (pm_node_t *)cast->numeric);
|
1816
622
|
break;
|
1817
623
|
}
|
1818
|
-
#line
|
624
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1819
625
|
case PM_IMPLICIT_NODE: {
|
1820
626
|
pm_implicit_node_t *cast = (pm_implicit_node_t *) node;
|
1821
|
-
|
1822
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
627
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1823
628
|
break;
|
1824
629
|
}
|
1825
|
-
#line
|
630
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1826
631
|
case PM_IMPLICIT_REST_NODE: {
|
1827
|
-
pm_implicit_rest_node_t *cast = (pm_implicit_rest_node_t *) node;
|
1828
|
-
memsize->memsize += sizeof(*cast);
|
1829
632
|
break;
|
1830
633
|
}
|
1831
|
-
#line
|
634
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1832
635
|
case PM_IN_NODE: {
|
1833
636
|
pm_in_node_t *cast = (pm_in_node_t *) node;
|
1834
|
-
|
1835
|
-
pm_node_memsize_node((pm_node_t *)cast->pattern, memsize);
|
637
|
+
pm_node_destroy(parser, (pm_node_t *)cast->pattern);
|
1836
638
|
if (cast->statements != NULL) {
|
1837
|
-
|
639
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
1838
640
|
}
|
1839
641
|
break;
|
1840
642
|
}
|
1841
|
-
#line
|
643
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1842
644
|
case PM_INDEX_AND_WRITE_NODE: {
|
1843
645
|
pm_index_and_write_node_t *cast = (pm_index_and_write_node_t *) node;
|
1844
|
-
memsize->memsize += sizeof(*cast);
|
1845
646
|
if (cast->receiver != NULL) {
|
1846
|
-
|
647
|
+
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
1847
648
|
}
|
1848
649
|
if (cast->arguments != NULL) {
|
1849
|
-
|
650
|
+
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
1850
651
|
}
|
1851
652
|
if (cast->block != NULL) {
|
1852
|
-
|
653
|
+
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
1853
654
|
}
|
1854
|
-
|
655
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1855
656
|
break;
|
1856
657
|
}
|
1857
|
-
#line
|
658
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1858
659
|
case PM_INDEX_OPERATOR_WRITE_NODE: {
|
1859
660
|
pm_index_operator_write_node_t *cast = (pm_index_operator_write_node_t *) node;
|
1860
|
-
memsize->memsize += sizeof(*cast);
|
1861
661
|
if (cast->receiver != NULL) {
|
1862
|
-
|
662
|
+
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
1863
663
|
}
|
1864
664
|
if (cast->arguments != NULL) {
|
1865
|
-
|
665
|
+
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
1866
666
|
}
|
1867
667
|
if (cast->block != NULL) {
|
1868
|
-
|
668
|
+
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
1869
669
|
}
|
1870
|
-
|
670
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1871
671
|
break;
|
1872
672
|
}
|
1873
|
-
#line
|
673
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1874
674
|
case PM_INDEX_OR_WRITE_NODE: {
|
1875
675
|
pm_index_or_write_node_t *cast = (pm_index_or_write_node_t *) node;
|
1876
|
-
memsize->memsize += sizeof(*cast);
|
1877
676
|
if (cast->receiver != NULL) {
|
1878
|
-
|
677
|
+
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
1879
678
|
}
|
1880
679
|
if (cast->arguments != NULL) {
|
1881
|
-
|
680
|
+
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
1882
681
|
}
|
1883
682
|
if (cast->block != NULL) {
|
1884
|
-
|
683
|
+
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
1885
684
|
}
|
1886
|
-
|
685
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1887
686
|
break;
|
1888
687
|
}
|
1889
|
-
#line
|
688
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1890
689
|
case PM_INDEX_TARGET_NODE: {
|
1891
690
|
pm_index_target_node_t *cast = (pm_index_target_node_t *) node;
|
1892
|
-
|
1893
|
-
pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
|
691
|
+
pm_node_destroy(parser, (pm_node_t *)cast->receiver);
|
1894
692
|
if (cast->arguments != NULL) {
|
1895
|
-
|
693
|
+
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
1896
694
|
}
|
1897
695
|
if (cast->block != NULL) {
|
1898
|
-
|
696
|
+
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
1899
697
|
}
|
1900
698
|
break;
|
1901
699
|
}
|
1902
|
-
#line
|
700
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1903
701
|
case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
1904
702
|
pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
|
1905
|
-
|
1906
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
703
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1907
704
|
break;
|
1908
705
|
}
|
1909
|
-
#line
|
706
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1910
707
|
case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
1911
708
|
pm_instance_variable_operator_write_node_t *cast = (pm_instance_variable_operator_write_node_t *) node;
|
1912
|
-
|
1913
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
709
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1914
710
|
break;
|
1915
711
|
}
|
1916
|
-
#line
|
712
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1917
713
|
case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
|
1918
714
|
pm_instance_variable_or_write_node_t *cast = (pm_instance_variable_or_write_node_t *) node;
|
1919
|
-
|
1920
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
715
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1921
716
|
break;
|
1922
717
|
}
|
1923
|
-
#line
|
718
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1924
719
|
case PM_INSTANCE_VARIABLE_READ_NODE: {
|
1925
|
-
pm_instance_variable_read_node_t *cast = (pm_instance_variable_read_node_t *) node;
|
1926
|
-
memsize->memsize += sizeof(*cast);
|
1927
720
|
break;
|
1928
721
|
}
|
1929
|
-
#line
|
722
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1930
723
|
case PM_INSTANCE_VARIABLE_TARGET_NODE: {
|
1931
|
-
pm_instance_variable_target_node_t *cast = (pm_instance_variable_target_node_t *) node;
|
1932
|
-
memsize->memsize += sizeof(*cast);
|
1933
724
|
break;
|
1934
725
|
}
|
1935
|
-
#line
|
726
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1936
727
|
case PM_INSTANCE_VARIABLE_WRITE_NODE: {
|
1937
728
|
pm_instance_variable_write_node_t *cast = (pm_instance_variable_write_node_t *) node;
|
1938
|
-
|
1939
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
729
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
1940
730
|
break;
|
1941
731
|
}
|
1942
|
-
#line
|
732
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1943
733
|
case PM_INTEGER_NODE: {
|
1944
734
|
pm_integer_node_t *cast = (pm_integer_node_t *) node;
|
1945
|
-
|
1946
|
-
memsize->memsize += (pm_integer_memsize(&cast->value) - sizeof(pm_integer_t));
|
735
|
+
pm_integer_free(&cast->value);
|
1947
736
|
break;
|
1948
737
|
}
|
1949
|
-
#line
|
738
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1950
739
|
case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
|
1951
740
|
pm_interpolated_match_last_line_node_t *cast = (pm_interpolated_match_last_line_node_t *) node;
|
1952
|
-
|
1953
|
-
memsize->memsize += (pm_node_list_memsize(&cast->parts, memsize) - sizeof(pm_node_list_t));
|
741
|
+
pm_node_list_destroy(parser, &cast->parts);
|
1954
742
|
break;
|
1955
743
|
}
|
1956
|
-
#line
|
744
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1957
745
|
case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
1958
746
|
pm_interpolated_regular_expression_node_t *cast = (pm_interpolated_regular_expression_node_t *) node;
|
1959
|
-
|
1960
|
-
memsize->memsize += (pm_node_list_memsize(&cast->parts, memsize) - sizeof(pm_node_list_t));
|
747
|
+
pm_node_list_destroy(parser, &cast->parts);
|
1961
748
|
break;
|
1962
749
|
}
|
1963
|
-
#line
|
750
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1964
751
|
case PM_INTERPOLATED_STRING_NODE: {
|
1965
752
|
pm_interpolated_string_node_t *cast = (pm_interpolated_string_node_t *) node;
|
1966
|
-
|
1967
|
-
memsize->memsize += (pm_node_list_memsize(&cast->parts, memsize) - sizeof(pm_node_list_t));
|
753
|
+
pm_node_list_destroy(parser, &cast->parts);
|
1968
754
|
break;
|
1969
755
|
}
|
1970
|
-
#line
|
756
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1971
757
|
case PM_INTERPOLATED_SYMBOL_NODE: {
|
1972
758
|
pm_interpolated_symbol_node_t *cast = (pm_interpolated_symbol_node_t *) node;
|
1973
|
-
|
1974
|
-
memsize->memsize += (pm_node_list_memsize(&cast->parts, memsize) - sizeof(pm_node_list_t));
|
759
|
+
pm_node_list_destroy(parser, &cast->parts);
|
1975
760
|
break;
|
1976
761
|
}
|
1977
|
-
#line
|
762
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1978
763
|
case PM_INTERPOLATED_X_STRING_NODE: {
|
1979
764
|
pm_interpolated_x_string_node_t *cast = (pm_interpolated_x_string_node_t *) node;
|
1980
|
-
|
1981
|
-
|
765
|
+
pm_node_list_destroy(parser, &cast->parts);
|
766
|
+
break;
|
767
|
+
}
|
768
|
+
#line 110 "prism/templates/src/node.c.erb"
|
769
|
+
case PM_IT_LOCAL_VARIABLE_READ_NODE: {
|
1982
770
|
break;
|
1983
771
|
}
|
1984
|
-
#line
|
772
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1985
773
|
case PM_IT_PARAMETERS_NODE: {
|
1986
|
-
pm_it_parameters_node_t *cast = (pm_it_parameters_node_t *) node;
|
1987
|
-
memsize->memsize += sizeof(*cast);
|
1988
774
|
break;
|
1989
775
|
}
|
1990
|
-
#line
|
776
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1991
777
|
case PM_KEYWORD_HASH_NODE: {
|
1992
778
|
pm_keyword_hash_node_t *cast = (pm_keyword_hash_node_t *) node;
|
1993
|
-
|
1994
|
-
memsize->memsize += (pm_node_list_memsize(&cast->elements, memsize) - sizeof(pm_node_list_t));
|
779
|
+
pm_node_list_destroy(parser, &cast->elements);
|
1995
780
|
break;
|
1996
781
|
}
|
1997
|
-
#line
|
782
|
+
#line 110 "prism/templates/src/node.c.erb"
|
1998
783
|
case PM_KEYWORD_REST_PARAMETER_NODE: {
|
1999
|
-
pm_keyword_rest_parameter_node_t *cast = (pm_keyword_rest_parameter_node_t *) node;
|
2000
|
-
memsize->memsize += sizeof(*cast);
|
2001
784
|
break;
|
2002
785
|
}
|
2003
|
-
#line
|
786
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2004
787
|
case PM_LAMBDA_NODE: {
|
2005
788
|
pm_lambda_node_t *cast = (pm_lambda_node_t *) node;
|
2006
|
-
|
2007
|
-
memsize->memsize += (pm_constant_id_list_memsize(&cast->locals) - sizeof(pm_constant_id_list_t));
|
789
|
+
pm_constant_id_list_free(&cast->locals);
|
2008
790
|
if (cast->parameters != NULL) {
|
2009
|
-
|
791
|
+
pm_node_destroy(parser, (pm_node_t *)cast->parameters);
|
2010
792
|
}
|
2011
793
|
if (cast->body != NULL) {
|
2012
|
-
|
794
|
+
pm_node_destroy(parser, (pm_node_t *)cast->body);
|
2013
795
|
}
|
2014
796
|
break;
|
2015
797
|
}
|
2016
|
-
#line
|
798
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2017
799
|
case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
|
2018
800
|
pm_local_variable_and_write_node_t *cast = (pm_local_variable_and_write_node_t *) node;
|
2019
|
-
|
2020
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
801
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
2021
802
|
break;
|
2022
803
|
}
|
2023
|
-
#line
|
804
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2024
805
|
case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
2025
806
|
pm_local_variable_operator_write_node_t *cast = (pm_local_variable_operator_write_node_t *) node;
|
2026
|
-
|
2027
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
807
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
2028
808
|
break;
|
2029
809
|
}
|
2030
|
-
#line
|
810
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2031
811
|
case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
|
2032
812
|
pm_local_variable_or_write_node_t *cast = (pm_local_variable_or_write_node_t *) node;
|
2033
|
-
|
2034
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
813
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
2035
814
|
break;
|
2036
815
|
}
|
2037
|
-
#line
|
816
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2038
817
|
case PM_LOCAL_VARIABLE_READ_NODE: {
|
2039
|
-
pm_local_variable_read_node_t *cast = (pm_local_variable_read_node_t *) node;
|
2040
|
-
memsize->memsize += sizeof(*cast);
|
2041
818
|
break;
|
2042
819
|
}
|
2043
|
-
#line
|
820
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2044
821
|
case PM_LOCAL_VARIABLE_TARGET_NODE: {
|
2045
|
-
pm_local_variable_target_node_t *cast = (pm_local_variable_target_node_t *) node;
|
2046
|
-
memsize->memsize += sizeof(*cast);
|
2047
822
|
break;
|
2048
823
|
}
|
2049
|
-
#line
|
824
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2050
825
|
case PM_LOCAL_VARIABLE_WRITE_NODE: {
|
2051
826
|
pm_local_variable_write_node_t *cast = (pm_local_variable_write_node_t *) node;
|
2052
|
-
|
2053
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
827
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
2054
828
|
break;
|
2055
829
|
}
|
2056
|
-
#line
|
830
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2057
831
|
case PM_MATCH_LAST_LINE_NODE: {
|
2058
832
|
pm_match_last_line_node_t *cast = (pm_match_last_line_node_t *) node;
|
2059
|
-
|
2060
|
-
memsize->memsize += (pm_string_memsize(&cast->unescaped) - sizeof(pm_string_t));
|
833
|
+
pm_string_free(&cast->unescaped);
|
2061
834
|
break;
|
2062
835
|
}
|
2063
|
-
#line
|
836
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2064
837
|
case PM_MATCH_PREDICATE_NODE: {
|
2065
838
|
pm_match_predicate_node_t *cast = (pm_match_predicate_node_t *) node;
|
2066
|
-
|
2067
|
-
|
2068
|
-
pm_node_memsize_node((pm_node_t *)cast->pattern, memsize);
|
839
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
840
|
+
pm_node_destroy(parser, (pm_node_t *)cast->pattern);
|
2069
841
|
break;
|
2070
842
|
}
|
2071
|
-
#line
|
843
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2072
844
|
case PM_MATCH_REQUIRED_NODE: {
|
2073
845
|
pm_match_required_node_t *cast = (pm_match_required_node_t *) node;
|
2074
|
-
|
2075
|
-
|
2076
|
-
pm_node_memsize_node((pm_node_t *)cast->pattern, memsize);
|
846
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
847
|
+
pm_node_destroy(parser, (pm_node_t *)cast->pattern);
|
2077
848
|
break;
|
2078
849
|
}
|
2079
|
-
#line
|
850
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2080
851
|
case PM_MATCH_WRITE_NODE: {
|
2081
852
|
pm_match_write_node_t *cast = (pm_match_write_node_t *) node;
|
2082
|
-
|
2083
|
-
|
2084
|
-
memsize->memsize += (pm_node_list_memsize(&cast->targets, memsize) - sizeof(pm_node_list_t));
|
853
|
+
pm_node_destroy(parser, (pm_node_t *)cast->call);
|
854
|
+
pm_node_list_destroy(parser, &cast->targets);
|
2085
855
|
break;
|
2086
856
|
}
|
2087
|
-
#line
|
857
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2088
858
|
case PM_MISSING_NODE: {
|
2089
|
-
pm_missing_node_t *cast = (pm_missing_node_t *) node;
|
2090
|
-
memsize->memsize += sizeof(*cast);
|
2091
859
|
break;
|
2092
860
|
}
|
2093
|
-
#line
|
861
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2094
862
|
case PM_MODULE_NODE: {
|
2095
863
|
pm_module_node_t *cast = (pm_module_node_t *) node;
|
2096
|
-
|
2097
|
-
|
2098
|
-
pm_node_memsize_node((pm_node_t *)cast->constant_path, memsize);
|
864
|
+
pm_constant_id_list_free(&cast->locals);
|
865
|
+
pm_node_destroy(parser, (pm_node_t *)cast->constant_path);
|
2099
866
|
if (cast->body != NULL) {
|
2100
|
-
|
867
|
+
pm_node_destroy(parser, (pm_node_t *)cast->body);
|
2101
868
|
}
|
2102
869
|
break;
|
2103
870
|
}
|
2104
|
-
#line
|
871
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2105
872
|
case PM_MULTI_TARGET_NODE: {
|
2106
873
|
pm_multi_target_node_t *cast = (pm_multi_target_node_t *) node;
|
2107
|
-
|
2108
|
-
memsize->memsize += (pm_node_list_memsize(&cast->lefts, memsize) - sizeof(pm_node_list_t));
|
874
|
+
pm_node_list_destroy(parser, &cast->lefts);
|
2109
875
|
if (cast->rest != NULL) {
|
2110
|
-
|
876
|
+
pm_node_destroy(parser, (pm_node_t *)cast->rest);
|
2111
877
|
}
|
2112
|
-
|
878
|
+
pm_node_list_destroy(parser, &cast->rights);
|
2113
879
|
break;
|
2114
880
|
}
|
2115
|
-
#line
|
881
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2116
882
|
case PM_MULTI_WRITE_NODE: {
|
2117
883
|
pm_multi_write_node_t *cast = (pm_multi_write_node_t *) node;
|
2118
|
-
|
2119
|
-
memsize->memsize += (pm_node_list_memsize(&cast->lefts, memsize) - sizeof(pm_node_list_t));
|
884
|
+
pm_node_list_destroy(parser, &cast->lefts);
|
2120
885
|
if (cast->rest != NULL) {
|
2121
|
-
|
886
|
+
pm_node_destroy(parser, (pm_node_t *)cast->rest);
|
2122
887
|
}
|
2123
|
-
|
2124
|
-
|
888
|
+
pm_node_list_destroy(parser, &cast->rights);
|
889
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
2125
890
|
break;
|
2126
891
|
}
|
2127
|
-
#line
|
892
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2128
893
|
case PM_NEXT_NODE: {
|
2129
894
|
pm_next_node_t *cast = (pm_next_node_t *) node;
|
2130
|
-
memsize->memsize += sizeof(*cast);
|
2131
895
|
if (cast->arguments != NULL) {
|
2132
|
-
|
896
|
+
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
2133
897
|
}
|
2134
898
|
break;
|
2135
899
|
}
|
2136
|
-
#line
|
900
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2137
901
|
case PM_NIL_NODE: {
|
2138
|
-
pm_nil_node_t *cast = (pm_nil_node_t *) node;
|
2139
|
-
memsize->memsize += sizeof(*cast);
|
2140
902
|
break;
|
2141
903
|
}
|
2142
|
-
#line
|
904
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2143
905
|
case PM_NO_KEYWORDS_PARAMETER_NODE: {
|
2144
|
-
pm_no_keywords_parameter_node_t *cast = (pm_no_keywords_parameter_node_t *) node;
|
2145
|
-
memsize->memsize += sizeof(*cast);
|
2146
906
|
break;
|
2147
907
|
}
|
2148
|
-
#line
|
908
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2149
909
|
case PM_NUMBERED_PARAMETERS_NODE: {
|
2150
|
-
pm_numbered_parameters_node_t *cast = (pm_numbered_parameters_node_t *) node;
|
2151
|
-
memsize->memsize += sizeof(*cast);
|
2152
910
|
break;
|
2153
911
|
}
|
2154
|
-
#line
|
912
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2155
913
|
case PM_NUMBERED_REFERENCE_READ_NODE: {
|
2156
|
-
pm_numbered_reference_read_node_t *cast = (pm_numbered_reference_read_node_t *) node;
|
2157
|
-
memsize->memsize += sizeof(*cast);
|
2158
914
|
break;
|
2159
915
|
}
|
2160
|
-
#line
|
916
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2161
917
|
case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
|
2162
918
|
pm_optional_keyword_parameter_node_t *cast = (pm_optional_keyword_parameter_node_t *) node;
|
2163
|
-
|
2164
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
919
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
2165
920
|
break;
|
2166
921
|
}
|
2167
|
-
#line
|
922
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2168
923
|
case PM_OPTIONAL_PARAMETER_NODE: {
|
2169
924
|
pm_optional_parameter_node_t *cast = (pm_optional_parameter_node_t *) node;
|
2170
|
-
|
2171
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
925
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
2172
926
|
break;
|
2173
927
|
}
|
2174
|
-
#line
|
928
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2175
929
|
case PM_OR_NODE: {
|
2176
930
|
pm_or_node_t *cast = (pm_or_node_t *) node;
|
2177
|
-
|
2178
|
-
|
2179
|
-
pm_node_memsize_node((pm_node_t *)cast->right, memsize);
|
931
|
+
pm_node_destroy(parser, (pm_node_t *)cast->left);
|
932
|
+
pm_node_destroy(parser, (pm_node_t *)cast->right);
|
2180
933
|
break;
|
2181
934
|
}
|
2182
|
-
#line
|
935
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2183
936
|
case PM_PARAMETERS_NODE: {
|
2184
937
|
pm_parameters_node_t *cast = (pm_parameters_node_t *) node;
|
2185
|
-
|
2186
|
-
|
2187
|
-
memsize->memsize += (pm_node_list_memsize(&cast->optionals, memsize) - sizeof(pm_node_list_t));
|
938
|
+
pm_node_list_destroy(parser, &cast->requireds);
|
939
|
+
pm_node_list_destroy(parser, &cast->optionals);
|
2188
940
|
if (cast->rest != NULL) {
|
2189
|
-
|
941
|
+
pm_node_destroy(parser, (pm_node_t *)cast->rest);
|
2190
942
|
}
|
2191
|
-
|
2192
|
-
|
943
|
+
pm_node_list_destroy(parser, &cast->posts);
|
944
|
+
pm_node_list_destroy(parser, &cast->keywords);
|
2193
945
|
if (cast->keyword_rest != NULL) {
|
2194
|
-
|
946
|
+
pm_node_destroy(parser, (pm_node_t *)cast->keyword_rest);
|
2195
947
|
}
|
2196
948
|
if (cast->block != NULL) {
|
2197
|
-
|
949
|
+
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
2198
950
|
}
|
2199
951
|
break;
|
2200
952
|
}
|
2201
|
-
#line
|
953
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2202
954
|
case PM_PARENTHESES_NODE: {
|
2203
955
|
pm_parentheses_node_t *cast = (pm_parentheses_node_t *) node;
|
2204
|
-
memsize->memsize += sizeof(*cast);
|
2205
956
|
if (cast->body != NULL) {
|
2206
|
-
|
957
|
+
pm_node_destroy(parser, (pm_node_t *)cast->body);
|
2207
958
|
}
|
2208
959
|
break;
|
2209
960
|
}
|
2210
|
-
#line
|
961
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2211
962
|
case PM_PINNED_EXPRESSION_NODE: {
|
2212
963
|
pm_pinned_expression_node_t *cast = (pm_pinned_expression_node_t *) node;
|
2213
|
-
|
2214
|
-
pm_node_memsize_node((pm_node_t *)cast->expression, memsize);
|
964
|
+
pm_node_destroy(parser, (pm_node_t *)cast->expression);
|
2215
965
|
break;
|
2216
966
|
}
|
2217
|
-
#line
|
967
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2218
968
|
case PM_PINNED_VARIABLE_NODE: {
|
2219
969
|
pm_pinned_variable_node_t *cast = (pm_pinned_variable_node_t *) node;
|
2220
|
-
|
2221
|
-
pm_node_memsize_node((pm_node_t *)cast->variable, memsize);
|
970
|
+
pm_node_destroy(parser, (pm_node_t *)cast->variable);
|
2222
971
|
break;
|
2223
972
|
}
|
2224
|
-
#line
|
973
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2225
974
|
case PM_POST_EXECUTION_NODE: {
|
2226
975
|
pm_post_execution_node_t *cast = (pm_post_execution_node_t *) node;
|
2227
|
-
memsize->memsize += sizeof(*cast);
|
2228
976
|
if (cast->statements != NULL) {
|
2229
|
-
|
977
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
2230
978
|
}
|
2231
979
|
break;
|
2232
980
|
}
|
2233
|
-
#line
|
981
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2234
982
|
case PM_PRE_EXECUTION_NODE: {
|
2235
983
|
pm_pre_execution_node_t *cast = (pm_pre_execution_node_t *) node;
|
2236
|
-
memsize->memsize += sizeof(*cast);
|
2237
984
|
if (cast->statements != NULL) {
|
2238
|
-
|
985
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
2239
986
|
}
|
2240
987
|
break;
|
2241
988
|
}
|
2242
|
-
#line
|
989
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2243
990
|
case PM_PROGRAM_NODE: {
|
2244
991
|
pm_program_node_t *cast = (pm_program_node_t *) node;
|
2245
|
-
|
2246
|
-
|
2247
|
-
pm_node_memsize_node((pm_node_t *)cast->statements, memsize);
|
992
|
+
pm_constant_id_list_free(&cast->locals);
|
993
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
2248
994
|
break;
|
2249
995
|
}
|
2250
|
-
#line
|
996
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2251
997
|
case PM_RANGE_NODE: {
|
2252
998
|
pm_range_node_t *cast = (pm_range_node_t *) node;
|
2253
|
-
memsize->memsize += sizeof(*cast);
|
2254
999
|
if (cast->left != NULL) {
|
2255
|
-
|
1000
|
+
pm_node_destroy(parser, (pm_node_t *)cast->left);
|
2256
1001
|
}
|
2257
1002
|
if (cast->right != NULL) {
|
2258
|
-
|
1003
|
+
pm_node_destroy(parser, (pm_node_t *)cast->right);
|
2259
1004
|
}
|
2260
1005
|
break;
|
2261
1006
|
}
|
2262
|
-
#line
|
1007
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2263
1008
|
case PM_RATIONAL_NODE: {
|
2264
1009
|
pm_rational_node_t *cast = (pm_rational_node_t *) node;
|
2265
|
-
|
2266
|
-
|
1010
|
+
pm_integer_free(&cast->numerator);
|
1011
|
+
pm_integer_free(&cast->denominator);
|
2267
1012
|
break;
|
2268
1013
|
}
|
2269
|
-
#line
|
1014
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2270
1015
|
case PM_REDO_NODE: {
|
2271
|
-
pm_redo_node_t *cast = (pm_redo_node_t *) node;
|
2272
|
-
memsize->memsize += sizeof(*cast);
|
2273
1016
|
break;
|
2274
1017
|
}
|
2275
|
-
#line
|
1018
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2276
1019
|
case PM_REGULAR_EXPRESSION_NODE: {
|
2277
1020
|
pm_regular_expression_node_t *cast = (pm_regular_expression_node_t *) node;
|
2278
|
-
|
2279
|
-
memsize->memsize += (pm_string_memsize(&cast->unescaped) - sizeof(pm_string_t));
|
1021
|
+
pm_string_free(&cast->unescaped);
|
2280
1022
|
break;
|
2281
1023
|
}
|
2282
|
-
#line
|
1024
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2283
1025
|
case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
|
2284
|
-
pm_required_keyword_parameter_node_t *cast = (pm_required_keyword_parameter_node_t *) node;
|
2285
|
-
memsize->memsize += sizeof(*cast);
|
2286
1026
|
break;
|
2287
1027
|
}
|
2288
|
-
#line
|
1028
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2289
1029
|
case PM_REQUIRED_PARAMETER_NODE: {
|
2290
|
-
pm_required_parameter_node_t *cast = (pm_required_parameter_node_t *) node;
|
2291
|
-
memsize->memsize += sizeof(*cast);
|
2292
1030
|
break;
|
2293
1031
|
}
|
2294
|
-
#line
|
1032
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2295
1033
|
case PM_RESCUE_MODIFIER_NODE: {
|
2296
1034
|
pm_rescue_modifier_node_t *cast = (pm_rescue_modifier_node_t *) node;
|
2297
|
-
|
2298
|
-
|
2299
|
-
pm_node_memsize_node((pm_node_t *)cast->rescue_expression, memsize);
|
1035
|
+
pm_node_destroy(parser, (pm_node_t *)cast->expression);
|
1036
|
+
pm_node_destroy(parser, (pm_node_t *)cast->rescue_expression);
|
2300
1037
|
break;
|
2301
1038
|
}
|
2302
|
-
#line
|
1039
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2303
1040
|
case PM_RESCUE_NODE: {
|
2304
1041
|
pm_rescue_node_t *cast = (pm_rescue_node_t *) node;
|
2305
|
-
|
2306
|
-
memsize->memsize += (pm_node_list_memsize(&cast->exceptions, memsize) - sizeof(pm_node_list_t));
|
1042
|
+
pm_node_list_destroy(parser, &cast->exceptions);
|
2307
1043
|
if (cast->reference != NULL) {
|
2308
|
-
|
1044
|
+
pm_node_destroy(parser, (pm_node_t *)cast->reference);
|
2309
1045
|
}
|
2310
1046
|
if (cast->statements != NULL) {
|
2311
|
-
|
1047
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
2312
1048
|
}
|
2313
|
-
if (cast->
|
2314
|
-
|
1049
|
+
if (cast->subsequent != NULL) {
|
1050
|
+
pm_node_destroy(parser, (pm_node_t *)cast->subsequent);
|
2315
1051
|
}
|
2316
1052
|
break;
|
2317
1053
|
}
|
2318
|
-
#line
|
1054
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2319
1055
|
case PM_REST_PARAMETER_NODE: {
|
2320
|
-
pm_rest_parameter_node_t *cast = (pm_rest_parameter_node_t *) node;
|
2321
|
-
memsize->memsize += sizeof(*cast);
|
2322
1056
|
break;
|
2323
1057
|
}
|
2324
|
-
#line
|
1058
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2325
1059
|
case PM_RETRY_NODE: {
|
2326
|
-
pm_retry_node_t *cast = (pm_retry_node_t *) node;
|
2327
|
-
memsize->memsize += sizeof(*cast);
|
2328
1060
|
break;
|
2329
1061
|
}
|
2330
|
-
#line
|
1062
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2331
1063
|
case PM_RETURN_NODE: {
|
2332
1064
|
pm_return_node_t *cast = (pm_return_node_t *) node;
|
2333
|
-
memsize->memsize += sizeof(*cast);
|
2334
1065
|
if (cast->arguments != NULL) {
|
2335
|
-
|
1066
|
+
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
2336
1067
|
}
|
2337
1068
|
break;
|
2338
1069
|
}
|
2339
|
-
#line
|
1070
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2340
1071
|
case PM_SELF_NODE: {
|
2341
|
-
pm_self_node_t *cast = (pm_self_node_t *) node;
|
2342
|
-
memsize->memsize += sizeof(*cast);
|
2343
1072
|
break;
|
2344
1073
|
}
|
2345
|
-
#line
|
1074
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2346
1075
|
case PM_SHAREABLE_CONSTANT_NODE: {
|
2347
1076
|
pm_shareable_constant_node_t *cast = (pm_shareable_constant_node_t *) node;
|
2348
|
-
|
2349
|
-
pm_node_memsize_node((pm_node_t *)cast->write, memsize);
|
1077
|
+
pm_node_destroy(parser, (pm_node_t *)cast->write);
|
2350
1078
|
break;
|
2351
1079
|
}
|
2352
|
-
#line
|
1080
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2353
1081
|
case PM_SINGLETON_CLASS_NODE: {
|
2354
1082
|
pm_singleton_class_node_t *cast = (pm_singleton_class_node_t *) node;
|
2355
|
-
|
2356
|
-
|
2357
|
-
pm_node_memsize_node((pm_node_t *)cast->expression, memsize);
|
1083
|
+
pm_constant_id_list_free(&cast->locals);
|
1084
|
+
pm_node_destroy(parser, (pm_node_t *)cast->expression);
|
2358
1085
|
if (cast->body != NULL) {
|
2359
|
-
|
1086
|
+
pm_node_destroy(parser, (pm_node_t *)cast->body);
|
2360
1087
|
}
|
2361
1088
|
break;
|
2362
1089
|
}
|
2363
|
-
#line
|
1090
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2364
1091
|
case PM_SOURCE_ENCODING_NODE: {
|
2365
|
-
pm_source_encoding_node_t *cast = (pm_source_encoding_node_t *) node;
|
2366
|
-
memsize->memsize += sizeof(*cast);
|
2367
1092
|
break;
|
2368
1093
|
}
|
2369
|
-
#line
|
1094
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2370
1095
|
case PM_SOURCE_FILE_NODE: {
|
2371
1096
|
pm_source_file_node_t *cast = (pm_source_file_node_t *) node;
|
2372
|
-
|
2373
|
-
memsize->memsize += (pm_string_memsize(&cast->filepath) - sizeof(pm_string_t));
|
1097
|
+
pm_string_free(&cast->filepath);
|
2374
1098
|
break;
|
2375
1099
|
}
|
2376
|
-
#line
|
1100
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2377
1101
|
case PM_SOURCE_LINE_NODE: {
|
2378
|
-
pm_source_line_node_t *cast = (pm_source_line_node_t *) node;
|
2379
|
-
memsize->memsize += sizeof(*cast);
|
2380
1102
|
break;
|
2381
1103
|
}
|
2382
|
-
#line
|
1104
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2383
1105
|
case PM_SPLAT_NODE: {
|
2384
1106
|
pm_splat_node_t *cast = (pm_splat_node_t *) node;
|
2385
|
-
memsize->memsize += sizeof(*cast);
|
2386
1107
|
if (cast->expression != NULL) {
|
2387
|
-
|
1108
|
+
pm_node_destroy(parser, (pm_node_t *)cast->expression);
|
2388
1109
|
}
|
2389
1110
|
break;
|
2390
1111
|
}
|
2391
|
-
#line
|
1112
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2392
1113
|
case PM_STATEMENTS_NODE: {
|
2393
1114
|
pm_statements_node_t *cast = (pm_statements_node_t *) node;
|
2394
|
-
|
2395
|
-
memsize->memsize += (pm_node_list_memsize(&cast->body, memsize) - sizeof(pm_node_list_t));
|
1115
|
+
pm_node_list_destroy(parser, &cast->body);
|
2396
1116
|
break;
|
2397
1117
|
}
|
2398
|
-
#line
|
1118
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2399
1119
|
case PM_STRING_NODE: {
|
2400
1120
|
pm_string_node_t *cast = (pm_string_node_t *) node;
|
2401
|
-
|
2402
|
-
memsize->memsize += (pm_string_memsize(&cast->unescaped) - sizeof(pm_string_t));
|
1121
|
+
pm_string_free(&cast->unescaped);
|
2403
1122
|
break;
|
2404
1123
|
}
|
2405
|
-
#line
|
1124
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2406
1125
|
case PM_SUPER_NODE: {
|
2407
1126
|
pm_super_node_t *cast = (pm_super_node_t *) node;
|
2408
|
-
memsize->memsize += sizeof(*cast);
|
2409
1127
|
if (cast->arguments != NULL) {
|
2410
|
-
|
1128
|
+
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
2411
1129
|
}
|
2412
1130
|
if (cast->block != NULL) {
|
2413
|
-
|
1131
|
+
pm_node_destroy(parser, (pm_node_t *)cast->block);
|
2414
1132
|
}
|
2415
1133
|
break;
|
2416
1134
|
}
|
2417
|
-
#line
|
1135
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2418
1136
|
case PM_SYMBOL_NODE: {
|
2419
1137
|
pm_symbol_node_t *cast = (pm_symbol_node_t *) node;
|
2420
|
-
|
2421
|
-
memsize->memsize += (pm_string_memsize(&cast->unescaped) - sizeof(pm_string_t));
|
1138
|
+
pm_string_free(&cast->unescaped);
|
2422
1139
|
break;
|
2423
1140
|
}
|
2424
|
-
#line
|
1141
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2425
1142
|
case PM_TRUE_NODE: {
|
2426
|
-
pm_true_node_t *cast = (pm_true_node_t *) node;
|
2427
|
-
memsize->memsize += sizeof(*cast);
|
2428
1143
|
break;
|
2429
1144
|
}
|
2430
|
-
#line
|
1145
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2431
1146
|
case PM_UNDEF_NODE: {
|
2432
1147
|
pm_undef_node_t *cast = (pm_undef_node_t *) node;
|
2433
|
-
|
2434
|
-
memsize->memsize += (pm_node_list_memsize(&cast->names, memsize) - sizeof(pm_node_list_t));
|
1148
|
+
pm_node_list_destroy(parser, &cast->names);
|
2435
1149
|
break;
|
2436
1150
|
}
|
2437
|
-
#line
|
1151
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2438
1152
|
case PM_UNLESS_NODE: {
|
2439
1153
|
pm_unless_node_t *cast = (pm_unless_node_t *) node;
|
2440
|
-
|
2441
|
-
pm_node_memsize_node((pm_node_t *)cast->predicate, memsize);
|
1154
|
+
pm_node_destroy(parser, (pm_node_t *)cast->predicate);
|
2442
1155
|
if (cast->statements != NULL) {
|
2443
|
-
|
1156
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
2444
1157
|
}
|
2445
|
-
if (cast->
|
2446
|
-
|
1158
|
+
if (cast->else_clause != NULL) {
|
1159
|
+
pm_node_destroy(parser, (pm_node_t *)cast->else_clause);
|
2447
1160
|
}
|
2448
1161
|
break;
|
2449
1162
|
}
|
2450
|
-
#line
|
1163
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2451
1164
|
case PM_UNTIL_NODE: {
|
2452
1165
|
pm_until_node_t *cast = (pm_until_node_t *) node;
|
2453
|
-
|
2454
|
-
pm_node_memsize_node((pm_node_t *)cast->predicate, memsize);
|
1166
|
+
pm_node_destroy(parser, (pm_node_t *)cast->predicate);
|
2455
1167
|
if (cast->statements != NULL) {
|
2456
|
-
|
1168
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
2457
1169
|
}
|
2458
1170
|
break;
|
2459
1171
|
}
|
2460
|
-
#line
|
1172
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2461
1173
|
case PM_WHEN_NODE: {
|
2462
1174
|
pm_when_node_t *cast = (pm_when_node_t *) node;
|
2463
|
-
|
2464
|
-
memsize->memsize += (pm_node_list_memsize(&cast->conditions, memsize) - sizeof(pm_node_list_t));
|
1175
|
+
pm_node_list_destroy(parser, &cast->conditions);
|
2465
1176
|
if (cast->statements != NULL) {
|
2466
|
-
|
1177
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
2467
1178
|
}
|
2468
1179
|
break;
|
2469
1180
|
}
|
2470
|
-
#line
|
1181
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2471
1182
|
case PM_WHILE_NODE: {
|
2472
1183
|
pm_while_node_t *cast = (pm_while_node_t *) node;
|
2473
|
-
|
2474
|
-
pm_node_memsize_node((pm_node_t *)cast->predicate, memsize);
|
1184
|
+
pm_node_destroy(parser, (pm_node_t *)cast->predicate);
|
2475
1185
|
if (cast->statements != NULL) {
|
2476
|
-
|
1186
|
+
pm_node_destroy(parser, (pm_node_t *)cast->statements);
|
2477
1187
|
}
|
2478
1188
|
break;
|
2479
1189
|
}
|
2480
|
-
#line
|
1190
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2481
1191
|
case PM_X_STRING_NODE: {
|
2482
1192
|
pm_x_string_node_t *cast = (pm_x_string_node_t *) node;
|
2483
|
-
|
2484
|
-
memsize->memsize += (pm_string_memsize(&cast->unescaped) - sizeof(pm_string_t));
|
1193
|
+
pm_string_free(&cast->unescaped);
|
2485
1194
|
break;
|
2486
1195
|
}
|
2487
|
-
#line
|
1196
|
+
#line 110 "prism/templates/src/node.c.erb"
|
2488
1197
|
case PM_YIELD_NODE: {
|
2489
1198
|
pm_yield_node_t *cast = (pm_yield_node_t *) node;
|
2490
|
-
memsize->memsize += sizeof(*cast);
|
2491
1199
|
if (cast->arguments != NULL) {
|
2492
|
-
|
1200
|
+
pm_node_destroy(parser, (pm_node_t *)cast->arguments);
|
2493
1201
|
}
|
2494
1202
|
break;
|
2495
1203
|
}
|
2496
|
-
#line
|
1204
|
+
#line 139 "prism/templates/src/node.c.erb"
|
1205
|
+
default:
|
1206
|
+
assert(false && "unreachable");
|
1207
|
+
break;
|
2497
1208
|
}
|
2498
|
-
|
2499
|
-
|
2500
|
-
/**
|
2501
|
-
* Calculates the memory footprint of a given node.
|
2502
|
-
*/
|
2503
|
-
PRISM_EXPORTED_FUNCTION void
|
2504
|
-
pm_node_memsize(pm_node_t *node, pm_memsize_t *memsize) {
|
2505
|
-
*memsize = (pm_memsize_t) { .memsize = 0, .node_count = 0 };
|
2506
|
-
pm_node_memsize_node(node, memsize);
|
1209
|
+
xfree(node);
|
2507
1210
|
}
|
2508
1211
|
|
2509
1212
|
/**
|
@@ -2687,6 +1390,8 @@ pm_node_type_to_str(pm_node_type_t node_type)
|
|
2687
1390
|
return "PM_INTERPOLATED_SYMBOL_NODE";
|
2688
1391
|
case PM_INTERPOLATED_X_STRING_NODE:
|
2689
1392
|
return "PM_INTERPOLATED_X_STRING_NODE";
|
1393
|
+
case PM_IT_LOCAL_VARIABLE_READ_NODE:
|
1394
|
+
return "PM_IT_LOCAL_VARIABLE_READ_NODE";
|
2690
1395
|
case PM_IT_PARAMETERS_NODE:
|
2691
1396
|
return "PM_IT_PARAMETERS_NODE";
|
2692
1397
|
case PM_KEYWORD_HASH_NODE:
|
@@ -3126,9 +1831,9 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
3126
1831
|
pm_visit_node(conditions->nodes[index], visitor, data);
|
3127
1832
|
}
|
3128
1833
|
|
3129
|
-
// Visit the
|
3130
|
-
if (cast->
|
3131
|
-
pm_visit_node((const pm_node_t *) cast->
|
1834
|
+
// Visit the else_clause field
|
1835
|
+
if (cast->else_clause != NULL) {
|
1836
|
+
pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data);
|
3132
1837
|
}
|
3133
1838
|
|
3134
1839
|
break;
|
@@ -3147,9 +1852,9 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
3147
1852
|
pm_visit_node(conditions->nodes[index], visitor, data);
|
3148
1853
|
}
|
3149
1854
|
|
3150
|
-
// Visit the
|
3151
|
-
if (cast->
|
3152
|
-
pm_visit_node((const pm_node_t *) cast->
|
1855
|
+
// Visit the else_clause field
|
1856
|
+
if (cast->else_clause != NULL) {
|
1857
|
+
pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data);
|
3153
1858
|
}
|
3154
1859
|
|
3155
1860
|
break;
|
@@ -3524,9 +2229,9 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
3524
2229
|
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
3525
2230
|
}
|
3526
2231
|
|
3527
|
-
// Visit the
|
3528
|
-
if (cast->
|
3529
|
-
pm_visit_node((const pm_node_t *) cast->
|
2232
|
+
// Visit the subsequent field
|
2233
|
+
if (cast->subsequent != NULL) {
|
2234
|
+
pm_visit_node((const pm_node_t *) cast->subsequent, visitor, data);
|
3530
2235
|
}
|
3531
2236
|
|
3532
2237
|
break;
|
@@ -3742,6 +2447,8 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
3742
2447
|
|
3743
2448
|
break;
|
3744
2449
|
}
|
2450
|
+
case PM_IT_LOCAL_VARIABLE_READ_NODE:
|
2451
|
+
break;
|
3745
2452
|
case PM_IT_PARAMETERS_NODE:
|
3746
2453
|
break;
|
3747
2454
|
case PM_KEYWORD_HASH_NODE: {
|
@@ -4066,14 +2773,8 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
4066
2773
|
|
4067
2774
|
break;
|
4068
2775
|
}
|
4069
|
-
case PM_RATIONAL_NODE:
|
4070
|
-
const pm_rational_node_t *cast = (const pm_rational_node_t *) node;
|
4071
|
-
|
4072
|
-
// Visit the numeric field
|
4073
|
-
pm_visit_node((const pm_node_t *) cast->numeric, visitor, data);
|
4074
|
-
|
2776
|
+
case PM_RATIONAL_NODE:
|
4075
2777
|
break;
|
4076
|
-
}
|
4077
2778
|
case PM_REDO_NODE:
|
4078
2779
|
break;
|
4079
2780
|
case PM_REGULAR_EXPRESSION_NODE:
|
@@ -4112,9 +2813,9 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
4112
2813
|
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
4113
2814
|
}
|
4114
2815
|
|
4115
|
-
// Visit the
|
4116
|
-
if (cast->
|
4117
|
-
pm_visit_node((const pm_node_t *) cast->
|
2816
|
+
// Visit the subsequent field
|
2817
|
+
if (cast->subsequent != NULL) {
|
2818
|
+
pm_visit_node((const pm_node_t *) cast->subsequent, visitor, data);
|
4118
2819
|
}
|
4119
2820
|
|
4120
2821
|
break;
|
@@ -4226,9 +2927,9 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
4226
2927
|
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
4227
2928
|
}
|
4228
2929
|
|
4229
|
-
// Visit the
|
4230
|
-
if (cast->
|
4231
|
-
pm_visit_node((const pm_node_t *) cast->
|
2930
|
+
// Visit the else_clause field
|
2931
|
+
if (cast->else_clause != NULL) {
|
2932
|
+
pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data);
|
4232
2933
|
}
|
4233
2934
|
|
4234
2935
|
break;
|
@@ -4419,11 +3120,16 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
4419
3120
|
const pm_arguments_node_t *cast = (const pm_arguments_node_t *) node;
|
4420
3121
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
4421
3122
|
|
4422
|
-
// Dump the
|
3123
|
+
// Dump the ArgumentsNodeFlags field
|
4423
3124
|
pm_buffer_append_byte(buffer, ',');
|
4424
|
-
pm_buffer_append_string(buffer, "\"
|
3125
|
+
pm_buffer_append_string(buffer, "\"ArgumentsNodeFlags\":", 21);
|
4425
3126
|
size_t flags = 0;
|
4426
3127
|
pm_buffer_append_byte(buffer, '[');
|
3128
|
+
if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING)) {
|
3129
|
+
if (flags != 0) pm_buffer_append_byte(buffer, ',');
|
3130
|
+
pm_buffer_append_string(buffer, "\"CONTAINS_FORWARDING\"", 21);
|
3131
|
+
flags++;
|
3132
|
+
}
|
4427
3133
|
if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS)) {
|
4428
3134
|
if (flags != 0) pm_buffer_append_byte(buffer, ',');
|
4429
3135
|
pm_buffer_append_string(buffer, "\"CONTAINS_KEYWORDS\"", 19);
|
@@ -4434,6 +3140,16 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
4434
3140
|
pm_buffer_append_string(buffer, "\"CONTAINS_KEYWORD_SPLAT\"", 24);
|
4435
3141
|
flags++;
|
4436
3142
|
}
|
3143
|
+
if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT)) {
|
3144
|
+
if (flags != 0) pm_buffer_append_byte(buffer, ',');
|
3145
|
+
pm_buffer_append_string(buffer, "\"CONTAINS_SPLAT\"", 16);
|
3146
|
+
flags++;
|
3147
|
+
}
|
3148
|
+
if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS)) {
|
3149
|
+
if (flags != 0) pm_buffer_append_byte(buffer, ',');
|
3150
|
+
pm_buffer_append_string(buffer, "\"CONTAINS_MULTIPLE_SPLATS\"", 26);
|
3151
|
+
flags++;
|
3152
|
+
}
|
4437
3153
|
pm_buffer_append_byte(buffer, ']');
|
4438
3154
|
|
4439
3155
|
// Dump the arguments field
|
@@ -4457,9 +3173,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
4457
3173
|
const pm_array_node_t *cast = (const pm_array_node_t *) node;
|
4458
3174
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
4459
3175
|
|
4460
|
-
// Dump the
|
3176
|
+
// Dump the ArrayNodeFlags field
|
4461
3177
|
pm_buffer_append_byte(buffer, ',');
|
4462
|
-
pm_buffer_append_string(buffer, "\"
|
3178
|
+
pm_buffer_append_string(buffer, "\"ArrayNodeFlags\":", 17);
|
4463
3179
|
size_t flags = 0;
|
4464
3180
|
pm_buffer_append_byte(buffer, '[');
|
4465
3181
|
if (PM_NODE_FLAG_P(cast, PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT)) {
|
@@ -4728,9 +3444,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
4728
3444
|
const pm_block_local_variable_node_t *cast = (const pm_block_local_variable_node_t *) node;
|
4729
3445
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
4730
3446
|
|
4731
|
-
// Dump the
|
3447
|
+
// Dump the ParameterFlags field
|
4732
3448
|
pm_buffer_append_byte(buffer, ',');
|
4733
|
-
pm_buffer_append_string(buffer, "\"
|
3449
|
+
pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
|
4734
3450
|
size_t flags = 0;
|
4735
3451
|
pm_buffer_append_byte(buffer, '[');
|
4736
3452
|
if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
|
@@ -4803,9 +3519,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
4803
3519
|
const pm_block_parameter_node_t *cast = (const pm_block_parameter_node_t *) node;
|
4804
3520
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
4805
3521
|
|
4806
|
-
// Dump the
|
3522
|
+
// Dump the ParameterFlags field
|
4807
3523
|
pm_buffer_append_byte(buffer, ',');
|
4808
|
-
pm_buffer_append_string(buffer, "\"
|
3524
|
+
pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
|
4809
3525
|
size_t flags = 0;
|
4810
3526
|
pm_buffer_append_byte(buffer, '[');
|
4811
3527
|
if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
|
@@ -4918,9 +3634,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
4918
3634
|
const pm_call_and_write_node_t *cast = (const pm_call_and_write_node_t *) node;
|
4919
3635
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
4920
3636
|
|
4921
|
-
// Dump the
|
3637
|
+
// Dump the CallNodeFlags field
|
4922
3638
|
pm_buffer_append_byte(buffer, ',');
|
4923
|
-
pm_buffer_append_string(buffer, "\"
|
3639
|
+
pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
|
4924
3640
|
size_t flags = 0;
|
4925
3641
|
pm_buffer_append_byte(buffer, '[');
|
4926
3642
|
if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
|
@@ -5001,9 +3717,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
5001
3717
|
const pm_call_node_t *cast = (const pm_call_node_t *) node;
|
5002
3718
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
5003
3719
|
|
5004
|
-
// Dump the
|
3720
|
+
// Dump the CallNodeFlags field
|
5005
3721
|
pm_buffer_append_byte(buffer, ',');
|
5006
|
-
pm_buffer_append_string(buffer, "\"
|
3722
|
+
pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
|
5007
3723
|
size_t flags = 0;
|
5008
3724
|
pm_buffer_append_byte(buffer, '[');
|
5009
3725
|
if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
|
@@ -5105,9 +3821,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
5105
3821
|
const pm_call_operator_write_node_t *cast = (const pm_call_operator_write_node_t *) node;
|
5106
3822
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
5107
3823
|
|
5108
|
-
// Dump the
|
3824
|
+
// Dump the CallNodeFlags field
|
5109
3825
|
pm_buffer_append_byte(buffer, ',');
|
5110
|
-
pm_buffer_append_string(buffer, "\"
|
3826
|
+
pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
|
5111
3827
|
size_t flags = 0;
|
5112
3828
|
pm_buffer_append_byte(buffer, '[');
|
5113
3829
|
if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
|
@@ -5193,9 +3909,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
5193
3909
|
const pm_call_or_write_node_t *cast = (const pm_call_or_write_node_t *) node;
|
5194
3910
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
5195
3911
|
|
5196
|
-
// Dump the
|
3912
|
+
// Dump the CallNodeFlags field
|
5197
3913
|
pm_buffer_append_byte(buffer, ',');
|
5198
|
-
pm_buffer_append_string(buffer, "\"
|
3914
|
+
pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
|
5199
3915
|
size_t flags = 0;
|
5200
3916
|
pm_buffer_append_byte(buffer, '[');
|
5201
3917
|
if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
|
@@ -5276,9 +3992,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
5276
3992
|
const pm_call_target_node_t *cast = (const pm_call_target_node_t *) node;
|
5277
3993
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
5278
3994
|
|
5279
|
-
// Dump the
|
3995
|
+
// Dump the CallNodeFlags field
|
5280
3996
|
pm_buffer_append_byte(buffer, ',');
|
5281
|
-
pm_buffer_append_string(buffer, "\"
|
3997
|
+
pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
|
5282
3998
|
size_t flags = 0;
|
5283
3999
|
pm_buffer_append_byte(buffer, '[');
|
5284
4000
|
if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
|
@@ -5377,11 +4093,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
5377
4093
|
}
|
5378
4094
|
pm_buffer_append_byte(buffer, ']');
|
5379
4095
|
|
5380
|
-
// Dump the
|
4096
|
+
// Dump the else_clause field
|
5381
4097
|
pm_buffer_append_byte(buffer, ',');
|
5382
|
-
pm_buffer_append_string(buffer, "\"
|
5383
|
-
if (cast->
|
5384
|
-
pm_dump_json(buffer, parser, (const pm_node_t *) cast->
|
4098
|
+
pm_buffer_append_string(buffer, "\"else_clause\":", 14);
|
4099
|
+
if (cast->else_clause != NULL) {
|
4100
|
+
pm_dump_json(buffer, parser, (const pm_node_t *) cast->else_clause);
|
5385
4101
|
} else {
|
5386
4102
|
pm_buffer_append_string(buffer, "null", 4);
|
5387
4103
|
}
|
@@ -5426,11 +4142,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
5426
4142
|
}
|
5427
4143
|
pm_buffer_append_byte(buffer, ']');
|
5428
4144
|
|
5429
|
-
// Dump the
|
4145
|
+
// Dump the else_clause field
|
5430
4146
|
pm_buffer_append_byte(buffer, ',');
|
5431
|
-
pm_buffer_append_string(buffer, "\"
|
5432
|
-
if (cast->
|
5433
|
-
pm_dump_json(buffer, parser, (const pm_node_t *) cast->
|
4147
|
+
pm_buffer_append_string(buffer, "\"else_clause\":", 14);
|
4148
|
+
if (cast->else_clause != NULL) {
|
4149
|
+
pm_dump_json(buffer, parser, (const pm_node_t *) cast->else_clause);
|
5434
4150
|
} else {
|
5435
4151
|
pm_buffer_append_string(buffer, "null", 4);
|
5436
4152
|
}
|
@@ -6314,9 +5030,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
6314
5030
|
const pm_flip_flop_node_t *cast = (const pm_flip_flop_node_t *) node;
|
6315
5031
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
6316
5032
|
|
6317
|
-
// Dump the
|
5033
|
+
// Dump the RangeFlags field
|
6318
5034
|
pm_buffer_append_byte(buffer, ',');
|
6319
|
-
pm_buffer_append_string(buffer, "\"
|
5035
|
+
pm_buffer_append_string(buffer, "\"RangeFlags\":", 13);
|
6320
5036
|
size_t flags = 0;
|
6321
5037
|
pm_buffer_append_byte(buffer, '[');
|
6322
5038
|
if (PM_NODE_FLAG_P(cast, PM_RANGE_FLAGS_EXCLUDE_END)) {
|
@@ -6729,11 +5445,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
6729
5445
|
pm_buffer_append_string(buffer, "null", 4);
|
6730
5446
|
}
|
6731
5447
|
|
6732
|
-
// Dump the
|
5448
|
+
// Dump the subsequent field
|
6733
5449
|
pm_buffer_append_byte(buffer, ',');
|
6734
|
-
pm_buffer_append_string(buffer, "\"
|
6735
|
-
if (cast->
|
6736
|
-
pm_dump_json(buffer, parser, (const pm_node_t *) cast->
|
5450
|
+
pm_buffer_append_string(buffer, "\"subsequent\":", 13);
|
5451
|
+
if (cast->subsequent != NULL) {
|
5452
|
+
pm_dump_json(buffer, parser, (const pm_node_t *) cast->subsequent);
|
6737
5453
|
} else {
|
6738
5454
|
pm_buffer_append_string(buffer, "null", 4);
|
6739
5455
|
}
|
@@ -6830,9 +5546,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
6830
5546
|
const pm_index_and_write_node_t *cast = (const pm_index_and_write_node_t *) node;
|
6831
5547
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
6832
5548
|
|
6833
|
-
// Dump the
|
5549
|
+
// Dump the CallNodeFlags field
|
6834
5550
|
pm_buffer_append_byte(buffer, ',');
|
6835
|
-
pm_buffer_append_string(buffer, "\"
|
5551
|
+
pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
|
6836
5552
|
size_t flags = 0;
|
6837
5553
|
pm_buffer_append_byte(buffer, '[');
|
6838
5554
|
if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
|
@@ -6922,9 +5638,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
6922
5638
|
const pm_index_operator_write_node_t *cast = (const pm_index_operator_write_node_t *) node;
|
6923
5639
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
6924
5640
|
|
6925
|
-
// Dump the
|
5641
|
+
// Dump the CallNodeFlags field
|
6926
5642
|
pm_buffer_append_byte(buffer, ',');
|
6927
|
-
pm_buffer_append_string(buffer, "\"
|
5643
|
+
pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
|
6928
5644
|
size_t flags = 0;
|
6929
5645
|
pm_buffer_append_byte(buffer, '[');
|
6930
5646
|
if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
|
@@ -7019,9 +5735,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
7019
5735
|
const pm_index_or_write_node_t *cast = (const pm_index_or_write_node_t *) node;
|
7020
5736
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
7021
5737
|
|
7022
|
-
// Dump the
|
5738
|
+
// Dump the CallNodeFlags field
|
7023
5739
|
pm_buffer_append_byte(buffer, ',');
|
7024
|
-
pm_buffer_append_string(buffer, "\"
|
5740
|
+
pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
|
7025
5741
|
size_t flags = 0;
|
7026
5742
|
pm_buffer_append_byte(buffer, '[');
|
7027
5743
|
if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
|
@@ -7111,9 +5827,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
7111
5827
|
const pm_index_target_node_t *cast = (const pm_index_target_node_t *) node;
|
7112
5828
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
7113
5829
|
|
7114
|
-
// Dump the
|
5830
|
+
// Dump the CallNodeFlags field
|
7115
5831
|
pm_buffer_append_byte(buffer, ',');
|
7116
|
-
pm_buffer_append_string(buffer, "\"
|
5832
|
+
pm_buffer_append_string(buffer, "\"CallNodeFlags\":", 16);
|
7117
5833
|
size_t flags = 0;
|
7118
5834
|
pm_buffer_append_byte(buffer, '[');
|
7119
5835
|
if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
|
@@ -7329,9 +6045,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
7329
6045
|
const pm_integer_node_t *cast = (const pm_integer_node_t *) node;
|
7330
6046
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
7331
6047
|
|
7332
|
-
// Dump the
|
6048
|
+
// Dump the IntegerBaseFlags field
|
7333
6049
|
pm_buffer_append_byte(buffer, ',');
|
7334
|
-
pm_buffer_append_string(buffer, "\"
|
6050
|
+
pm_buffer_append_string(buffer, "\"IntegerBaseFlags\":", 19);
|
7335
6051
|
size_t flags = 0;
|
7336
6052
|
pm_buffer_append_byte(buffer, '[');
|
7337
6053
|
if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_BINARY)) {
|
@@ -7370,9 +6086,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
7370
6086
|
const pm_interpolated_match_last_line_node_t *cast = (const pm_interpolated_match_last_line_node_t *) node;
|
7371
6087
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
7372
6088
|
|
7373
|
-
// Dump the
|
6089
|
+
// Dump the RegularExpressionFlags field
|
7374
6090
|
pm_buffer_append_byte(buffer, ',');
|
7375
|
-
pm_buffer_append_string(buffer, "\"
|
6091
|
+
pm_buffer_append_string(buffer, "\"RegularExpressionFlags\":", 25);
|
7376
6092
|
size_t flags = 0;
|
7377
6093
|
pm_buffer_append_byte(buffer, '[');
|
7378
6094
|
if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
|
@@ -7463,9 +6179,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
7463
6179
|
const pm_interpolated_regular_expression_node_t *cast = (const pm_interpolated_regular_expression_node_t *) node;
|
7464
6180
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
7465
6181
|
|
7466
|
-
// Dump the
|
6182
|
+
// Dump the RegularExpressionFlags field
|
7467
6183
|
pm_buffer_append_byte(buffer, ',');
|
7468
|
-
pm_buffer_append_string(buffer, "\"
|
6184
|
+
pm_buffer_append_string(buffer, "\"RegularExpressionFlags\":", 25);
|
7469
6185
|
size_t flags = 0;
|
7470
6186
|
pm_buffer_append_byte(buffer, '[');
|
7471
6187
|
if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
|
@@ -7556,9 +6272,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
7556
6272
|
const pm_interpolated_string_node_t *cast = (const pm_interpolated_string_node_t *) node;
|
7557
6273
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
7558
6274
|
|
7559
|
-
// Dump the
|
6275
|
+
// Dump the InterpolatedStringNodeFlags field
|
7560
6276
|
pm_buffer_append_byte(buffer, ',');
|
7561
|
-
pm_buffer_append_string(buffer, "\"
|
6277
|
+
pm_buffer_append_string(buffer, "\"InterpolatedStringNodeFlags\":", 30);
|
7562
6278
|
size_t flags = 0;
|
7563
6279
|
pm_buffer_append_byte(buffer, '[');
|
7564
6280
|
if (PM_NODE_FLAG_P(cast, PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN)) {
|
@@ -7676,6 +6392,15 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
7676
6392
|
pm_buffer_append_byte(buffer, '}');
|
7677
6393
|
break;
|
7678
6394
|
}
|
6395
|
+
case PM_IT_LOCAL_VARIABLE_READ_NODE: {
|
6396
|
+
pm_buffer_append_string(buffer, "{\"type\":\"ItLocalVariableReadNode\",\"location\":", 45);
|
6397
|
+
|
6398
|
+
const pm_it_local_variable_read_node_t *cast = (const pm_it_local_variable_read_node_t *) node;
|
6399
|
+
pm_dump_json_location(buffer, parser, &cast->base.location);
|
6400
|
+
|
6401
|
+
pm_buffer_append_byte(buffer, '}');
|
6402
|
+
break;
|
6403
|
+
}
|
7679
6404
|
case PM_IT_PARAMETERS_NODE: {
|
7680
6405
|
pm_buffer_append_string(buffer, "{\"type\":\"ItParametersNode\",\"location\":", 38);
|
7681
6406
|
|
@@ -7691,9 +6416,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
7691
6416
|
const pm_keyword_hash_node_t *cast = (const pm_keyword_hash_node_t *) node;
|
7692
6417
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
7693
6418
|
|
7694
|
-
// Dump the
|
6419
|
+
// Dump the KeywordHashNodeFlags field
|
7695
6420
|
pm_buffer_append_byte(buffer, ',');
|
7696
|
-
pm_buffer_append_string(buffer, "\"
|
6421
|
+
pm_buffer_append_string(buffer, "\"KeywordHashNodeFlags\":", 23);
|
7697
6422
|
size_t flags = 0;
|
7698
6423
|
pm_buffer_append_byte(buffer, '[');
|
7699
6424
|
if (PM_NODE_FLAG_P(cast, PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS)) {
|
@@ -7724,9 +6449,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
7724
6449
|
const pm_keyword_rest_parameter_node_t *cast = (const pm_keyword_rest_parameter_node_t *) node;
|
7725
6450
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
7726
6451
|
|
7727
|
-
// Dump the
|
6452
|
+
// Dump the ParameterFlags field
|
7728
6453
|
pm_buffer_append_byte(buffer, ',');
|
7729
|
-
pm_buffer_append_string(buffer, "\"
|
6454
|
+
pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
|
7730
6455
|
size_t flags = 0;
|
7731
6456
|
pm_buffer_append_byte(buffer, '[');
|
7732
6457
|
if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
|
@@ -8001,9 +6726,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
8001
6726
|
const pm_match_last_line_node_t *cast = (const pm_match_last_line_node_t *) node;
|
8002
6727
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
8003
6728
|
|
8004
|
-
// Dump the
|
6729
|
+
// Dump the RegularExpressionFlags field
|
8005
6730
|
pm_buffer_append_byte(buffer, ',');
|
8006
|
-
pm_buffer_append_string(buffer, "\"
|
6731
|
+
pm_buffer_append_string(buffer, "\"RegularExpressionFlags\":", 25);
|
8007
6732
|
size_t flags = 0;
|
8008
6733
|
pm_buffer_append_byte(buffer, '[');
|
8009
6734
|
if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
|
@@ -8437,9 +7162,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
8437
7162
|
const pm_optional_keyword_parameter_node_t *cast = (const pm_optional_keyword_parameter_node_t *) node;
|
8438
7163
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
8439
7164
|
|
8440
|
-
// Dump the
|
7165
|
+
// Dump the ParameterFlags field
|
8441
7166
|
pm_buffer_append_byte(buffer, ',');
|
8442
|
-
pm_buffer_append_string(buffer, "\"
|
7167
|
+
pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
|
8443
7168
|
size_t flags = 0;
|
8444
7169
|
pm_buffer_append_byte(buffer, '[');
|
8445
7170
|
if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
|
@@ -8473,9 +7198,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
8473
7198
|
const pm_optional_parameter_node_t *cast = (const pm_optional_parameter_node_t *) node;
|
8474
7199
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
8475
7200
|
|
8476
|
-
// Dump the
|
7201
|
+
// Dump the ParameterFlags field
|
8477
7202
|
pm_buffer_append_byte(buffer, ',');
|
8478
|
-
pm_buffer_append_string(buffer, "\"
|
7203
|
+
pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
|
8479
7204
|
size_t flags = 0;
|
8480
7205
|
pm_buffer_append_byte(buffer, '[');
|
8481
7206
|
if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
|
@@ -8790,9 +7515,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
8790
7515
|
const pm_range_node_t *cast = (const pm_range_node_t *) node;
|
8791
7516
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
8792
7517
|
|
8793
|
-
// Dump the
|
7518
|
+
// Dump the RangeFlags field
|
8794
7519
|
pm_buffer_append_byte(buffer, ',');
|
8795
|
-
pm_buffer_append_string(buffer, "\"
|
7520
|
+
pm_buffer_append_string(buffer, "\"RangeFlags\":", 13);
|
8796
7521
|
size_t flags = 0;
|
8797
7522
|
pm_buffer_append_byte(buffer, '[');
|
8798
7523
|
if (PM_NODE_FLAG_P(cast, PM_RANGE_FLAGS_EXCLUDE_END)) {
|
@@ -8834,10 +7559,42 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
8834
7559
|
const pm_rational_node_t *cast = (const pm_rational_node_t *) node;
|
8835
7560
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
8836
7561
|
|
8837
|
-
// Dump the
|
7562
|
+
// Dump the IntegerBaseFlags field
|
8838
7563
|
pm_buffer_append_byte(buffer, ',');
|
8839
|
-
pm_buffer_append_string(buffer, "\"
|
8840
|
-
|
7564
|
+
pm_buffer_append_string(buffer, "\"IntegerBaseFlags\":", 19);
|
7565
|
+
size_t flags = 0;
|
7566
|
+
pm_buffer_append_byte(buffer, '[');
|
7567
|
+
if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_BINARY)) {
|
7568
|
+
if (flags != 0) pm_buffer_append_byte(buffer, ',');
|
7569
|
+
pm_buffer_append_string(buffer, "\"BINARY\"", 8);
|
7570
|
+
flags++;
|
7571
|
+
}
|
7572
|
+
if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_DECIMAL)) {
|
7573
|
+
if (flags != 0) pm_buffer_append_byte(buffer, ',');
|
7574
|
+
pm_buffer_append_string(buffer, "\"DECIMAL\"", 9);
|
7575
|
+
flags++;
|
7576
|
+
}
|
7577
|
+
if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_OCTAL)) {
|
7578
|
+
if (flags != 0) pm_buffer_append_byte(buffer, ',');
|
7579
|
+
pm_buffer_append_string(buffer, "\"OCTAL\"", 7);
|
7580
|
+
flags++;
|
7581
|
+
}
|
7582
|
+
if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_HEXADECIMAL)) {
|
7583
|
+
if (flags != 0) pm_buffer_append_byte(buffer, ',');
|
7584
|
+
pm_buffer_append_string(buffer, "\"HEXADECIMAL\"", 13);
|
7585
|
+
flags++;
|
7586
|
+
}
|
7587
|
+
pm_buffer_append_byte(buffer, ']');
|
7588
|
+
|
7589
|
+
// Dump the numerator field
|
7590
|
+
pm_buffer_append_byte(buffer, ',');
|
7591
|
+
pm_buffer_append_string(buffer, "\"numerator\":", 12);
|
7592
|
+
pm_integer_string(buffer, &cast->numerator);
|
7593
|
+
|
7594
|
+
// Dump the denominator field
|
7595
|
+
pm_buffer_append_byte(buffer, ',');
|
7596
|
+
pm_buffer_append_string(buffer, "\"denominator\":", 14);
|
7597
|
+
pm_integer_string(buffer, &cast->denominator);
|
8841
7598
|
|
8842
7599
|
pm_buffer_append_byte(buffer, '}');
|
8843
7600
|
break;
|
@@ -8857,9 +7614,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
8857
7614
|
const pm_regular_expression_node_t *cast = (const pm_regular_expression_node_t *) node;
|
8858
7615
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
8859
7616
|
|
8860
|
-
// Dump the
|
7617
|
+
// Dump the RegularExpressionFlags field
|
8861
7618
|
pm_buffer_append_byte(buffer, ',');
|
8862
|
-
pm_buffer_append_string(buffer, "\"
|
7619
|
+
pm_buffer_append_string(buffer, "\"RegularExpressionFlags\":", 25);
|
8863
7620
|
size_t flags = 0;
|
8864
7621
|
pm_buffer_append_byte(buffer, '[');
|
8865
7622
|
if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
|
@@ -8951,9 +7708,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
8951
7708
|
const pm_required_keyword_parameter_node_t *cast = (const pm_required_keyword_parameter_node_t *) node;
|
8952
7709
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
8953
7710
|
|
8954
|
-
// Dump the
|
7711
|
+
// Dump the ParameterFlags field
|
8955
7712
|
pm_buffer_append_byte(buffer, ',');
|
8956
|
-
pm_buffer_append_string(buffer, "\"
|
7713
|
+
pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
|
8957
7714
|
size_t flags = 0;
|
8958
7715
|
pm_buffer_append_byte(buffer, '[');
|
8959
7716
|
if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
|
@@ -8982,9 +7739,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
8982
7739
|
const pm_required_parameter_node_t *cast = (const pm_required_parameter_node_t *) node;
|
8983
7740
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
8984
7741
|
|
8985
|
-
// Dump the
|
7742
|
+
// Dump the ParameterFlags field
|
8986
7743
|
pm_buffer_append_byte(buffer, ',');
|
8987
|
-
pm_buffer_append_string(buffer, "\"
|
7744
|
+
pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
|
8988
7745
|
size_t flags = 0;
|
8989
7746
|
pm_buffer_append_byte(buffer, '[');
|
8990
7747
|
if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
|
@@ -9076,11 +7833,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9076
7833
|
pm_buffer_append_string(buffer, "null", 4);
|
9077
7834
|
}
|
9078
7835
|
|
9079
|
-
// Dump the
|
7836
|
+
// Dump the subsequent field
|
9080
7837
|
pm_buffer_append_byte(buffer, ',');
|
9081
|
-
pm_buffer_append_string(buffer, "\"
|
9082
|
-
if (cast->
|
9083
|
-
pm_dump_json(buffer, parser, (const pm_node_t *) cast->
|
7838
|
+
pm_buffer_append_string(buffer, "\"subsequent\":", 13);
|
7839
|
+
if (cast->subsequent != NULL) {
|
7840
|
+
pm_dump_json(buffer, parser, (const pm_node_t *) cast->subsequent);
|
9084
7841
|
} else {
|
9085
7842
|
pm_buffer_append_string(buffer, "null", 4);
|
9086
7843
|
}
|
@@ -9094,9 +7851,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9094
7851
|
const pm_rest_parameter_node_t *cast = (const pm_rest_parameter_node_t *) node;
|
9095
7852
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
9096
7853
|
|
9097
|
-
// Dump the
|
7854
|
+
// Dump the ParameterFlags field
|
9098
7855
|
pm_buffer_append_byte(buffer, ',');
|
9099
|
-
pm_buffer_append_string(buffer, "\"
|
7856
|
+
pm_buffer_append_string(buffer, "\"ParameterFlags\":", 17);
|
9100
7857
|
size_t flags = 0;
|
9101
7858
|
pm_buffer_append_byte(buffer, '[');
|
9102
7859
|
if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
|
@@ -9147,18 +7904,6 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9147
7904
|
const pm_return_node_t *cast = (const pm_return_node_t *) node;
|
9148
7905
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
9149
7906
|
|
9150
|
-
// Dump the flags field
|
9151
|
-
pm_buffer_append_byte(buffer, ',');
|
9152
|
-
pm_buffer_append_string(buffer, "\"flags\":", 8);
|
9153
|
-
size_t flags = 0;
|
9154
|
-
pm_buffer_append_byte(buffer, '[');
|
9155
|
-
if (PM_NODE_FLAG_P(cast, PM_RETURN_NODE_FLAGS_REDUNDANT)) {
|
9156
|
-
if (flags != 0) pm_buffer_append_byte(buffer, ',');
|
9157
|
-
pm_buffer_append_string(buffer, "\"REDUNDANT\"", 11);
|
9158
|
-
flags++;
|
9159
|
-
}
|
9160
|
-
pm_buffer_append_byte(buffer, ']');
|
9161
|
-
|
9162
7907
|
// Dump the keyword_loc field
|
9163
7908
|
pm_buffer_append_byte(buffer, ',');
|
9164
7909
|
pm_buffer_append_string(buffer, "\"keyword_loc\":", 14);
|
@@ -9191,9 +7936,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9191
7936
|
const pm_shareable_constant_node_t *cast = (const pm_shareable_constant_node_t *) node;
|
9192
7937
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
9193
7938
|
|
9194
|
-
// Dump the
|
7939
|
+
// Dump the ShareableConstantNodeFlags field
|
9195
7940
|
pm_buffer_append_byte(buffer, ',');
|
9196
|
-
pm_buffer_append_string(buffer, "\"
|
7941
|
+
pm_buffer_append_string(buffer, "\"ShareableConstantNodeFlags\":", 29);
|
9197
7942
|
size_t flags = 0;
|
9198
7943
|
pm_buffer_append_byte(buffer, '[');
|
9199
7944
|
if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL)) {
|
@@ -9286,9 +8031,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9286
8031
|
const pm_source_file_node_t *cast = (const pm_source_file_node_t *) node;
|
9287
8032
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
9288
8033
|
|
9289
|
-
// Dump the
|
8034
|
+
// Dump the StringFlags field
|
9290
8035
|
pm_buffer_append_byte(buffer, ',');
|
9291
|
-
pm_buffer_append_string(buffer, "\"
|
8036
|
+
pm_buffer_append_string(buffer, "\"StringFlags\":", 14);
|
9292
8037
|
size_t flags = 0;
|
9293
8038
|
pm_buffer_append_byte(buffer, '[');
|
9294
8039
|
if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_UTF8_ENCODING)) {
|
@@ -9383,9 +8128,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9383
8128
|
const pm_string_node_t *cast = (const pm_string_node_t *) node;
|
9384
8129
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
9385
8130
|
|
9386
|
-
// Dump the
|
8131
|
+
// Dump the StringFlags field
|
9387
8132
|
pm_buffer_append_byte(buffer, ',');
|
9388
|
-
pm_buffer_append_string(buffer, "\"
|
8133
|
+
pm_buffer_append_string(buffer, "\"StringFlags\":", 14);
|
9389
8134
|
size_t flags = 0;
|
9390
8135
|
pm_buffer_append_byte(buffer, '[');
|
9391
8136
|
if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_UTF8_ENCODING)) {
|
@@ -9500,9 +8245,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9500
8245
|
const pm_symbol_node_t *cast = (const pm_symbol_node_t *) node;
|
9501
8246
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
9502
8247
|
|
9503
|
-
// Dump the
|
8248
|
+
// Dump the SymbolFlags field
|
9504
8249
|
pm_buffer_append_byte(buffer, ',');
|
9505
|
-
pm_buffer_append_string(buffer, "\"
|
8250
|
+
pm_buffer_append_string(buffer, "\"SymbolFlags\":", 14);
|
9506
8251
|
size_t flags = 0;
|
9507
8252
|
pm_buffer_append_byte(buffer, '[');
|
9508
8253
|
if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING)) {
|
@@ -9629,11 +8374,11 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9629
8374
|
pm_buffer_append_string(buffer, "null", 4);
|
9630
8375
|
}
|
9631
8376
|
|
9632
|
-
// Dump the
|
8377
|
+
// Dump the else_clause field
|
9633
8378
|
pm_buffer_append_byte(buffer, ',');
|
9634
|
-
pm_buffer_append_string(buffer, "\"
|
9635
|
-
if (cast->
|
9636
|
-
pm_dump_json(buffer, parser, (const pm_node_t *) cast->
|
8379
|
+
pm_buffer_append_string(buffer, "\"else_clause\":", 14);
|
8380
|
+
if (cast->else_clause != NULL) {
|
8381
|
+
pm_dump_json(buffer, parser, (const pm_node_t *) cast->else_clause);
|
9637
8382
|
} else {
|
9638
8383
|
pm_buffer_append_string(buffer, "null", 4);
|
9639
8384
|
}
|
@@ -9656,9 +8401,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9656
8401
|
const pm_until_node_t *cast = (const pm_until_node_t *) node;
|
9657
8402
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
9658
8403
|
|
9659
|
-
// Dump the
|
8404
|
+
// Dump the LoopFlags field
|
9660
8405
|
pm_buffer_append_byte(buffer, ',');
|
9661
|
-
pm_buffer_append_string(buffer, "\"
|
8406
|
+
pm_buffer_append_string(buffer, "\"LoopFlags\":", 12);
|
9662
8407
|
size_t flags = 0;
|
9663
8408
|
pm_buffer_append_byte(buffer, '[');
|
9664
8409
|
if (PM_NODE_FLAG_P(cast, PM_LOOP_FLAGS_BEGIN_MODIFIER)) {
|
@@ -9673,6 +8418,15 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9673
8418
|
pm_buffer_append_string(buffer, "\"keyword_loc\":", 14);
|
9674
8419
|
pm_dump_json_location(buffer, parser, &cast->keyword_loc);
|
9675
8420
|
|
8421
|
+
// Dump the do_keyword_loc field
|
8422
|
+
pm_buffer_append_byte(buffer, ',');
|
8423
|
+
pm_buffer_append_string(buffer, "\"do_keyword_loc\":", 17);
|
8424
|
+
if (cast->do_keyword_loc.start != NULL) {
|
8425
|
+
pm_dump_json_location(buffer, parser, &cast->do_keyword_loc);
|
8426
|
+
} else {
|
8427
|
+
pm_buffer_append_string(buffer, "null", 4);
|
8428
|
+
}
|
8429
|
+
|
9676
8430
|
// Dump the closing_loc field
|
9677
8431
|
pm_buffer_append_byte(buffer, ',');
|
9678
8432
|
pm_buffer_append_string(buffer, "\"closing_loc\":", 14);
|
@@ -9749,9 +8503,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9749
8503
|
const pm_while_node_t *cast = (const pm_while_node_t *) node;
|
9750
8504
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
9751
8505
|
|
9752
|
-
// Dump the
|
8506
|
+
// Dump the LoopFlags field
|
9753
8507
|
pm_buffer_append_byte(buffer, ',');
|
9754
|
-
pm_buffer_append_string(buffer, "\"
|
8508
|
+
pm_buffer_append_string(buffer, "\"LoopFlags\":", 12);
|
9755
8509
|
size_t flags = 0;
|
9756
8510
|
pm_buffer_append_byte(buffer, '[');
|
9757
8511
|
if (PM_NODE_FLAG_P(cast, PM_LOOP_FLAGS_BEGIN_MODIFIER)) {
|
@@ -9766,6 +8520,15 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9766
8520
|
pm_buffer_append_string(buffer, "\"keyword_loc\":", 14);
|
9767
8521
|
pm_dump_json_location(buffer, parser, &cast->keyword_loc);
|
9768
8522
|
|
8523
|
+
// Dump the do_keyword_loc field
|
8524
|
+
pm_buffer_append_byte(buffer, ',');
|
8525
|
+
pm_buffer_append_string(buffer, "\"do_keyword_loc\":", 17);
|
8526
|
+
if (cast->do_keyword_loc.start != NULL) {
|
8527
|
+
pm_dump_json_location(buffer, parser, &cast->do_keyword_loc);
|
8528
|
+
} else {
|
8529
|
+
pm_buffer_append_string(buffer, "null", 4);
|
8530
|
+
}
|
8531
|
+
|
9769
8532
|
// Dump the closing_loc field
|
9770
8533
|
pm_buffer_append_byte(buffer, ',');
|
9771
8534
|
pm_buffer_append_string(buffer, "\"closing_loc\":", 14);
|
@@ -9798,9 +8561,9 @@ pm_dump_json(pm_buffer_t *buffer, const pm_parser_t *parser, const pm_node_t *no
|
|
9798
8561
|
const pm_x_string_node_t *cast = (const pm_x_string_node_t *) node;
|
9799
8562
|
pm_dump_json_location(buffer, parser, &cast->base.location);
|
9800
8563
|
|
9801
|
-
// Dump the
|
8564
|
+
// Dump the EncodingFlags field
|
9802
8565
|
pm_buffer_append_byte(buffer, ',');
|
9803
|
-
pm_buffer_append_string(buffer, "\"
|
8566
|
+
pm_buffer_append_string(buffer, "\"EncodingFlags\":", 16);
|
9804
8567
|
size_t flags = 0;
|
9805
8568
|
pm_buffer_append_byte(buffer, '[');
|
9806
8569
|
if (PM_NODE_FLAG_P(cast, PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING)) {
|