prism 1.9.0 → 2.0.0.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +88 -0
- data/CODE_OF_CONDUCT.md +1 -1
- data/LICENSE.md +1 -1
- data/Makefile +41 -12
- data/README.md +35 -97
- data/config.yml +174 -161
- data/docs/build_system.md +2 -2
- data/docs/configuration.md +5 -4
- data/docs/encoding.md +2 -2
- data/docs/fuzzing.md +4 -11
- data/docs/javascript.md +19 -4
- data/docs/mapping.md +1 -1
- data/docs/releasing.md +77 -5
- data/docs/relocation.md +2 -4
- data/docs/serialization.md +22 -24
- data/docs/testing.md +46 -29
- data/ext/prism/api_node.c +1461 -1401
- data/ext/prism/extconf.rb +3 -4
- data/ext/prism/extension.c +796 -422
- data/ext/prism/extension.h +3 -3
- data/include/prism/arena.h +37 -0
- data/include/prism/ast.h +2727 -610
- data/include/prism/buffer.h +52 -0
- data/include/prism/comments.h +55 -0
- data/include/prism/compiler/accel.h +26 -0
- data/include/prism/compiler/align.h +36 -0
- data/include/prism/compiler/assume.h +25 -0
- data/include/prism/compiler/bswap.h +46 -0
- data/include/prism/compiler/endianness.h +34 -0
- data/include/prism/compiler/exported.h +24 -0
- data/include/prism/compiler/fallthrough.h +22 -0
- data/include/prism/compiler/filesystem.h +32 -0
- data/include/prism/compiler/flex_array.h +19 -0
- data/include/prism/compiler/force_inline.h +21 -0
- data/include/prism/compiler/format.h +25 -0
- data/include/prism/compiler/inline.h +17 -0
- data/include/prism/compiler/nodiscard.h +22 -0
- data/include/prism/compiler/nonnull.h +18 -0
- data/include/prism/compiler/unused.h +18 -0
- data/include/prism/constant_pool.h +81 -0
- data/include/prism/diagnostic.h +38 -403
- data/include/prism/errors_format.h +53 -0
- data/include/prism/excludes.h +29 -0
- data/include/prism/integer.h +41 -0
- data/include/prism/internal/allocator.h +68 -0
- data/include/prism/internal/allocator_debug.h +88 -0
- data/include/prism/internal/arena.h +108 -0
- data/include/prism/internal/bit.h +42 -0
- data/include/prism/internal/buffer.h +94 -0
- data/include/prism/internal/char.h +145 -0
- data/include/prism/internal/comments.h +53 -0
- data/include/prism/internal/constant_pool.h +152 -0
- data/include/prism/internal/diagnostic.h +389 -0
- data/include/prism/{encoding.h → internal/encoding.h} +27 -68
- data/include/prism/internal/integer.h +68 -0
- data/include/prism/internal/isinf.h +16 -0
- data/include/prism/internal/line_offset_list.h +34 -0
- data/include/prism/{util/pm_list.h → internal/list.h} +11 -52
- data/include/prism/internal/magic_comments.h +23 -0
- data/include/prism/internal/memchr.h +15 -0
- data/include/prism/internal/node.h +38 -0
- data/include/prism/internal/options.h +232 -0
- data/include/prism/internal/parser.h +1004 -0
- data/include/prism/internal/regexp.h +26 -0
- data/include/prism/internal/serialize.h +39 -0
- data/include/prism/internal/source.h +72 -0
- data/include/prism/{static_literals.h → internal/static_literals.h} +26 -47
- data/include/prism/internal/stringy.h +35 -0
- data/include/prism/{util/pm_strncasecmp.h → internal/strncasecmp.h} +3 -17
- data/include/prism/{util/pm_strpbrk.h → internal/strpbrk.h} +7 -20
- data/include/prism/internal/tokens.h +11 -0
- data/include/prism/internal/xxh3.h +16 -0
- data/include/prism/json.h +32 -0
- data/include/prism/line_offset_list.h +61 -0
- data/include/prism/magic_comments.h +35 -0
- data/include/prism/node.h +18 -53
- data/include/prism/options.h +146 -280
- data/include/prism/parser.h +356 -867
- data/include/prism/prettyprint.h +6 -9
- data/include/prism/serialize.h +115 -0
- data/include/prism/source.h +155 -0
- data/include/prism/stream.h +28 -0
- data/include/prism/string_query.h +74 -0
- data/include/prism/stringy.h +72 -0
- data/include/prism/version.h +12 -3
- data/include/prism.h +43 -320
- data/lib/prism/compiler.rb +319 -305
- data/lib/prism/desugar_compiler.rb +105 -34
- data/lib/prism/dispatcher.rb +646 -473
- data/lib/prism/dot_visitor.rb +592 -511
- data/lib/prism/dsl.rb +391 -25
- data/lib/prism/ffi.rb +258 -90
- data/lib/prism/inspect_visitor.rb +357 -325
- data/lib/prism/lex_compat.rb +254 -212
- data/lib/prism/mutation_compiler.rb +313 -305
- data/lib/prism/node.rb +20966 -6992
- data/lib/prism/node_ext.rb +180 -187
- data/lib/prism/node_find.rb +215 -0
- data/lib/prism/parse_result/errors.rb +7 -1
- data/lib/prism/parse_result/newlines.rb +276 -8
- data/lib/prism/parse_result.rb +468 -139
- data/lib/prism/pattern.rb +65 -20
- data/lib/prism/reflection.rb +23 -12
- data/lib/prism/relocation.rb +149 -87
- data/lib/prism/serialize.rb +3460 -539
- data/lib/prism/string_query.rb +24 -1
- data/lib/prism/translation/parser/builder.rb +10 -2
- data/lib/prism/translation/parser/compiler.rb +44 -52
- data/lib/prism/translation/parser/lexer.rb +41 -92
- data/lib/prism/translation/parser.rb +1 -1
- data/lib/prism/translation/parser_current.rb +1 -1
- data/lib/prism/translation/ripper/lexer.rb +8 -10
- data/lib/prism/translation/ripper/sexp.rb +2 -10
- data/lib/prism/translation/ripper/shim.rb +2 -0
- data/lib/prism/translation/ripper.rb +967 -209
- data/lib/prism/translation/ruby_parser.rb +73 -316
- data/lib/prism/translation.rb +2 -0
- data/lib/prism/visitor.rb +632 -5
- data/lib/prism.rb +79 -9
- data/prism.gemspec +128 -62
- data/rbi/generated/prism/compiler.rbi +489 -0
- data/rbi/generated/prism/desugar_compiler.rbi +306 -0
- data/rbi/generated/prism/dispatcher.rbi +1138 -0
- data/rbi/generated/prism/dot_visitor.rbi +618 -0
- data/rbi/generated/prism/dsl.rbi +751 -0
- data/rbi/generated/prism/inspect_visitor.rbi +503 -0
- data/rbi/generated/prism/lex_compat.rbi +162 -0
- data/rbi/generated/prism/mutation_compiler.rbi +464 -0
- data/rbi/generated/prism/node.rbi +14407 -0
- data/rbi/generated/prism/node_ext.rbi +259 -0
- data/rbi/generated/prism/node_find.rbi +79 -0
- data/rbi/generated/prism/parse_result/errors.rbi +21 -0
- data/rbi/generated/prism/parse_result/newlines.rbi +208 -0
- data/rbi/generated/prism/parse_result.rbi +776 -0
- data/rbi/generated/prism/pattern.rbi +134 -0
- data/rbi/generated/prism/reflection.rbi +89 -0
- data/rbi/generated/prism/relocation.rbi +329 -0
- data/rbi/generated/prism/serialize.rbi +184 -0
- data/rbi/generated/prism/string_query.rbi +43 -0
- data/rbi/generated/prism/translation.rbi +7 -0
- data/rbi/generated/prism/visitor.rbi +650 -0
- data/rbi/generated/prism.rbi +86 -0
- data/rbi/prism/translation/parser_versions.rbi +5 -0
- data/rbi/rubyvm/node_find.rbi +14 -0
- data/sig/generated/prism/compiler.rbs +492 -0
- data/sig/generated/prism/desugar_compiler.rbs +305 -0
- data/sig/generated/prism/dispatcher.rbs +1292 -0
- data/sig/generated/prism/dot_visitor.rbs +635 -0
- data/sig/generated/prism/dsl.rbs +928 -0
- data/sig/generated/prism/inspect_visitor.rbs +509 -0
- data/sig/generated/prism/lex_compat.rbs +166 -0
- data/sig/{prism → generated/prism}/mutation_compiler.rbs +309 -4
- data/sig/generated/prism/node.rbs +20896 -0
- data/sig/generated/prism/node_ext.rbs +290 -0
- data/sig/generated/prism/node_find.rbs +90 -0
- data/sig/generated/prism/parse_result/errors.rbs +22 -0
- data/sig/generated/prism/parse_result/newlines.rbs +223 -0
- data/sig/generated/prism/parse_result.rbs +871 -0
- data/sig/generated/prism/pattern.rbs +156 -0
- data/sig/generated/prism/reflection.rbs +101 -0
- data/sig/generated/prism/relocation.rbs +428 -0
- data/sig/generated/prism/serialize.rbs +198 -0
- data/sig/generated/prism/string_query.rbs +43 -0
- data/sig/generated/prism/translation.rbs +8 -0
- data/sig/generated/prism/visitor.rbs +1111 -0
- data/sig/generated/prism.rbs +84 -0
- data/sig/manifest.yaml +2 -0
- data/src/arena.c +117 -0
- data/src/{util/pm_buffer.c → buffer.c} +53 -21
- data/src/{util/pm_char.c → char.c} +28 -57
- data/src/comments.c +454 -0
- data/src/constant_pool.c +406 -0
- data/src/diagnostic.c +97 -65
- data/src/encoding.c +8 -3
- data/src/errors_format.c +519 -0
- data/src/{util/pm_integer.c → integer.c} +33 -22
- data/src/json.c +5733 -0
- data/src/line_offset_list.c +100 -0
- data/src/list.c +24 -0
- data/src/{util/pm_memchr.c → memchr.c} +8 -6
- data/src/node.c +3504 -7674
- data/src/options.c +162 -49
- data/src/parser.c +367 -0
- data/src/prettyprint.c +421 -354
- data/src/prism.c +8402 -7161
- data/src/regexp.c +961 -45
- data/src/serialize.c +460 -424
- data/src/source.c +518 -0
- data/src/static_literals.c +111 -43
- data/src/string_query.c +180 -0
- data/src/stringy.c +91 -0
- data/src/{util/pm_strncasecmp.c → strncasecmp.c} +5 -4
- data/src/strpbrk.c +447 -0
- data/src/{token_type.c → tokens.c} +39 -18
- data/src/xxh3.c +292 -0
- metadata +128 -63
- data/ext/prism/api_pack.c +0 -276
- data/include/prism/defines.h +0 -260
- data/include/prism/pack.h +0 -163
- data/include/prism/regexp.h +0 -43
- data/include/prism/util/pm_buffer.h +0 -236
- data/include/prism/util/pm_char.h +0 -204
- data/include/prism/util/pm_constant_pool.h +0 -218
- data/include/prism/util/pm_integer.h +0 -130
- data/include/prism/util/pm_memchr.h +0 -29
- data/include/prism/util/pm_newline_list.h +0 -113
- data/include/prism/util/pm_string.h +0 -200
- data/lib/prism/pack.rb +0 -230
- data/lib/prism/parse_result/comments.rb +0 -188
- data/rbi/prism/compiler.rbi +0 -12
- data/rbi/prism/dsl.rbi +0 -524
- data/rbi/prism/inspect_visitor.rbi +0 -12
- data/rbi/prism/node.rbi +0 -8750
- data/rbi/prism/node_ext.rbi +0 -107
- data/rbi/prism/parse_result.rbi +0 -404
- data/rbi/prism/reflection.rbi +0 -58
- data/rbi/prism/string_query.rbi +0 -12
- data/rbi/prism/visitor.rbi +0 -473
- data/rbi/prism.rbi +0 -63
- data/sig/prism/compiler.rbs +0 -9
- data/sig/prism/dispatcher.rbs +0 -19
- data/sig/prism/dot_visitor.rbs +0 -6
- data/sig/prism/dsl.rbs +0 -351
- data/sig/prism/inspect_visitor.rbs +0 -22
- data/sig/prism/lex_compat.rbs +0 -10
- data/sig/prism/node.rbs +0 -4042
- data/sig/prism/node_ext.rbs +0 -149
- data/sig/prism/pack.rbs +0 -43
- data/sig/prism/parse_result/comments.rbs +0 -38
- data/sig/prism/parse_result.rbs +0 -197
- data/sig/prism/pattern.rbs +0 -13
- data/sig/prism/reflection.rbs +0 -50
- data/sig/prism/relocation.rbs +0 -185
- data/sig/prism/serialize.rbs +0 -8
- data/sig/prism/string_query.rbs +0 -11
- data/sig/prism/visitor.rbs +0 -169
- data/sig/prism.rbs +0 -272
- data/src/pack.c +0 -509
- data/src/util/pm_constant_pool.c +0 -342
- data/src/util/pm_list.c +0 -49
- data/src/util/pm_newline_list.c +0 -125
- data/src/util/pm_string.c +0 -381
- data/src/util/pm_strpbrk.c +0 -206
data/src/serialize.c
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/* :markup: markdown */
|
|
2
|
-
|
|
3
1
|
/*----------------------------------------------------------------------------*/
|
|
4
2
|
/* This file is generated by the templates/template.rb script and should not */
|
|
5
3
|
/* be modified manually. See */
|
|
@@ -8,60 +6,61 @@
|
|
|
8
6
|
/* template */
|
|
9
7
|
/*----------------------------------------------------------------------------*/
|
|
10
8
|
|
|
11
|
-
#include "prism.h"
|
|
9
|
+
#include "prism/excludes.h"
|
|
10
|
+
|
|
11
|
+
/* We optionally support serializing to a binary string. For systems that do not
|
|
12
|
+
* want or need this functionality, it can be turned off with the
|
|
13
|
+
* PRISM_EXCLUDE_SERIALIZATION define. */
|
|
14
|
+
#ifdef PRISM_EXCLUDE_SERIALIZATION
|
|
15
|
+
|
|
16
|
+
/* Ensure this translation unit is never empty, even when serialization is
|
|
17
|
+
* excluded. */
|
|
18
|
+
typedef int pm_serialize_unused_t;
|
|
19
|
+
|
|
20
|
+
#else
|
|
12
21
|
|
|
13
|
-
|
|
14
|
-
// want or need this functionality, it can be turned off with the
|
|
15
|
-
// PRISM_EXCLUDE_SERIALIZATION define.
|
|
16
|
-
#ifndef PRISM_EXCLUDE_SERIALIZATION
|
|
22
|
+
#include "prism/compiler/inline.h"
|
|
17
23
|
|
|
24
|
+
#include "prism/internal/buffer.h"
|
|
25
|
+
#include "prism/internal/comments.h"
|
|
26
|
+
#include "prism/internal/diagnostic.h"
|
|
27
|
+
#include "prism/internal/encoding.h"
|
|
28
|
+
#include "prism/internal/list.h"
|
|
29
|
+
#include "prism/internal/magic_comments.h"
|
|
30
|
+
#include "prism/internal/options.h"
|
|
31
|
+
#include "prism/internal/parser.h"
|
|
32
|
+
|
|
33
|
+
#include "prism.h"
|
|
34
|
+
#include "prism/ast.h"
|
|
35
|
+
#include "prism/line_offset_list.h"
|
|
36
|
+
|
|
37
|
+
#include <assert.h>
|
|
18
38
|
#include <stdio.h>
|
|
39
|
+
#include <string.h>
|
|
19
40
|
|
|
20
|
-
static
|
|
41
|
+
static PRISM_INLINE uint32_t
|
|
21
42
|
pm_ptrdifft_to_u32(ptrdiff_t value) {
|
|
22
43
|
assert(value >= 0 && ((unsigned long) value) < UINT32_MAX);
|
|
23
44
|
return (uint32_t) value;
|
|
24
45
|
}
|
|
25
46
|
|
|
26
|
-
static
|
|
47
|
+
static PRISM_INLINE uint32_t
|
|
27
48
|
pm_sizet_to_u32(size_t value) {
|
|
28
49
|
assert(value < UINT32_MAX);
|
|
29
50
|
return (uint32_t) value;
|
|
30
51
|
}
|
|
31
52
|
|
|
32
53
|
static void
|
|
33
|
-
pm_serialize_location(const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
assert(location->start <= location->end);
|
|
37
|
-
|
|
38
|
-
pm_buffer_append_varuint(buffer, pm_ptrdifft_to_u32(location->start - parser->start));
|
|
39
|
-
pm_buffer_append_varuint(buffer, pm_ptrdifft_to_u32(location->end - location->start));
|
|
54
|
+
pm_serialize_location(const pm_location_t *location, pm_buffer_t *buffer) {
|
|
55
|
+
pm_buffer_append_varuint(buffer, location->start);
|
|
56
|
+
pm_buffer_append_varuint(buffer, location->length);
|
|
40
57
|
}
|
|
41
58
|
|
|
42
59
|
static void
|
|
43
|
-
pm_serialize_string(const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
pm_buffer_append_varuint(buffer, pm_ptrdifft_to_u32(pm_string_source(string) - parser->start));
|
|
48
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(pm_string_length(string)));
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
case PM_STRING_OWNED:
|
|
52
|
-
case PM_STRING_CONSTANT: {
|
|
53
|
-
uint32_t length = pm_sizet_to_u32(pm_string_length(string));
|
|
54
|
-
pm_buffer_append_byte(buffer, 2);
|
|
55
|
-
pm_buffer_append_varuint(buffer, length);
|
|
56
|
-
pm_buffer_append_bytes(buffer, pm_string_source(string), length);
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
#ifdef PRISM_HAS_MMAP
|
|
60
|
-
case PM_STRING_MAPPED:
|
|
61
|
-
assert(false && "Cannot serialize mapped strings.");
|
|
62
|
-
break;
|
|
63
|
-
#endif
|
|
64
|
-
}
|
|
60
|
+
pm_serialize_string(const pm_string_t *string, pm_buffer_t *buffer) {
|
|
61
|
+
uint32_t length = pm_sizet_to_u32(pm_string_length(string));
|
|
62
|
+
pm_buffer_append_varuint(buffer, length);
|
|
63
|
+
pm_buffer_append_bytes(buffer, pm_string_source(string), length);
|
|
65
64
|
}
|
|
66
65
|
|
|
67
66
|
static void
|
|
@@ -82,10 +81,8 @@ static void
|
|
|
82
81
|
pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
83
82
|
pm_buffer_append_byte(buffer, (uint8_t) PM_NODE_TYPE(node));
|
|
84
83
|
|
|
85
|
-
size_t offset = buffer->length;
|
|
86
|
-
|
|
87
84
|
pm_buffer_append_varuint(buffer, node->node_id);
|
|
88
|
-
pm_serialize_location(
|
|
85
|
+
pm_serialize_location(&node->location, buffer);
|
|
89
86
|
|
|
90
87
|
switch (PM_NODE_TYPE(node)) {
|
|
91
88
|
// We do not need to serialize a ScopeNode ever as
|
|
@@ -96,28 +93,28 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
96
93
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
97
94
|
pm_serialize_node(parser, (pm_node_t *)((pm_alias_global_variable_node_t *)node)->new_name, buffer);
|
|
98
95
|
pm_serialize_node(parser, (pm_node_t *)((pm_alias_global_variable_node_t *)node)->old_name, buffer);
|
|
99
|
-
pm_serialize_location(
|
|
96
|
+
pm_serialize_location(&((pm_alias_global_variable_node_t *)node)->keyword_loc, buffer);
|
|
100
97
|
break;
|
|
101
98
|
}
|
|
102
99
|
case PM_ALIAS_METHOD_NODE: {
|
|
103
100
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
104
101
|
pm_serialize_node(parser, (pm_node_t *)((pm_alias_method_node_t *)node)->new_name, buffer);
|
|
105
102
|
pm_serialize_node(parser, (pm_node_t *)((pm_alias_method_node_t *)node)->old_name, buffer);
|
|
106
|
-
pm_serialize_location(
|
|
103
|
+
pm_serialize_location(&((pm_alias_method_node_t *)node)->keyword_loc, buffer);
|
|
107
104
|
break;
|
|
108
105
|
}
|
|
109
106
|
case PM_ALTERNATION_PATTERN_NODE: {
|
|
110
107
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
111
108
|
pm_serialize_node(parser, (pm_node_t *)((pm_alternation_pattern_node_t *)node)->left, buffer);
|
|
112
109
|
pm_serialize_node(parser, (pm_node_t *)((pm_alternation_pattern_node_t *)node)->right, buffer);
|
|
113
|
-
pm_serialize_location(
|
|
110
|
+
pm_serialize_location(&((pm_alternation_pattern_node_t *)node)->operator_loc, buffer);
|
|
114
111
|
break;
|
|
115
112
|
}
|
|
116
113
|
case PM_AND_NODE: {
|
|
117
114
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
118
115
|
pm_serialize_node(parser, (pm_node_t *)((pm_and_node_t *)node)->left, buffer);
|
|
119
116
|
pm_serialize_node(parser, (pm_node_t *)((pm_and_node_t *)node)->right, buffer);
|
|
120
|
-
pm_serialize_location(
|
|
117
|
+
pm_serialize_location(&((pm_and_node_t *)node)->operator_loc, buffer);
|
|
121
118
|
break;
|
|
122
119
|
}
|
|
123
120
|
case PM_ARGUMENTS_NODE: {
|
|
@@ -136,17 +133,17 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
136
133
|
for (uint32_t index = 0; index < elements_size; index++) {
|
|
137
134
|
pm_serialize_node(parser, (pm_node_t *) ((pm_array_node_t *)node)->elements.nodes[index], buffer);
|
|
138
135
|
}
|
|
139
|
-
if (((pm_array_node_t *)node)->opening_loc.
|
|
136
|
+
if (((pm_array_node_t *)node)->opening_loc.length == 0) {
|
|
140
137
|
pm_buffer_append_byte(buffer, 0);
|
|
141
138
|
} else {
|
|
142
139
|
pm_buffer_append_byte(buffer, 1);
|
|
143
|
-
pm_serialize_location(
|
|
140
|
+
pm_serialize_location(&((pm_array_node_t *)node)->opening_loc, buffer);
|
|
144
141
|
}
|
|
145
|
-
if (((pm_array_node_t *)node)->closing_loc.
|
|
142
|
+
if (((pm_array_node_t *)node)->closing_loc.length == 0) {
|
|
146
143
|
pm_buffer_append_byte(buffer, 0);
|
|
147
144
|
} else {
|
|
148
145
|
pm_buffer_append_byte(buffer, 1);
|
|
149
|
-
pm_serialize_location(
|
|
146
|
+
pm_serialize_location(&((pm_array_node_t *)node)->closing_loc, buffer);
|
|
150
147
|
}
|
|
151
148
|
break;
|
|
152
149
|
}
|
|
@@ -172,17 +169,17 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
172
169
|
for (uint32_t index = 0; index < posts_size; index++) {
|
|
173
170
|
pm_serialize_node(parser, (pm_node_t *) ((pm_array_pattern_node_t *)node)->posts.nodes[index], buffer);
|
|
174
171
|
}
|
|
175
|
-
if (((pm_array_pattern_node_t *)node)->opening_loc.
|
|
172
|
+
if (((pm_array_pattern_node_t *)node)->opening_loc.length == 0) {
|
|
176
173
|
pm_buffer_append_byte(buffer, 0);
|
|
177
174
|
} else {
|
|
178
175
|
pm_buffer_append_byte(buffer, 1);
|
|
179
|
-
pm_serialize_location(
|
|
176
|
+
pm_serialize_location(&((pm_array_pattern_node_t *)node)->opening_loc, buffer);
|
|
180
177
|
}
|
|
181
|
-
if (((pm_array_pattern_node_t *)node)->closing_loc.
|
|
178
|
+
if (((pm_array_pattern_node_t *)node)->closing_loc.length == 0) {
|
|
182
179
|
pm_buffer_append_byte(buffer, 0);
|
|
183
180
|
} else {
|
|
184
181
|
pm_buffer_append_byte(buffer, 1);
|
|
185
|
-
pm_serialize_location(
|
|
182
|
+
pm_serialize_location(&((pm_array_pattern_node_t *)node)->closing_loc, buffer);
|
|
186
183
|
}
|
|
187
184
|
break;
|
|
188
185
|
}
|
|
@@ -190,11 +187,11 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
190
187
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
191
188
|
pm_serialize_node(parser, (pm_node_t *)((pm_assoc_node_t *)node)->key, buffer);
|
|
192
189
|
pm_serialize_node(parser, (pm_node_t *)((pm_assoc_node_t *)node)->value, buffer);
|
|
193
|
-
if (((pm_assoc_node_t *)node)->operator_loc.
|
|
190
|
+
if (((pm_assoc_node_t *)node)->operator_loc.length == 0) {
|
|
194
191
|
pm_buffer_append_byte(buffer, 0);
|
|
195
192
|
} else {
|
|
196
193
|
pm_buffer_append_byte(buffer, 1);
|
|
197
|
-
pm_serialize_location(
|
|
194
|
+
pm_serialize_location(&((pm_assoc_node_t *)node)->operator_loc, buffer);
|
|
198
195
|
}
|
|
199
196
|
break;
|
|
200
197
|
}
|
|
@@ -205,7 +202,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
205
202
|
} else {
|
|
206
203
|
pm_serialize_node(parser, (pm_node_t *)((pm_assoc_splat_node_t *)node)->value, buffer);
|
|
207
204
|
}
|
|
208
|
-
pm_serialize_location(
|
|
205
|
+
pm_serialize_location(&((pm_assoc_splat_node_t *)node)->operator_loc, buffer);
|
|
209
206
|
break;
|
|
210
207
|
}
|
|
211
208
|
case PM_BACK_REFERENCE_READ_NODE: {
|
|
@@ -215,11 +212,11 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
215
212
|
}
|
|
216
213
|
case PM_BEGIN_NODE: {
|
|
217
214
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
218
|
-
if (((pm_begin_node_t *)node)->begin_keyword_loc.
|
|
215
|
+
if (((pm_begin_node_t *)node)->begin_keyword_loc.length == 0) {
|
|
219
216
|
pm_buffer_append_byte(buffer, 0);
|
|
220
217
|
} else {
|
|
221
218
|
pm_buffer_append_byte(buffer, 1);
|
|
222
|
-
pm_serialize_location(
|
|
219
|
+
pm_serialize_location(&((pm_begin_node_t *)node)->begin_keyword_loc, buffer);
|
|
223
220
|
}
|
|
224
221
|
if (((pm_begin_node_t *)node)->statements == NULL) {
|
|
225
222
|
pm_buffer_append_byte(buffer, 0);
|
|
@@ -241,11 +238,11 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
241
238
|
} else {
|
|
242
239
|
pm_serialize_node(parser, (pm_node_t *)((pm_begin_node_t *)node)->ensure_clause, buffer);
|
|
243
240
|
}
|
|
244
|
-
if (((pm_begin_node_t *)node)->end_keyword_loc.
|
|
241
|
+
if (((pm_begin_node_t *)node)->end_keyword_loc.length == 0) {
|
|
245
242
|
pm_buffer_append_byte(buffer, 0);
|
|
246
243
|
} else {
|
|
247
244
|
pm_buffer_append_byte(buffer, 1);
|
|
248
|
-
pm_serialize_location(
|
|
245
|
+
pm_serialize_location(&((pm_begin_node_t *)node)->end_keyword_loc, buffer);
|
|
249
246
|
}
|
|
250
247
|
break;
|
|
251
248
|
}
|
|
@@ -256,7 +253,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
256
253
|
} else {
|
|
257
254
|
pm_serialize_node(parser, (pm_node_t *)((pm_block_argument_node_t *)node)->expression, buffer);
|
|
258
255
|
}
|
|
259
|
-
pm_serialize_location(
|
|
256
|
+
pm_serialize_location(&((pm_block_argument_node_t *)node)->operator_loc, buffer);
|
|
260
257
|
break;
|
|
261
258
|
}
|
|
262
259
|
case PM_BLOCK_LOCAL_VARIABLE_NODE: {
|
|
@@ -281,20 +278,20 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
281
278
|
} else {
|
|
282
279
|
pm_serialize_node(parser, (pm_node_t *)((pm_block_node_t *)node)->body, buffer);
|
|
283
280
|
}
|
|
284
|
-
pm_serialize_location(
|
|
285
|
-
pm_serialize_location(
|
|
281
|
+
pm_serialize_location(&((pm_block_node_t *)node)->opening_loc, buffer);
|
|
282
|
+
pm_serialize_location(&((pm_block_node_t *)node)->closing_loc, buffer);
|
|
286
283
|
break;
|
|
287
284
|
}
|
|
288
285
|
case PM_BLOCK_PARAMETER_NODE: {
|
|
289
286
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
290
287
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_block_parameter_node_t *)node)->name));
|
|
291
|
-
if (((pm_block_parameter_node_t *)node)->name_loc.
|
|
288
|
+
if (((pm_block_parameter_node_t *)node)->name_loc.length == 0) {
|
|
292
289
|
pm_buffer_append_byte(buffer, 0);
|
|
293
290
|
} else {
|
|
294
291
|
pm_buffer_append_byte(buffer, 1);
|
|
295
|
-
pm_serialize_location(
|
|
292
|
+
pm_serialize_location(&((pm_block_parameter_node_t *)node)->name_loc, buffer);
|
|
296
293
|
}
|
|
297
|
-
pm_serialize_location(
|
|
294
|
+
pm_serialize_location(&((pm_block_parameter_node_t *)node)->operator_loc, buffer);
|
|
298
295
|
break;
|
|
299
296
|
}
|
|
300
297
|
case PM_BLOCK_PARAMETERS_NODE: {
|
|
@@ -309,17 +306,17 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
309
306
|
for (uint32_t index = 0; index < locals_size; index++) {
|
|
310
307
|
pm_serialize_node(parser, (pm_node_t *) ((pm_block_parameters_node_t *)node)->locals.nodes[index], buffer);
|
|
311
308
|
}
|
|
312
|
-
if (((pm_block_parameters_node_t *)node)->opening_loc.
|
|
309
|
+
if (((pm_block_parameters_node_t *)node)->opening_loc.length == 0) {
|
|
313
310
|
pm_buffer_append_byte(buffer, 0);
|
|
314
311
|
} else {
|
|
315
312
|
pm_buffer_append_byte(buffer, 1);
|
|
316
|
-
pm_serialize_location(
|
|
313
|
+
pm_serialize_location(&((pm_block_parameters_node_t *)node)->opening_loc, buffer);
|
|
317
314
|
}
|
|
318
|
-
if (((pm_block_parameters_node_t *)node)->closing_loc.
|
|
315
|
+
if (((pm_block_parameters_node_t *)node)->closing_loc.length == 0) {
|
|
319
316
|
pm_buffer_append_byte(buffer, 0);
|
|
320
317
|
} else {
|
|
321
318
|
pm_buffer_append_byte(buffer, 1);
|
|
322
|
-
pm_serialize_location(
|
|
319
|
+
pm_serialize_location(&((pm_block_parameters_node_t *)node)->closing_loc, buffer);
|
|
323
320
|
}
|
|
324
321
|
break;
|
|
325
322
|
}
|
|
@@ -330,7 +327,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
330
327
|
} else {
|
|
331
328
|
pm_serialize_node(parser, (pm_node_t *)((pm_break_node_t *)node)->arguments, buffer);
|
|
332
329
|
}
|
|
333
|
-
pm_serialize_location(
|
|
330
|
+
pm_serialize_location(&((pm_break_node_t *)node)->keyword_loc, buffer);
|
|
334
331
|
break;
|
|
335
332
|
}
|
|
336
333
|
case PM_CALL_AND_WRITE_NODE: {
|
|
@@ -340,21 +337,21 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
340
337
|
} else {
|
|
341
338
|
pm_serialize_node(parser, (pm_node_t *)((pm_call_and_write_node_t *)node)->receiver, buffer);
|
|
342
339
|
}
|
|
343
|
-
if (((pm_call_and_write_node_t *)node)->call_operator_loc.
|
|
340
|
+
if (((pm_call_and_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
344
341
|
pm_buffer_append_byte(buffer, 0);
|
|
345
342
|
} else {
|
|
346
343
|
pm_buffer_append_byte(buffer, 1);
|
|
347
|
-
pm_serialize_location(
|
|
344
|
+
pm_serialize_location(&((pm_call_and_write_node_t *)node)->call_operator_loc, buffer);
|
|
348
345
|
}
|
|
349
|
-
if (((pm_call_and_write_node_t *)node)->message_loc.
|
|
346
|
+
if (((pm_call_and_write_node_t *)node)->message_loc.length == 0) {
|
|
350
347
|
pm_buffer_append_byte(buffer, 0);
|
|
351
348
|
} else {
|
|
352
349
|
pm_buffer_append_byte(buffer, 1);
|
|
353
|
-
pm_serialize_location(
|
|
350
|
+
pm_serialize_location(&((pm_call_and_write_node_t *)node)->message_loc, buffer);
|
|
354
351
|
}
|
|
355
352
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_and_write_node_t *)node)->read_name));
|
|
356
353
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_and_write_node_t *)node)->write_name));
|
|
357
|
-
pm_serialize_location(
|
|
354
|
+
pm_serialize_location(&((pm_call_and_write_node_t *)node)->operator_loc, buffer);
|
|
358
355
|
pm_serialize_node(parser, (pm_node_t *)((pm_call_and_write_node_t *)node)->value, buffer);
|
|
359
356
|
break;
|
|
360
357
|
}
|
|
@@ -365,41 +362,41 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
365
362
|
} else {
|
|
366
363
|
pm_serialize_node(parser, (pm_node_t *)((pm_call_node_t *)node)->receiver, buffer);
|
|
367
364
|
}
|
|
368
|
-
if (((pm_call_node_t *)node)->call_operator_loc.
|
|
365
|
+
if (((pm_call_node_t *)node)->call_operator_loc.length == 0) {
|
|
369
366
|
pm_buffer_append_byte(buffer, 0);
|
|
370
367
|
} else {
|
|
371
368
|
pm_buffer_append_byte(buffer, 1);
|
|
372
|
-
pm_serialize_location(
|
|
369
|
+
pm_serialize_location(&((pm_call_node_t *)node)->call_operator_loc, buffer);
|
|
373
370
|
}
|
|
374
371
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_node_t *)node)->name));
|
|
375
|
-
if (((pm_call_node_t *)node)->message_loc.
|
|
372
|
+
if (((pm_call_node_t *)node)->message_loc.length == 0) {
|
|
376
373
|
pm_buffer_append_byte(buffer, 0);
|
|
377
374
|
} else {
|
|
378
375
|
pm_buffer_append_byte(buffer, 1);
|
|
379
|
-
pm_serialize_location(
|
|
376
|
+
pm_serialize_location(&((pm_call_node_t *)node)->message_loc, buffer);
|
|
380
377
|
}
|
|
381
|
-
if (((pm_call_node_t *)node)->opening_loc.
|
|
378
|
+
if (((pm_call_node_t *)node)->opening_loc.length == 0) {
|
|
382
379
|
pm_buffer_append_byte(buffer, 0);
|
|
383
380
|
} else {
|
|
384
381
|
pm_buffer_append_byte(buffer, 1);
|
|
385
|
-
pm_serialize_location(
|
|
382
|
+
pm_serialize_location(&((pm_call_node_t *)node)->opening_loc, buffer);
|
|
386
383
|
}
|
|
387
384
|
if (((pm_call_node_t *)node)->arguments == NULL) {
|
|
388
385
|
pm_buffer_append_byte(buffer, 0);
|
|
389
386
|
} else {
|
|
390
387
|
pm_serialize_node(parser, (pm_node_t *)((pm_call_node_t *)node)->arguments, buffer);
|
|
391
388
|
}
|
|
392
|
-
if (((pm_call_node_t *)node)->closing_loc.
|
|
389
|
+
if (((pm_call_node_t *)node)->closing_loc.length == 0) {
|
|
393
390
|
pm_buffer_append_byte(buffer, 0);
|
|
394
391
|
} else {
|
|
395
392
|
pm_buffer_append_byte(buffer, 1);
|
|
396
|
-
pm_serialize_location(
|
|
393
|
+
pm_serialize_location(&((pm_call_node_t *)node)->closing_loc, buffer);
|
|
397
394
|
}
|
|
398
|
-
if (((pm_call_node_t *)node)->equal_loc.
|
|
395
|
+
if (((pm_call_node_t *)node)->equal_loc.length == 0) {
|
|
399
396
|
pm_buffer_append_byte(buffer, 0);
|
|
400
397
|
} else {
|
|
401
398
|
pm_buffer_append_byte(buffer, 1);
|
|
402
|
-
pm_serialize_location(
|
|
399
|
+
pm_serialize_location(&((pm_call_node_t *)node)->equal_loc, buffer);
|
|
403
400
|
}
|
|
404
401
|
if (((pm_call_node_t *)node)->block == NULL) {
|
|
405
402
|
pm_buffer_append_byte(buffer, 0);
|
|
@@ -415,22 +412,22 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
415
412
|
} else {
|
|
416
413
|
pm_serialize_node(parser, (pm_node_t *)((pm_call_operator_write_node_t *)node)->receiver, buffer);
|
|
417
414
|
}
|
|
418
|
-
if (((pm_call_operator_write_node_t *)node)->call_operator_loc.
|
|
415
|
+
if (((pm_call_operator_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
419
416
|
pm_buffer_append_byte(buffer, 0);
|
|
420
417
|
} else {
|
|
421
418
|
pm_buffer_append_byte(buffer, 1);
|
|
422
|
-
pm_serialize_location(
|
|
419
|
+
pm_serialize_location(&((pm_call_operator_write_node_t *)node)->call_operator_loc, buffer);
|
|
423
420
|
}
|
|
424
|
-
if (((pm_call_operator_write_node_t *)node)->message_loc.
|
|
421
|
+
if (((pm_call_operator_write_node_t *)node)->message_loc.length == 0) {
|
|
425
422
|
pm_buffer_append_byte(buffer, 0);
|
|
426
423
|
} else {
|
|
427
424
|
pm_buffer_append_byte(buffer, 1);
|
|
428
|
-
pm_serialize_location(
|
|
425
|
+
pm_serialize_location(&((pm_call_operator_write_node_t *)node)->message_loc, buffer);
|
|
429
426
|
}
|
|
430
427
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_operator_write_node_t *)node)->read_name));
|
|
431
428
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_operator_write_node_t *)node)->write_name));
|
|
432
429
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_operator_write_node_t *)node)->binary_operator));
|
|
433
|
-
pm_serialize_location(
|
|
430
|
+
pm_serialize_location(&((pm_call_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
434
431
|
pm_serialize_node(parser, (pm_node_t *)((pm_call_operator_write_node_t *)node)->value, buffer);
|
|
435
432
|
break;
|
|
436
433
|
}
|
|
@@ -441,37 +438,37 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
441
438
|
} else {
|
|
442
439
|
pm_serialize_node(parser, (pm_node_t *)((pm_call_or_write_node_t *)node)->receiver, buffer);
|
|
443
440
|
}
|
|
444
|
-
if (((pm_call_or_write_node_t *)node)->call_operator_loc.
|
|
441
|
+
if (((pm_call_or_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
445
442
|
pm_buffer_append_byte(buffer, 0);
|
|
446
443
|
} else {
|
|
447
444
|
pm_buffer_append_byte(buffer, 1);
|
|
448
|
-
pm_serialize_location(
|
|
445
|
+
pm_serialize_location(&((pm_call_or_write_node_t *)node)->call_operator_loc, buffer);
|
|
449
446
|
}
|
|
450
|
-
if (((pm_call_or_write_node_t *)node)->message_loc.
|
|
447
|
+
if (((pm_call_or_write_node_t *)node)->message_loc.length == 0) {
|
|
451
448
|
pm_buffer_append_byte(buffer, 0);
|
|
452
449
|
} else {
|
|
453
450
|
pm_buffer_append_byte(buffer, 1);
|
|
454
|
-
pm_serialize_location(
|
|
451
|
+
pm_serialize_location(&((pm_call_or_write_node_t *)node)->message_loc, buffer);
|
|
455
452
|
}
|
|
456
453
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_or_write_node_t *)node)->read_name));
|
|
457
454
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_or_write_node_t *)node)->write_name));
|
|
458
|
-
pm_serialize_location(
|
|
455
|
+
pm_serialize_location(&((pm_call_or_write_node_t *)node)->operator_loc, buffer);
|
|
459
456
|
pm_serialize_node(parser, (pm_node_t *)((pm_call_or_write_node_t *)node)->value, buffer);
|
|
460
457
|
break;
|
|
461
458
|
}
|
|
462
459
|
case PM_CALL_TARGET_NODE: {
|
|
463
460
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
464
461
|
pm_serialize_node(parser, (pm_node_t *)((pm_call_target_node_t *)node)->receiver, buffer);
|
|
465
|
-
pm_serialize_location(
|
|
462
|
+
pm_serialize_location(&((pm_call_target_node_t *)node)->call_operator_loc, buffer);
|
|
466
463
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_target_node_t *)node)->name));
|
|
467
|
-
pm_serialize_location(
|
|
464
|
+
pm_serialize_location(&((pm_call_target_node_t *)node)->message_loc, buffer);
|
|
468
465
|
break;
|
|
469
466
|
}
|
|
470
467
|
case PM_CAPTURE_PATTERN_NODE: {
|
|
471
468
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
472
469
|
pm_serialize_node(parser, (pm_node_t *)((pm_capture_pattern_node_t *)node)->value, buffer);
|
|
473
470
|
pm_serialize_node(parser, (pm_node_t *)((pm_capture_pattern_node_t *)node)->target, buffer);
|
|
474
|
-
pm_serialize_location(
|
|
471
|
+
pm_serialize_location(&((pm_capture_pattern_node_t *)node)->operator_loc, buffer);
|
|
475
472
|
break;
|
|
476
473
|
}
|
|
477
474
|
case PM_CASE_MATCH_NODE: {
|
|
@@ -491,8 +488,8 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
491
488
|
} else {
|
|
492
489
|
pm_serialize_node(parser, (pm_node_t *)((pm_case_match_node_t *)node)->else_clause, buffer);
|
|
493
490
|
}
|
|
494
|
-
pm_serialize_location(
|
|
495
|
-
pm_serialize_location(
|
|
491
|
+
pm_serialize_location(&((pm_case_match_node_t *)node)->case_keyword_loc, buffer);
|
|
492
|
+
pm_serialize_location(&((pm_case_match_node_t *)node)->end_keyword_loc, buffer);
|
|
496
493
|
break;
|
|
497
494
|
}
|
|
498
495
|
case PM_CASE_NODE: {
|
|
@@ -512,8 +509,8 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
512
509
|
} else {
|
|
513
510
|
pm_serialize_node(parser, (pm_node_t *)((pm_case_node_t *)node)->else_clause, buffer);
|
|
514
511
|
}
|
|
515
|
-
pm_serialize_location(
|
|
516
|
-
pm_serialize_location(
|
|
512
|
+
pm_serialize_location(&((pm_case_node_t *)node)->case_keyword_loc, buffer);
|
|
513
|
+
pm_serialize_location(&((pm_case_node_t *)node)->end_keyword_loc, buffer);
|
|
517
514
|
break;
|
|
518
515
|
}
|
|
519
516
|
case PM_CLASS_NODE: {
|
|
@@ -523,13 +520,13 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
523
520
|
for (uint32_t index = 0; index < locals_size; index++) {
|
|
524
521
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_node_t *)node)->locals.ids[index]));
|
|
525
522
|
}
|
|
526
|
-
pm_serialize_location(
|
|
523
|
+
pm_serialize_location(&((pm_class_node_t *)node)->class_keyword_loc, buffer);
|
|
527
524
|
pm_serialize_node(parser, (pm_node_t *)((pm_class_node_t *)node)->constant_path, buffer);
|
|
528
|
-
if (((pm_class_node_t *)node)->inheritance_operator_loc.
|
|
525
|
+
if (((pm_class_node_t *)node)->inheritance_operator_loc.length == 0) {
|
|
529
526
|
pm_buffer_append_byte(buffer, 0);
|
|
530
527
|
} else {
|
|
531
528
|
pm_buffer_append_byte(buffer, 1);
|
|
532
|
-
pm_serialize_location(
|
|
529
|
+
pm_serialize_location(&((pm_class_node_t *)node)->inheritance_operator_loc, buffer);
|
|
533
530
|
}
|
|
534
531
|
if (((pm_class_node_t *)node)->superclass == NULL) {
|
|
535
532
|
pm_buffer_append_byte(buffer, 0);
|
|
@@ -541,23 +538,23 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
541
538
|
} else {
|
|
542
539
|
pm_serialize_node(parser, (pm_node_t *)((pm_class_node_t *)node)->body, buffer);
|
|
543
540
|
}
|
|
544
|
-
pm_serialize_location(
|
|
541
|
+
pm_serialize_location(&((pm_class_node_t *)node)->end_keyword_loc, buffer);
|
|
545
542
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_node_t *)node)->name));
|
|
546
543
|
break;
|
|
547
544
|
}
|
|
548
545
|
case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
|
|
549
546
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
550
547
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_and_write_node_t *)node)->name));
|
|
551
|
-
pm_serialize_location(
|
|
552
|
-
pm_serialize_location(
|
|
548
|
+
pm_serialize_location(&((pm_class_variable_and_write_node_t *)node)->name_loc, buffer);
|
|
549
|
+
pm_serialize_location(&((pm_class_variable_and_write_node_t *)node)->operator_loc, buffer);
|
|
553
550
|
pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_and_write_node_t *)node)->value, buffer);
|
|
554
551
|
break;
|
|
555
552
|
}
|
|
556
553
|
case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
557
554
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
558
555
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_operator_write_node_t *)node)->name));
|
|
559
|
-
pm_serialize_location(
|
|
560
|
-
pm_serialize_location(
|
|
556
|
+
pm_serialize_location(&((pm_class_variable_operator_write_node_t *)node)->name_loc, buffer);
|
|
557
|
+
pm_serialize_location(&((pm_class_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
561
558
|
pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_operator_write_node_t *)node)->value, buffer);
|
|
562
559
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_operator_write_node_t *)node)->binary_operator));
|
|
563
560
|
break;
|
|
@@ -565,8 +562,8 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
565
562
|
case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
|
|
566
563
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
567
564
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_or_write_node_t *)node)->name));
|
|
568
|
-
pm_serialize_location(
|
|
569
|
-
pm_serialize_location(
|
|
565
|
+
pm_serialize_location(&((pm_class_variable_or_write_node_t *)node)->name_loc, buffer);
|
|
566
|
+
pm_serialize_location(&((pm_class_variable_or_write_node_t *)node)->operator_loc, buffer);
|
|
570
567
|
pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_or_write_node_t *)node)->value, buffer);
|
|
571
568
|
break;
|
|
572
569
|
}
|
|
@@ -583,24 +580,24 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
583
580
|
case PM_CLASS_VARIABLE_WRITE_NODE: {
|
|
584
581
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
585
582
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_write_node_t *)node)->name));
|
|
586
|
-
pm_serialize_location(
|
|
583
|
+
pm_serialize_location(&((pm_class_variable_write_node_t *)node)->name_loc, buffer);
|
|
587
584
|
pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_write_node_t *)node)->value, buffer);
|
|
588
|
-
pm_serialize_location(
|
|
585
|
+
pm_serialize_location(&((pm_class_variable_write_node_t *)node)->operator_loc, buffer);
|
|
589
586
|
break;
|
|
590
587
|
}
|
|
591
588
|
case PM_CONSTANT_AND_WRITE_NODE: {
|
|
592
589
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
593
590
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_and_write_node_t *)node)->name));
|
|
594
|
-
pm_serialize_location(
|
|
595
|
-
pm_serialize_location(
|
|
591
|
+
pm_serialize_location(&((pm_constant_and_write_node_t *)node)->name_loc, buffer);
|
|
592
|
+
pm_serialize_location(&((pm_constant_and_write_node_t *)node)->operator_loc, buffer);
|
|
596
593
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_and_write_node_t *)node)->value, buffer);
|
|
597
594
|
break;
|
|
598
595
|
}
|
|
599
596
|
case PM_CONSTANT_OPERATOR_WRITE_NODE: {
|
|
600
597
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
601
598
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_operator_write_node_t *)node)->name));
|
|
602
|
-
pm_serialize_location(
|
|
603
|
-
pm_serialize_location(
|
|
599
|
+
pm_serialize_location(&((pm_constant_operator_write_node_t *)node)->name_loc, buffer);
|
|
600
|
+
pm_serialize_location(&((pm_constant_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
604
601
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_operator_write_node_t *)node)->value, buffer);
|
|
605
602
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_operator_write_node_t *)node)->binary_operator));
|
|
606
603
|
break;
|
|
@@ -608,15 +605,15 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
608
605
|
case PM_CONSTANT_OR_WRITE_NODE: {
|
|
609
606
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
610
607
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_or_write_node_t *)node)->name));
|
|
611
|
-
pm_serialize_location(
|
|
612
|
-
pm_serialize_location(
|
|
608
|
+
pm_serialize_location(&((pm_constant_or_write_node_t *)node)->name_loc, buffer);
|
|
609
|
+
pm_serialize_location(&((pm_constant_or_write_node_t *)node)->operator_loc, buffer);
|
|
613
610
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_or_write_node_t *)node)->value, buffer);
|
|
614
611
|
break;
|
|
615
612
|
}
|
|
616
613
|
case PM_CONSTANT_PATH_AND_WRITE_NODE: {
|
|
617
614
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
618
615
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_and_write_node_t *)node)->target, buffer);
|
|
619
|
-
pm_serialize_location(
|
|
616
|
+
pm_serialize_location(&((pm_constant_path_and_write_node_t *)node)->operator_loc, buffer);
|
|
620
617
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_and_write_node_t *)node)->value, buffer);
|
|
621
618
|
break;
|
|
622
619
|
}
|
|
@@ -628,14 +625,14 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
628
625
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_node_t *)node)->parent, buffer);
|
|
629
626
|
}
|
|
630
627
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_path_node_t *)node)->name));
|
|
631
|
-
pm_serialize_location(
|
|
632
|
-
pm_serialize_location(
|
|
628
|
+
pm_serialize_location(&((pm_constant_path_node_t *)node)->delimiter_loc, buffer);
|
|
629
|
+
pm_serialize_location(&((pm_constant_path_node_t *)node)->name_loc, buffer);
|
|
633
630
|
break;
|
|
634
631
|
}
|
|
635
632
|
case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
|
636
633
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
637
634
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_operator_write_node_t *)node)->target, buffer);
|
|
638
|
-
pm_serialize_location(
|
|
635
|
+
pm_serialize_location(&((pm_constant_path_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
639
636
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_operator_write_node_t *)node)->value, buffer);
|
|
640
637
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_path_operator_write_node_t *)node)->binary_operator));
|
|
641
638
|
break;
|
|
@@ -643,7 +640,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
643
640
|
case PM_CONSTANT_PATH_OR_WRITE_NODE: {
|
|
644
641
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
645
642
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_or_write_node_t *)node)->target, buffer);
|
|
646
|
-
pm_serialize_location(
|
|
643
|
+
pm_serialize_location(&((pm_constant_path_or_write_node_t *)node)->operator_loc, buffer);
|
|
647
644
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_or_write_node_t *)node)->value, buffer);
|
|
648
645
|
break;
|
|
649
646
|
}
|
|
@@ -655,14 +652,14 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
655
652
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_target_node_t *)node)->parent, buffer);
|
|
656
653
|
}
|
|
657
654
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_path_target_node_t *)node)->name));
|
|
658
|
-
pm_serialize_location(
|
|
659
|
-
pm_serialize_location(
|
|
655
|
+
pm_serialize_location(&((pm_constant_path_target_node_t *)node)->delimiter_loc, buffer);
|
|
656
|
+
pm_serialize_location(&((pm_constant_path_target_node_t *)node)->name_loc, buffer);
|
|
660
657
|
break;
|
|
661
658
|
}
|
|
662
659
|
case PM_CONSTANT_PATH_WRITE_NODE: {
|
|
663
660
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
664
661
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_write_node_t *)node)->target, buffer);
|
|
665
|
-
pm_serialize_location(
|
|
662
|
+
pm_serialize_location(&((pm_constant_path_write_node_t *)node)->operator_loc, buffer);
|
|
666
663
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_write_node_t *)node)->value, buffer);
|
|
667
664
|
break;
|
|
668
665
|
}
|
|
@@ -679,9 +676,9 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
679
676
|
case PM_CONSTANT_WRITE_NODE: {
|
|
680
677
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
681
678
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_write_node_t *)node)->name));
|
|
682
|
-
pm_serialize_location(
|
|
679
|
+
pm_serialize_location(&((pm_constant_write_node_t *)node)->name_loc, buffer);
|
|
683
680
|
pm_serialize_node(parser, (pm_node_t *)((pm_constant_write_node_t *)node)->value, buffer);
|
|
684
|
-
pm_serialize_location(
|
|
681
|
+
pm_serialize_location(&((pm_constant_write_node_t *)node)->operator_loc, buffer);
|
|
685
682
|
break;
|
|
686
683
|
}
|
|
687
684
|
case PM_DEF_NODE: {
|
|
@@ -691,7 +688,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
691
688
|
pm_buffer_append_string(buffer, "\0\0\0\0", 4); /* consume 4 bytes, updated below */
|
|
692
689
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
693
690
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_def_node_t *)node)->name));
|
|
694
|
-
pm_serialize_location(
|
|
691
|
+
pm_serialize_location(&((pm_def_node_t *)node)->name_loc, buffer);
|
|
695
692
|
if (((pm_def_node_t *)node)->receiver == NULL) {
|
|
696
693
|
pm_buffer_append_byte(buffer, 0);
|
|
697
694
|
} else {
|
|
@@ -712,102 +709,111 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
712
709
|
for (uint32_t index = 0; index < locals_size; index++) {
|
|
713
710
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_def_node_t *)node)->locals.ids[index]));
|
|
714
711
|
}
|
|
715
|
-
pm_serialize_location(
|
|
716
|
-
if (((pm_def_node_t *)node)->operator_loc.
|
|
712
|
+
pm_serialize_location(&((pm_def_node_t *)node)->def_keyword_loc, buffer);
|
|
713
|
+
if (((pm_def_node_t *)node)->operator_loc.length == 0) {
|
|
717
714
|
pm_buffer_append_byte(buffer, 0);
|
|
718
715
|
} else {
|
|
719
716
|
pm_buffer_append_byte(buffer, 1);
|
|
720
|
-
pm_serialize_location(
|
|
717
|
+
pm_serialize_location(&((pm_def_node_t *)node)->operator_loc, buffer);
|
|
721
718
|
}
|
|
722
|
-
if (((pm_def_node_t *)node)->lparen_loc.
|
|
719
|
+
if (((pm_def_node_t *)node)->lparen_loc.length == 0) {
|
|
723
720
|
pm_buffer_append_byte(buffer, 0);
|
|
724
721
|
} else {
|
|
725
722
|
pm_buffer_append_byte(buffer, 1);
|
|
726
|
-
pm_serialize_location(
|
|
723
|
+
pm_serialize_location(&((pm_def_node_t *)node)->lparen_loc, buffer);
|
|
727
724
|
}
|
|
728
|
-
if (((pm_def_node_t *)node)->rparen_loc.
|
|
725
|
+
if (((pm_def_node_t *)node)->rparen_loc.length == 0) {
|
|
729
726
|
pm_buffer_append_byte(buffer, 0);
|
|
730
727
|
} else {
|
|
731
728
|
pm_buffer_append_byte(buffer, 1);
|
|
732
|
-
pm_serialize_location(
|
|
729
|
+
pm_serialize_location(&((pm_def_node_t *)node)->rparen_loc, buffer);
|
|
733
730
|
}
|
|
734
|
-
if (((pm_def_node_t *)node)->equal_loc.
|
|
731
|
+
if (((pm_def_node_t *)node)->equal_loc.length == 0) {
|
|
735
732
|
pm_buffer_append_byte(buffer, 0);
|
|
736
733
|
} else {
|
|
737
734
|
pm_buffer_append_byte(buffer, 1);
|
|
738
|
-
pm_serialize_location(
|
|
735
|
+
pm_serialize_location(&((pm_def_node_t *)node)->equal_loc, buffer);
|
|
739
736
|
}
|
|
740
|
-
if (((pm_def_node_t *)node)->end_keyword_loc.
|
|
737
|
+
if (((pm_def_node_t *)node)->end_keyword_loc.length == 0) {
|
|
741
738
|
pm_buffer_append_byte(buffer, 0);
|
|
742
739
|
} else {
|
|
743
740
|
pm_buffer_append_byte(buffer, 1);
|
|
744
|
-
pm_serialize_location(
|
|
741
|
+
pm_serialize_location(&((pm_def_node_t *)node)->end_keyword_loc, buffer);
|
|
745
742
|
}
|
|
746
743
|
// serialize length
|
|
747
|
-
uint32_t length = pm_sizet_to_u32(buffer->length -
|
|
744
|
+
uint32_t length = pm_sizet_to_u32(buffer->length - length_offset);
|
|
748
745
|
memcpy(buffer->value + length_offset, &length, sizeof(uint32_t));
|
|
749
746
|
break;
|
|
750
747
|
}
|
|
751
748
|
case PM_DEFINED_NODE: {
|
|
752
749
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
753
|
-
if (((pm_defined_node_t *)node)->lparen_loc.
|
|
750
|
+
if (((pm_defined_node_t *)node)->lparen_loc.length == 0) {
|
|
754
751
|
pm_buffer_append_byte(buffer, 0);
|
|
755
752
|
} else {
|
|
756
753
|
pm_buffer_append_byte(buffer, 1);
|
|
757
|
-
pm_serialize_location(
|
|
754
|
+
pm_serialize_location(&((pm_defined_node_t *)node)->lparen_loc, buffer);
|
|
758
755
|
}
|
|
759
756
|
pm_serialize_node(parser, (pm_node_t *)((pm_defined_node_t *)node)->value, buffer);
|
|
760
|
-
if (((pm_defined_node_t *)node)->rparen_loc.
|
|
757
|
+
if (((pm_defined_node_t *)node)->rparen_loc.length == 0) {
|
|
761
758
|
pm_buffer_append_byte(buffer, 0);
|
|
762
759
|
} else {
|
|
763
760
|
pm_buffer_append_byte(buffer, 1);
|
|
764
|
-
pm_serialize_location(
|
|
761
|
+
pm_serialize_location(&((pm_defined_node_t *)node)->rparen_loc, buffer);
|
|
765
762
|
}
|
|
766
|
-
pm_serialize_location(
|
|
763
|
+
pm_serialize_location(&((pm_defined_node_t *)node)->keyword_loc, buffer);
|
|
767
764
|
break;
|
|
768
765
|
}
|
|
769
766
|
case PM_ELSE_NODE: {
|
|
770
767
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
771
|
-
pm_serialize_location(
|
|
768
|
+
pm_serialize_location(&((pm_else_node_t *)node)->else_keyword_loc, buffer);
|
|
772
769
|
if (((pm_else_node_t *)node)->statements == NULL) {
|
|
773
770
|
pm_buffer_append_byte(buffer, 0);
|
|
774
771
|
} else {
|
|
775
772
|
pm_serialize_node(parser, (pm_node_t *)((pm_else_node_t *)node)->statements, buffer);
|
|
776
773
|
}
|
|
777
|
-
if (((pm_else_node_t *)node)->end_keyword_loc.
|
|
774
|
+
if (((pm_else_node_t *)node)->end_keyword_loc.length == 0) {
|
|
778
775
|
pm_buffer_append_byte(buffer, 0);
|
|
779
776
|
} else {
|
|
780
777
|
pm_buffer_append_byte(buffer, 1);
|
|
781
|
-
pm_serialize_location(
|
|
778
|
+
pm_serialize_location(&((pm_else_node_t *)node)->end_keyword_loc, buffer);
|
|
782
779
|
}
|
|
783
780
|
break;
|
|
784
781
|
}
|
|
785
782
|
case PM_EMBEDDED_STATEMENTS_NODE: {
|
|
786
783
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
787
|
-
pm_serialize_location(
|
|
784
|
+
pm_serialize_location(&((pm_embedded_statements_node_t *)node)->opening_loc, buffer);
|
|
788
785
|
if (((pm_embedded_statements_node_t *)node)->statements == NULL) {
|
|
789
786
|
pm_buffer_append_byte(buffer, 0);
|
|
790
787
|
} else {
|
|
791
788
|
pm_serialize_node(parser, (pm_node_t *)((pm_embedded_statements_node_t *)node)->statements, buffer);
|
|
792
789
|
}
|
|
793
|
-
pm_serialize_location(
|
|
790
|
+
pm_serialize_location(&((pm_embedded_statements_node_t *)node)->closing_loc, buffer);
|
|
794
791
|
break;
|
|
795
792
|
}
|
|
796
793
|
case PM_EMBEDDED_VARIABLE_NODE: {
|
|
797
794
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
798
|
-
pm_serialize_location(
|
|
795
|
+
pm_serialize_location(&((pm_embedded_variable_node_t *)node)->operator_loc, buffer);
|
|
799
796
|
pm_serialize_node(parser, (pm_node_t *)((pm_embedded_variable_node_t *)node)->variable, buffer);
|
|
800
797
|
break;
|
|
801
798
|
}
|
|
802
799
|
case PM_ENSURE_NODE: {
|
|
803
800
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
804
|
-
pm_serialize_location(
|
|
801
|
+
pm_serialize_location(&((pm_ensure_node_t *)node)->ensure_keyword_loc, buffer);
|
|
805
802
|
if (((pm_ensure_node_t *)node)->statements == NULL) {
|
|
806
803
|
pm_buffer_append_byte(buffer, 0);
|
|
807
804
|
} else {
|
|
808
805
|
pm_serialize_node(parser, (pm_node_t *)((pm_ensure_node_t *)node)->statements, buffer);
|
|
809
806
|
}
|
|
810
|
-
pm_serialize_location(
|
|
807
|
+
pm_serialize_location(&((pm_ensure_node_t *)node)->end_keyword_loc, buffer);
|
|
808
|
+
break;
|
|
809
|
+
}
|
|
810
|
+
case PM_ERROR_RECOVERY_NODE: {
|
|
811
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
812
|
+
if (((pm_error_recovery_node_t *)node)->unexpected == NULL) {
|
|
813
|
+
pm_buffer_append_byte(buffer, 0);
|
|
814
|
+
} else {
|
|
815
|
+
pm_serialize_node(parser, (pm_node_t *)((pm_error_recovery_node_t *)node)->unexpected, buffer);
|
|
816
|
+
}
|
|
811
817
|
break;
|
|
812
818
|
}
|
|
813
819
|
case PM_FALSE_NODE: {
|
|
@@ -828,17 +834,17 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
828
834
|
pm_serialize_node(parser, (pm_node_t *) ((pm_find_pattern_node_t *)node)->requireds.nodes[index], buffer);
|
|
829
835
|
}
|
|
830
836
|
pm_serialize_node(parser, (pm_node_t *)((pm_find_pattern_node_t *)node)->right, buffer);
|
|
831
|
-
if (((pm_find_pattern_node_t *)node)->opening_loc.
|
|
837
|
+
if (((pm_find_pattern_node_t *)node)->opening_loc.length == 0) {
|
|
832
838
|
pm_buffer_append_byte(buffer, 0);
|
|
833
839
|
} else {
|
|
834
840
|
pm_buffer_append_byte(buffer, 1);
|
|
835
|
-
pm_serialize_location(
|
|
841
|
+
pm_serialize_location(&((pm_find_pattern_node_t *)node)->opening_loc, buffer);
|
|
836
842
|
}
|
|
837
|
-
if (((pm_find_pattern_node_t *)node)->closing_loc.
|
|
843
|
+
if (((pm_find_pattern_node_t *)node)->closing_loc.length == 0) {
|
|
838
844
|
pm_buffer_append_byte(buffer, 0);
|
|
839
845
|
} else {
|
|
840
846
|
pm_buffer_append_byte(buffer, 1);
|
|
841
|
-
pm_serialize_location(
|
|
847
|
+
pm_serialize_location(&((pm_find_pattern_node_t *)node)->closing_loc, buffer);
|
|
842
848
|
}
|
|
843
849
|
break;
|
|
844
850
|
}
|
|
@@ -854,7 +860,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
854
860
|
} else {
|
|
855
861
|
pm_serialize_node(parser, (pm_node_t *)((pm_flip_flop_node_t *)node)->right, buffer);
|
|
856
862
|
}
|
|
857
|
-
pm_serialize_location(
|
|
863
|
+
pm_serialize_location(&((pm_flip_flop_node_t *)node)->operator_loc, buffer);
|
|
858
864
|
break;
|
|
859
865
|
}
|
|
860
866
|
case PM_FLOAT_NODE: {
|
|
@@ -871,15 +877,15 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
871
877
|
} else {
|
|
872
878
|
pm_serialize_node(parser, (pm_node_t *)((pm_for_node_t *)node)->statements, buffer);
|
|
873
879
|
}
|
|
874
|
-
pm_serialize_location(
|
|
875
|
-
pm_serialize_location(
|
|
876
|
-
if (((pm_for_node_t *)node)->do_keyword_loc.
|
|
880
|
+
pm_serialize_location(&((pm_for_node_t *)node)->for_keyword_loc, buffer);
|
|
881
|
+
pm_serialize_location(&((pm_for_node_t *)node)->in_keyword_loc, buffer);
|
|
882
|
+
if (((pm_for_node_t *)node)->do_keyword_loc.length == 0) {
|
|
877
883
|
pm_buffer_append_byte(buffer, 0);
|
|
878
884
|
} else {
|
|
879
885
|
pm_buffer_append_byte(buffer, 1);
|
|
880
|
-
pm_serialize_location(
|
|
886
|
+
pm_serialize_location(&((pm_for_node_t *)node)->do_keyword_loc, buffer);
|
|
881
887
|
}
|
|
882
|
-
pm_serialize_location(
|
|
888
|
+
pm_serialize_location(&((pm_for_node_t *)node)->end_keyword_loc, buffer);
|
|
883
889
|
break;
|
|
884
890
|
}
|
|
885
891
|
case PM_FORWARDING_ARGUMENTS_NODE: {
|
|
@@ -892,6 +898,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
892
898
|
}
|
|
893
899
|
case PM_FORWARDING_SUPER_NODE: {
|
|
894
900
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
901
|
+
pm_serialize_location(&((pm_forwarding_super_node_t *)node)->keyword_loc, buffer);
|
|
895
902
|
if (((pm_forwarding_super_node_t *)node)->block == NULL) {
|
|
896
903
|
pm_buffer_append_byte(buffer, 0);
|
|
897
904
|
} else {
|
|
@@ -902,16 +909,16 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
902
909
|
case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
|
|
903
910
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
904
911
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_and_write_node_t *)node)->name));
|
|
905
|
-
pm_serialize_location(
|
|
906
|
-
pm_serialize_location(
|
|
912
|
+
pm_serialize_location(&((pm_global_variable_and_write_node_t *)node)->name_loc, buffer);
|
|
913
|
+
pm_serialize_location(&((pm_global_variable_and_write_node_t *)node)->operator_loc, buffer);
|
|
907
914
|
pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_and_write_node_t *)node)->value, buffer);
|
|
908
915
|
break;
|
|
909
916
|
}
|
|
910
917
|
case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
911
918
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
912
919
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_operator_write_node_t *)node)->name));
|
|
913
|
-
pm_serialize_location(
|
|
914
|
-
pm_serialize_location(
|
|
920
|
+
pm_serialize_location(&((pm_global_variable_operator_write_node_t *)node)->name_loc, buffer);
|
|
921
|
+
pm_serialize_location(&((pm_global_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
915
922
|
pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_operator_write_node_t *)node)->value, buffer);
|
|
916
923
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_operator_write_node_t *)node)->binary_operator));
|
|
917
924
|
break;
|
|
@@ -919,8 +926,8 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
919
926
|
case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
|
|
920
927
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
921
928
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_or_write_node_t *)node)->name));
|
|
922
|
-
pm_serialize_location(
|
|
923
|
-
pm_serialize_location(
|
|
929
|
+
pm_serialize_location(&((pm_global_variable_or_write_node_t *)node)->name_loc, buffer);
|
|
930
|
+
pm_serialize_location(&((pm_global_variable_or_write_node_t *)node)->operator_loc, buffer);
|
|
924
931
|
pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_or_write_node_t *)node)->value, buffer);
|
|
925
932
|
break;
|
|
926
933
|
}
|
|
@@ -937,20 +944,20 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
937
944
|
case PM_GLOBAL_VARIABLE_WRITE_NODE: {
|
|
938
945
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
939
946
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_write_node_t *)node)->name));
|
|
940
|
-
pm_serialize_location(
|
|
947
|
+
pm_serialize_location(&((pm_global_variable_write_node_t *)node)->name_loc, buffer);
|
|
941
948
|
pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_write_node_t *)node)->value, buffer);
|
|
942
|
-
pm_serialize_location(
|
|
949
|
+
pm_serialize_location(&((pm_global_variable_write_node_t *)node)->operator_loc, buffer);
|
|
943
950
|
break;
|
|
944
951
|
}
|
|
945
952
|
case PM_HASH_NODE: {
|
|
946
953
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
947
|
-
pm_serialize_location(
|
|
954
|
+
pm_serialize_location(&((pm_hash_node_t *)node)->opening_loc, buffer);
|
|
948
955
|
uint32_t elements_size = pm_sizet_to_u32(((pm_hash_node_t *)node)->elements.size);
|
|
949
956
|
pm_buffer_append_varuint(buffer, elements_size);
|
|
950
957
|
for (uint32_t index = 0; index < elements_size; index++) {
|
|
951
958
|
pm_serialize_node(parser, (pm_node_t *) ((pm_hash_node_t *)node)->elements.nodes[index], buffer);
|
|
952
959
|
}
|
|
953
|
-
pm_serialize_location(
|
|
960
|
+
pm_serialize_location(&((pm_hash_node_t *)node)->closing_loc, buffer);
|
|
954
961
|
break;
|
|
955
962
|
}
|
|
956
963
|
case PM_HASH_PATTERN_NODE: {
|
|
@@ -970,34 +977,34 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
970
977
|
} else {
|
|
971
978
|
pm_serialize_node(parser, (pm_node_t *)((pm_hash_pattern_node_t *)node)->rest, buffer);
|
|
972
979
|
}
|
|
973
|
-
if (((pm_hash_pattern_node_t *)node)->opening_loc.
|
|
980
|
+
if (((pm_hash_pattern_node_t *)node)->opening_loc.length == 0) {
|
|
974
981
|
pm_buffer_append_byte(buffer, 0);
|
|
975
982
|
} else {
|
|
976
983
|
pm_buffer_append_byte(buffer, 1);
|
|
977
|
-
pm_serialize_location(
|
|
984
|
+
pm_serialize_location(&((pm_hash_pattern_node_t *)node)->opening_loc, buffer);
|
|
978
985
|
}
|
|
979
|
-
if (((pm_hash_pattern_node_t *)node)->closing_loc.
|
|
986
|
+
if (((pm_hash_pattern_node_t *)node)->closing_loc.length == 0) {
|
|
980
987
|
pm_buffer_append_byte(buffer, 0);
|
|
981
988
|
} else {
|
|
982
989
|
pm_buffer_append_byte(buffer, 1);
|
|
983
|
-
pm_serialize_location(
|
|
990
|
+
pm_serialize_location(&((pm_hash_pattern_node_t *)node)->closing_loc, buffer);
|
|
984
991
|
}
|
|
985
992
|
break;
|
|
986
993
|
}
|
|
987
994
|
case PM_IF_NODE: {
|
|
988
995
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
989
|
-
if (((pm_if_node_t *)node)->if_keyword_loc.
|
|
996
|
+
if (((pm_if_node_t *)node)->if_keyword_loc.length == 0) {
|
|
990
997
|
pm_buffer_append_byte(buffer, 0);
|
|
991
998
|
} else {
|
|
992
999
|
pm_buffer_append_byte(buffer, 1);
|
|
993
|
-
pm_serialize_location(
|
|
1000
|
+
pm_serialize_location(&((pm_if_node_t *)node)->if_keyword_loc, buffer);
|
|
994
1001
|
}
|
|
995
1002
|
pm_serialize_node(parser, (pm_node_t *)((pm_if_node_t *)node)->predicate, buffer);
|
|
996
|
-
if (((pm_if_node_t *)node)->then_keyword_loc.
|
|
1003
|
+
if (((pm_if_node_t *)node)->then_keyword_loc.length == 0) {
|
|
997
1004
|
pm_buffer_append_byte(buffer, 0);
|
|
998
1005
|
} else {
|
|
999
1006
|
pm_buffer_append_byte(buffer, 1);
|
|
1000
|
-
pm_serialize_location(
|
|
1007
|
+
pm_serialize_location(&((pm_if_node_t *)node)->then_keyword_loc, buffer);
|
|
1001
1008
|
}
|
|
1002
1009
|
if (((pm_if_node_t *)node)->statements == NULL) {
|
|
1003
1010
|
pm_buffer_append_byte(buffer, 0);
|
|
@@ -1009,11 +1016,11 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1009
1016
|
} else {
|
|
1010
1017
|
pm_serialize_node(parser, (pm_node_t *)((pm_if_node_t *)node)->subsequent, buffer);
|
|
1011
1018
|
}
|
|
1012
|
-
if (((pm_if_node_t *)node)->end_keyword_loc.
|
|
1019
|
+
if (((pm_if_node_t *)node)->end_keyword_loc.length == 0) {
|
|
1013
1020
|
pm_buffer_append_byte(buffer, 0);
|
|
1014
1021
|
} else {
|
|
1015
1022
|
pm_buffer_append_byte(buffer, 1);
|
|
1016
|
-
pm_serialize_location(
|
|
1023
|
+
pm_serialize_location(&((pm_if_node_t *)node)->end_keyword_loc, buffer);
|
|
1017
1024
|
}
|
|
1018
1025
|
break;
|
|
1019
1026
|
}
|
|
@@ -1039,12 +1046,12 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1039
1046
|
} else {
|
|
1040
1047
|
pm_serialize_node(parser, (pm_node_t *)((pm_in_node_t *)node)->statements, buffer);
|
|
1041
1048
|
}
|
|
1042
|
-
pm_serialize_location(
|
|
1043
|
-
if (((pm_in_node_t *)node)->
|
|
1049
|
+
pm_serialize_location(&((pm_in_node_t *)node)->in_keyword_loc, buffer);
|
|
1050
|
+
if (((pm_in_node_t *)node)->then_keyword_loc.length == 0) {
|
|
1044
1051
|
pm_buffer_append_byte(buffer, 0);
|
|
1045
1052
|
} else {
|
|
1046
1053
|
pm_buffer_append_byte(buffer, 1);
|
|
1047
|
-
pm_serialize_location(
|
|
1054
|
+
pm_serialize_location(&((pm_in_node_t *)node)->then_keyword_loc, buffer);
|
|
1048
1055
|
}
|
|
1049
1056
|
break;
|
|
1050
1057
|
}
|
|
@@ -1055,25 +1062,25 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1055
1062
|
} else {
|
|
1056
1063
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->receiver, buffer);
|
|
1057
1064
|
}
|
|
1058
|
-
if (((pm_index_and_write_node_t *)node)->call_operator_loc.
|
|
1065
|
+
if (((pm_index_and_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
1059
1066
|
pm_buffer_append_byte(buffer, 0);
|
|
1060
1067
|
} else {
|
|
1061
1068
|
pm_buffer_append_byte(buffer, 1);
|
|
1062
|
-
pm_serialize_location(
|
|
1069
|
+
pm_serialize_location(&((pm_index_and_write_node_t *)node)->call_operator_loc, buffer);
|
|
1063
1070
|
}
|
|
1064
|
-
pm_serialize_location(
|
|
1071
|
+
pm_serialize_location(&((pm_index_and_write_node_t *)node)->opening_loc, buffer);
|
|
1065
1072
|
if (((pm_index_and_write_node_t *)node)->arguments == NULL) {
|
|
1066
1073
|
pm_buffer_append_byte(buffer, 0);
|
|
1067
1074
|
} else {
|
|
1068
1075
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->arguments, buffer);
|
|
1069
1076
|
}
|
|
1070
|
-
pm_serialize_location(
|
|
1077
|
+
pm_serialize_location(&((pm_index_and_write_node_t *)node)->closing_loc, buffer);
|
|
1071
1078
|
if (((pm_index_and_write_node_t *)node)->block == NULL) {
|
|
1072
1079
|
pm_buffer_append_byte(buffer, 0);
|
|
1073
1080
|
} else {
|
|
1074
1081
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->block, buffer);
|
|
1075
1082
|
}
|
|
1076
|
-
pm_serialize_location(
|
|
1083
|
+
pm_serialize_location(&((pm_index_and_write_node_t *)node)->operator_loc, buffer);
|
|
1077
1084
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->value, buffer);
|
|
1078
1085
|
break;
|
|
1079
1086
|
}
|
|
@@ -1084,26 +1091,26 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1084
1091
|
} else {
|
|
1085
1092
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->receiver, buffer);
|
|
1086
1093
|
}
|
|
1087
|
-
if (((pm_index_operator_write_node_t *)node)->call_operator_loc.
|
|
1094
|
+
if (((pm_index_operator_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
1088
1095
|
pm_buffer_append_byte(buffer, 0);
|
|
1089
1096
|
} else {
|
|
1090
1097
|
pm_buffer_append_byte(buffer, 1);
|
|
1091
|
-
pm_serialize_location(
|
|
1098
|
+
pm_serialize_location(&((pm_index_operator_write_node_t *)node)->call_operator_loc, buffer);
|
|
1092
1099
|
}
|
|
1093
|
-
pm_serialize_location(
|
|
1100
|
+
pm_serialize_location(&((pm_index_operator_write_node_t *)node)->opening_loc, buffer);
|
|
1094
1101
|
if (((pm_index_operator_write_node_t *)node)->arguments == NULL) {
|
|
1095
1102
|
pm_buffer_append_byte(buffer, 0);
|
|
1096
1103
|
} else {
|
|
1097
1104
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->arguments, buffer);
|
|
1098
1105
|
}
|
|
1099
|
-
pm_serialize_location(
|
|
1106
|
+
pm_serialize_location(&((pm_index_operator_write_node_t *)node)->closing_loc, buffer);
|
|
1100
1107
|
if (((pm_index_operator_write_node_t *)node)->block == NULL) {
|
|
1101
1108
|
pm_buffer_append_byte(buffer, 0);
|
|
1102
1109
|
} else {
|
|
1103
1110
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->block, buffer);
|
|
1104
1111
|
}
|
|
1105
1112
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_index_operator_write_node_t *)node)->binary_operator));
|
|
1106
|
-
pm_serialize_location(
|
|
1113
|
+
pm_serialize_location(&((pm_index_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
1107
1114
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->value, buffer);
|
|
1108
1115
|
break;
|
|
1109
1116
|
}
|
|
@@ -1114,38 +1121,38 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1114
1121
|
} else {
|
|
1115
1122
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->receiver, buffer);
|
|
1116
1123
|
}
|
|
1117
|
-
if (((pm_index_or_write_node_t *)node)->call_operator_loc.
|
|
1124
|
+
if (((pm_index_or_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
1118
1125
|
pm_buffer_append_byte(buffer, 0);
|
|
1119
1126
|
} else {
|
|
1120
1127
|
pm_buffer_append_byte(buffer, 1);
|
|
1121
|
-
pm_serialize_location(
|
|
1128
|
+
pm_serialize_location(&((pm_index_or_write_node_t *)node)->call_operator_loc, buffer);
|
|
1122
1129
|
}
|
|
1123
|
-
pm_serialize_location(
|
|
1130
|
+
pm_serialize_location(&((pm_index_or_write_node_t *)node)->opening_loc, buffer);
|
|
1124
1131
|
if (((pm_index_or_write_node_t *)node)->arguments == NULL) {
|
|
1125
1132
|
pm_buffer_append_byte(buffer, 0);
|
|
1126
1133
|
} else {
|
|
1127
1134
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->arguments, buffer);
|
|
1128
1135
|
}
|
|
1129
|
-
pm_serialize_location(
|
|
1136
|
+
pm_serialize_location(&((pm_index_or_write_node_t *)node)->closing_loc, buffer);
|
|
1130
1137
|
if (((pm_index_or_write_node_t *)node)->block == NULL) {
|
|
1131
1138
|
pm_buffer_append_byte(buffer, 0);
|
|
1132
1139
|
} else {
|
|
1133
1140
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->block, buffer);
|
|
1134
1141
|
}
|
|
1135
|
-
pm_serialize_location(
|
|
1142
|
+
pm_serialize_location(&((pm_index_or_write_node_t *)node)->operator_loc, buffer);
|
|
1136
1143
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->value, buffer);
|
|
1137
1144
|
break;
|
|
1138
1145
|
}
|
|
1139
1146
|
case PM_INDEX_TARGET_NODE: {
|
|
1140
1147
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1141
1148
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_target_node_t *)node)->receiver, buffer);
|
|
1142
|
-
pm_serialize_location(
|
|
1149
|
+
pm_serialize_location(&((pm_index_target_node_t *)node)->opening_loc, buffer);
|
|
1143
1150
|
if (((pm_index_target_node_t *)node)->arguments == NULL) {
|
|
1144
1151
|
pm_buffer_append_byte(buffer, 0);
|
|
1145
1152
|
} else {
|
|
1146
1153
|
pm_serialize_node(parser, (pm_node_t *)((pm_index_target_node_t *)node)->arguments, buffer);
|
|
1147
1154
|
}
|
|
1148
|
-
pm_serialize_location(
|
|
1155
|
+
pm_serialize_location(&((pm_index_target_node_t *)node)->closing_loc, buffer);
|
|
1149
1156
|
if (((pm_index_target_node_t *)node)->block == NULL) {
|
|
1150
1157
|
pm_buffer_append_byte(buffer, 0);
|
|
1151
1158
|
} else {
|
|
@@ -1156,16 +1163,16 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1156
1163
|
case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
|
1157
1164
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1158
1165
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_and_write_node_t *)node)->name));
|
|
1159
|
-
pm_serialize_location(
|
|
1160
|
-
pm_serialize_location(
|
|
1166
|
+
pm_serialize_location(&((pm_instance_variable_and_write_node_t *)node)->name_loc, buffer);
|
|
1167
|
+
pm_serialize_location(&((pm_instance_variable_and_write_node_t *)node)->operator_loc, buffer);
|
|
1161
1168
|
pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_and_write_node_t *)node)->value, buffer);
|
|
1162
1169
|
break;
|
|
1163
1170
|
}
|
|
1164
1171
|
case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
1165
1172
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1166
1173
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_operator_write_node_t *)node)->name));
|
|
1167
|
-
pm_serialize_location(
|
|
1168
|
-
pm_serialize_location(
|
|
1174
|
+
pm_serialize_location(&((pm_instance_variable_operator_write_node_t *)node)->name_loc, buffer);
|
|
1175
|
+
pm_serialize_location(&((pm_instance_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
1169
1176
|
pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_operator_write_node_t *)node)->value, buffer);
|
|
1170
1177
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_operator_write_node_t *)node)->binary_operator));
|
|
1171
1178
|
break;
|
|
@@ -1173,8 +1180,8 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1173
1180
|
case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
|
|
1174
1181
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1175
1182
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_or_write_node_t *)node)->name));
|
|
1176
|
-
pm_serialize_location(
|
|
1177
|
-
pm_serialize_location(
|
|
1183
|
+
pm_serialize_location(&((pm_instance_variable_or_write_node_t *)node)->name_loc, buffer);
|
|
1184
|
+
pm_serialize_location(&((pm_instance_variable_or_write_node_t *)node)->operator_loc, buffer);
|
|
1178
1185
|
pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_or_write_node_t *)node)->value, buffer);
|
|
1179
1186
|
break;
|
|
1180
1187
|
}
|
|
@@ -1191,9 +1198,9 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1191
1198
|
case PM_INSTANCE_VARIABLE_WRITE_NODE: {
|
|
1192
1199
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1193
1200
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_write_node_t *)node)->name));
|
|
1194
|
-
pm_serialize_location(
|
|
1201
|
+
pm_serialize_location(&((pm_instance_variable_write_node_t *)node)->name_loc, buffer);
|
|
1195
1202
|
pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_write_node_t *)node)->value, buffer);
|
|
1196
|
-
pm_serialize_location(
|
|
1203
|
+
pm_serialize_location(&((pm_instance_variable_write_node_t *)node)->operator_loc, buffer);
|
|
1197
1204
|
break;
|
|
1198
1205
|
}
|
|
1199
1206
|
case PM_INTEGER_NODE: {
|
|
@@ -1203,77 +1210,77 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1203
1210
|
}
|
|
1204
1211
|
case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
|
|
1205
1212
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1206
|
-
pm_serialize_location(
|
|
1213
|
+
pm_serialize_location(&((pm_interpolated_match_last_line_node_t *)node)->opening_loc, buffer);
|
|
1207
1214
|
uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_match_last_line_node_t *)node)->parts.size);
|
|
1208
1215
|
pm_buffer_append_varuint(buffer, parts_size);
|
|
1209
1216
|
for (uint32_t index = 0; index < parts_size; index++) {
|
|
1210
1217
|
pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_match_last_line_node_t *)node)->parts.nodes[index], buffer);
|
|
1211
1218
|
}
|
|
1212
|
-
pm_serialize_location(
|
|
1219
|
+
pm_serialize_location(&((pm_interpolated_match_last_line_node_t *)node)->closing_loc, buffer);
|
|
1213
1220
|
break;
|
|
1214
1221
|
}
|
|
1215
1222
|
case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
|
1216
1223
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1217
|
-
pm_serialize_location(
|
|
1224
|
+
pm_serialize_location(&((pm_interpolated_regular_expression_node_t *)node)->opening_loc, buffer);
|
|
1218
1225
|
uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_regular_expression_node_t *)node)->parts.size);
|
|
1219
1226
|
pm_buffer_append_varuint(buffer, parts_size);
|
|
1220
1227
|
for (uint32_t index = 0; index < parts_size; index++) {
|
|
1221
1228
|
pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_regular_expression_node_t *)node)->parts.nodes[index], buffer);
|
|
1222
1229
|
}
|
|
1223
|
-
pm_serialize_location(
|
|
1230
|
+
pm_serialize_location(&((pm_interpolated_regular_expression_node_t *)node)->closing_loc, buffer);
|
|
1224
1231
|
break;
|
|
1225
1232
|
}
|
|
1226
1233
|
case PM_INTERPOLATED_STRING_NODE: {
|
|
1227
1234
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1228
|
-
if (((pm_interpolated_string_node_t *)node)->opening_loc.
|
|
1235
|
+
if (((pm_interpolated_string_node_t *)node)->opening_loc.length == 0) {
|
|
1229
1236
|
pm_buffer_append_byte(buffer, 0);
|
|
1230
1237
|
} else {
|
|
1231
1238
|
pm_buffer_append_byte(buffer, 1);
|
|
1232
|
-
pm_serialize_location(
|
|
1239
|
+
pm_serialize_location(&((pm_interpolated_string_node_t *)node)->opening_loc, buffer);
|
|
1233
1240
|
}
|
|
1234
1241
|
uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_string_node_t *)node)->parts.size);
|
|
1235
1242
|
pm_buffer_append_varuint(buffer, parts_size);
|
|
1236
1243
|
for (uint32_t index = 0; index < parts_size; index++) {
|
|
1237
1244
|
pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_string_node_t *)node)->parts.nodes[index], buffer);
|
|
1238
1245
|
}
|
|
1239
|
-
if (((pm_interpolated_string_node_t *)node)->closing_loc.
|
|
1246
|
+
if (((pm_interpolated_string_node_t *)node)->closing_loc.length == 0) {
|
|
1240
1247
|
pm_buffer_append_byte(buffer, 0);
|
|
1241
1248
|
} else {
|
|
1242
1249
|
pm_buffer_append_byte(buffer, 1);
|
|
1243
|
-
pm_serialize_location(
|
|
1250
|
+
pm_serialize_location(&((pm_interpolated_string_node_t *)node)->closing_loc, buffer);
|
|
1244
1251
|
}
|
|
1245
1252
|
break;
|
|
1246
1253
|
}
|
|
1247
1254
|
case PM_INTERPOLATED_SYMBOL_NODE: {
|
|
1248
1255
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1249
|
-
if (((pm_interpolated_symbol_node_t *)node)->opening_loc.
|
|
1256
|
+
if (((pm_interpolated_symbol_node_t *)node)->opening_loc.length == 0) {
|
|
1250
1257
|
pm_buffer_append_byte(buffer, 0);
|
|
1251
1258
|
} else {
|
|
1252
1259
|
pm_buffer_append_byte(buffer, 1);
|
|
1253
|
-
pm_serialize_location(
|
|
1260
|
+
pm_serialize_location(&((pm_interpolated_symbol_node_t *)node)->opening_loc, buffer);
|
|
1254
1261
|
}
|
|
1255
1262
|
uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_symbol_node_t *)node)->parts.size);
|
|
1256
1263
|
pm_buffer_append_varuint(buffer, parts_size);
|
|
1257
1264
|
for (uint32_t index = 0; index < parts_size; index++) {
|
|
1258
1265
|
pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_symbol_node_t *)node)->parts.nodes[index], buffer);
|
|
1259
1266
|
}
|
|
1260
|
-
if (((pm_interpolated_symbol_node_t *)node)->closing_loc.
|
|
1267
|
+
if (((pm_interpolated_symbol_node_t *)node)->closing_loc.length == 0) {
|
|
1261
1268
|
pm_buffer_append_byte(buffer, 0);
|
|
1262
1269
|
} else {
|
|
1263
1270
|
pm_buffer_append_byte(buffer, 1);
|
|
1264
|
-
pm_serialize_location(
|
|
1271
|
+
pm_serialize_location(&((pm_interpolated_symbol_node_t *)node)->closing_loc, buffer);
|
|
1265
1272
|
}
|
|
1266
1273
|
break;
|
|
1267
1274
|
}
|
|
1268
1275
|
case PM_INTERPOLATED_X_STRING_NODE: {
|
|
1269
1276
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1270
|
-
pm_serialize_location(
|
|
1277
|
+
pm_serialize_location(&((pm_interpolated_x_string_node_t *)node)->opening_loc, buffer);
|
|
1271
1278
|
uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_x_string_node_t *)node)->parts.size);
|
|
1272
1279
|
pm_buffer_append_varuint(buffer, parts_size);
|
|
1273
1280
|
for (uint32_t index = 0; index < parts_size; index++) {
|
|
1274
1281
|
pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_x_string_node_t *)node)->parts.nodes[index], buffer);
|
|
1275
1282
|
}
|
|
1276
|
-
pm_serialize_location(
|
|
1283
|
+
pm_serialize_location(&((pm_interpolated_x_string_node_t *)node)->closing_loc, buffer);
|
|
1277
1284
|
break;
|
|
1278
1285
|
}
|
|
1279
1286
|
case PM_IT_LOCAL_VARIABLE_READ_NODE: {
|
|
@@ -1296,13 +1303,13 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1296
1303
|
case PM_KEYWORD_REST_PARAMETER_NODE: {
|
|
1297
1304
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1298
1305
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_keyword_rest_parameter_node_t *)node)->name));
|
|
1299
|
-
if (((pm_keyword_rest_parameter_node_t *)node)->name_loc.
|
|
1306
|
+
if (((pm_keyword_rest_parameter_node_t *)node)->name_loc.length == 0) {
|
|
1300
1307
|
pm_buffer_append_byte(buffer, 0);
|
|
1301
1308
|
} else {
|
|
1302
1309
|
pm_buffer_append_byte(buffer, 1);
|
|
1303
|
-
pm_serialize_location(
|
|
1310
|
+
pm_serialize_location(&((pm_keyword_rest_parameter_node_t *)node)->name_loc, buffer);
|
|
1304
1311
|
}
|
|
1305
|
-
pm_serialize_location(
|
|
1312
|
+
pm_serialize_location(&((pm_keyword_rest_parameter_node_t *)node)->operator_loc, buffer);
|
|
1306
1313
|
break;
|
|
1307
1314
|
}
|
|
1308
1315
|
case PM_LAMBDA_NODE: {
|
|
@@ -1312,9 +1319,9 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1312
1319
|
for (uint32_t index = 0; index < locals_size; index++) {
|
|
1313
1320
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_lambda_node_t *)node)->locals.ids[index]));
|
|
1314
1321
|
}
|
|
1315
|
-
pm_serialize_location(
|
|
1316
|
-
pm_serialize_location(
|
|
1317
|
-
pm_serialize_location(
|
|
1322
|
+
pm_serialize_location(&((pm_lambda_node_t *)node)->operator_loc, buffer);
|
|
1323
|
+
pm_serialize_location(&((pm_lambda_node_t *)node)->opening_loc, buffer);
|
|
1324
|
+
pm_serialize_location(&((pm_lambda_node_t *)node)->closing_loc, buffer);
|
|
1318
1325
|
if (((pm_lambda_node_t *)node)->parameters == NULL) {
|
|
1319
1326
|
pm_buffer_append_byte(buffer, 0);
|
|
1320
1327
|
} else {
|
|
@@ -1329,8 +1336,8 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1329
1336
|
}
|
|
1330
1337
|
case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
|
|
1331
1338
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1332
|
-
pm_serialize_location(
|
|
1333
|
-
pm_serialize_location(
|
|
1339
|
+
pm_serialize_location(&((pm_local_variable_and_write_node_t *)node)->name_loc, buffer);
|
|
1340
|
+
pm_serialize_location(&((pm_local_variable_and_write_node_t *)node)->operator_loc, buffer);
|
|
1334
1341
|
pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_and_write_node_t *)node)->value, buffer);
|
|
1335
1342
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_and_write_node_t *)node)->name));
|
|
1336
1343
|
pm_buffer_append_varuint(buffer, ((pm_local_variable_and_write_node_t *)node)->depth);
|
|
@@ -1338,8 +1345,8 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1338
1345
|
}
|
|
1339
1346
|
case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
1340
1347
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1341
|
-
pm_serialize_location(
|
|
1342
|
-
pm_serialize_location(
|
|
1348
|
+
pm_serialize_location(&((pm_local_variable_operator_write_node_t *)node)->name_loc, buffer);
|
|
1349
|
+
pm_serialize_location(&((pm_local_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
1343
1350
|
pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_operator_write_node_t *)node)->value, buffer);
|
|
1344
1351
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_operator_write_node_t *)node)->name));
|
|
1345
1352
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_operator_write_node_t *)node)->binary_operator));
|
|
@@ -1348,8 +1355,8 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1348
1355
|
}
|
|
1349
1356
|
case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
|
|
1350
1357
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1351
|
-
pm_serialize_location(
|
|
1352
|
-
pm_serialize_location(
|
|
1358
|
+
pm_serialize_location(&((pm_local_variable_or_write_node_t *)node)->name_loc, buffer);
|
|
1359
|
+
pm_serialize_location(&((pm_local_variable_or_write_node_t *)node)->operator_loc, buffer);
|
|
1353
1360
|
pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_or_write_node_t *)node)->value, buffer);
|
|
1354
1361
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_or_write_node_t *)node)->name));
|
|
1355
1362
|
pm_buffer_append_varuint(buffer, ((pm_local_variable_or_write_node_t *)node)->depth);
|
|
@@ -1371,31 +1378,31 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1371
1378
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1372
1379
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_write_node_t *)node)->name));
|
|
1373
1380
|
pm_buffer_append_varuint(buffer, ((pm_local_variable_write_node_t *)node)->depth);
|
|
1374
|
-
pm_serialize_location(
|
|
1381
|
+
pm_serialize_location(&((pm_local_variable_write_node_t *)node)->name_loc, buffer);
|
|
1375
1382
|
pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_write_node_t *)node)->value, buffer);
|
|
1376
|
-
pm_serialize_location(
|
|
1383
|
+
pm_serialize_location(&((pm_local_variable_write_node_t *)node)->operator_loc, buffer);
|
|
1377
1384
|
break;
|
|
1378
1385
|
}
|
|
1379
1386
|
case PM_MATCH_LAST_LINE_NODE: {
|
|
1380
1387
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1381
|
-
pm_serialize_location(
|
|
1382
|
-
pm_serialize_location(
|
|
1383
|
-
pm_serialize_location(
|
|
1384
|
-
pm_serialize_string(
|
|
1388
|
+
pm_serialize_location(&((pm_match_last_line_node_t *)node)->opening_loc, buffer);
|
|
1389
|
+
pm_serialize_location(&((pm_match_last_line_node_t *)node)->content_loc, buffer);
|
|
1390
|
+
pm_serialize_location(&((pm_match_last_line_node_t *)node)->closing_loc, buffer);
|
|
1391
|
+
pm_serialize_string(&((pm_match_last_line_node_t *)node)->unescaped, buffer);
|
|
1385
1392
|
break;
|
|
1386
1393
|
}
|
|
1387
1394
|
case PM_MATCH_PREDICATE_NODE: {
|
|
1388
1395
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1389
1396
|
pm_serialize_node(parser, (pm_node_t *)((pm_match_predicate_node_t *)node)->value, buffer);
|
|
1390
1397
|
pm_serialize_node(parser, (pm_node_t *)((pm_match_predicate_node_t *)node)->pattern, buffer);
|
|
1391
|
-
pm_serialize_location(
|
|
1398
|
+
pm_serialize_location(&((pm_match_predicate_node_t *)node)->keyword_loc, buffer);
|
|
1392
1399
|
break;
|
|
1393
1400
|
}
|
|
1394
1401
|
case PM_MATCH_REQUIRED_NODE: {
|
|
1395
1402
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1396
1403
|
pm_serialize_node(parser, (pm_node_t *)((pm_match_required_node_t *)node)->value, buffer);
|
|
1397
1404
|
pm_serialize_node(parser, (pm_node_t *)((pm_match_required_node_t *)node)->pattern, buffer);
|
|
1398
|
-
pm_serialize_location(
|
|
1405
|
+
pm_serialize_location(&((pm_match_required_node_t *)node)->operator_loc, buffer);
|
|
1399
1406
|
break;
|
|
1400
1407
|
}
|
|
1401
1408
|
case PM_MATCH_WRITE_NODE: {
|
|
@@ -1408,10 +1415,6 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1408
1415
|
}
|
|
1409
1416
|
break;
|
|
1410
1417
|
}
|
|
1411
|
-
case PM_MISSING_NODE: {
|
|
1412
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1413
|
-
break;
|
|
1414
|
-
}
|
|
1415
1418
|
case PM_MODULE_NODE: {
|
|
1416
1419
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1417
1420
|
uint32_t locals_size = pm_sizet_to_u32(((pm_module_node_t *)node)->locals.size);
|
|
@@ -1419,14 +1422,14 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1419
1422
|
for (uint32_t index = 0; index < locals_size; index++) {
|
|
1420
1423
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_module_node_t *)node)->locals.ids[index]));
|
|
1421
1424
|
}
|
|
1422
|
-
pm_serialize_location(
|
|
1425
|
+
pm_serialize_location(&((pm_module_node_t *)node)->module_keyword_loc, buffer);
|
|
1423
1426
|
pm_serialize_node(parser, (pm_node_t *)((pm_module_node_t *)node)->constant_path, buffer);
|
|
1424
1427
|
if (((pm_module_node_t *)node)->body == NULL) {
|
|
1425
1428
|
pm_buffer_append_byte(buffer, 0);
|
|
1426
1429
|
} else {
|
|
1427
1430
|
pm_serialize_node(parser, (pm_node_t *)((pm_module_node_t *)node)->body, buffer);
|
|
1428
1431
|
}
|
|
1429
|
-
pm_serialize_location(
|
|
1432
|
+
pm_serialize_location(&((pm_module_node_t *)node)->end_keyword_loc, buffer);
|
|
1430
1433
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_module_node_t *)node)->name));
|
|
1431
1434
|
break;
|
|
1432
1435
|
}
|
|
@@ -1447,17 +1450,17 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1447
1450
|
for (uint32_t index = 0; index < rights_size; index++) {
|
|
1448
1451
|
pm_serialize_node(parser, (pm_node_t *) ((pm_multi_target_node_t *)node)->rights.nodes[index], buffer);
|
|
1449
1452
|
}
|
|
1450
|
-
if (((pm_multi_target_node_t *)node)->lparen_loc.
|
|
1453
|
+
if (((pm_multi_target_node_t *)node)->lparen_loc.length == 0) {
|
|
1451
1454
|
pm_buffer_append_byte(buffer, 0);
|
|
1452
1455
|
} else {
|
|
1453
1456
|
pm_buffer_append_byte(buffer, 1);
|
|
1454
|
-
pm_serialize_location(
|
|
1457
|
+
pm_serialize_location(&((pm_multi_target_node_t *)node)->lparen_loc, buffer);
|
|
1455
1458
|
}
|
|
1456
|
-
if (((pm_multi_target_node_t *)node)->rparen_loc.
|
|
1459
|
+
if (((pm_multi_target_node_t *)node)->rparen_loc.length == 0) {
|
|
1457
1460
|
pm_buffer_append_byte(buffer, 0);
|
|
1458
1461
|
} else {
|
|
1459
1462
|
pm_buffer_append_byte(buffer, 1);
|
|
1460
|
-
pm_serialize_location(
|
|
1463
|
+
pm_serialize_location(&((pm_multi_target_node_t *)node)->rparen_loc, buffer);
|
|
1461
1464
|
}
|
|
1462
1465
|
break;
|
|
1463
1466
|
}
|
|
@@ -1478,19 +1481,19 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1478
1481
|
for (uint32_t index = 0; index < rights_size; index++) {
|
|
1479
1482
|
pm_serialize_node(parser, (pm_node_t *) ((pm_multi_write_node_t *)node)->rights.nodes[index], buffer);
|
|
1480
1483
|
}
|
|
1481
|
-
if (((pm_multi_write_node_t *)node)->lparen_loc.
|
|
1484
|
+
if (((pm_multi_write_node_t *)node)->lparen_loc.length == 0) {
|
|
1482
1485
|
pm_buffer_append_byte(buffer, 0);
|
|
1483
1486
|
} else {
|
|
1484
1487
|
pm_buffer_append_byte(buffer, 1);
|
|
1485
|
-
pm_serialize_location(
|
|
1488
|
+
pm_serialize_location(&((pm_multi_write_node_t *)node)->lparen_loc, buffer);
|
|
1486
1489
|
}
|
|
1487
|
-
if (((pm_multi_write_node_t *)node)->rparen_loc.
|
|
1490
|
+
if (((pm_multi_write_node_t *)node)->rparen_loc.length == 0) {
|
|
1488
1491
|
pm_buffer_append_byte(buffer, 0);
|
|
1489
1492
|
} else {
|
|
1490
1493
|
pm_buffer_append_byte(buffer, 1);
|
|
1491
|
-
pm_serialize_location(
|
|
1494
|
+
pm_serialize_location(&((pm_multi_write_node_t *)node)->rparen_loc, buffer);
|
|
1492
1495
|
}
|
|
1493
|
-
pm_serialize_location(
|
|
1496
|
+
pm_serialize_location(&((pm_multi_write_node_t *)node)->operator_loc, buffer);
|
|
1494
1497
|
pm_serialize_node(parser, (pm_node_t *)((pm_multi_write_node_t *)node)->value, buffer);
|
|
1495
1498
|
break;
|
|
1496
1499
|
}
|
|
@@ -1501,17 +1504,23 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1501
1504
|
} else {
|
|
1502
1505
|
pm_serialize_node(parser, (pm_node_t *)((pm_next_node_t *)node)->arguments, buffer);
|
|
1503
1506
|
}
|
|
1504
|
-
pm_serialize_location(
|
|
1507
|
+
pm_serialize_location(&((pm_next_node_t *)node)->keyword_loc, buffer);
|
|
1505
1508
|
break;
|
|
1506
1509
|
}
|
|
1507
1510
|
case PM_NIL_NODE: {
|
|
1508
1511
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1509
1512
|
break;
|
|
1510
1513
|
}
|
|
1514
|
+
case PM_NO_BLOCK_PARAMETER_NODE: {
|
|
1515
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1516
|
+
pm_serialize_location(&((pm_no_block_parameter_node_t *)node)->operator_loc, buffer);
|
|
1517
|
+
pm_serialize_location(&((pm_no_block_parameter_node_t *)node)->keyword_loc, buffer);
|
|
1518
|
+
break;
|
|
1519
|
+
}
|
|
1511
1520
|
case PM_NO_KEYWORDS_PARAMETER_NODE: {
|
|
1512
1521
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1513
|
-
pm_serialize_location(
|
|
1514
|
-
pm_serialize_location(
|
|
1522
|
+
pm_serialize_location(&((pm_no_keywords_parameter_node_t *)node)->operator_loc, buffer);
|
|
1523
|
+
pm_serialize_location(&((pm_no_keywords_parameter_node_t *)node)->keyword_loc, buffer);
|
|
1515
1524
|
break;
|
|
1516
1525
|
}
|
|
1517
1526
|
case PM_NUMBERED_PARAMETERS_NODE: {
|
|
@@ -1527,15 +1536,15 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1527
1536
|
case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
|
|
1528
1537
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1529
1538
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_optional_keyword_parameter_node_t *)node)->name));
|
|
1530
|
-
pm_serialize_location(
|
|
1539
|
+
pm_serialize_location(&((pm_optional_keyword_parameter_node_t *)node)->name_loc, buffer);
|
|
1531
1540
|
pm_serialize_node(parser, (pm_node_t *)((pm_optional_keyword_parameter_node_t *)node)->value, buffer);
|
|
1532
1541
|
break;
|
|
1533
1542
|
}
|
|
1534
1543
|
case PM_OPTIONAL_PARAMETER_NODE: {
|
|
1535
1544
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1536
1545
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_optional_parameter_node_t *)node)->name));
|
|
1537
|
-
pm_serialize_location(
|
|
1538
|
-
pm_serialize_location(
|
|
1546
|
+
pm_serialize_location(&((pm_optional_parameter_node_t *)node)->name_loc, buffer);
|
|
1547
|
+
pm_serialize_location(&((pm_optional_parameter_node_t *)node)->operator_loc, buffer);
|
|
1539
1548
|
pm_serialize_node(parser, (pm_node_t *)((pm_optional_parameter_node_t *)node)->value, buffer);
|
|
1540
1549
|
break;
|
|
1541
1550
|
}
|
|
@@ -1543,7 +1552,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1543
1552
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1544
1553
|
pm_serialize_node(parser, (pm_node_t *)((pm_or_node_t *)node)->left, buffer);
|
|
1545
1554
|
pm_serialize_node(parser, (pm_node_t *)((pm_or_node_t *)node)->right, buffer);
|
|
1546
|
-
pm_serialize_location(
|
|
1555
|
+
pm_serialize_location(&((pm_or_node_t *)node)->operator_loc, buffer);
|
|
1547
1556
|
break;
|
|
1548
1557
|
}
|
|
1549
1558
|
case PM_PARAMETERS_NODE: {
|
|
@@ -1592,22 +1601,22 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1592
1601
|
} else {
|
|
1593
1602
|
pm_serialize_node(parser, (pm_node_t *)((pm_parentheses_node_t *)node)->body, buffer);
|
|
1594
1603
|
}
|
|
1595
|
-
pm_serialize_location(
|
|
1596
|
-
pm_serialize_location(
|
|
1604
|
+
pm_serialize_location(&((pm_parentheses_node_t *)node)->opening_loc, buffer);
|
|
1605
|
+
pm_serialize_location(&((pm_parentheses_node_t *)node)->closing_loc, buffer);
|
|
1597
1606
|
break;
|
|
1598
1607
|
}
|
|
1599
1608
|
case PM_PINNED_EXPRESSION_NODE: {
|
|
1600
1609
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1601
1610
|
pm_serialize_node(parser, (pm_node_t *)((pm_pinned_expression_node_t *)node)->expression, buffer);
|
|
1602
|
-
pm_serialize_location(
|
|
1603
|
-
pm_serialize_location(
|
|
1604
|
-
pm_serialize_location(
|
|
1611
|
+
pm_serialize_location(&((pm_pinned_expression_node_t *)node)->operator_loc, buffer);
|
|
1612
|
+
pm_serialize_location(&((pm_pinned_expression_node_t *)node)->lparen_loc, buffer);
|
|
1613
|
+
pm_serialize_location(&((pm_pinned_expression_node_t *)node)->rparen_loc, buffer);
|
|
1605
1614
|
break;
|
|
1606
1615
|
}
|
|
1607
1616
|
case PM_PINNED_VARIABLE_NODE: {
|
|
1608
1617
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1609
1618
|
pm_serialize_node(parser, (pm_node_t *)((pm_pinned_variable_node_t *)node)->variable, buffer);
|
|
1610
|
-
pm_serialize_location(
|
|
1619
|
+
pm_serialize_location(&((pm_pinned_variable_node_t *)node)->operator_loc, buffer);
|
|
1611
1620
|
break;
|
|
1612
1621
|
}
|
|
1613
1622
|
case PM_POST_EXECUTION_NODE: {
|
|
@@ -1617,9 +1626,9 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1617
1626
|
} else {
|
|
1618
1627
|
pm_serialize_node(parser, (pm_node_t *)((pm_post_execution_node_t *)node)->statements, buffer);
|
|
1619
1628
|
}
|
|
1620
|
-
pm_serialize_location(
|
|
1621
|
-
pm_serialize_location(
|
|
1622
|
-
pm_serialize_location(
|
|
1629
|
+
pm_serialize_location(&((pm_post_execution_node_t *)node)->keyword_loc, buffer);
|
|
1630
|
+
pm_serialize_location(&((pm_post_execution_node_t *)node)->opening_loc, buffer);
|
|
1631
|
+
pm_serialize_location(&((pm_post_execution_node_t *)node)->closing_loc, buffer);
|
|
1623
1632
|
break;
|
|
1624
1633
|
}
|
|
1625
1634
|
case PM_PRE_EXECUTION_NODE: {
|
|
@@ -1629,9 +1638,9 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1629
1638
|
} else {
|
|
1630
1639
|
pm_serialize_node(parser, (pm_node_t *)((pm_pre_execution_node_t *)node)->statements, buffer);
|
|
1631
1640
|
}
|
|
1632
|
-
pm_serialize_location(
|
|
1633
|
-
pm_serialize_location(
|
|
1634
|
-
pm_serialize_location(
|
|
1641
|
+
pm_serialize_location(&((pm_pre_execution_node_t *)node)->keyword_loc, buffer);
|
|
1642
|
+
pm_serialize_location(&((pm_pre_execution_node_t *)node)->opening_loc, buffer);
|
|
1643
|
+
pm_serialize_location(&((pm_pre_execution_node_t *)node)->closing_loc, buffer);
|
|
1635
1644
|
break;
|
|
1636
1645
|
}
|
|
1637
1646
|
case PM_PROGRAM_NODE: {
|
|
@@ -1656,7 +1665,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1656
1665
|
} else {
|
|
1657
1666
|
pm_serialize_node(parser, (pm_node_t *)((pm_range_node_t *)node)->right, buffer);
|
|
1658
1667
|
}
|
|
1659
|
-
pm_serialize_location(
|
|
1668
|
+
pm_serialize_location(&((pm_range_node_t *)node)->operator_loc, buffer);
|
|
1660
1669
|
break;
|
|
1661
1670
|
}
|
|
1662
1671
|
case PM_RATIONAL_NODE: {
|
|
@@ -1671,16 +1680,16 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1671
1680
|
}
|
|
1672
1681
|
case PM_REGULAR_EXPRESSION_NODE: {
|
|
1673
1682
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1674
|
-
pm_serialize_location(
|
|
1675
|
-
pm_serialize_location(
|
|
1676
|
-
pm_serialize_location(
|
|
1677
|
-
pm_serialize_string(
|
|
1683
|
+
pm_serialize_location(&((pm_regular_expression_node_t *)node)->opening_loc, buffer);
|
|
1684
|
+
pm_serialize_location(&((pm_regular_expression_node_t *)node)->content_loc, buffer);
|
|
1685
|
+
pm_serialize_location(&((pm_regular_expression_node_t *)node)->closing_loc, buffer);
|
|
1686
|
+
pm_serialize_string(&((pm_regular_expression_node_t *)node)->unescaped, buffer);
|
|
1678
1687
|
break;
|
|
1679
1688
|
}
|
|
1680
1689
|
case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
|
|
1681
1690
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1682
1691
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_required_keyword_parameter_node_t *)node)->name));
|
|
1683
|
-
pm_serialize_location(
|
|
1692
|
+
pm_serialize_location(&((pm_required_keyword_parameter_node_t *)node)->name_loc, buffer);
|
|
1684
1693
|
break;
|
|
1685
1694
|
}
|
|
1686
1695
|
case PM_REQUIRED_PARAMETER_NODE: {
|
|
@@ -1691,34 +1700,34 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1691
1700
|
case PM_RESCUE_MODIFIER_NODE: {
|
|
1692
1701
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1693
1702
|
pm_serialize_node(parser, (pm_node_t *)((pm_rescue_modifier_node_t *)node)->expression, buffer);
|
|
1694
|
-
pm_serialize_location(
|
|
1703
|
+
pm_serialize_location(&((pm_rescue_modifier_node_t *)node)->keyword_loc, buffer);
|
|
1695
1704
|
pm_serialize_node(parser, (pm_node_t *)((pm_rescue_modifier_node_t *)node)->rescue_expression, buffer);
|
|
1696
1705
|
break;
|
|
1697
1706
|
}
|
|
1698
1707
|
case PM_RESCUE_NODE: {
|
|
1699
1708
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1700
|
-
pm_serialize_location(
|
|
1709
|
+
pm_serialize_location(&((pm_rescue_node_t *)node)->keyword_loc, buffer);
|
|
1701
1710
|
uint32_t exceptions_size = pm_sizet_to_u32(((pm_rescue_node_t *)node)->exceptions.size);
|
|
1702
1711
|
pm_buffer_append_varuint(buffer, exceptions_size);
|
|
1703
1712
|
for (uint32_t index = 0; index < exceptions_size; index++) {
|
|
1704
1713
|
pm_serialize_node(parser, (pm_node_t *) ((pm_rescue_node_t *)node)->exceptions.nodes[index], buffer);
|
|
1705
1714
|
}
|
|
1706
|
-
if (((pm_rescue_node_t *)node)->operator_loc.
|
|
1715
|
+
if (((pm_rescue_node_t *)node)->operator_loc.length == 0) {
|
|
1707
1716
|
pm_buffer_append_byte(buffer, 0);
|
|
1708
1717
|
} else {
|
|
1709
1718
|
pm_buffer_append_byte(buffer, 1);
|
|
1710
|
-
pm_serialize_location(
|
|
1719
|
+
pm_serialize_location(&((pm_rescue_node_t *)node)->operator_loc, buffer);
|
|
1711
1720
|
}
|
|
1712
1721
|
if (((pm_rescue_node_t *)node)->reference == NULL) {
|
|
1713
1722
|
pm_buffer_append_byte(buffer, 0);
|
|
1714
1723
|
} else {
|
|
1715
1724
|
pm_serialize_node(parser, (pm_node_t *)((pm_rescue_node_t *)node)->reference, buffer);
|
|
1716
1725
|
}
|
|
1717
|
-
if (((pm_rescue_node_t *)node)->then_keyword_loc.
|
|
1726
|
+
if (((pm_rescue_node_t *)node)->then_keyword_loc.length == 0) {
|
|
1718
1727
|
pm_buffer_append_byte(buffer, 0);
|
|
1719
1728
|
} else {
|
|
1720
1729
|
pm_buffer_append_byte(buffer, 1);
|
|
1721
|
-
pm_serialize_location(
|
|
1730
|
+
pm_serialize_location(&((pm_rescue_node_t *)node)->then_keyword_loc, buffer);
|
|
1722
1731
|
}
|
|
1723
1732
|
if (((pm_rescue_node_t *)node)->statements == NULL) {
|
|
1724
1733
|
pm_buffer_append_byte(buffer, 0);
|
|
@@ -1735,13 +1744,13 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1735
1744
|
case PM_REST_PARAMETER_NODE: {
|
|
1736
1745
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1737
1746
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_rest_parameter_node_t *)node)->name));
|
|
1738
|
-
if (((pm_rest_parameter_node_t *)node)->name_loc.
|
|
1747
|
+
if (((pm_rest_parameter_node_t *)node)->name_loc.length == 0) {
|
|
1739
1748
|
pm_buffer_append_byte(buffer, 0);
|
|
1740
1749
|
} else {
|
|
1741
1750
|
pm_buffer_append_byte(buffer, 1);
|
|
1742
|
-
pm_serialize_location(
|
|
1751
|
+
pm_serialize_location(&((pm_rest_parameter_node_t *)node)->name_loc, buffer);
|
|
1743
1752
|
}
|
|
1744
|
-
pm_serialize_location(
|
|
1753
|
+
pm_serialize_location(&((pm_rest_parameter_node_t *)node)->operator_loc, buffer);
|
|
1745
1754
|
break;
|
|
1746
1755
|
}
|
|
1747
1756
|
case PM_RETRY_NODE: {
|
|
@@ -1750,7 +1759,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1750
1759
|
}
|
|
1751
1760
|
case PM_RETURN_NODE: {
|
|
1752
1761
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1753
|
-
pm_serialize_location(
|
|
1762
|
+
pm_serialize_location(&((pm_return_node_t *)node)->keyword_loc, buffer);
|
|
1754
1763
|
if (((pm_return_node_t *)node)->arguments == NULL) {
|
|
1755
1764
|
pm_buffer_append_byte(buffer, 0);
|
|
1756
1765
|
} else {
|
|
@@ -1774,15 +1783,15 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1774
1783
|
for (uint32_t index = 0; index < locals_size; index++) {
|
|
1775
1784
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_singleton_class_node_t *)node)->locals.ids[index]));
|
|
1776
1785
|
}
|
|
1777
|
-
pm_serialize_location(
|
|
1778
|
-
pm_serialize_location(
|
|
1786
|
+
pm_serialize_location(&((pm_singleton_class_node_t *)node)->class_keyword_loc, buffer);
|
|
1787
|
+
pm_serialize_location(&((pm_singleton_class_node_t *)node)->operator_loc, buffer);
|
|
1779
1788
|
pm_serialize_node(parser, (pm_node_t *)((pm_singleton_class_node_t *)node)->expression, buffer);
|
|
1780
1789
|
if (((pm_singleton_class_node_t *)node)->body == NULL) {
|
|
1781
1790
|
pm_buffer_append_byte(buffer, 0);
|
|
1782
1791
|
} else {
|
|
1783
1792
|
pm_serialize_node(parser, (pm_node_t *)((pm_singleton_class_node_t *)node)->body, buffer);
|
|
1784
1793
|
}
|
|
1785
|
-
pm_serialize_location(
|
|
1794
|
+
pm_serialize_location(&((pm_singleton_class_node_t *)node)->end_keyword_loc, buffer);
|
|
1786
1795
|
break;
|
|
1787
1796
|
}
|
|
1788
1797
|
case PM_SOURCE_ENCODING_NODE: {
|
|
@@ -1791,7 +1800,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1791
1800
|
}
|
|
1792
1801
|
case PM_SOURCE_FILE_NODE: {
|
|
1793
1802
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1794
|
-
pm_serialize_string(
|
|
1803
|
+
pm_serialize_string(&((pm_source_file_node_t *)node)->filepath, buffer);
|
|
1795
1804
|
break;
|
|
1796
1805
|
}
|
|
1797
1806
|
case PM_SOURCE_LINE_NODE: {
|
|
@@ -1800,7 +1809,7 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1800
1809
|
}
|
|
1801
1810
|
case PM_SPLAT_NODE: {
|
|
1802
1811
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1803
|
-
pm_serialize_location(
|
|
1812
|
+
pm_serialize_location(&((pm_splat_node_t *)node)->operator_loc, buffer);
|
|
1804
1813
|
if (((pm_splat_node_t *)node)->expression == NULL) {
|
|
1805
1814
|
pm_buffer_append_byte(buffer, 0);
|
|
1806
1815
|
} else {
|
|
@@ -1819,41 +1828,41 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1819
1828
|
}
|
|
1820
1829
|
case PM_STRING_NODE: {
|
|
1821
1830
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1822
|
-
if (((pm_string_node_t *)node)->opening_loc.
|
|
1831
|
+
if (((pm_string_node_t *)node)->opening_loc.length == 0) {
|
|
1823
1832
|
pm_buffer_append_byte(buffer, 0);
|
|
1824
1833
|
} else {
|
|
1825
1834
|
pm_buffer_append_byte(buffer, 1);
|
|
1826
|
-
pm_serialize_location(
|
|
1835
|
+
pm_serialize_location(&((pm_string_node_t *)node)->opening_loc, buffer);
|
|
1827
1836
|
}
|
|
1828
|
-
pm_serialize_location(
|
|
1829
|
-
if (((pm_string_node_t *)node)->closing_loc.
|
|
1837
|
+
pm_serialize_location(&((pm_string_node_t *)node)->content_loc, buffer);
|
|
1838
|
+
if (((pm_string_node_t *)node)->closing_loc.length == 0) {
|
|
1830
1839
|
pm_buffer_append_byte(buffer, 0);
|
|
1831
1840
|
} else {
|
|
1832
1841
|
pm_buffer_append_byte(buffer, 1);
|
|
1833
|
-
pm_serialize_location(
|
|
1842
|
+
pm_serialize_location(&((pm_string_node_t *)node)->closing_loc, buffer);
|
|
1834
1843
|
}
|
|
1835
|
-
pm_serialize_string(
|
|
1844
|
+
pm_serialize_string(&((pm_string_node_t *)node)->unescaped, buffer);
|
|
1836
1845
|
break;
|
|
1837
1846
|
}
|
|
1838
1847
|
case PM_SUPER_NODE: {
|
|
1839
1848
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1840
|
-
pm_serialize_location(
|
|
1841
|
-
if (((pm_super_node_t *)node)->lparen_loc.
|
|
1849
|
+
pm_serialize_location(&((pm_super_node_t *)node)->keyword_loc, buffer);
|
|
1850
|
+
if (((pm_super_node_t *)node)->lparen_loc.length == 0) {
|
|
1842
1851
|
pm_buffer_append_byte(buffer, 0);
|
|
1843
1852
|
} else {
|
|
1844
1853
|
pm_buffer_append_byte(buffer, 1);
|
|
1845
|
-
pm_serialize_location(
|
|
1854
|
+
pm_serialize_location(&((pm_super_node_t *)node)->lparen_loc, buffer);
|
|
1846
1855
|
}
|
|
1847
1856
|
if (((pm_super_node_t *)node)->arguments == NULL) {
|
|
1848
1857
|
pm_buffer_append_byte(buffer, 0);
|
|
1849
1858
|
} else {
|
|
1850
1859
|
pm_serialize_node(parser, (pm_node_t *)((pm_super_node_t *)node)->arguments, buffer);
|
|
1851
1860
|
}
|
|
1852
|
-
if (((pm_super_node_t *)node)->rparen_loc.
|
|
1861
|
+
if (((pm_super_node_t *)node)->rparen_loc.length == 0) {
|
|
1853
1862
|
pm_buffer_append_byte(buffer, 0);
|
|
1854
1863
|
} else {
|
|
1855
1864
|
pm_buffer_append_byte(buffer, 1);
|
|
1856
|
-
pm_serialize_location(
|
|
1865
|
+
pm_serialize_location(&((pm_super_node_t *)node)->rparen_loc, buffer);
|
|
1857
1866
|
}
|
|
1858
1867
|
if (((pm_super_node_t *)node)->block == NULL) {
|
|
1859
1868
|
pm_buffer_append_byte(buffer, 0);
|
|
@@ -1864,25 +1873,20 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1864
1873
|
}
|
|
1865
1874
|
case PM_SYMBOL_NODE: {
|
|
1866
1875
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1867
|
-
if (((pm_symbol_node_t *)node)->opening_loc.
|
|
1868
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1869
|
-
} else {
|
|
1870
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1871
|
-
pm_serialize_location(parser, &((pm_symbol_node_t *)node)->opening_loc, buffer);
|
|
1872
|
-
}
|
|
1873
|
-
if (((pm_symbol_node_t *)node)->value_loc.start == NULL) {
|
|
1876
|
+
if (((pm_symbol_node_t *)node)->opening_loc.length == 0) {
|
|
1874
1877
|
pm_buffer_append_byte(buffer, 0);
|
|
1875
1878
|
} else {
|
|
1876
1879
|
pm_buffer_append_byte(buffer, 1);
|
|
1877
|
-
pm_serialize_location(
|
|
1880
|
+
pm_serialize_location(&((pm_symbol_node_t *)node)->opening_loc, buffer);
|
|
1878
1881
|
}
|
|
1879
|
-
|
|
1882
|
+
pm_serialize_location(&((pm_symbol_node_t *)node)->content_loc, buffer);
|
|
1883
|
+
if (((pm_symbol_node_t *)node)->closing_loc.length == 0) {
|
|
1880
1884
|
pm_buffer_append_byte(buffer, 0);
|
|
1881
1885
|
} else {
|
|
1882
1886
|
pm_buffer_append_byte(buffer, 1);
|
|
1883
|
-
pm_serialize_location(
|
|
1887
|
+
pm_serialize_location(&((pm_symbol_node_t *)node)->closing_loc, buffer);
|
|
1884
1888
|
}
|
|
1885
|
-
pm_serialize_string(
|
|
1889
|
+
pm_serialize_string(&((pm_symbol_node_t *)node)->unescaped, buffer);
|
|
1886
1890
|
break;
|
|
1887
1891
|
}
|
|
1888
1892
|
case PM_TRUE_NODE: {
|
|
@@ -1896,18 +1900,18 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1896
1900
|
for (uint32_t index = 0; index < names_size; index++) {
|
|
1897
1901
|
pm_serialize_node(parser, (pm_node_t *) ((pm_undef_node_t *)node)->names.nodes[index], buffer);
|
|
1898
1902
|
}
|
|
1899
|
-
pm_serialize_location(
|
|
1903
|
+
pm_serialize_location(&((pm_undef_node_t *)node)->keyword_loc, buffer);
|
|
1900
1904
|
break;
|
|
1901
1905
|
}
|
|
1902
1906
|
case PM_UNLESS_NODE: {
|
|
1903
1907
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1904
|
-
pm_serialize_location(
|
|
1908
|
+
pm_serialize_location(&((pm_unless_node_t *)node)->unless_keyword_loc, buffer);
|
|
1905
1909
|
pm_serialize_node(parser, (pm_node_t *)((pm_unless_node_t *)node)->predicate, buffer);
|
|
1906
|
-
if (((pm_unless_node_t *)node)->then_keyword_loc.
|
|
1910
|
+
if (((pm_unless_node_t *)node)->then_keyword_loc.length == 0) {
|
|
1907
1911
|
pm_buffer_append_byte(buffer, 0);
|
|
1908
1912
|
} else {
|
|
1909
1913
|
pm_buffer_append_byte(buffer, 1);
|
|
1910
|
-
pm_serialize_location(
|
|
1914
|
+
pm_serialize_location(&((pm_unless_node_t *)node)->then_keyword_loc, buffer);
|
|
1911
1915
|
}
|
|
1912
1916
|
if (((pm_unless_node_t *)node)->statements == NULL) {
|
|
1913
1917
|
pm_buffer_append_byte(buffer, 0);
|
|
@@ -1919,28 +1923,28 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1919
1923
|
} else {
|
|
1920
1924
|
pm_serialize_node(parser, (pm_node_t *)((pm_unless_node_t *)node)->else_clause, buffer);
|
|
1921
1925
|
}
|
|
1922
|
-
if (((pm_unless_node_t *)node)->end_keyword_loc.
|
|
1926
|
+
if (((pm_unless_node_t *)node)->end_keyword_loc.length == 0) {
|
|
1923
1927
|
pm_buffer_append_byte(buffer, 0);
|
|
1924
1928
|
} else {
|
|
1925
1929
|
pm_buffer_append_byte(buffer, 1);
|
|
1926
|
-
pm_serialize_location(
|
|
1930
|
+
pm_serialize_location(&((pm_unless_node_t *)node)->end_keyword_loc, buffer);
|
|
1927
1931
|
}
|
|
1928
1932
|
break;
|
|
1929
1933
|
}
|
|
1930
1934
|
case PM_UNTIL_NODE: {
|
|
1931
1935
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1932
|
-
pm_serialize_location(
|
|
1933
|
-
if (((pm_until_node_t *)node)->do_keyword_loc.
|
|
1936
|
+
pm_serialize_location(&((pm_until_node_t *)node)->until_keyword_loc, buffer);
|
|
1937
|
+
if (((pm_until_node_t *)node)->do_keyword_loc.length == 0) {
|
|
1934
1938
|
pm_buffer_append_byte(buffer, 0);
|
|
1935
1939
|
} else {
|
|
1936
1940
|
pm_buffer_append_byte(buffer, 1);
|
|
1937
|
-
pm_serialize_location(
|
|
1941
|
+
pm_serialize_location(&((pm_until_node_t *)node)->do_keyword_loc, buffer);
|
|
1938
1942
|
}
|
|
1939
|
-
if (((pm_until_node_t *)node)->
|
|
1943
|
+
if (((pm_until_node_t *)node)->end_keyword_loc.length == 0) {
|
|
1940
1944
|
pm_buffer_append_byte(buffer, 0);
|
|
1941
1945
|
} else {
|
|
1942
1946
|
pm_buffer_append_byte(buffer, 1);
|
|
1943
|
-
pm_serialize_location(
|
|
1947
|
+
pm_serialize_location(&((pm_until_node_t *)node)->end_keyword_loc, buffer);
|
|
1944
1948
|
}
|
|
1945
1949
|
pm_serialize_node(parser, (pm_node_t *)((pm_until_node_t *)node)->predicate, buffer);
|
|
1946
1950
|
if (((pm_until_node_t *)node)->statements == NULL) {
|
|
@@ -1952,17 +1956,17 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1952
1956
|
}
|
|
1953
1957
|
case PM_WHEN_NODE: {
|
|
1954
1958
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1955
|
-
pm_serialize_location(
|
|
1959
|
+
pm_serialize_location(&((pm_when_node_t *)node)->when_keyword_loc, buffer);
|
|
1956
1960
|
uint32_t conditions_size = pm_sizet_to_u32(((pm_when_node_t *)node)->conditions.size);
|
|
1957
1961
|
pm_buffer_append_varuint(buffer, conditions_size);
|
|
1958
1962
|
for (uint32_t index = 0; index < conditions_size; index++) {
|
|
1959
1963
|
pm_serialize_node(parser, (pm_node_t *) ((pm_when_node_t *)node)->conditions.nodes[index], buffer);
|
|
1960
1964
|
}
|
|
1961
|
-
if (((pm_when_node_t *)node)->then_keyword_loc.
|
|
1965
|
+
if (((pm_when_node_t *)node)->then_keyword_loc.length == 0) {
|
|
1962
1966
|
pm_buffer_append_byte(buffer, 0);
|
|
1963
1967
|
} else {
|
|
1964
1968
|
pm_buffer_append_byte(buffer, 1);
|
|
1965
|
-
pm_serialize_location(
|
|
1969
|
+
pm_serialize_location(&((pm_when_node_t *)node)->then_keyword_loc, buffer);
|
|
1966
1970
|
}
|
|
1967
1971
|
if (((pm_when_node_t *)node)->statements == NULL) {
|
|
1968
1972
|
pm_buffer_append_byte(buffer, 0);
|
|
@@ -1973,18 +1977,18 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1973
1977
|
}
|
|
1974
1978
|
case PM_WHILE_NODE: {
|
|
1975
1979
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1976
|
-
pm_serialize_location(
|
|
1977
|
-
if (((pm_while_node_t *)node)->do_keyword_loc.
|
|
1980
|
+
pm_serialize_location(&((pm_while_node_t *)node)->while_keyword_loc, buffer);
|
|
1981
|
+
if (((pm_while_node_t *)node)->do_keyword_loc.length == 0) {
|
|
1978
1982
|
pm_buffer_append_byte(buffer, 0);
|
|
1979
1983
|
} else {
|
|
1980
1984
|
pm_buffer_append_byte(buffer, 1);
|
|
1981
|
-
pm_serialize_location(
|
|
1985
|
+
pm_serialize_location(&((pm_while_node_t *)node)->do_keyword_loc, buffer);
|
|
1982
1986
|
}
|
|
1983
|
-
if (((pm_while_node_t *)node)->
|
|
1987
|
+
if (((pm_while_node_t *)node)->end_keyword_loc.length == 0) {
|
|
1984
1988
|
pm_buffer_append_byte(buffer, 0);
|
|
1985
1989
|
} else {
|
|
1986
1990
|
pm_buffer_append_byte(buffer, 1);
|
|
1987
|
-
pm_serialize_location(
|
|
1991
|
+
pm_serialize_location(&((pm_while_node_t *)node)->end_keyword_loc, buffer);
|
|
1988
1992
|
}
|
|
1989
1993
|
pm_serialize_node(parser, (pm_node_t *)((pm_while_node_t *)node)->predicate, buffer);
|
|
1990
1994
|
if (((pm_while_node_t *)node)->statements == NULL) {
|
|
@@ -1996,39 +2000,42 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
|
|
|
1996
2000
|
}
|
|
1997
2001
|
case PM_X_STRING_NODE: {
|
|
1998
2002
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1999
|
-
pm_serialize_location(
|
|
2000
|
-
pm_serialize_location(
|
|
2001
|
-
pm_serialize_location(
|
|
2002
|
-
pm_serialize_string(
|
|
2003
|
+
pm_serialize_location(&((pm_x_string_node_t *)node)->opening_loc, buffer);
|
|
2004
|
+
pm_serialize_location(&((pm_x_string_node_t *)node)->content_loc, buffer);
|
|
2005
|
+
pm_serialize_location(&((pm_x_string_node_t *)node)->closing_loc, buffer);
|
|
2006
|
+
pm_serialize_string(&((pm_x_string_node_t *)node)->unescaped, buffer);
|
|
2003
2007
|
break;
|
|
2004
2008
|
}
|
|
2005
2009
|
case PM_YIELD_NODE: {
|
|
2006
2010
|
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2007
|
-
pm_serialize_location(
|
|
2008
|
-
if (((pm_yield_node_t *)node)->lparen_loc.
|
|
2011
|
+
pm_serialize_location(&((pm_yield_node_t *)node)->keyword_loc, buffer);
|
|
2012
|
+
if (((pm_yield_node_t *)node)->lparen_loc.length == 0) {
|
|
2009
2013
|
pm_buffer_append_byte(buffer, 0);
|
|
2010
2014
|
} else {
|
|
2011
2015
|
pm_buffer_append_byte(buffer, 1);
|
|
2012
|
-
pm_serialize_location(
|
|
2016
|
+
pm_serialize_location(&((pm_yield_node_t *)node)->lparen_loc, buffer);
|
|
2013
2017
|
}
|
|
2014
2018
|
if (((pm_yield_node_t *)node)->arguments == NULL) {
|
|
2015
2019
|
pm_buffer_append_byte(buffer, 0);
|
|
2016
2020
|
} else {
|
|
2017
2021
|
pm_serialize_node(parser, (pm_node_t *)((pm_yield_node_t *)node)->arguments, buffer);
|
|
2018
2022
|
}
|
|
2019
|
-
if (((pm_yield_node_t *)node)->rparen_loc.
|
|
2023
|
+
if (((pm_yield_node_t *)node)->rparen_loc.length == 0) {
|
|
2020
2024
|
pm_buffer_append_byte(buffer, 0);
|
|
2021
2025
|
} else {
|
|
2022
2026
|
pm_buffer_append_byte(buffer, 1);
|
|
2023
|
-
pm_serialize_location(
|
|
2027
|
+
pm_serialize_location(&((pm_yield_node_t *)node)->rparen_loc, buffer);
|
|
2024
2028
|
}
|
|
2025
2029
|
break;
|
|
2026
2030
|
}
|
|
2027
2031
|
}
|
|
2028
2032
|
}
|
|
2029
2033
|
|
|
2030
|
-
|
|
2031
|
-
|
|
2034
|
+
/*
|
|
2035
|
+
* Serialize the given list of offsets to the given buffer.
|
|
2036
|
+
*/
|
|
2037
|
+
void
|
|
2038
|
+
pm_serialize_line_offset_list(pm_line_offset_list_t *list, pm_buffer_t *buffer) {
|
|
2032
2039
|
uint32_t size = pm_sizet_to_u32(list->size);
|
|
2033
2040
|
pm_buffer_append_varuint(buffer, size);
|
|
2034
2041
|
|
|
@@ -2039,60 +2046,88 @@ pm_serialize_newline_list(pm_newline_list_t *list, pm_buffer_t *buffer) {
|
|
|
2039
2046
|
}
|
|
2040
2047
|
|
|
2041
2048
|
static void
|
|
2042
|
-
pm_serialize_comment(
|
|
2049
|
+
pm_serialize_comment(pm_comment_t *comment, pm_buffer_t *buffer) {
|
|
2043
2050
|
// serialize type
|
|
2044
2051
|
pm_buffer_append_byte(buffer, (uint8_t) comment->type);
|
|
2045
2052
|
|
|
2046
2053
|
// serialize location
|
|
2047
|
-
pm_serialize_location(
|
|
2054
|
+
pm_serialize_location(&comment->location, buffer);
|
|
2048
2055
|
}
|
|
2049
2056
|
|
|
2050
2057
|
/**
|
|
2051
2058
|
* Serialize the given list of comments to the given buffer.
|
|
2052
2059
|
*/
|
|
2053
2060
|
void
|
|
2054
|
-
pm_serialize_comment_list(
|
|
2061
|
+
pm_serialize_comment_list(pm_list_t *list, pm_buffer_t *buffer) {
|
|
2055
2062
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(pm_list_size(list)));
|
|
2056
2063
|
|
|
2057
2064
|
pm_comment_t *comment;
|
|
2058
2065
|
for (comment = (pm_comment_t *) list->head; comment != NULL; comment = (pm_comment_t *) comment->node.next) {
|
|
2059
|
-
pm_serialize_comment(
|
|
2066
|
+
pm_serialize_comment(comment, buffer);
|
|
2060
2067
|
}
|
|
2061
2068
|
}
|
|
2062
2069
|
|
|
2070
|
+
/**
|
|
2071
|
+
* Serialize the comments attached to each node. This is the number of nodes
|
|
2072
|
+
* that own comments, followed by each of those nodes' id, the number of
|
|
2073
|
+
* comments it owns, and the index of each of those comments in the comment
|
|
2074
|
+
* list.
|
|
2075
|
+
*/
|
|
2063
2076
|
static void
|
|
2064
|
-
|
|
2077
|
+
pm_serialize_comment_attachments(const pm_comment_attachments_t *attachments, pm_buffer_t *buffer) {
|
|
2078
|
+
uint32_t count = 0;
|
|
2079
|
+
for (uint32_t node_id = 0; node_id < attachments->ranges_size; node_id++) {
|
|
2080
|
+
if (attachments->ranges[node_id].length > 0) count++;
|
|
2081
|
+
}
|
|
2082
|
+
|
|
2083
|
+
pm_buffer_append_varuint(buffer, count);
|
|
2084
|
+
|
|
2085
|
+
for (uint32_t node_id = 0; node_id < attachments->ranges_size; node_id++) {
|
|
2086
|
+
pm_comment_range_t range = attachments->ranges[node_id];
|
|
2087
|
+
if (range.length == 0) continue;
|
|
2088
|
+
|
|
2089
|
+
pm_buffer_append_varuint(buffer, node_id);
|
|
2090
|
+
pm_buffer_append_varuint(buffer, range.length);
|
|
2091
|
+
|
|
2092
|
+
for (uint32_t index = 0; index < range.length; index++) {
|
|
2093
|
+
pm_buffer_append_varuint(buffer, attachments->attachments[range.index + index]);
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
}
|
|
2097
|
+
|
|
2098
|
+
static void
|
|
2099
|
+
pm_serialize_magic_comment(pm_magic_comment_t *magic_comment, pm_buffer_t *buffer) {
|
|
2065
2100
|
// serialize key location
|
|
2066
|
-
pm_buffer_append_varuint(buffer,
|
|
2067
|
-
pm_buffer_append_varuint(buffer,
|
|
2101
|
+
pm_buffer_append_varuint(buffer, magic_comment->key.start);
|
|
2102
|
+
pm_buffer_append_varuint(buffer, magic_comment->key.length);
|
|
2068
2103
|
|
|
2069
2104
|
// serialize value location
|
|
2070
|
-
pm_buffer_append_varuint(buffer,
|
|
2071
|
-
pm_buffer_append_varuint(buffer,
|
|
2105
|
+
pm_buffer_append_varuint(buffer, magic_comment->value.start);
|
|
2106
|
+
pm_buffer_append_varuint(buffer, magic_comment->value.length);
|
|
2072
2107
|
}
|
|
2073
2108
|
|
|
2074
2109
|
static void
|
|
2075
|
-
pm_serialize_magic_comment_list(
|
|
2110
|
+
pm_serialize_magic_comment_list(pm_list_t *list, pm_buffer_t *buffer) {
|
|
2076
2111
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(pm_list_size(list)));
|
|
2077
2112
|
|
|
2078
2113
|
pm_magic_comment_t *magic_comment;
|
|
2079
2114
|
for (magic_comment = (pm_magic_comment_t *) list->head; magic_comment != NULL; magic_comment = (pm_magic_comment_t *) magic_comment->node.next) {
|
|
2080
|
-
pm_serialize_magic_comment(
|
|
2115
|
+
pm_serialize_magic_comment(magic_comment, buffer);
|
|
2081
2116
|
}
|
|
2082
2117
|
}
|
|
2083
2118
|
|
|
2084
2119
|
static void
|
|
2085
2120
|
pm_serialize_data_loc(const pm_parser_t *parser, pm_buffer_t *buffer) {
|
|
2086
|
-
if (parser->data_loc.
|
|
2121
|
+
if (parser->data_loc.length == 0) {
|
|
2087
2122
|
pm_buffer_append_byte(buffer, 0);
|
|
2088
2123
|
} else {
|
|
2089
2124
|
pm_buffer_append_byte(buffer, 1);
|
|
2090
|
-
pm_serialize_location(
|
|
2125
|
+
pm_serialize_location(&parser->data_loc, buffer);
|
|
2091
2126
|
}
|
|
2092
2127
|
}
|
|
2093
2128
|
|
|
2094
2129
|
static void
|
|
2095
|
-
pm_serialize_diagnostic(
|
|
2130
|
+
pm_serialize_diagnostic(pm_diagnostic_t *diagnostic, pm_buffer_t *buffer) {
|
|
2096
2131
|
// serialize the type
|
|
2097
2132
|
pm_buffer_append_varuint(buffer, (uint32_t) diagnostic->diag_id);
|
|
2098
2133
|
|
|
@@ -2102,18 +2137,18 @@ pm_serialize_diagnostic(pm_parser_t *parser, pm_diagnostic_t *diagnostic, pm_buf
|
|
|
2102
2137
|
pm_buffer_append_string(buffer, diagnostic->message, message_length);
|
|
2103
2138
|
|
|
2104
2139
|
// serialize location
|
|
2105
|
-
pm_serialize_location(
|
|
2140
|
+
pm_serialize_location(&diagnostic->location, buffer);
|
|
2106
2141
|
|
|
2107
2142
|
pm_buffer_append_byte(buffer, diagnostic->level);
|
|
2108
2143
|
}
|
|
2109
2144
|
|
|
2110
2145
|
static void
|
|
2111
|
-
pm_serialize_diagnostic_list(
|
|
2146
|
+
pm_serialize_diagnostic_list(pm_list_t *list, pm_buffer_t *buffer) {
|
|
2112
2147
|
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(pm_list_size(list)));
|
|
2113
2148
|
|
|
2114
2149
|
pm_diagnostic_t *diagnostic;
|
|
2115
2150
|
for (diagnostic = (pm_diagnostic_t *) list->head; diagnostic != NULL; diagnostic = (pm_diagnostic_t *) diagnostic->node.next) {
|
|
2116
|
-
pm_serialize_diagnostic(
|
|
2151
|
+
pm_serialize_diagnostic(diagnostic, buffer);
|
|
2117
2152
|
}
|
|
2118
2153
|
}
|
|
2119
2154
|
|
|
@@ -2131,15 +2166,18 @@ static void
|
|
|
2131
2166
|
pm_serialize_metadata(pm_parser_t *parser, pm_buffer_t *buffer) {
|
|
2132
2167
|
pm_serialize_encoding(parser->encoding, buffer);
|
|
2133
2168
|
pm_buffer_append_varsint(buffer, parser->start_line);
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2169
|
+
pm_buffer_append_uint64(buffer, pm_parser_checksum(parser));
|
|
2170
|
+
pm_serialize_line_offset_list(&parser->line_offsets, buffer);
|
|
2171
|
+
pm_serialize_comment_list(&parser->comment_list, buffer);
|
|
2172
|
+
pm_serialize_comment_attachments(&parser->comment_attachments, buffer);
|
|
2173
|
+
pm_serialize_magic_comment_list(&parser->magic_comment_list, buffer);
|
|
2137
2174
|
pm_serialize_data_loc(parser, buffer);
|
|
2138
|
-
pm_serialize_diagnostic_list(
|
|
2139
|
-
pm_serialize_diagnostic_list(
|
|
2175
|
+
pm_serialize_diagnostic_list(&parser->error_list, buffer);
|
|
2176
|
+
pm_serialize_diagnostic_list(&parser->warning_list, buffer);
|
|
2177
|
+
pm_buffer_append_byte(buffer, (uint8_t) parser->continuable);
|
|
2140
2178
|
}
|
|
2141
2179
|
|
|
2142
|
-
#line
|
|
2180
|
+
#line 310 "prism/templates/src/serialize.c.erb"
|
|
2143
2181
|
/**
|
|
2144
2182
|
* Serialize the metadata, nodes, and constant pool.
|
|
2145
2183
|
*/
|
|
@@ -2176,28 +2214,12 @@ pm_serialize_content(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer)
|
|
|
2176
2214
|
pm_constant_t *constant = &parser->constant_pool.constants[bucket->id - 1];
|
|
2177
2215
|
size_t buffer_offset = offset + ((((size_t)bucket->id) - 1) * 8);
|
|
2178
2216
|
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
// is a buffer offset.
|
|
2185
|
-
uint32_t content_offset = pm_sizet_to_u32(buffer->length);
|
|
2186
|
-
uint32_t owned_mask = 1U << 31;
|
|
2187
|
-
|
|
2188
|
-
assert(content_offset < owned_mask);
|
|
2189
|
-
content_offset |= owned_mask;
|
|
2190
|
-
|
|
2191
|
-
memcpy(buffer->value + buffer_offset, &content_offset, 4);
|
|
2192
|
-
pm_buffer_append_bytes(buffer, constant->start, constant->length);
|
|
2193
|
-
} else {
|
|
2194
|
-
// Since this is a shared constant, we are going to write its
|
|
2195
|
-
// source offset directly into the buffer.
|
|
2196
|
-
uint32_t source_offset = pm_ptrdifft_to_u32(constant->start - parser->start);
|
|
2197
|
-
memcpy(buffer->value + buffer_offset, &source_offset, 4);
|
|
2198
|
-
}
|
|
2217
|
+
// Write the constant contents into the buffer after the constant
|
|
2218
|
+
// pool. In place of the source offset, we store a buffer offset.
|
|
2219
|
+
uint32_t content_offset = pm_sizet_to_u32(buffer->length);
|
|
2220
|
+
memcpy(buffer->value + buffer_offset, &content_offset, 4);
|
|
2221
|
+
pm_buffer_append_bytes(buffer, constant->start, constant->length);
|
|
2199
2222
|
|
|
2200
|
-
// Now we can write the length of the constant into the buffer.
|
|
2201
2223
|
uint32_t constant_length = pm_sizet_to_u32(constant->length);
|
|
2202
2224
|
memcpy(buffer->value + buffer_offset + 4, &constant_length, 4);
|
|
2203
2225
|
}
|
|
@@ -2205,7 +2227,7 @@ pm_serialize_content(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer)
|
|
|
2205
2227
|
}
|
|
2206
2228
|
|
|
2207
2229
|
static void
|
|
2208
|
-
serialize_token(
|
|
2230
|
+
serialize_token(pm_parser_t *parser, pm_token_t *token, void *data) {
|
|
2209
2231
|
pm_buffer_t *buffer = (pm_buffer_t *) data;
|
|
2210
2232
|
|
|
2211
2233
|
pm_buffer_append_varuint(buffer, token->type);
|
|
@@ -2217,58 +2239,72 @@ serialize_token(void *data, pm_parser_t *parser, pm_token_t *token) {
|
|
|
2217
2239
|
/**
|
|
2218
2240
|
* Lex the given source and serialize to the given buffer.
|
|
2219
2241
|
*/
|
|
2220
|
-
|
|
2242
|
+
void
|
|
2221
2243
|
pm_serialize_lex(pm_buffer_t *buffer, const uint8_t *source, size_t size, const char *data) {
|
|
2222
2244
|
pm_options_t options = { 0 };
|
|
2223
2245
|
pm_options_read(&options, data);
|
|
2224
2246
|
|
|
2247
|
+
pm_arena_t arena = { 0 };
|
|
2225
2248
|
pm_parser_t parser;
|
|
2226
|
-
pm_parser_init(&parser, source, size, &options);
|
|
2249
|
+
pm_parser_init(&arena, &parser, source, size, &options);
|
|
2227
2250
|
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
.callback = serialize_token,
|
|
2231
|
-
};
|
|
2232
|
-
|
|
2233
|
-
parser.lex_callback = &lex_callback;
|
|
2234
|
-
pm_node_t *node = pm_parse(&parser);
|
|
2251
|
+
pm_parser_lex_callback_set(&parser, serialize_token, buffer);
|
|
2252
|
+
pm_parse(&parser);
|
|
2235
2253
|
|
|
2236
2254
|
// Append 0 to mark end of tokens.
|
|
2237
2255
|
pm_buffer_append_byte(buffer, 0);
|
|
2238
2256
|
|
|
2239
2257
|
pm_serialize_metadata(&parser, buffer);
|
|
2240
2258
|
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2259
|
+
pm_parser_cleanup(&parser);
|
|
2260
|
+
pm_arena_cleanup(&arena);
|
|
2261
|
+
pm_options_cleanup(&options);
|
|
2244
2262
|
}
|
|
2245
2263
|
|
|
2246
2264
|
/**
|
|
2247
2265
|
* Parse and serialize both the AST and the tokens represented by the given
|
|
2248
2266
|
* source to the given buffer.
|
|
2249
2267
|
*/
|
|
2250
|
-
|
|
2268
|
+
void
|
|
2251
2269
|
pm_serialize_parse_lex(pm_buffer_t *buffer, const uint8_t *source, size_t size, const char *data) {
|
|
2252
2270
|
pm_options_t options = { 0 };
|
|
2253
2271
|
pm_options_read(&options, data);
|
|
2254
2272
|
|
|
2273
|
+
pm_arena_t arena = { 0 };
|
|
2255
2274
|
pm_parser_t parser;
|
|
2256
|
-
pm_parser_init(&parser, source, size, &options);
|
|
2275
|
+
pm_parser_init(&arena, &parser, source, size, &options);
|
|
2257
2276
|
|
|
2258
|
-
|
|
2259
|
-
.data = (void *) buffer,
|
|
2260
|
-
.callback = serialize_token,
|
|
2261
|
-
};
|
|
2262
|
-
|
|
2263
|
-
parser.lex_callback = &lex_callback;
|
|
2277
|
+
pm_parser_lex_callback_set(&parser, serialize_token, buffer);
|
|
2264
2278
|
pm_node_t *node = pm_parse(&parser);
|
|
2265
2279
|
|
|
2266
2280
|
pm_buffer_append_byte(buffer, 0);
|
|
2267
2281
|
pm_serialize(&parser, node, buffer);
|
|
2268
2282
|
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2283
|
+
pm_parser_cleanup(&parser);
|
|
2284
|
+
pm_arena_cleanup(&arena);
|
|
2285
|
+
pm_options_cleanup(&options);
|
|
2286
|
+
}
|
|
2287
|
+
|
|
2288
|
+
/**
|
|
2289
|
+
* Parse the source and return true if it parses without errors or warnings.
|
|
2290
|
+
*/
|
|
2291
|
+
bool
|
|
2292
|
+
pm_serialize_parse_success_p(const uint8_t *source, size_t size, const char *data) {
|
|
2293
|
+
pm_options_t options = { 0 };
|
|
2294
|
+
pm_options_read(&options, data);
|
|
2295
|
+
|
|
2296
|
+
pm_arena_t arena = { 0 };
|
|
2297
|
+
pm_parser_t parser;
|
|
2298
|
+
pm_parser_init(&arena, &parser, source, size, &options);
|
|
2299
|
+
|
|
2300
|
+
pm_parse(&parser);
|
|
2301
|
+
|
|
2302
|
+
bool result = parser.error_list.size == 0;
|
|
2303
|
+
pm_parser_cleanup(&parser);
|
|
2304
|
+
pm_arena_cleanup(&arena);
|
|
2305
|
+
pm_options_cleanup(&options);
|
|
2306
|
+
|
|
2307
|
+
return result;
|
|
2272
2308
|
}
|
|
2273
2309
|
|
|
2274
2310
|
#endif
|