@@ -73,7 +73,7 @@ static void
7373pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
7474 pm_buffer_append_byte(buffer, (uint8_t) PM_NODE_TYPE(node));
7575
76- <%- if Prism ::Template ::INCLUDE_NODE_ID -%>
76+ <%- unless Prism ::Template ::OMIT_NODE_ID -%>
7777 pm_buffer_append_varuint(buffer, node-> node_id);
7878 <%- end -%>
7979 pm_serialize_location(&node-> location, buffer);
@@ -91,8 +91,12 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
9191 size_t length_offset = buffer-> length;
9292 pm_buffer_append_string(buffer, "\0\0\0\0", 4); /* consume 4 bytes, updated below */
9393 <%- end -%>
94- <%- unless Prism :: Template :: SERIALIZE_ONLY_SEMANTICS_FIELDS && ! node . flags -%>
94+ <%- if node . flags -%>
9595 pm_buffer_append_varuint(buffer, (uint32_t) node-> flags);
96+ <%- else -%>
97+ if (!PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS) {
98+ pm_buffer_append_varuint(buffer, (uint32_t) node-> flags);
99+ }
96100 <%- end -%>
97101 <%- node . fields . each do |field | -%>
98102 <%- case field -%>
@@ -121,17 +125,25 @@ pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
121125 pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_<%= node . human %> _t *)node)-> <%= field . name %> .ids[index]));
122126 }
123127 <%- when Prism ::Template ::LocationField -%>
124- <%- if field . should_be_serialized? -%>
128+ <%- unless field . semantic_field? -%>
129+ if (!PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS) {
130+ <%- end -%>
125131 pm_serialize_location(&((pm_<%= node . human %> _t *)node)-> <%= field . name %> , buffer);
132+ <%- unless field . semantic_field? -%>
133+ }
126134 <%- end -%>
127135 <%- when Prism ::Template ::OptionalLocationField -%>
128- <%- if field . should_be_serialized? -%>
136+ <%- unless field . semantic_field? -%>
137+ if (!PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS) {
138+ <%- end -%>
129139 if (((pm_<%= node . human %> _t *)node)-> <%= field . name %> .length == 0) {
130140 pm_buffer_append_byte(buffer, 0);
131141 } else {
132142 pm_buffer_append_byte(buffer, 1);
133143 pm_serialize_location(&((pm_<%= node . human %> _t *)node)-> <%= field . name %> , buffer);
134144 }
145+ <%- unless field . semantic_field? -%>
146+ }
135147 <%- end -%>
136148 <%- when Prism ::Template ::UInt8Field -%>
137149 pm_buffer_append_byte(buffer, ((pm_<%= node . human %> _t *)node)-> <%= field . name %> );
@@ -261,9 +273,9 @@ pm_serialize_metadata(pm_parser_t *parser, pm_buffer_t *buffer) {
261273 pm_serialize_encoding(parser-> encoding, buffer);
262274 pm_buffer_append_varsint(buffer, parser-> start_line);
263275 pm_serialize_line_offset_list(&parser-> line_offsets, buffer);
264- <%- unless Prism :: Template :: SERIALIZE_ONLY_SEMANTICS_FIELDS -%>
265- pm_serialize_comment_list(&parser-> comment_list, buffer);
266- <%- end -%>
276+ if (!PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS) {
277+ pm_serialize_comment_list(&parser-> comment_list, buffer);
278+ }
267279 pm_serialize_magic_comment_list(&parser-> magic_comment_list, buffer);
268280 pm_serialize_data_loc(parser, buffer);
269281 pm_serialize_diagnostic_list(&parser-> error_list, buffer);
0 commit comments