@appthreat/atom-parsetools 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/README.md +111 -14
  2. package/package.json +8 -1
  3. package/phpastgen.js +1764 -18
  4. package/plugins/autoload.php +1 -1
  5. package/plugins/composer/autoload_classmap.php +1 -0
  6. package/plugins/composer/autoload_real.php +4 -4
  7. package/plugins/composer/autoload_static.php +5 -4
  8. package/plugins/composer/installed.json +7 -8
  9. package/plugins/composer/installed.php +9 -9
  10. package/plugins/composer.json +1 -1
  11. package/plugins/composer.lock +7 -8
  12. package/plugins/nikic/php-parser/composer.json +1 -2
  13. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +1 -3
  14. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +2 -0
  15. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php +20 -0
  16. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +5 -4
  17. package/plugins/nikic/php-parser/lib/PhpParser/ParserAbstract.php +7 -0
  18. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +20 -4
  19. package/plugins/rubyastgen/Gemfile +6 -4
  20. package/plugins/rubyastgen/Gemfile.lock +5 -8
  21. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/Gemfile +11 -0
  22. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/exe/ruby_ast_gen +55 -0
  23. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/lib/ruby_ast_gen/cli.rb +133 -0
  24. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/lib/ruby_ast_gen/node_handling.rb +449 -0
  25. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/lib/ruby_ast_gen/version.rb +1 -1
  26. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/lib/ruby_ast_gen.rb +888 -0
  27. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/ruby_ast_gen.gemspec +25 -0
  28. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/current.rb +1 -1
  29. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/version.rb +1 -1
  30. package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/ast-2.4.3.gemspec +29 -0
  31. package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/bundler-2.6.9.gemspec +25 -0
  32. package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/ostruct-0.6.3.gemspec +22 -0
  33. package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/parser-3.3.12.0.gemspec +37 -0
  34. package/rbastgen.js +102 -13
  35. package/scalasem.js +11 -2
  36. package/plugins/bin/bundler +0 -14
  37. package/plugins/bin/ruby_ast_gen +0 -14
  38. package/plugins/rubyastgen/bundle/bundler/setup.rb +0 -44
  39. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-cc312ebf06b4/exe/ruby_ast_gen +0 -63
  40. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-cc312ebf06b4/lib/ruby_ast_gen/node_handling.rb +0 -269
  41. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-cc312ebf06b4/lib/ruby_ast_gen.rb +0 -218
  42. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/gem.build_complete +0 -0
  43. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/gem_make.out +0 -44
  44. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/mkmf.log +0 -74
  45. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/prism/prism.so +0 -0
  46. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/racc-1.8.1/gem.build_complete +0 -0
  47. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/racc-1.8.1/gem_make.out +0 -18
  48. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/racc-1.8.1/racc/cparse.so +0 -0
  49. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/BSDmakefile +0 -58
  50. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/Makefile +0 -116
  51. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/Makefile +0 -273
  52. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/api_node.c +0 -6945
  53. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/api_pack.c +0 -276
  54. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/extconf.rb +0 -127
  55. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/extension.c +0 -1427
  56. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/extension.h +0 -19
  57. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/ast.h +0 -8254
  58. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/defines.h +0 -260
  59. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/diagnostic.h +0 -458
  60. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/encoding.h +0 -283
  61. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/node.h +0 -129
  62. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/options.h +0 -488
  63. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/pack.h +0 -163
  64. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/parser.h +0 -936
  65. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/prettyprint.h +0 -34
  66. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/regexp.h +0 -43
  67. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/static_literals.h +0 -121
  68. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_buffer.h +0 -236
  69. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_char.h +0 -204
  70. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_constant_pool.h +0 -218
  71. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_integer.h +0 -130
  72. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_list.h +0 -103
  73. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_memchr.h +0 -29
  74. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_newline_list.h +0 -113
  75. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_string.h +0 -200
  76. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_strncasecmp.h +0 -32
  77. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_strpbrk.h +0 -46
  78. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/version.h +0 -29
  79. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism.h +0 -408
  80. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/compiler.rb +0 -801
  81. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/desugar_compiler.rb +0 -392
  82. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/dispatcher.rb +0 -2210
  83. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/dot_visitor.rb +0 -4767
  84. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/dsl.rb +0 -1003
  85. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/ffi.rb +0 -578
  86. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/inspect_visitor.rb +0 -2393
  87. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/lex_compat.rb +0 -911
  88. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/mutation_compiler.rb +0 -772
  89. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/node.rb +0 -19966
  90. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/node_ext.rb +0 -511
  91. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/pack.rb +0 -230
  92. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result/comments.rb +0 -188
  93. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result/errors.rb +0 -66
  94. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result/newlines.rb +0 -155
  95. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result.rb +0 -907
  96. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/pattern.rb +0 -269
  97. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/append_as_bytes.rb +0 -15
  98. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/byteindex.rb +0 -13
  99. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/scan_byte.rb +0 -14
  100. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/unpack1.rb +0 -14
  101. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/warn.rb +0 -36
  102. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/prism.so +0 -0
  103. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/reflection.rb +0 -416
  104. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/relocation.rb +0 -505
  105. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/serialize.rb +0 -2400
  106. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/string_query.rb +0 -31
  107. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser/builder.rb +0 -62
  108. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser/compiler.rb +0 -2234
  109. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser/lexer.rb +0 -820
  110. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser.rb +0 -376
  111. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser_current.rb +0 -26
  112. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser_versions.rb +0 -36
  113. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/filter.rb +0 -53
  114. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/lexer.rb +0 -135
  115. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/sexp.rb +0 -126
  116. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/shim.rb +0 -5
  117. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper.rb +0 -3520
  118. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ruby_parser.rb +0 -1964
  119. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation.rb +0 -18
  120. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/visitor.rb +0 -813
  121. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism.rb +0 -98
  122. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/compiler.rbi +0 -12
  123. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/dsl.rbi +0 -524
  124. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/inspect_visitor.rbi +0 -12
  125. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/node.rbi +0 -8750
  126. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/node_ext.rbi +0 -107
  127. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/parse_result.rbi +0 -404
  128. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/reflection.rbi +0 -58
  129. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/string_query.rbi +0 -12
  130. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/translation/parser.rbi +0 -11
  131. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/translation/parser_versions.rbi +0 -23
  132. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/translation/ripper.rbi +0 -15
  133. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/visitor.rbi +0 -473
  134. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism.rbi +0 -63
  135. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/compiler.rbs +0 -9
  136. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/dispatcher.rbs +0 -19
  137. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/dot_visitor.rbs +0 -6
  138. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/dsl.rbs +0 -351
  139. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/inspect_visitor.rbs +0 -22
  140. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/lex_compat.rbs +0 -10
  141. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/mutation_compiler.rbs +0 -159
  142. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/node.rbs +0 -4042
  143. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/node_ext.rbs +0 -149
  144. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/pack.rbs +0 -43
  145. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/parse_result/comments.rbs +0 -38
  146. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/parse_result.rbs +0 -197
  147. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/pattern.rbs +0 -13
  148. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/reflection.rbs +0 -50
  149. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/relocation.rbs +0 -185
  150. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/serialize.rbs +0 -8
  151. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/string_query.rbs +0 -11
  152. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/visitor.rbs +0 -169
  153. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism.rbs +0 -272
  154. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/diagnostic.c +0 -854
  155. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/encoding.c +0 -5340
  156. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/node.c +0 -8685
  157. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/options.c +0 -338
  158. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/pack.c +0 -509
  159. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/prettyprint.c +0 -8957
  160. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/prism.c +0 -22679
  161. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/regexp.c +0 -790
  162. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/serialize.c +0 -2274
  163. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/static_literals.c +0 -617
  164. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/token_type.c +0 -703
  165. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_buffer.c +0 -357
  166. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_char.c +0 -318
  167. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_constant_pool.c +0 -342
  168. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_integer.c +0 -670
  169. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_list.c +0 -49
  170. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_memchr.c +0 -35
  171. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_newline_list.c +0 -125
  172. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_string.c +0 -381
  173. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_strncasecmp.c +0 -36
  174. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_strpbrk.c +0 -206
  175. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/BSDL +0 -22
  176. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/COPYING +0 -56
  177. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ChangeLog +0 -846
  178. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/README.ja.rdoc +0 -58
  179. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/README.rdoc +0 -60
  180. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/TODO +0 -5
  181. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/bin/racc +0 -320
  182. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ext/racc/cparse/Makefile +0 -273
  183. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ext/racc/cparse/cparse.c +0 -840
  184. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ext/racc/cparse/extconf.rb +0 -8
  185. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/compat.rb +0 -33
  186. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/cparse.so +0 -0
  187. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/debugflags.rb +0 -60
  188. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/exception.rb +0 -16
  189. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/grammar.rb +0 -1191
  190. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/grammarfileparser.rb +0 -667
  191. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/info.rb +0 -18
  192. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/iset.rb +0 -92
  193. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/logfilegenerator.rb +0 -212
  194. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/parser-text.rb +0 -644
  195. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/parser.rb +0 -630
  196. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/parserfilegenerator.rb +0 -473
  197. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/sourcetext.rb +0 -35
  198. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/state.rb +0 -976
  199. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/statetransitiontable.rb +0 -311
  200. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/static.rb +0 -5
  201. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc.rb +0 -6
  202. /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/.rspec +0 -0
  203. /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/bin/console +0 -0
  204. /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/bin/setup +0 -0
  205. /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/update_version.rb +0 -0
  206. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/bin/ruby-parse +0 -0
  207. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/bin/ruby-rewrite +0 -0
  208. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/gauntlet_parser.rb +0 -0
  209. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/all.rb +0 -0
  210. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ast/node.rb +0 -0
  211. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ast/processor.rb +0 -0
  212. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/base.rb +0 -0
  213. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/builders/default.rb +0 -0
  214. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/clobbering_error.rb +0 -0
  215. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/color.rb +0 -0
  216. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/context.rb +0 -0
  217. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/current_arg_stack.rb +0 -0
  218. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/deprecation.rb +0 -0
  219. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/diagnostic/engine.rb +0 -0
  220. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/diagnostic.rb +0 -0
  221. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/dedenter.rb +0 -0
  222. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/explanation.rb +0 -0
  223. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/literal.rb +0 -0
  224. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/stack_state.rb +0 -0
  225. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-F0.rb +0 -0
  226. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-F1.rb +0 -0
  227. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-strings.rb +0 -0
  228. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/macruby.rb +0 -0
  229. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/max_numparam_stack.rb +0 -0
  230. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/messages.rb +0 -0
  231. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/meta.rb +0 -0
  232. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/rewriter.rb +0 -0
  233. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby18.rb +0 -0
  234. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby19.rb +0 -0
  235. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby20.rb +0 -0
  236. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby21.rb +0 -0
  237. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby22.rb +0 -0
  238. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby23.rb +0 -0
  239. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby24.rb +0 -0
  240. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby25.rb +0 -0
  241. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby26.rb +0 -0
  242. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby27.rb +0 -0
  243. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby30.rb +0 -0
  244. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby31.rb +0 -0
  245. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby32.rb +0 -0
  246. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby33.rb +0 -0
  247. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby34.rb +0 -0
  248. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/rubymotion.rb +0 -0
  249. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner/ruby_parse.rb +0 -0
  250. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner/ruby_rewrite.rb +0 -0
  251. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner.rb +0 -0
  252. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/buffer.rb +0 -0
  253. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/comment/associator.rb +0 -0
  254. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/comment.rb +0 -0
  255. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/collection.rb +0 -0
  256. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/condition.rb +0 -0
  257. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/constant.rb +0 -0
  258. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/definition.rb +0 -0
  259. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/for.rb +0 -0
  260. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/heredoc.rb +0 -0
  261. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/index.rb +0 -0
  262. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/keyword.rb +0 -0
  263. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/method_definition.rb +0 -0
  264. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/objc_kwarg.rb +0 -0
  265. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/operator.rb +0 -0
  266. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/rescue_body.rb +0 -0
  267. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/send.rb +0 -0
  268. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/ternary.rb +0 -0
  269. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/variable.rb +0 -0
  270. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map.rb +0 -0
  271. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/range.rb +0 -0
  272. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/rewriter/action.rb +0 -0
  273. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/rewriter.rb +0 -0
  274. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/tree_rewriter/action.rb +0 -0
  275. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/tree_rewriter.rb +0 -0
  276. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/static_environment.rb +0 -0
  277. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/syntax_error.rb +0 -0
  278. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/tree_rewriter.rb +0 -0
  279. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/unknown_encoding_in_magic_comment_error.rb +0 -0
  280. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/variables_stack.rb +0 -0
  281. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser.rb +0 -0
@@ -1,2274 +0,0 @@
1
- /* :markup: markdown */
2
-
3
- /*----------------------------------------------------------------------------*/
4
- /* This file is generated by the templates/template.rb script and should not */
5
- /* be modified manually. See */
6
- /* templates/src/serialize.c.erb */
7
- /* if you are looking to modify the */
8
- /* template */
9
- /*----------------------------------------------------------------------------*/
10
-
11
- #include "prism.h"
12
-
13
- // We optionally support serializing to a binary string. For systems that don't
14
- // want or need this functionality, it can be turned off with the
15
- // PRISM_EXCLUDE_SERIALIZATION define.
16
- #ifndef PRISM_EXCLUDE_SERIALIZATION
17
-
18
- #include <stdio.h>
19
-
20
- static inline uint32_t
21
- pm_ptrdifft_to_u32(ptrdiff_t value) {
22
- assert(value >= 0 && ((unsigned long) value) < UINT32_MAX);
23
- return (uint32_t) value;
24
- }
25
-
26
- static inline uint32_t
27
- pm_sizet_to_u32(size_t value) {
28
- assert(value < UINT32_MAX);
29
- return (uint32_t) value;
30
- }
31
-
32
- static void
33
- pm_serialize_location(const pm_parser_t *parser, const pm_location_t *location, pm_buffer_t *buffer) {
34
- assert(location->start);
35
- assert(location->end);
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));
40
- }
41
-
42
- static void
43
- pm_serialize_string(const pm_parser_t *parser, const pm_string_t *string, pm_buffer_t *buffer) {
44
- switch (string->type) {
45
- case PM_STRING_SHARED: {
46
- pm_buffer_append_byte(buffer, 1);
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
- }
65
- }
66
-
67
- static void
68
- pm_serialize_integer(const pm_integer_t *integer, pm_buffer_t *buffer) {
69
- pm_buffer_append_byte(buffer, integer->negative ? 1 : 0);
70
- if (integer->values == NULL) {
71
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(1));
72
- pm_buffer_append_varuint(buffer, integer->value);
73
- } else {
74
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(integer->length));
75
- for (size_t i = 0; i < integer->length; i++) {
76
- pm_buffer_append_varuint(buffer, integer->values[i]);
77
- }
78
- }
79
- }
80
-
81
- static void
82
- pm_serialize_node(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
83
- pm_buffer_append_byte(buffer, (uint8_t) PM_NODE_TYPE(node));
84
-
85
- size_t offset = buffer->length;
86
-
87
- pm_buffer_append_varuint(buffer, node->node_id);
88
- pm_serialize_location(parser, &node->location, buffer);
89
-
90
- switch (PM_NODE_TYPE(node)) {
91
- // We do not need to serialize a ScopeNode ever as
92
- // it is not part of the AST
93
- case PM_SCOPE_NODE:
94
- return;
95
- case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
96
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
97
- pm_serialize_node(parser, (pm_node_t *)((pm_alias_global_variable_node_t *)node)->new_name, buffer);
98
- pm_serialize_node(parser, (pm_node_t *)((pm_alias_global_variable_node_t *)node)->old_name, buffer);
99
- pm_serialize_location(parser, &((pm_alias_global_variable_node_t *)node)->keyword_loc, buffer);
100
- break;
101
- }
102
- case PM_ALIAS_METHOD_NODE: {
103
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
104
- pm_serialize_node(parser, (pm_node_t *)((pm_alias_method_node_t *)node)->new_name, buffer);
105
- pm_serialize_node(parser, (pm_node_t *)((pm_alias_method_node_t *)node)->old_name, buffer);
106
- pm_serialize_location(parser, &((pm_alias_method_node_t *)node)->keyword_loc, buffer);
107
- break;
108
- }
109
- case PM_ALTERNATION_PATTERN_NODE: {
110
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
111
- pm_serialize_node(parser, (pm_node_t *)((pm_alternation_pattern_node_t *)node)->left, buffer);
112
- pm_serialize_node(parser, (pm_node_t *)((pm_alternation_pattern_node_t *)node)->right, buffer);
113
- pm_serialize_location(parser, &((pm_alternation_pattern_node_t *)node)->operator_loc, buffer);
114
- break;
115
- }
116
- case PM_AND_NODE: {
117
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
118
- pm_serialize_node(parser, (pm_node_t *)((pm_and_node_t *)node)->left, buffer);
119
- pm_serialize_node(parser, (pm_node_t *)((pm_and_node_t *)node)->right, buffer);
120
- pm_serialize_location(parser, &((pm_and_node_t *)node)->operator_loc, buffer);
121
- break;
122
- }
123
- case PM_ARGUMENTS_NODE: {
124
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
125
- uint32_t arguments_size = pm_sizet_to_u32(((pm_arguments_node_t *)node)->arguments.size);
126
- pm_buffer_append_varuint(buffer, arguments_size);
127
- for (uint32_t index = 0; index < arguments_size; index++) {
128
- pm_serialize_node(parser, (pm_node_t *) ((pm_arguments_node_t *)node)->arguments.nodes[index], buffer);
129
- }
130
- break;
131
- }
132
- case PM_ARRAY_NODE: {
133
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
134
- uint32_t elements_size = pm_sizet_to_u32(((pm_array_node_t *)node)->elements.size);
135
- pm_buffer_append_varuint(buffer, elements_size);
136
- for (uint32_t index = 0; index < elements_size; index++) {
137
- pm_serialize_node(parser, (pm_node_t *) ((pm_array_node_t *)node)->elements.nodes[index], buffer);
138
- }
139
- if (((pm_array_node_t *)node)->opening_loc.start == NULL) {
140
- pm_buffer_append_byte(buffer, 0);
141
- } else {
142
- pm_buffer_append_byte(buffer, 1);
143
- pm_serialize_location(parser, &((pm_array_node_t *)node)->opening_loc, buffer);
144
- }
145
- if (((pm_array_node_t *)node)->closing_loc.start == NULL) {
146
- pm_buffer_append_byte(buffer, 0);
147
- } else {
148
- pm_buffer_append_byte(buffer, 1);
149
- pm_serialize_location(parser, &((pm_array_node_t *)node)->closing_loc, buffer);
150
- }
151
- break;
152
- }
153
- case PM_ARRAY_PATTERN_NODE: {
154
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
155
- if (((pm_array_pattern_node_t *)node)->constant == NULL) {
156
- pm_buffer_append_byte(buffer, 0);
157
- } else {
158
- pm_serialize_node(parser, (pm_node_t *)((pm_array_pattern_node_t *)node)->constant, buffer);
159
- }
160
- uint32_t requireds_size = pm_sizet_to_u32(((pm_array_pattern_node_t *)node)->requireds.size);
161
- pm_buffer_append_varuint(buffer, requireds_size);
162
- for (uint32_t index = 0; index < requireds_size; index++) {
163
- pm_serialize_node(parser, (pm_node_t *) ((pm_array_pattern_node_t *)node)->requireds.nodes[index], buffer);
164
- }
165
- if (((pm_array_pattern_node_t *)node)->rest == NULL) {
166
- pm_buffer_append_byte(buffer, 0);
167
- } else {
168
- pm_serialize_node(parser, (pm_node_t *)((pm_array_pattern_node_t *)node)->rest, buffer);
169
- }
170
- uint32_t posts_size = pm_sizet_to_u32(((pm_array_pattern_node_t *)node)->posts.size);
171
- pm_buffer_append_varuint(buffer, posts_size);
172
- for (uint32_t index = 0; index < posts_size; index++) {
173
- pm_serialize_node(parser, (pm_node_t *) ((pm_array_pattern_node_t *)node)->posts.nodes[index], buffer);
174
- }
175
- if (((pm_array_pattern_node_t *)node)->opening_loc.start == NULL) {
176
- pm_buffer_append_byte(buffer, 0);
177
- } else {
178
- pm_buffer_append_byte(buffer, 1);
179
- pm_serialize_location(parser, &((pm_array_pattern_node_t *)node)->opening_loc, buffer);
180
- }
181
- if (((pm_array_pattern_node_t *)node)->closing_loc.start == NULL) {
182
- pm_buffer_append_byte(buffer, 0);
183
- } else {
184
- pm_buffer_append_byte(buffer, 1);
185
- pm_serialize_location(parser, &((pm_array_pattern_node_t *)node)->closing_loc, buffer);
186
- }
187
- break;
188
- }
189
- case PM_ASSOC_NODE: {
190
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
191
- pm_serialize_node(parser, (pm_node_t *)((pm_assoc_node_t *)node)->key, buffer);
192
- pm_serialize_node(parser, (pm_node_t *)((pm_assoc_node_t *)node)->value, buffer);
193
- if (((pm_assoc_node_t *)node)->operator_loc.start == NULL) {
194
- pm_buffer_append_byte(buffer, 0);
195
- } else {
196
- pm_buffer_append_byte(buffer, 1);
197
- pm_serialize_location(parser, &((pm_assoc_node_t *)node)->operator_loc, buffer);
198
- }
199
- break;
200
- }
201
- case PM_ASSOC_SPLAT_NODE: {
202
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
203
- if (((pm_assoc_splat_node_t *)node)->value == NULL) {
204
- pm_buffer_append_byte(buffer, 0);
205
- } else {
206
- pm_serialize_node(parser, (pm_node_t *)((pm_assoc_splat_node_t *)node)->value, buffer);
207
- }
208
- pm_serialize_location(parser, &((pm_assoc_splat_node_t *)node)->operator_loc, buffer);
209
- break;
210
- }
211
- case PM_BACK_REFERENCE_READ_NODE: {
212
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
213
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_back_reference_read_node_t *)node)->name));
214
- break;
215
- }
216
- case PM_BEGIN_NODE: {
217
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
218
- if (((pm_begin_node_t *)node)->begin_keyword_loc.start == NULL) {
219
- pm_buffer_append_byte(buffer, 0);
220
- } else {
221
- pm_buffer_append_byte(buffer, 1);
222
- pm_serialize_location(parser, &((pm_begin_node_t *)node)->begin_keyword_loc, buffer);
223
- }
224
- if (((pm_begin_node_t *)node)->statements == NULL) {
225
- pm_buffer_append_byte(buffer, 0);
226
- } else {
227
- pm_serialize_node(parser, (pm_node_t *)((pm_begin_node_t *)node)->statements, buffer);
228
- }
229
- if (((pm_begin_node_t *)node)->rescue_clause == NULL) {
230
- pm_buffer_append_byte(buffer, 0);
231
- } else {
232
- pm_serialize_node(parser, (pm_node_t *)((pm_begin_node_t *)node)->rescue_clause, buffer);
233
- }
234
- if (((pm_begin_node_t *)node)->else_clause == NULL) {
235
- pm_buffer_append_byte(buffer, 0);
236
- } else {
237
- pm_serialize_node(parser, (pm_node_t *)((pm_begin_node_t *)node)->else_clause, buffer);
238
- }
239
- if (((pm_begin_node_t *)node)->ensure_clause == NULL) {
240
- pm_buffer_append_byte(buffer, 0);
241
- } else {
242
- pm_serialize_node(parser, (pm_node_t *)((pm_begin_node_t *)node)->ensure_clause, buffer);
243
- }
244
- if (((pm_begin_node_t *)node)->end_keyword_loc.start == NULL) {
245
- pm_buffer_append_byte(buffer, 0);
246
- } else {
247
- pm_buffer_append_byte(buffer, 1);
248
- pm_serialize_location(parser, &((pm_begin_node_t *)node)->end_keyword_loc, buffer);
249
- }
250
- break;
251
- }
252
- case PM_BLOCK_ARGUMENT_NODE: {
253
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
254
- if (((pm_block_argument_node_t *)node)->expression == NULL) {
255
- pm_buffer_append_byte(buffer, 0);
256
- } else {
257
- pm_serialize_node(parser, (pm_node_t *)((pm_block_argument_node_t *)node)->expression, buffer);
258
- }
259
- pm_serialize_location(parser, &((pm_block_argument_node_t *)node)->operator_loc, buffer);
260
- break;
261
- }
262
- case PM_BLOCK_LOCAL_VARIABLE_NODE: {
263
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
264
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_block_local_variable_node_t *)node)->name));
265
- break;
266
- }
267
- case PM_BLOCK_NODE: {
268
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
269
- uint32_t locals_size = pm_sizet_to_u32(((pm_block_node_t *)node)->locals.size);
270
- pm_buffer_append_varuint(buffer, locals_size);
271
- for (uint32_t index = 0; index < locals_size; index++) {
272
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_block_node_t *)node)->locals.ids[index]));
273
- }
274
- if (((pm_block_node_t *)node)->parameters == NULL) {
275
- pm_buffer_append_byte(buffer, 0);
276
- } else {
277
- pm_serialize_node(parser, (pm_node_t *)((pm_block_node_t *)node)->parameters, buffer);
278
- }
279
- if (((pm_block_node_t *)node)->body == NULL) {
280
- pm_buffer_append_byte(buffer, 0);
281
- } else {
282
- pm_serialize_node(parser, (pm_node_t *)((pm_block_node_t *)node)->body, buffer);
283
- }
284
- pm_serialize_location(parser, &((pm_block_node_t *)node)->opening_loc, buffer);
285
- pm_serialize_location(parser, &((pm_block_node_t *)node)->closing_loc, buffer);
286
- break;
287
- }
288
- case PM_BLOCK_PARAMETER_NODE: {
289
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
290
- 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.start == NULL) {
292
- pm_buffer_append_byte(buffer, 0);
293
- } else {
294
- pm_buffer_append_byte(buffer, 1);
295
- pm_serialize_location(parser, &((pm_block_parameter_node_t *)node)->name_loc, buffer);
296
- }
297
- pm_serialize_location(parser, &((pm_block_parameter_node_t *)node)->operator_loc, buffer);
298
- break;
299
- }
300
- case PM_BLOCK_PARAMETERS_NODE: {
301
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
302
- if (((pm_block_parameters_node_t *)node)->parameters == NULL) {
303
- pm_buffer_append_byte(buffer, 0);
304
- } else {
305
- pm_serialize_node(parser, (pm_node_t *)((pm_block_parameters_node_t *)node)->parameters, buffer);
306
- }
307
- uint32_t locals_size = pm_sizet_to_u32(((pm_block_parameters_node_t *)node)->locals.size);
308
- pm_buffer_append_varuint(buffer, locals_size);
309
- for (uint32_t index = 0; index < locals_size; index++) {
310
- pm_serialize_node(parser, (pm_node_t *) ((pm_block_parameters_node_t *)node)->locals.nodes[index], buffer);
311
- }
312
- if (((pm_block_parameters_node_t *)node)->opening_loc.start == NULL) {
313
- pm_buffer_append_byte(buffer, 0);
314
- } else {
315
- pm_buffer_append_byte(buffer, 1);
316
- pm_serialize_location(parser, &((pm_block_parameters_node_t *)node)->opening_loc, buffer);
317
- }
318
- if (((pm_block_parameters_node_t *)node)->closing_loc.start == NULL) {
319
- pm_buffer_append_byte(buffer, 0);
320
- } else {
321
- pm_buffer_append_byte(buffer, 1);
322
- pm_serialize_location(parser, &((pm_block_parameters_node_t *)node)->closing_loc, buffer);
323
- }
324
- break;
325
- }
326
- case PM_BREAK_NODE: {
327
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
328
- if (((pm_break_node_t *)node)->arguments == NULL) {
329
- pm_buffer_append_byte(buffer, 0);
330
- } else {
331
- pm_serialize_node(parser, (pm_node_t *)((pm_break_node_t *)node)->arguments, buffer);
332
- }
333
- pm_serialize_location(parser, &((pm_break_node_t *)node)->keyword_loc, buffer);
334
- break;
335
- }
336
- case PM_CALL_AND_WRITE_NODE: {
337
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
338
- if (((pm_call_and_write_node_t *)node)->receiver == NULL) {
339
- pm_buffer_append_byte(buffer, 0);
340
- } else {
341
- pm_serialize_node(parser, (pm_node_t *)((pm_call_and_write_node_t *)node)->receiver, buffer);
342
- }
343
- if (((pm_call_and_write_node_t *)node)->call_operator_loc.start == NULL) {
344
- pm_buffer_append_byte(buffer, 0);
345
- } else {
346
- pm_buffer_append_byte(buffer, 1);
347
- pm_serialize_location(parser, &((pm_call_and_write_node_t *)node)->call_operator_loc, buffer);
348
- }
349
- if (((pm_call_and_write_node_t *)node)->message_loc.start == NULL) {
350
- pm_buffer_append_byte(buffer, 0);
351
- } else {
352
- pm_buffer_append_byte(buffer, 1);
353
- pm_serialize_location(parser, &((pm_call_and_write_node_t *)node)->message_loc, buffer);
354
- }
355
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_and_write_node_t *)node)->read_name));
356
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_and_write_node_t *)node)->write_name));
357
- pm_serialize_location(parser, &((pm_call_and_write_node_t *)node)->operator_loc, buffer);
358
- pm_serialize_node(parser, (pm_node_t *)((pm_call_and_write_node_t *)node)->value, buffer);
359
- break;
360
- }
361
- case PM_CALL_NODE: {
362
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
363
- if (((pm_call_node_t *)node)->receiver == NULL) {
364
- pm_buffer_append_byte(buffer, 0);
365
- } else {
366
- pm_serialize_node(parser, (pm_node_t *)((pm_call_node_t *)node)->receiver, buffer);
367
- }
368
- if (((pm_call_node_t *)node)->call_operator_loc.start == NULL) {
369
- pm_buffer_append_byte(buffer, 0);
370
- } else {
371
- pm_buffer_append_byte(buffer, 1);
372
- pm_serialize_location(parser, &((pm_call_node_t *)node)->call_operator_loc, buffer);
373
- }
374
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_node_t *)node)->name));
375
- if (((pm_call_node_t *)node)->message_loc.start == NULL) {
376
- pm_buffer_append_byte(buffer, 0);
377
- } else {
378
- pm_buffer_append_byte(buffer, 1);
379
- pm_serialize_location(parser, &((pm_call_node_t *)node)->message_loc, buffer);
380
- }
381
- if (((pm_call_node_t *)node)->opening_loc.start == NULL) {
382
- pm_buffer_append_byte(buffer, 0);
383
- } else {
384
- pm_buffer_append_byte(buffer, 1);
385
- pm_serialize_location(parser, &((pm_call_node_t *)node)->opening_loc, buffer);
386
- }
387
- if (((pm_call_node_t *)node)->arguments == NULL) {
388
- pm_buffer_append_byte(buffer, 0);
389
- } else {
390
- pm_serialize_node(parser, (pm_node_t *)((pm_call_node_t *)node)->arguments, buffer);
391
- }
392
- if (((pm_call_node_t *)node)->closing_loc.start == NULL) {
393
- pm_buffer_append_byte(buffer, 0);
394
- } else {
395
- pm_buffer_append_byte(buffer, 1);
396
- pm_serialize_location(parser, &((pm_call_node_t *)node)->closing_loc, buffer);
397
- }
398
- if (((pm_call_node_t *)node)->equal_loc.start == NULL) {
399
- pm_buffer_append_byte(buffer, 0);
400
- } else {
401
- pm_buffer_append_byte(buffer, 1);
402
- pm_serialize_location(parser, &((pm_call_node_t *)node)->equal_loc, buffer);
403
- }
404
- if (((pm_call_node_t *)node)->block == NULL) {
405
- pm_buffer_append_byte(buffer, 0);
406
- } else {
407
- pm_serialize_node(parser, (pm_node_t *)((pm_call_node_t *)node)->block, buffer);
408
- }
409
- break;
410
- }
411
- case PM_CALL_OPERATOR_WRITE_NODE: {
412
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
413
- if (((pm_call_operator_write_node_t *)node)->receiver == NULL) {
414
- pm_buffer_append_byte(buffer, 0);
415
- } else {
416
- pm_serialize_node(parser, (pm_node_t *)((pm_call_operator_write_node_t *)node)->receiver, buffer);
417
- }
418
- if (((pm_call_operator_write_node_t *)node)->call_operator_loc.start == NULL) {
419
- pm_buffer_append_byte(buffer, 0);
420
- } else {
421
- pm_buffer_append_byte(buffer, 1);
422
- pm_serialize_location(parser, &((pm_call_operator_write_node_t *)node)->call_operator_loc, buffer);
423
- }
424
- if (((pm_call_operator_write_node_t *)node)->message_loc.start == NULL) {
425
- pm_buffer_append_byte(buffer, 0);
426
- } else {
427
- pm_buffer_append_byte(buffer, 1);
428
- pm_serialize_location(parser, &((pm_call_operator_write_node_t *)node)->message_loc, buffer);
429
- }
430
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_operator_write_node_t *)node)->read_name));
431
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_operator_write_node_t *)node)->write_name));
432
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_operator_write_node_t *)node)->binary_operator));
433
- pm_serialize_location(parser, &((pm_call_operator_write_node_t *)node)->binary_operator_loc, buffer);
434
- pm_serialize_node(parser, (pm_node_t *)((pm_call_operator_write_node_t *)node)->value, buffer);
435
- break;
436
- }
437
- case PM_CALL_OR_WRITE_NODE: {
438
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
439
- if (((pm_call_or_write_node_t *)node)->receiver == NULL) {
440
- pm_buffer_append_byte(buffer, 0);
441
- } else {
442
- pm_serialize_node(parser, (pm_node_t *)((pm_call_or_write_node_t *)node)->receiver, buffer);
443
- }
444
- if (((pm_call_or_write_node_t *)node)->call_operator_loc.start == NULL) {
445
- pm_buffer_append_byte(buffer, 0);
446
- } else {
447
- pm_buffer_append_byte(buffer, 1);
448
- pm_serialize_location(parser, &((pm_call_or_write_node_t *)node)->call_operator_loc, buffer);
449
- }
450
- if (((pm_call_or_write_node_t *)node)->message_loc.start == NULL) {
451
- pm_buffer_append_byte(buffer, 0);
452
- } else {
453
- pm_buffer_append_byte(buffer, 1);
454
- pm_serialize_location(parser, &((pm_call_or_write_node_t *)node)->message_loc, buffer);
455
- }
456
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_or_write_node_t *)node)->read_name));
457
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_or_write_node_t *)node)->write_name));
458
- pm_serialize_location(parser, &((pm_call_or_write_node_t *)node)->operator_loc, buffer);
459
- pm_serialize_node(parser, (pm_node_t *)((pm_call_or_write_node_t *)node)->value, buffer);
460
- break;
461
- }
462
- case PM_CALL_TARGET_NODE: {
463
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
464
- pm_serialize_node(parser, (pm_node_t *)((pm_call_target_node_t *)node)->receiver, buffer);
465
- pm_serialize_location(parser, &((pm_call_target_node_t *)node)->call_operator_loc, buffer);
466
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_target_node_t *)node)->name));
467
- pm_serialize_location(parser, &((pm_call_target_node_t *)node)->message_loc, buffer);
468
- break;
469
- }
470
- case PM_CAPTURE_PATTERN_NODE: {
471
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
472
- pm_serialize_node(parser, (pm_node_t *)((pm_capture_pattern_node_t *)node)->value, buffer);
473
- pm_serialize_node(parser, (pm_node_t *)((pm_capture_pattern_node_t *)node)->target, buffer);
474
- pm_serialize_location(parser, &((pm_capture_pattern_node_t *)node)->operator_loc, buffer);
475
- break;
476
- }
477
- case PM_CASE_MATCH_NODE: {
478
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
479
- if (((pm_case_match_node_t *)node)->predicate == NULL) {
480
- pm_buffer_append_byte(buffer, 0);
481
- } else {
482
- pm_serialize_node(parser, (pm_node_t *)((pm_case_match_node_t *)node)->predicate, buffer);
483
- }
484
- uint32_t conditions_size = pm_sizet_to_u32(((pm_case_match_node_t *)node)->conditions.size);
485
- pm_buffer_append_varuint(buffer, conditions_size);
486
- for (uint32_t index = 0; index < conditions_size; index++) {
487
- pm_serialize_node(parser, (pm_node_t *) ((pm_case_match_node_t *)node)->conditions.nodes[index], buffer);
488
- }
489
- if (((pm_case_match_node_t *)node)->else_clause == NULL) {
490
- pm_buffer_append_byte(buffer, 0);
491
- } else {
492
- pm_serialize_node(parser, (pm_node_t *)((pm_case_match_node_t *)node)->else_clause, buffer);
493
- }
494
- pm_serialize_location(parser, &((pm_case_match_node_t *)node)->case_keyword_loc, buffer);
495
- pm_serialize_location(parser, &((pm_case_match_node_t *)node)->end_keyword_loc, buffer);
496
- break;
497
- }
498
- case PM_CASE_NODE: {
499
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
500
- if (((pm_case_node_t *)node)->predicate == NULL) {
501
- pm_buffer_append_byte(buffer, 0);
502
- } else {
503
- pm_serialize_node(parser, (pm_node_t *)((pm_case_node_t *)node)->predicate, buffer);
504
- }
505
- uint32_t conditions_size = pm_sizet_to_u32(((pm_case_node_t *)node)->conditions.size);
506
- pm_buffer_append_varuint(buffer, conditions_size);
507
- for (uint32_t index = 0; index < conditions_size; index++) {
508
- pm_serialize_node(parser, (pm_node_t *) ((pm_case_node_t *)node)->conditions.nodes[index], buffer);
509
- }
510
- if (((pm_case_node_t *)node)->else_clause == NULL) {
511
- pm_buffer_append_byte(buffer, 0);
512
- } else {
513
- pm_serialize_node(parser, (pm_node_t *)((pm_case_node_t *)node)->else_clause, buffer);
514
- }
515
- pm_serialize_location(parser, &((pm_case_node_t *)node)->case_keyword_loc, buffer);
516
- pm_serialize_location(parser, &((pm_case_node_t *)node)->end_keyword_loc, buffer);
517
- break;
518
- }
519
- case PM_CLASS_NODE: {
520
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
521
- uint32_t locals_size = pm_sizet_to_u32(((pm_class_node_t *)node)->locals.size);
522
- pm_buffer_append_varuint(buffer, locals_size);
523
- for (uint32_t index = 0; index < locals_size; index++) {
524
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_node_t *)node)->locals.ids[index]));
525
- }
526
- pm_serialize_location(parser, &((pm_class_node_t *)node)->class_keyword_loc, buffer);
527
- 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.start == NULL) {
529
- pm_buffer_append_byte(buffer, 0);
530
- } else {
531
- pm_buffer_append_byte(buffer, 1);
532
- pm_serialize_location(parser, &((pm_class_node_t *)node)->inheritance_operator_loc, buffer);
533
- }
534
- if (((pm_class_node_t *)node)->superclass == NULL) {
535
- pm_buffer_append_byte(buffer, 0);
536
- } else {
537
- pm_serialize_node(parser, (pm_node_t *)((pm_class_node_t *)node)->superclass, buffer);
538
- }
539
- if (((pm_class_node_t *)node)->body == NULL) {
540
- pm_buffer_append_byte(buffer, 0);
541
- } else {
542
- pm_serialize_node(parser, (pm_node_t *)((pm_class_node_t *)node)->body, buffer);
543
- }
544
- pm_serialize_location(parser, &((pm_class_node_t *)node)->end_keyword_loc, buffer);
545
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_node_t *)node)->name));
546
- break;
547
- }
548
- case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
549
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
550
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_and_write_node_t *)node)->name));
551
- pm_serialize_location(parser, &((pm_class_variable_and_write_node_t *)node)->name_loc, buffer);
552
- pm_serialize_location(parser, &((pm_class_variable_and_write_node_t *)node)->operator_loc, buffer);
553
- pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_and_write_node_t *)node)->value, buffer);
554
- break;
555
- }
556
- case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
557
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
558
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_operator_write_node_t *)node)->name));
559
- pm_serialize_location(parser, &((pm_class_variable_operator_write_node_t *)node)->name_loc, buffer);
560
- pm_serialize_location(parser, &((pm_class_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
561
- pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_operator_write_node_t *)node)->value, buffer);
562
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_operator_write_node_t *)node)->binary_operator));
563
- break;
564
- }
565
- case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
566
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
567
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_or_write_node_t *)node)->name));
568
- pm_serialize_location(parser, &((pm_class_variable_or_write_node_t *)node)->name_loc, buffer);
569
- pm_serialize_location(parser, &((pm_class_variable_or_write_node_t *)node)->operator_loc, buffer);
570
- pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_or_write_node_t *)node)->value, buffer);
571
- break;
572
- }
573
- case PM_CLASS_VARIABLE_READ_NODE: {
574
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
575
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_read_node_t *)node)->name));
576
- break;
577
- }
578
- case PM_CLASS_VARIABLE_TARGET_NODE: {
579
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
580
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_target_node_t *)node)->name));
581
- break;
582
- }
583
- case PM_CLASS_VARIABLE_WRITE_NODE: {
584
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
585
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_write_node_t *)node)->name));
586
- pm_serialize_location(parser, &((pm_class_variable_write_node_t *)node)->name_loc, buffer);
587
- pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_write_node_t *)node)->value, buffer);
588
- pm_serialize_location(parser, &((pm_class_variable_write_node_t *)node)->operator_loc, buffer);
589
- break;
590
- }
591
- case PM_CONSTANT_AND_WRITE_NODE: {
592
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
593
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_and_write_node_t *)node)->name));
594
- pm_serialize_location(parser, &((pm_constant_and_write_node_t *)node)->name_loc, buffer);
595
- pm_serialize_location(parser, &((pm_constant_and_write_node_t *)node)->operator_loc, buffer);
596
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_and_write_node_t *)node)->value, buffer);
597
- break;
598
- }
599
- case PM_CONSTANT_OPERATOR_WRITE_NODE: {
600
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
601
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_operator_write_node_t *)node)->name));
602
- pm_serialize_location(parser, &((pm_constant_operator_write_node_t *)node)->name_loc, buffer);
603
- pm_serialize_location(parser, &((pm_constant_operator_write_node_t *)node)->binary_operator_loc, buffer);
604
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_operator_write_node_t *)node)->value, buffer);
605
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_operator_write_node_t *)node)->binary_operator));
606
- break;
607
- }
608
- case PM_CONSTANT_OR_WRITE_NODE: {
609
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
610
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_or_write_node_t *)node)->name));
611
- pm_serialize_location(parser, &((pm_constant_or_write_node_t *)node)->name_loc, buffer);
612
- pm_serialize_location(parser, &((pm_constant_or_write_node_t *)node)->operator_loc, buffer);
613
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_or_write_node_t *)node)->value, buffer);
614
- break;
615
- }
616
- case PM_CONSTANT_PATH_AND_WRITE_NODE: {
617
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
618
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_and_write_node_t *)node)->target, buffer);
619
- pm_serialize_location(parser, &((pm_constant_path_and_write_node_t *)node)->operator_loc, buffer);
620
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_and_write_node_t *)node)->value, buffer);
621
- break;
622
- }
623
- case PM_CONSTANT_PATH_NODE: {
624
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
625
- if (((pm_constant_path_node_t *)node)->parent == NULL) {
626
- pm_buffer_append_byte(buffer, 0);
627
- } else {
628
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_node_t *)node)->parent, buffer);
629
- }
630
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_path_node_t *)node)->name));
631
- pm_serialize_location(parser, &((pm_constant_path_node_t *)node)->delimiter_loc, buffer);
632
- pm_serialize_location(parser, &((pm_constant_path_node_t *)node)->name_loc, buffer);
633
- break;
634
- }
635
- case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
636
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
637
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_operator_write_node_t *)node)->target, buffer);
638
- pm_serialize_location(parser, &((pm_constant_path_operator_write_node_t *)node)->binary_operator_loc, buffer);
639
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_operator_write_node_t *)node)->value, buffer);
640
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_path_operator_write_node_t *)node)->binary_operator));
641
- break;
642
- }
643
- case PM_CONSTANT_PATH_OR_WRITE_NODE: {
644
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
645
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_or_write_node_t *)node)->target, buffer);
646
- pm_serialize_location(parser, &((pm_constant_path_or_write_node_t *)node)->operator_loc, buffer);
647
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_or_write_node_t *)node)->value, buffer);
648
- break;
649
- }
650
- case PM_CONSTANT_PATH_TARGET_NODE: {
651
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
652
- if (((pm_constant_path_target_node_t *)node)->parent == NULL) {
653
- pm_buffer_append_byte(buffer, 0);
654
- } else {
655
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_target_node_t *)node)->parent, buffer);
656
- }
657
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_path_target_node_t *)node)->name));
658
- pm_serialize_location(parser, &((pm_constant_path_target_node_t *)node)->delimiter_loc, buffer);
659
- pm_serialize_location(parser, &((pm_constant_path_target_node_t *)node)->name_loc, buffer);
660
- break;
661
- }
662
- case PM_CONSTANT_PATH_WRITE_NODE: {
663
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
664
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_write_node_t *)node)->target, buffer);
665
- pm_serialize_location(parser, &((pm_constant_path_write_node_t *)node)->operator_loc, buffer);
666
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_write_node_t *)node)->value, buffer);
667
- break;
668
- }
669
- case PM_CONSTANT_READ_NODE: {
670
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
671
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_read_node_t *)node)->name));
672
- break;
673
- }
674
- case PM_CONSTANT_TARGET_NODE: {
675
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
676
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_target_node_t *)node)->name));
677
- break;
678
- }
679
- case PM_CONSTANT_WRITE_NODE: {
680
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
681
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_write_node_t *)node)->name));
682
- pm_serialize_location(parser, &((pm_constant_write_node_t *)node)->name_loc, buffer);
683
- pm_serialize_node(parser, (pm_node_t *)((pm_constant_write_node_t *)node)->value, buffer);
684
- pm_serialize_location(parser, &((pm_constant_write_node_t *)node)->operator_loc, buffer);
685
- break;
686
- }
687
- case PM_DEF_NODE: {
688
- // serialize length
689
- // encoding of location u32s make us need to save this offset.
690
- size_t length_offset = buffer->length;
691
- pm_buffer_append_string(buffer, "\0\0\0\0", 4); /* consume 4 bytes, updated below */
692
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
693
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_def_node_t *)node)->name));
694
- pm_serialize_location(parser, &((pm_def_node_t *)node)->name_loc, buffer);
695
- if (((pm_def_node_t *)node)->receiver == NULL) {
696
- pm_buffer_append_byte(buffer, 0);
697
- } else {
698
- pm_serialize_node(parser, (pm_node_t *)((pm_def_node_t *)node)->receiver, buffer);
699
- }
700
- if (((pm_def_node_t *)node)->parameters == NULL) {
701
- pm_buffer_append_byte(buffer, 0);
702
- } else {
703
- pm_serialize_node(parser, (pm_node_t *)((pm_def_node_t *)node)->parameters, buffer);
704
- }
705
- if (((pm_def_node_t *)node)->body == NULL) {
706
- pm_buffer_append_byte(buffer, 0);
707
- } else {
708
- pm_serialize_node(parser, (pm_node_t *)((pm_def_node_t *)node)->body, buffer);
709
- }
710
- uint32_t locals_size = pm_sizet_to_u32(((pm_def_node_t *)node)->locals.size);
711
- pm_buffer_append_varuint(buffer, locals_size);
712
- for (uint32_t index = 0; index < locals_size; index++) {
713
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_def_node_t *)node)->locals.ids[index]));
714
- }
715
- pm_serialize_location(parser, &((pm_def_node_t *)node)->def_keyword_loc, buffer);
716
- if (((pm_def_node_t *)node)->operator_loc.start == NULL) {
717
- pm_buffer_append_byte(buffer, 0);
718
- } else {
719
- pm_buffer_append_byte(buffer, 1);
720
- pm_serialize_location(parser, &((pm_def_node_t *)node)->operator_loc, buffer);
721
- }
722
- if (((pm_def_node_t *)node)->lparen_loc.start == NULL) {
723
- pm_buffer_append_byte(buffer, 0);
724
- } else {
725
- pm_buffer_append_byte(buffer, 1);
726
- pm_serialize_location(parser, &((pm_def_node_t *)node)->lparen_loc, buffer);
727
- }
728
- if (((pm_def_node_t *)node)->rparen_loc.start == NULL) {
729
- pm_buffer_append_byte(buffer, 0);
730
- } else {
731
- pm_buffer_append_byte(buffer, 1);
732
- pm_serialize_location(parser, &((pm_def_node_t *)node)->rparen_loc, buffer);
733
- }
734
- if (((pm_def_node_t *)node)->equal_loc.start == NULL) {
735
- pm_buffer_append_byte(buffer, 0);
736
- } else {
737
- pm_buffer_append_byte(buffer, 1);
738
- pm_serialize_location(parser, &((pm_def_node_t *)node)->equal_loc, buffer);
739
- }
740
- if (((pm_def_node_t *)node)->end_keyword_loc.start == NULL) {
741
- pm_buffer_append_byte(buffer, 0);
742
- } else {
743
- pm_buffer_append_byte(buffer, 1);
744
- pm_serialize_location(parser, &((pm_def_node_t *)node)->end_keyword_loc, buffer);
745
- }
746
- // serialize length
747
- uint32_t length = pm_sizet_to_u32(buffer->length - offset - sizeof(uint32_t));
748
- memcpy(buffer->value + length_offset, &length, sizeof(uint32_t));
749
- break;
750
- }
751
- case PM_DEFINED_NODE: {
752
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
753
- if (((pm_defined_node_t *)node)->lparen_loc.start == NULL) {
754
- pm_buffer_append_byte(buffer, 0);
755
- } else {
756
- pm_buffer_append_byte(buffer, 1);
757
- pm_serialize_location(parser, &((pm_defined_node_t *)node)->lparen_loc, buffer);
758
- }
759
- pm_serialize_node(parser, (pm_node_t *)((pm_defined_node_t *)node)->value, buffer);
760
- if (((pm_defined_node_t *)node)->rparen_loc.start == NULL) {
761
- pm_buffer_append_byte(buffer, 0);
762
- } else {
763
- pm_buffer_append_byte(buffer, 1);
764
- pm_serialize_location(parser, &((pm_defined_node_t *)node)->rparen_loc, buffer);
765
- }
766
- pm_serialize_location(parser, &((pm_defined_node_t *)node)->keyword_loc, buffer);
767
- break;
768
- }
769
- case PM_ELSE_NODE: {
770
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
771
- pm_serialize_location(parser, &((pm_else_node_t *)node)->else_keyword_loc, buffer);
772
- if (((pm_else_node_t *)node)->statements == NULL) {
773
- pm_buffer_append_byte(buffer, 0);
774
- } else {
775
- pm_serialize_node(parser, (pm_node_t *)((pm_else_node_t *)node)->statements, buffer);
776
- }
777
- if (((pm_else_node_t *)node)->end_keyword_loc.start == NULL) {
778
- pm_buffer_append_byte(buffer, 0);
779
- } else {
780
- pm_buffer_append_byte(buffer, 1);
781
- pm_serialize_location(parser, &((pm_else_node_t *)node)->end_keyword_loc, buffer);
782
- }
783
- break;
784
- }
785
- case PM_EMBEDDED_STATEMENTS_NODE: {
786
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
787
- pm_serialize_location(parser, &((pm_embedded_statements_node_t *)node)->opening_loc, buffer);
788
- if (((pm_embedded_statements_node_t *)node)->statements == NULL) {
789
- pm_buffer_append_byte(buffer, 0);
790
- } else {
791
- pm_serialize_node(parser, (pm_node_t *)((pm_embedded_statements_node_t *)node)->statements, buffer);
792
- }
793
- pm_serialize_location(parser, &((pm_embedded_statements_node_t *)node)->closing_loc, buffer);
794
- break;
795
- }
796
- case PM_EMBEDDED_VARIABLE_NODE: {
797
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
798
- pm_serialize_location(parser, &((pm_embedded_variable_node_t *)node)->operator_loc, buffer);
799
- pm_serialize_node(parser, (pm_node_t *)((pm_embedded_variable_node_t *)node)->variable, buffer);
800
- break;
801
- }
802
- case PM_ENSURE_NODE: {
803
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
804
- pm_serialize_location(parser, &((pm_ensure_node_t *)node)->ensure_keyword_loc, buffer);
805
- if (((pm_ensure_node_t *)node)->statements == NULL) {
806
- pm_buffer_append_byte(buffer, 0);
807
- } else {
808
- pm_serialize_node(parser, (pm_node_t *)((pm_ensure_node_t *)node)->statements, buffer);
809
- }
810
- pm_serialize_location(parser, &((pm_ensure_node_t *)node)->end_keyword_loc, buffer);
811
- break;
812
- }
813
- case PM_FALSE_NODE: {
814
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
815
- break;
816
- }
817
- case PM_FIND_PATTERN_NODE: {
818
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
819
- if (((pm_find_pattern_node_t *)node)->constant == NULL) {
820
- pm_buffer_append_byte(buffer, 0);
821
- } else {
822
- pm_serialize_node(parser, (pm_node_t *)((pm_find_pattern_node_t *)node)->constant, buffer);
823
- }
824
- pm_serialize_node(parser, (pm_node_t *)((pm_find_pattern_node_t *)node)->left, buffer);
825
- uint32_t requireds_size = pm_sizet_to_u32(((pm_find_pattern_node_t *)node)->requireds.size);
826
- pm_buffer_append_varuint(buffer, requireds_size);
827
- for (uint32_t index = 0; index < requireds_size; index++) {
828
- pm_serialize_node(parser, (pm_node_t *) ((pm_find_pattern_node_t *)node)->requireds.nodes[index], buffer);
829
- }
830
- 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.start == NULL) {
832
- pm_buffer_append_byte(buffer, 0);
833
- } else {
834
- pm_buffer_append_byte(buffer, 1);
835
- pm_serialize_location(parser, &((pm_find_pattern_node_t *)node)->opening_loc, buffer);
836
- }
837
- if (((pm_find_pattern_node_t *)node)->closing_loc.start == NULL) {
838
- pm_buffer_append_byte(buffer, 0);
839
- } else {
840
- pm_buffer_append_byte(buffer, 1);
841
- pm_serialize_location(parser, &((pm_find_pattern_node_t *)node)->closing_loc, buffer);
842
- }
843
- break;
844
- }
845
- case PM_FLIP_FLOP_NODE: {
846
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
847
- if (((pm_flip_flop_node_t *)node)->left == NULL) {
848
- pm_buffer_append_byte(buffer, 0);
849
- } else {
850
- pm_serialize_node(parser, (pm_node_t *)((pm_flip_flop_node_t *)node)->left, buffer);
851
- }
852
- if (((pm_flip_flop_node_t *)node)->right == NULL) {
853
- pm_buffer_append_byte(buffer, 0);
854
- } else {
855
- pm_serialize_node(parser, (pm_node_t *)((pm_flip_flop_node_t *)node)->right, buffer);
856
- }
857
- pm_serialize_location(parser, &((pm_flip_flop_node_t *)node)->operator_loc, buffer);
858
- break;
859
- }
860
- case PM_FLOAT_NODE: {
861
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
862
- pm_buffer_append_double(buffer, ((pm_float_node_t *)node)->value);
863
- break;
864
- }
865
- case PM_FOR_NODE: {
866
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
867
- pm_serialize_node(parser, (pm_node_t *)((pm_for_node_t *)node)->index, buffer);
868
- pm_serialize_node(parser, (pm_node_t *)((pm_for_node_t *)node)->collection, buffer);
869
- if (((pm_for_node_t *)node)->statements == NULL) {
870
- pm_buffer_append_byte(buffer, 0);
871
- } else {
872
- pm_serialize_node(parser, (pm_node_t *)((pm_for_node_t *)node)->statements, buffer);
873
- }
874
- pm_serialize_location(parser, &((pm_for_node_t *)node)->for_keyword_loc, buffer);
875
- pm_serialize_location(parser, &((pm_for_node_t *)node)->in_keyword_loc, buffer);
876
- if (((pm_for_node_t *)node)->do_keyword_loc.start == NULL) {
877
- pm_buffer_append_byte(buffer, 0);
878
- } else {
879
- pm_buffer_append_byte(buffer, 1);
880
- pm_serialize_location(parser, &((pm_for_node_t *)node)->do_keyword_loc, buffer);
881
- }
882
- pm_serialize_location(parser, &((pm_for_node_t *)node)->end_keyword_loc, buffer);
883
- break;
884
- }
885
- case PM_FORWARDING_ARGUMENTS_NODE: {
886
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
887
- break;
888
- }
889
- case PM_FORWARDING_PARAMETER_NODE: {
890
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
891
- break;
892
- }
893
- case PM_FORWARDING_SUPER_NODE: {
894
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
895
- if (((pm_forwarding_super_node_t *)node)->block == NULL) {
896
- pm_buffer_append_byte(buffer, 0);
897
- } else {
898
- pm_serialize_node(parser, (pm_node_t *)((pm_forwarding_super_node_t *)node)->block, buffer);
899
- }
900
- break;
901
- }
902
- case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
903
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
904
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_and_write_node_t *)node)->name));
905
- pm_serialize_location(parser, &((pm_global_variable_and_write_node_t *)node)->name_loc, buffer);
906
- pm_serialize_location(parser, &((pm_global_variable_and_write_node_t *)node)->operator_loc, buffer);
907
- pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_and_write_node_t *)node)->value, buffer);
908
- break;
909
- }
910
- case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
911
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
912
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_operator_write_node_t *)node)->name));
913
- pm_serialize_location(parser, &((pm_global_variable_operator_write_node_t *)node)->name_loc, buffer);
914
- pm_serialize_location(parser, &((pm_global_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
915
- pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_operator_write_node_t *)node)->value, buffer);
916
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_operator_write_node_t *)node)->binary_operator));
917
- break;
918
- }
919
- case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
920
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
921
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_or_write_node_t *)node)->name));
922
- pm_serialize_location(parser, &((pm_global_variable_or_write_node_t *)node)->name_loc, buffer);
923
- pm_serialize_location(parser, &((pm_global_variable_or_write_node_t *)node)->operator_loc, buffer);
924
- pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_or_write_node_t *)node)->value, buffer);
925
- break;
926
- }
927
- case PM_GLOBAL_VARIABLE_READ_NODE: {
928
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
929
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_read_node_t *)node)->name));
930
- break;
931
- }
932
- case PM_GLOBAL_VARIABLE_TARGET_NODE: {
933
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
934
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_target_node_t *)node)->name));
935
- break;
936
- }
937
- case PM_GLOBAL_VARIABLE_WRITE_NODE: {
938
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
939
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_write_node_t *)node)->name));
940
- pm_serialize_location(parser, &((pm_global_variable_write_node_t *)node)->name_loc, buffer);
941
- pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_write_node_t *)node)->value, buffer);
942
- pm_serialize_location(parser, &((pm_global_variable_write_node_t *)node)->operator_loc, buffer);
943
- break;
944
- }
945
- case PM_HASH_NODE: {
946
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
947
- pm_serialize_location(parser, &((pm_hash_node_t *)node)->opening_loc, buffer);
948
- uint32_t elements_size = pm_sizet_to_u32(((pm_hash_node_t *)node)->elements.size);
949
- pm_buffer_append_varuint(buffer, elements_size);
950
- for (uint32_t index = 0; index < elements_size; index++) {
951
- pm_serialize_node(parser, (pm_node_t *) ((pm_hash_node_t *)node)->elements.nodes[index], buffer);
952
- }
953
- pm_serialize_location(parser, &((pm_hash_node_t *)node)->closing_loc, buffer);
954
- break;
955
- }
956
- case PM_HASH_PATTERN_NODE: {
957
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
958
- if (((pm_hash_pattern_node_t *)node)->constant == NULL) {
959
- pm_buffer_append_byte(buffer, 0);
960
- } else {
961
- pm_serialize_node(parser, (pm_node_t *)((pm_hash_pattern_node_t *)node)->constant, buffer);
962
- }
963
- uint32_t elements_size = pm_sizet_to_u32(((pm_hash_pattern_node_t *)node)->elements.size);
964
- pm_buffer_append_varuint(buffer, elements_size);
965
- for (uint32_t index = 0; index < elements_size; index++) {
966
- pm_serialize_node(parser, (pm_node_t *) ((pm_hash_pattern_node_t *)node)->elements.nodes[index], buffer);
967
- }
968
- if (((pm_hash_pattern_node_t *)node)->rest == NULL) {
969
- pm_buffer_append_byte(buffer, 0);
970
- } else {
971
- pm_serialize_node(parser, (pm_node_t *)((pm_hash_pattern_node_t *)node)->rest, buffer);
972
- }
973
- if (((pm_hash_pattern_node_t *)node)->opening_loc.start == NULL) {
974
- pm_buffer_append_byte(buffer, 0);
975
- } else {
976
- pm_buffer_append_byte(buffer, 1);
977
- pm_serialize_location(parser, &((pm_hash_pattern_node_t *)node)->opening_loc, buffer);
978
- }
979
- if (((pm_hash_pattern_node_t *)node)->closing_loc.start == NULL) {
980
- pm_buffer_append_byte(buffer, 0);
981
- } else {
982
- pm_buffer_append_byte(buffer, 1);
983
- pm_serialize_location(parser, &((pm_hash_pattern_node_t *)node)->closing_loc, buffer);
984
- }
985
- break;
986
- }
987
- case PM_IF_NODE: {
988
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
989
- if (((pm_if_node_t *)node)->if_keyword_loc.start == NULL) {
990
- pm_buffer_append_byte(buffer, 0);
991
- } else {
992
- pm_buffer_append_byte(buffer, 1);
993
- pm_serialize_location(parser, &((pm_if_node_t *)node)->if_keyword_loc, buffer);
994
- }
995
- pm_serialize_node(parser, (pm_node_t *)((pm_if_node_t *)node)->predicate, buffer);
996
- if (((pm_if_node_t *)node)->then_keyword_loc.start == NULL) {
997
- pm_buffer_append_byte(buffer, 0);
998
- } else {
999
- pm_buffer_append_byte(buffer, 1);
1000
- pm_serialize_location(parser, &((pm_if_node_t *)node)->then_keyword_loc, buffer);
1001
- }
1002
- if (((pm_if_node_t *)node)->statements == NULL) {
1003
- pm_buffer_append_byte(buffer, 0);
1004
- } else {
1005
- pm_serialize_node(parser, (pm_node_t *)((pm_if_node_t *)node)->statements, buffer);
1006
- }
1007
- if (((pm_if_node_t *)node)->subsequent == NULL) {
1008
- pm_buffer_append_byte(buffer, 0);
1009
- } else {
1010
- pm_serialize_node(parser, (pm_node_t *)((pm_if_node_t *)node)->subsequent, buffer);
1011
- }
1012
- if (((pm_if_node_t *)node)->end_keyword_loc.start == NULL) {
1013
- pm_buffer_append_byte(buffer, 0);
1014
- } else {
1015
- pm_buffer_append_byte(buffer, 1);
1016
- pm_serialize_location(parser, &((pm_if_node_t *)node)->end_keyword_loc, buffer);
1017
- }
1018
- break;
1019
- }
1020
- case PM_IMAGINARY_NODE: {
1021
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1022
- pm_serialize_node(parser, (pm_node_t *)((pm_imaginary_node_t *)node)->numeric, buffer);
1023
- break;
1024
- }
1025
- case PM_IMPLICIT_NODE: {
1026
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1027
- pm_serialize_node(parser, (pm_node_t *)((pm_implicit_node_t *)node)->value, buffer);
1028
- break;
1029
- }
1030
- case PM_IMPLICIT_REST_NODE: {
1031
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1032
- break;
1033
- }
1034
- case PM_IN_NODE: {
1035
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1036
- pm_serialize_node(parser, (pm_node_t *)((pm_in_node_t *)node)->pattern, buffer);
1037
- if (((pm_in_node_t *)node)->statements == NULL) {
1038
- pm_buffer_append_byte(buffer, 0);
1039
- } else {
1040
- pm_serialize_node(parser, (pm_node_t *)((pm_in_node_t *)node)->statements, buffer);
1041
- }
1042
- pm_serialize_location(parser, &((pm_in_node_t *)node)->in_loc, buffer);
1043
- if (((pm_in_node_t *)node)->then_loc.start == NULL) {
1044
- pm_buffer_append_byte(buffer, 0);
1045
- } else {
1046
- pm_buffer_append_byte(buffer, 1);
1047
- pm_serialize_location(parser, &((pm_in_node_t *)node)->then_loc, buffer);
1048
- }
1049
- break;
1050
- }
1051
- case PM_INDEX_AND_WRITE_NODE: {
1052
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1053
- if (((pm_index_and_write_node_t *)node)->receiver == NULL) {
1054
- pm_buffer_append_byte(buffer, 0);
1055
- } else {
1056
- pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->receiver, buffer);
1057
- }
1058
- if (((pm_index_and_write_node_t *)node)->call_operator_loc.start == NULL) {
1059
- pm_buffer_append_byte(buffer, 0);
1060
- } else {
1061
- pm_buffer_append_byte(buffer, 1);
1062
- pm_serialize_location(parser, &((pm_index_and_write_node_t *)node)->call_operator_loc, buffer);
1063
- }
1064
- pm_serialize_location(parser, &((pm_index_and_write_node_t *)node)->opening_loc, buffer);
1065
- if (((pm_index_and_write_node_t *)node)->arguments == NULL) {
1066
- pm_buffer_append_byte(buffer, 0);
1067
- } else {
1068
- pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->arguments, buffer);
1069
- }
1070
- pm_serialize_location(parser, &((pm_index_and_write_node_t *)node)->closing_loc, buffer);
1071
- if (((pm_index_and_write_node_t *)node)->block == NULL) {
1072
- pm_buffer_append_byte(buffer, 0);
1073
- } else {
1074
- pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->block, buffer);
1075
- }
1076
- pm_serialize_location(parser, &((pm_index_and_write_node_t *)node)->operator_loc, buffer);
1077
- pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->value, buffer);
1078
- break;
1079
- }
1080
- case PM_INDEX_OPERATOR_WRITE_NODE: {
1081
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1082
- if (((pm_index_operator_write_node_t *)node)->receiver == NULL) {
1083
- pm_buffer_append_byte(buffer, 0);
1084
- } else {
1085
- pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->receiver, buffer);
1086
- }
1087
- if (((pm_index_operator_write_node_t *)node)->call_operator_loc.start == NULL) {
1088
- pm_buffer_append_byte(buffer, 0);
1089
- } else {
1090
- pm_buffer_append_byte(buffer, 1);
1091
- pm_serialize_location(parser, &((pm_index_operator_write_node_t *)node)->call_operator_loc, buffer);
1092
- }
1093
- pm_serialize_location(parser, &((pm_index_operator_write_node_t *)node)->opening_loc, buffer);
1094
- if (((pm_index_operator_write_node_t *)node)->arguments == NULL) {
1095
- pm_buffer_append_byte(buffer, 0);
1096
- } else {
1097
- pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->arguments, buffer);
1098
- }
1099
- pm_serialize_location(parser, &((pm_index_operator_write_node_t *)node)->closing_loc, buffer);
1100
- if (((pm_index_operator_write_node_t *)node)->block == NULL) {
1101
- pm_buffer_append_byte(buffer, 0);
1102
- } else {
1103
- pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->block, buffer);
1104
- }
1105
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_index_operator_write_node_t *)node)->binary_operator));
1106
- pm_serialize_location(parser, &((pm_index_operator_write_node_t *)node)->binary_operator_loc, buffer);
1107
- pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->value, buffer);
1108
- break;
1109
- }
1110
- case PM_INDEX_OR_WRITE_NODE: {
1111
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1112
- if (((pm_index_or_write_node_t *)node)->receiver == NULL) {
1113
- pm_buffer_append_byte(buffer, 0);
1114
- } else {
1115
- pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->receiver, buffer);
1116
- }
1117
- if (((pm_index_or_write_node_t *)node)->call_operator_loc.start == NULL) {
1118
- pm_buffer_append_byte(buffer, 0);
1119
- } else {
1120
- pm_buffer_append_byte(buffer, 1);
1121
- pm_serialize_location(parser, &((pm_index_or_write_node_t *)node)->call_operator_loc, buffer);
1122
- }
1123
- pm_serialize_location(parser, &((pm_index_or_write_node_t *)node)->opening_loc, buffer);
1124
- if (((pm_index_or_write_node_t *)node)->arguments == NULL) {
1125
- pm_buffer_append_byte(buffer, 0);
1126
- } else {
1127
- pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->arguments, buffer);
1128
- }
1129
- pm_serialize_location(parser, &((pm_index_or_write_node_t *)node)->closing_loc, buffer);
1130
- if (((pm_index_or_write_node_t *)node)->block == NULL) {
1131
- pm_buffer_append_byte(buffer, 0);
1132
- } else {
1133
- pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->block, buffer);
1134
- }
1135
- pm_serialize_location(parser, &((pm_index_or_write_node_t *)node)->operator_loc, buffer);
1136
- pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->value, buffer);
1137
- break;
1138
- }
1139
- case PM_INDEX_TARGET_NODE: {
1140
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1141
- pm_serialize_node(parser, (pm_node_t *)((pm_index_target_node_t *)node)->receiver, buffer);
1142
- pm_serialize_location(parser, &((pm_index_target_node_t *)node)->opening_loc, buffer);
1143
- if (((pm_index_target_node_t *)node)->arguments == NULL) {
1144
- pm_buffer_append_byte(buffer, 0);
1145
- } else {
1146
- pm_serialize_node(parser, (pm_node_t *)((pm_index_target_node_t *)node)->arguments, buffer);
1147
- }
1148
- pm_serialize_location(parser, &((pm_index_target_node_t *)node)->closing_loc, buffer);
1149
- if (((pm_index_target_node_t *)node)->block == NULL) {
1150
- pm_buffer_append_byte(buffer, 0);
1151
- } else {
1152
- pm_serialize_node(parser, (pm_node_t *)((pm_index_target_node_t *)node)->block, buffer);
1153
- }
1154
- break;
1155
- }
1156
- case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
1157
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1158
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_and_write_node_t *)node)->name));
1159
- pm_serialize_location(parser, &((pm_instance_variable_and_write_node_t *)node)->name_loc, buffer);
1160
- pm_serialize_location(parser, &((pm_instance_variable_and_write_node_t *)node)->operator_loc, buffer);
1161
- pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_and_write_node_t *)node)->value, buffer);
1162
- break;
1163
- }
1164
- case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
1165
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1166
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_operator_write_node_t *)node)->name));
1167
- pm_serialize_location(parser, &((pm_instance_variable_operator_write_node_t *)node)->name_loc, buffer);
1168
- pm_serialize_location(parser, &((pm_instance_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
1169
- pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_operator_write_node_t *)node)->value, buffer);
1170
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_operator_write_node_t *)node)->binary_operator));
1171
- break;
1172
- }
1173
- case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
1174
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1175
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_or_write_node_t *)node)->name));
1176
- pm_serialize_location(parser, &((pm_instance_variable_or_write_node_t *)node)->name_loc, buffer);
1177
- pm_serialize_location(parser, &((pm_instance_variable_or_write_node_t *)node)->operator_loc, buffer);
1178
- pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_or_write_node_t *)node)->value, buffer);
1179
- break;
1180
- }
1181
- case PM_INSTANCE_VARIABLE_READ_NODE: {
1182
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1183
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_read_node_t *)node)->name));
1184
- break;
1185
- }
1186
- case PM_INSTANCE_VARIABLE_TARGET_NODE: {
1187
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1188
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_target_node_t *)node)->name));
1189
- break;
1190
- }
1191
- case PM_INSTANCE_VARIABLE_WRITE_NODE: {
1192
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1193
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_write_node_t *)node)->name));
1194
- pm_serialize_location(parser, &((pm_instance_variable_write_node_t *)node)->name_loc, buffer);
1195
- pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_write_node_t *)node)->value, buffer);
1196
- pm_serialize_location(parser, &((pm_instance_variable_write_node_t *)node)->operator_loc, buffer);
1197
- break;
1198
- }
1199
- case PM_INTEGER_NODE: {
1200
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1201
- pm_serialize_integer(&((pm_integer_node_t *)node)->value, buffer);
1202
- break;
1203
- }
1204
- case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
1205
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1206
- pm_serialize_location(parser, &((pm_interpolated_match_last_line_node_t *)node)->opening_loc, buffer);
1207
- uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_match_last_line_node_t *)node)->parts.size);
1208
- pm_buffer_append_varuint(buffer, parts_size);
1209
- for (uint32_t index = 0; index < parts_size; index++) {
1210
- pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_match_last_line_node_t *)node)->parts.nodes[index], buffer);
1211
- }
1212
- pm_serialize_location(parser, &((pm_interpolated_match_last_line_node_t *)node)->closing_loc, buffer);
1213
- break;
1214
- }
1215
- case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
1216
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1217
- pm_serialize_location(parser, &((pm_interpolated_regular_expression_node_t *)node)->opening_loc, buffer);
1218
- uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_regular_expression_node_t *)node)->parts.size);
1219
- pm_buffer_append_varuint(buffer, parts_size);
1220
- for (uint32_t index = 0; index < parts_size; index++) {
1221
- pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_regular_expression_node_t *)node)->parts.nodes[index], buffer);
1222
- }
1223
- pm_serialize_location(parser, &((pm_interpolated_regular_expression_node_t *)node)->closing_loc, buffer);
1224
- break;
1225
- }
1226
- case PM_INTERPOLATED_STRING_NODE: {
1227
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1228
- if (((pm_interpolated_string_node_t *)node)->opening_loc.start == NULL) {
1229
- pm_buffer_append_byte(buffer, 0);
1230
- } else {
1231
- pm_buffer_append_byte(buffer, 1);
1232
- pm_serialize_location(parser, &((pm_interpolated_string_node_t *)node)->opening_loc, buffer);
1233
- }
1234
- uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_string_node_t *)node)->parts.size);
1235
- pm_buffer_append_varuint(buffer, parts_size);
1236
- for (uint32_t index = 0; index < parts_size; index++) {
1237
- pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_string_node_t *)node)->parts.nodes[index], buffer);
1238
- }
1239
- if (((pm_interpolated_string_node_t *)node)->closing_loc.start == NULL) {
1240
- pm_buffer_append_byte(buffer, 0);
1241
- } else {
1242
- pm_buffer_append_byte(buffer, 1);
1243
- pm_serialize_location(parser, &((pm_interpolated_string_node_t *)node)->closing_loc, buffer);
1244
- }
1245
- break;
1246
- }
1247
- case PM_INTERPOLATED_SYMBOL_NODE: {
1248
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1249
- if (((pm_interpolated_symbol_node_t *)node)->opening_loc.start == NULL) {
1250
- pm_buffer_append_byte(buffer, 0);
1251
- } else {
1252
- pm_buffer_append_byte(buffer, 1);
1253
- pm_serialize_location(parser, &((pm_interpolated_symbol_node_t *)node)->opening_loc, buffer);
1254
- }
1255
- uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_symbol_node_t *)node)->parts.size);
1256
- pm_buffer_append_varuint(buffer, parts_size);
1257
- for (uint32_t index = 0; index < parts_size; index++) {
1258
- pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_symbol_node_t *)node)->parts.nodes[index], buffer);
1259
- }
1260
- if (((pm_interpolated_symbol_node_t *)node)->closing_loc.start == NULL) {
1261
- pm_buffer_append_byte(buffer, 0);
1262
- } else {
1263
- pm_buffer_append_byte(buffer, 1);
1264
- pm_serialize_location(parser, &((pm_interpolated_symbol_node_t *)node)->closing_loc, buffer);
1265
- }
1266
- break;
1267
- }
1268
- case PM_INTERPOLATED_X_STRING_NODE: {
1269
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1270
- pm_serialize_location(parser, &((pm_interpolated_x_string_node_t *)node)->opening_loc, buffer);
1271
- uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_x_string_node_t *)node)->parts.size);
1272
- pm_buffer_append_varuint(buffer, parts_size);
1273
- for (uint32_t index = 0; index < parts_size; index++) {
1274
- pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_x_string_node_t *)node)->parts.nodes[index], buffer);
1275
- }
1276
- pm_serialize_location(parser, &((pm_interpolated_x_string_node_t *)node)->closing_loc, buffer);
1277
- break;
1278
- }
1279
- case PM_IT_LOCAL_VARIABLE_READ_NODE: {
1280
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1281
- break;
1282
- }
1283
- case PM_IT_PARAMETERS_NODE: {
1284
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1285
- break;
1286
- }
1287
- case PM_KEYWORD_HASH_NODE: {
1288
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1289
- uint32_t elements_size = pm_sizet_to_u32(((pm_keyword_hash_node_t *)node)->elements.size);
1290
- pm_buffer_append_varuint(buffer, elements_size);
1291
- for (uint32_t index = 0; index < elements_size; index++) {
1292
- pm_serialize_node(parser, (pm_node_t *) ((pm_keyword_hash_node_t *)node)->elements.nodes[index], buffer);
1293
- }
1294
- break;
1295
- }
1296
- case PM_KEYWORD_REST_PARAMETER_NODE: {
1297
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1298
- 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.start == NULL) {
1300
- pm_buffer_append_byte(buffer, 0);
1301
- } else {
1302
- pm_buffer_append_byte(buffer, 1);
1303
- pm_serialize_location(parser, &((pm_keyword_rest_parameter_node_t *)node)->name_loc, buffer);
1304
- }
1305
- pm_serialize_location(parser, &((pm_keyword_rest_parameter_node_t *)node)->operator_loc, buffer);
1306
- break;
1307
- }
1308
- case PM_LAMBDA_NODE: {
1309
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1310
- uint32_t locals_size = pm_sizet_to_u32(((pm_lambda_node_t *)node)->locals.size);
1311
- pm_buffer_append_varuint(buffer, locals_size);
1312
- for (uint32_t index = 0; index < locals_size; index++) {
1313
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_lambda_node_t *)node)->locals.ids[index]));
1314
- }
1315
- pm_serialize_location(parser, &((pm_lambda_node_t *)node)->operator_loc, buffer);
1316
- pm_serialize_location(parser, &((pm_lambda_node_t *)node)->opening_loc, buffer);
1317
- pm_serialize_location(parser, &((pm_lambda_node_t *)node)->closing_loc, buffer);
1318
- if (((pm_lambda_node_t *)node)->parameters == NULL) {
1319
- pm_buffer_append_byte(buffer, 0);
1320
- } else {
1321
- pm_serialize_node(parser, (pm_node_t *)((pm_lambda_node_t *)node)->parameters, buffer);
1322
- }
1323
- if (((pm_lambda_node_t *)node)->body == NULL) {
1324
- pm_buffer_append_byte(buffer, 0);
1325
- } else {
1326
- pm_serialize_node(parser, (pm_node_t *)((pm_lambda_node_t *)node)->body, buffer);
1327
- }
1328
- break;
1329
- }
1330
- case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
1331
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1332
- pm_serialize_location(parser, &((pm_local_variable_and_write_node_t *)node)->name_loc, buffer);
1333
- pm_serialize_location(parser, &((pm_local_variable_and_write_node_t *)node)->operator_loc, buffer);
1334
- pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_and_write_node_t *)node)->value, buffer);
1335
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_and_write_node_t *)node)->name));
1336
- pm_buffer_append_varuint(buffer, ((pm_local_variable_and_write_node_t *)node)->depth);
1337
- break;
1338
- }
1339
- case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
1340
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1341
- pm_serialize_location(parser, &((pm_local_variable_operator_write_node_t *)node)->name_loc, buffer);
1342
- pm_serialize_location(parser, &((pm_local_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
1343
- pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_operator_write_node_t *)node)->value, buffer);
1344
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_operator_write_node_t *)node)->name));
1345
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_operator_write_node_t *)node)->binary_operator));
1346
- pm_buffer_append_varuint(buffer, ((pm_local_variable_operator_write_node_t *)node)->depth);
1347
- break;
1348
- }
1349
- case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
1350
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1351
- pm_serialize_location(parser, &((pm_local_variable_or_write_node_t *)node)->name_loc, buffer);
1352
- pm_serialize_location(parser, &((pm_local_variable_or_write_node_t *)node)->operator_loc, buffer);
1353
- pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_or_write_node_t *)node)->value, buffer);
1354
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_or_write_node_t *)node)->name));
1355
- pm_buffer_append_varuint(buffer, ((pm_local_variable_or_write_node_t *)node)->depth);
1356
- break;
1357
- }
1358
- case PM_LOCAL_VARIABLE_READ_NODE: {
1359
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1360
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_read_node_t *)node)->name));
1361
- pm_buffer_append_varuint(buffer, ((pm_local_variable_read_node_t *)node)->depth);
1362
- break;
1363
- }
1364
- case PM_LOCAL_VARIABLE_TARGET_NODE: {
1365
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1366
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_target_node_t *)node)->name));
1367
- pm_buffer_append_varuint(buffer, ((pm_local_variable_target_node_t *)node)->depth);
1368
- break;
1369
- }
1370
- case PM_LOCAL_VARIABLE_WRITE_NODE: {
1371
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1372
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_write_node_t *)node)->name));
1373
- pm_buffer_append_varuint(buffer, ((pm_local_variable_write_node_t *)node)->depth);
1374
- pm_serialize_location(parser, &((pm_local_variable_write_node_t *)node)->name_loc, buffer);
1375
- pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_write_node_t *)node)->value, buffer);
1376
- pm_serialize_location(parser, &((pm_local_variable_write_node_t *)node)->operator_loc, buffer);
1377
- break;
1378
- }
1379
- case PM_MATCH_LAST_LINE_NODE: {
1380
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1381
- pm_serialize_location(parser, &((pm_match_last_line_node_t *)node)->opening_loc, buffer);
1382
- pm_serialize_location(parser, &((pm_match_last_line_node_t *)node)->content_loc, buffer);
1383
- pm_serialize_location(parser, &((pm_match_last_line_node_t *)node)->closing_loc, buffer);
1384
- pm_serialize_string(parser, &((pm_match_last_line_node_t *)node)->unescaped, buffer);
1385
- break;
1386
- }
1387
- case PM_MATCH_PREDICATE_NODE: {
1388
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1389
- pm_serialize_node(parser, (pm_node_t *)((pm_match_predicate_node_t *)node)->value, buffer);
1390
- pm_serialize_node(parser, (pm_node_t *)((pm_match_predicate_node_t *)node)->pattern, buffer);
1391
- pm_serialize_location(parser, &((pm_match_predicate_node_t *)node)->operator_loc, buffer);
1392
- break;
1393
- }
1394
- case PM_MATCH_REQUIRED_NODE: {
1395
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1396
- pm_serialize_node(parser, (pm_node_t *)((pm_match_required_node_t *)node)->value, buffer);
1397
- pm_serialize_node(parser, (pm_node_t *)((pm_match_required_node_t *)node)->pattern, buffer);
1398
- pm_serialize_location(parser, &((pm_match_required_node_t *)node)->operator_loc, buffer);
1399
- break;
1400
- }
1401
- case PM_MATCH_WRITE_NODE: {
1402
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1403
- pm_serialize_node(parser, (pm_node_t *)((pm_match_write_node_t *)node)->call, buffer);
1404
- uint32_t targets_size = pm_sizet_to_u32(((pm_match_write_node_t *)node)->targets.size);
1405
- pm_buffer_append_varuint(buffer, targets_size);
1406
- for (uint32_t index = 0; index < targets_size; index++) {
1407
- pm_serialize_node(parser, (pm_node_t *) ((pm_match_write_node_t *)node)->targets.nodes[index], buffer);
1408
- }
1409
- break;
1410
- }
1411
- case PM_MISSING_NODE: {
1412
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1413
- break;
1414
- }
1415
- case PM_MODULE_NODE: {
1416
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1417
- uint32_t locals_size = pm_sizet_to_u32(((pm_module_node_t *)node)->locals.size);
1418
- pm_buffer_append_varuint(buffer, locals_size);
1419
- for (uint32_t index = 0; index < locals_size; index++) {
1420
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_module_node_t *)node)->locals.ids[index]));
1421
- }
1422
- pm_serialize_location(parser, &((pm_module_node_t *)node)->module_keyword_loc, buffer);
1423
- pm_serialize_node(parser, (pm_node_t *)((pm_module_node_t *)node)->constant_path, buffer);
1424
- if (((pm_module_node_t *)node)->body == NULL) {
1425
- pm_buffer_append_byte(buffer, 0);
1426
- } else {
1427
- pm_serialize_node(parser, (pm_node_t *)((pm_module_node_t *)node)->body, buffer);
1428
- }
1429
- pm_serialize_location(parser, &((pm_module_node_t *)node)->end_keyword_loc, buffer);
1430
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_module_node_t *)node)->name));
1431
- break;
1432
- }
1433
- case PM_MULTI_TARGET_NODE: {
1434
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1435
- uint32_t lefts_size = pm_sizet_to_u32(((pm_multi_target_node_t *)node)->lefts.size);
1436
- pm_buffer_append_varuint(buffer, lefts_size);
1437
- for (uint32_t index = 0; index < lefts_size; index++) {
1438
- pm_serialize_node(parser, (pm_node_t *) ((pm_multi_target_node_t *)node)->lefts.nodes[index], buffer);
1439
- }
1440
- if (((pm_multi_target_node_t *)node)->rest == NULL) {
1441
- pm_buffer_append_byte(buffer, 0);
1442
- } else {
1443
- pm_serialize_node(parser, (pm_node_t *)((pm_multi_target_node_t *)node)->rest, buffer);
1444
- }
1445
- uint32_t rights_size = pm_sizet_to_u32(((pm_multi_target_node_t *)node)->rights.size);
1446
- pm_buffer_append_varuint(buffer, rights_size);
1447
- for (uint32_t index = 0; index < rights_size; index++) {
1448
- pm_serialize_node(parser, (pm_node_t *) ((pm_multi_target_node_t *)node)->rights.nodes[index], buffer);
1449
- }
1450
- if (((pm_multi_target_node_t *)node)->lparen_loc.start == NULL) {
1451
- pm_buffer_append_byte(buffer, 0);
1452
- } else {
1453
- pm_buffer_append_byte(buffer, 1);
1454
- pm_serialize_location(parser, &((pm_multi_target_node_t *)node)->lparen_loc, buffer);
1455
- }
1456
- if (((pm_multi_target_node_t *)node)->rparen_loc.start == NULL) {
1457
- pm_buffer_append_byte(buffer, 0);
1458
- } else {
1459
- pm_buffer_append_byte(buffer, 1);
1460
- pm_serialize_location(parser, &((pm_multi_target_node_t *)node)->rparen_loc, buffer);
1461
- }
1462
- break;
1463
- }
1464
- case PM_MULTI_WRITE_NODE: {
1465
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1466
- uint32_t lefts_size = pm_sizet_to_u32(((pm_multi_write_node_t *)node)->lefts.size);
1467
- pm_buffer_append_varuint(buffer, lefts_size);
1468
- for (uint32_t index = 0; index < lefts_size; index++) {
1469
- pm_serialize_node(parser, (pm_node_t *) ((pm_multi_write_node_t *)node)->lefts.nodes[index], buffer);
1470
- }
1471
- if (((pm_multi_write_node_t *)node)->rest == NULL) {
1472
- pm_buffer_append_byte(buffer, 0);
1473
- } else {
1474
- pm_serialize_node(parser, (pm_node_t *)((pm_multi_write_node_t *)node)->rest, buffer);
1475
- }
1476
- uint32_t rights_size = pm_sizet_to_u32(((pm_multi_write_node_t *)node)->rights.size);
1477
- pm_buffer_append_varuint(buffer, rights_size);
1478
- for (uint32_t index = 0; index < rights_size; index++) {
1479
- pm_serialize_node(parser, (pm_node_t *) ((pm_multi_write_node_t *)node)->rights.nodes[index], buffer);
1480
- }
1481
- if (((pm_multi_write_node_t *)node)->lparen_loc.start == NULL) {
1482
- pm_buffer_append_byte(buffer, 0);
1483
- } else {
1484
- pm_buffer_append_byte(buffer, 1);
1485
- pm_serialize_location(parser, &((pm_multi_write_node_t *)node)->lparen_loc, buffer);
1486
- }
1487
- if (((pm_multi_write_node_t *)node)->rparen_loc.start == NULL) {
1488
- pm_buffer_append_byte(buffer, 0);
1489
- } else {
1490
- pm_buffer_append_byte(buffer, 1);
1491
- pm_serialize_location(parser, &((pm_multi_write_node_t *)node)->rparen_loc, buffer);
1492
- }
1493
- pm_serialize_location(parser, &((pm_multi_write_node_t *)node)->operator_loc, buffer);
1494
- pm_serialize_node(parser, (pm_node_t *)((pm_multi_write_node_t *)node)->value, buffer);
1495
- break;
1496
- }
1497
- case PM_NEXT_NODE: {
1498
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1499
- if (((pm_next_node_t *)node)->arguments == NULL) {
1500
- pm_buffer_append_byte(buffer, 0);
1501
- } else {
1502
- pm_serialize_node(parser, (pm_node_t *)((pm_next_node_t *)node)->arguments, buffer);
1503
- }
1504
- pm_serialize_location(parser, &((pm_next_node_t *)node)->keyword_loc, buffer);
1505
- break;
1506
- }
1507
- case PM_NIL_NODE: {
1508
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1509
- break;
1510
- }
1511
- case PM_NO_KEYWORDS_PARAMETER_NODE: {
1512
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1513
- pm_serialize_location(parser, &((pm_no_keywords_parameter_node_t *)node)->operator_loc, buffer);
1514
- pm_serialize_location(parser, &((pm_no_keywords_parameter_node_t *)node)->keyword_loc, buffer);
1515
- break;
1516
- }
1517
- case PM_NUMBERED_PARAMETERS_NODE: {
1518
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1519
- pm_buffer_append_byte(buffer, ((pm_numbered_parameters_node_t *)node)->maximum);
1520
- break;
1521
- }
1522
- case PM_NUMBERED_REFERENCE_READ_NODE: {
1523
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1524
- pm_buffer_append_varuint(buffer, ((pm_numbered_reference_read_node_t *)node)->number);
1525
- break;
1526
- }
1527
- case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
1528
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1529
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_optional_keyword_parameter_node_t *)node)->name));
1530
- pm_serialize_location(parser, &((pm_optional_keyword_parameter_node_t *)node)->name_loc, buffer);
1531
- pm_serialize_node(parser, (pm_node_t *)((pm_optional_keyword_parameter_node_t *)node)->value, buffer);
1532
- break;
1533
- }
1534
- case PM_OPTIONAL_PARAMETER_NODE: {
1535
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1536
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_optional_parameter_node_t *)node)->name));
1537
- pm_serialize_location(parser, &((pm_optional_parameter_node_t *)node)->name_loc, buffer);
1538
- pm_serialize_location(parser, &((pm_optional_parameter_node_t *)node)->operator_loc, buffer);
1539
- pm_serialize_node(parser, (pm_node_t *)((pm_optional_parameter_node_t *)node)->value, buffer);
1540
- break;
1541
- }
1542
- case PM_OR_NODE: {
1543
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1544
- pm_serialize_node(parser, (pm_node_t *)((pm_or_node_t *)node)->left, buffer);
1545
- pm_serialize_node(parser, (pm_node_t *)((pm_or_node_t *)node)->right, buffer);
1546
- pm_serialize_location(parser, &((pm_or_node_t *)node)->operator_loc, buffer);
1547
- break;
1548
- }
1549
- case PM_PARAMETERS_NODE: {
1550
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1551
- uint32_t requireds_size = pm_sizet_to_u32(((pm_parameters_node_t *)node)->requireds.size);
1552
- pm_buffer_append_varuint(buffer, requireds_size);
1553
- for (uint32_t index = 0; index < requireds_size; index++) {
1554
- pm_serialize_node(parser, (pm_node_t *) ((pm_parameters_node_t *)node)->requireds.nodes[index], buffer);
1555
- }
1556
- uint32_t optionals_size = pm_sizet_to_u32(((pm_parameters_node_t *)node)->optionals.size);
1557
- pm_buffer_append_varuint(buffer, optionals_size);
1558
- for (uint32_t index = 0; index < optionals_size; index++) {
1559
- pm_serialize_node(parser, (pm_node_t *) ((pm_parameters_node_t *)node)->optionals.nodes[index], buffer);
1560
- }
1561
- if (((pm_parameters_node_t *)node)->rest == NULL) {
1562
- pm_buffer_append_byte(buffer, 0);
1563
- } else {
1564
- pm_serialize_node(parser, (pm_node_t *)((pm_parameters_node_t *)node)->rest, buffer);
1565
- }
1566
- uint32_t posts_size = pm_sizet_to_u32(((pm_parameters_node_t *)node)->posts.size);
1567
- pm_buffer_append_varuint(buffer, posts_size);
1568
- for (uint32_t index = 0; index < posts_size; index++) {
1569
- pm_serialize_node(parser, (pm_node_t *) ((pm_parameters_node_t *)node)->posts.nodes[index], buffer);
1570
- }
1571
- uint32_t keywords_size = pm_sizet_to_u32(((pm_parameters_node_t *)node)->keywords.size);
1572
- pm_buffer_append_varuint(buffer, keywords_size);
1573
- for (uint32_t index = 0; index < keywords_size; index++) {
1574
- pm_serialize_node(parser, (pm_node_t *) ((pm_parameters_node_t *)node)->keywords.nodes[index], buffer);
1575
- }
1576
- if (((pm_parameters_node_t *)node)->keyword_rest == NULL) {
1577
- pm_buffer_append_byte(buffer, 0);
1578
- } else {
1579
- pm_serialize_node(parser, (pm_node_t *)((pm_parameters_node_t *)node)->keyword_rest, buffer);
1580
- }
1581
- if (((pm_parameters_node_t *)node)->block == NULL) {
1582
- pm_buffer_append_byte(buffer, 0);
1583
- } else {
1584
- pm_serialize_node(parser, (pm_node_t *)((pm_parameters_node_t *)node)->block, buffer);
1585
- }
1586
- break;
1587
- }
1588
- case PM_PARENTHESES_NODE: {
1589
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1590
- if (((pm_parentheses_node_t *)node)->body == NULL) {
1591
- pm_buffer_append_byte(buffer, 0);
1592
- } else {
1593
- pm_serialize_node(parser, (pm_node_t *)((pm_parentheses_node_t *)node)->body, buffer);
1594
- }
1595
- pm_serialize_location(parser, &((pm_parentheses_node_t *)node)->opening_loc, buffer);
1596
- pm_serialize_location(parser, &((pm_parentheses_node_t *)node)->closing_loc, buffer);
1597
- break;
1598
- }
1599
- case PM_PINNED_EXPRESSION_NODE: {
1600
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1601
- pm_serialize_node(parser, (pm_node_t *)((pm_pinned_expression_node_t *)node)->expression, buffer);
1602
- pm_serialize_location(parser, &((pm_pinned_expression_node_t *)node)->operator_loc, buffer);
1603
- pm_serialize_location(parser, &((pm_pinned_expression_node_t *)node)->lparen_loc, buffer);
1604
- pm_serialize_location(parser, &((pm_pinned_expression_node_t *)node)->rparen_loc, buffer);
1605
- break;
1606
- }
1607
- case PM_PINNED_VARIABLE_NODE: {
1608
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1609
- pm_serialize_node(parser, (pm_node_t *)((pm_pinned_variable_node_t *)node)->variable, buffer);
1610
- pm_serialize_location(parser, &((pm_pinned_variable_node_t *)node)->operator_loc, buffer);
1611
- break;
1612
- }
1613
- case PM_POST_EXECUTION_NODE: {
1614
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1615
- if (((pm_post_execution_node_t *)node)->statements == NULL) {
1616
- pm_buffer_append_byte(buffer, 0);
1617
- } else {
1618
- pm_serialize_node(parser, (pm_node_t *)((pm_post_execution_node_t *)node)->statements, buffer);
1619
- }
1620
- pm_serialize_location(parser, &((pm_post_execution_node_t *)node)->keyword_loc, buffer);
1621
- pm_serialize_location(parser, &((pm_post_execution_node_t *)node)->opening_loc, buffer);
1622
- pm_serialize_location(parser, &((pm_post_execution_node_t *)node)->closing_loc, buffer);
1623
- break;
1624
- }
1625
- case PM_PRE_EXECUTION_NODE: {
1626
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1627
- if (((pm_pre_execution_node_t *)node)->statements == NULL) {
1628
- pm_buffer_append_byte(buffer, 0);
1629
- } else {
1630
- pm_serialize_node(parser, (pm_node_t *)((pm_pre_execution_node_t *)node)->statements, buffer);
1631
- }
1632
- pm_serialize_location(parser, &((pm_pre_execution_node_t *)node)->keyword_loc, buffer);
1633
- pm_serialize_location(parser, &((pm_pre_execution_node_t *)node)->opening_loc, buffer);
1634
- pm_serialize_location(parser, &((pm_pre_execution_node_t *)node)->closing_loc, buffer);
1635
- break;
1636
- }
1637
- case PM_PROGRAM_NODE: {
1638
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1639
- uint32_t locals_size = pm_sizet_to_u32(((pm_program_node_t *)node)->locals.size);
1640
- pm_buffer_append_varuint(buffer, locals_size);
1641
- for (uint32_t index = 0; index < locals_size; index++) {
1642
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_program_node_t *)node)->locals.ids[index]));
1643
- }
1644
- pm_serialize_node(parser, (pm_node_t *)((pm_program_node_t *)node)->statements, buffer);
1645
- break;
1646
- }
1647
- case PM_RANGE_NODE: {
1648
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1649
- if (((pm_range_node_t *)node)->left == NULL) {
1650
- pm_buffer_append_byte(buffer, 0);
1651
- } else {
1652
- pm_serialize_node(parser, (pm_node_t *)((pm_range_node_t *)node)->left, buffer);
1653
- }
1654
- if (((pm_range_node_t *)node)->right == NULL) {
1655
- pm_buffer_append_byte(buffer, 0);
1656
- } else {
1657
- pm_serialize_node(parser, (pm_node_t *)((pm_range_node_t *)node)->right, buffer);
1658
- }
1659
- pm_serialize_location(parser, &((pm_range_node_t *)node)->operator_loc, buffer);
1660
- break;
1661
- }
1662
- case PM_RATIONAL_NODE: {
1663
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1664
- pm_serialize_integer(&((pm_rational_node_t *)node)->numerator, buffer);
1665
- pm_serialize_integer(&((pm_rational_node_t *)node)->denominator, buffer);
1666
- break;
1667
- }
1668
- case PM_REDO_NODE: {
1669
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1670
- break;
1671
- }
1672
- case PM_REGULAR_EXPRESSION_NODE: {
1673
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1674
- pm_serialize_location(parser, &((pm_regular_expression_node_t *)node)->opening_loc, buffer);
1675
- pm_serialize_location(parser, &((pm_regular_expression_node_t *)node)->content_loc, buffer);
1676
- pm_serialize_location(parser, &((pm_regular_expression_node_t *)node)->closing_loc, buffer);
1677
- pm_serialize_string(parser, &((pm_regular_expression_node_t *)node)->unescaped, buffer);
1678
- break;
1679
- }
1680
- case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
1681
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1682
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_required_keyword_parameter_node_t *)node)->name));
1683
- pm_serialize_location(parser, &((pm_required_keyword_parameter_node_t *)node)->name_loc, buffer);
1684
- break;
1685
- }
1686
- case PM_REQUIRED_PARAMETER_NODE: {
1687
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1688
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_required_parameter_node_t *)node)->name));
1689
- break;
1690
- }
1691
- case PM_RESCUE_MODIFIER_NODE: {
1692
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1693
- pm_serialize_node(parser, (pm_node_t *)((pm_rescue_modifier_node_t *)node)->expression, buffer);
1694
- pm_serialize_location(parser, &((pm_rescue_modifier_node_t *)node)->keyword_loc, buffer);
1695
- pm_serialize_node(parser, (pm_node_t *)((pm_rescue_modifier_node_t *)node)->rescue_expression, buffer);
1696
- break;
1697
- }
1698
- case PM_RESCUE_NODE: {
1699
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1700
- pm_serialize_location(parser, &((pm_rescue_node_t *)node)->keyword_loc, buffer);
1701
- uint32_t exceptions_size = pm_sizet_to_u32(((pm_rescue_node_t *)node)->exceptions.size);
1702
- pm_buffer_append_varuint(buffer, exceptions_size);
1703
- for (uint32_t index = 0; index < exceptions_size; index++) {
1704
- pm_serialize_node(parser, (pm_node_t *) ((pm_rescue_node_t *)node)->exceptions.nodes[index], buffer);
1705
- }
1706
- if (((pm_rescue_node_t *)node)->operator_loc.start == NULL) {
1707
- pm_buffer_append_byte(buffer, 0);
1708
- } else {
1709
- pm_buffer_append_byte(buffer, 1);
1710
- pm_serialize_location(parser, &((pm_rescue_node_t *)node)->operator_loc, buffer);
1711
- }
1712
- if (((pm_rescue_node_t *)node)->reference == NULL) {
1713
- pm_buffer_append_byte(buffer, 0);
1714
- } else {
1715
- pm_serialize_node(parser, (pm_node_t *)((pm_rescue_node_t *)node)->reference, buffer);
1716
- }
1717
- if (((pm_rescue_node_t *)node)->then_keyword_loc.start == NULL) {
1718
- pm_buffer_append_byte(buffer, 0);
1719
- } else {
1720
- pm_buffer_append_byte(buffer, 1);
1721
- pm_serialize_location(parser, &((pm_rescue_node_t *)node)->then_keyword_loc, buffer);
1722
- }
1723
- if (((pm_rescue_node_t *)node)->statements == NULL) {
1724
- pm_buffer_append_byte(buffer, 0);
1725
- } else {
1726
- pm_serialize_node(parser, (pm_node_t *)((pm_rescue_node_t *)node)->statements, buffer);
1727
- }
1728
- if (((pm_rescue_node_t *)node)->subsequent == NULL) {
1729
- pm_buffer_append_byte(buffer, 0);
1730
- } else {
1731
- pm_serialize_node(parser, (pm_node_t *)((pm_rescue_node_t *)node)->subsequent, buffer);
1732
- }
1733
- break;
1734
- }
1735
- case PM_REST_PARAMETER_NODE: {
1736
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1737
- 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.start == NULL) {
1739
- pm_buffer_append_byte(buffer, 0);
1740
- } else {
1741
- pm_buffer_append_byte(buffer, 1);
1742
- pm_serialize_location(parser, &((pm_rest_parameter_node_t *)node)->name_loc, buffer);
1743
- }
1744
- pm_serialize_location(parser, &((pm_rest_parameter_node_t *)node)->operator_loc, buffer);
1745
- break;
1746
- }
1747
- case PM_RETRY_NODE: {
1748
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1749
- break;
1750
- }
1751
- case PM_RETURN_NODE: {
1752
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1753
- pm_serialize_location(parser, &((pm_return_node_t *)node)->keyword_loc, buffer);
1754
- if (((pm_return_node_t *)node)->arguments == NULL) {
1755
- pm_buffer_append_byte(buffer, 0);
1756
- } else {
1757
- pm_serialize_node(parser, (pm_node_t *)((pm_return_node_t *)node)->arguments, buffer);
1758
- }
1759
- break;
1760
- }
1761
- case PM_SELF_NODE: {
1762
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1763
- break;
1764
- }
1765
- case PM_SHAREABLE_CONSTANT_NODE: {
1766
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1767
- pm_serialize_node(parser, (pm_node_t *)((pm_shareable_constant_node_t *)node)->write, buffer);
1768
- break;
1769
- }
1770
- case PM_SINGLETON_CLASS_NODE: {
1771
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1772
- uint32_t locals_size = pm_sizet_to_u32(((pm_singleton_class_node_t *)node)->locals.size);
1773
- pm_buffer_append_varuint(buffer, locals_size);
1774
- for (uint32_t index = 0; index < locals_size; index++) {
1775
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_singleton_class_node_t *)node)->locals.ids[index]));
1776
- }
1777
- pm_serialize_location(parser, &((pm_singleton_class_node_t *)node)->class_keyword_loc, buffer);
1778
- pm_serialize_location(parser, &((pm_singleton_class_node_t *)node)->operator_loc, buffer);
1779
- pm_serialize_node(parser, (pm_node_t *)((pm_singleton_class_node_t *)node)->expression, buffer);
1780
- if (((pm_singleton_class_node_t *)node)->body == NULL) {
1781
- pm_buffer_append_byte(buffer, 0);
1782
- } else {
1783
- pm_serialize_node(parser, (pm_node_t *)((pm_singleton_class_node_t *)node)->body, buffer);
1784
- }
1785
- pm_serialize_location(parser, &((pm_singleton_class_node_t *)node)->end_keyword_loc, buffer);
1786
- break;
1787
- }
1788
- case PM_SOURCE_ENCODING_NODE: {
1789
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1790
- break;
1791
- }
1792
- case PM_SOURCE_FILE_NODE: {
1793
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1794
- pm_serialize_string(parser, &((pm_source_file_node_t *)node)->filepath, buffer);
1795
- break;
1796
- }
1797
- case PM_SOURCE_LINE_NODE: {
1798
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1799
- break;
1800
- }
1801
- case PM_SPLAT_NODE: {
1802
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1803
- pm_serialize_location(parser, &((pm_splat_node_t *)node)->operator_loc, buffer);
1804
- if (((pm_splat_node_t *)node)->expression == NULL) {
1805
- pm_buffer_append_byte(buffer, 0);
1806
- } else {
1807
- pm_serialize_node(parser, (pm_node_t *)((pm_splat_node_t *)node)->expression, buffer);
1808
- }
1809
- break;
1810
- }
1811
- case PM_STATEMENTS_NODE: {
1812
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1813
- uint32_t body_size = pm_sizet_to_u32(((pm_statements_node_t *)node)->body.size);
1814
- pm_buffer_append_varuint(buffer, body_size);
1815
- for (uint32_t index = 0; index < body_size; index++) {
1816
- pm_serialize_node(parser, (pm_node_t *) ((pm_statements_node_t *)node)->body.nodes[index], buffer);
1817
- }
1818
- break;
1819
- }
1820
- case PM_STRING_NODE: {
1821
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1822
- if (((pm_string_node_t *)node)->opening_loc.start == NULL) {
1823
- pm_buffer_append_byte(buffer, 0);
1824
- } else {
1825
- pm_buffer_append_byte(buffer, 1);
1826
- pm_serialize_location(parser, &((pm_string_node_t *)node)->opening_loc, buffer);
1827
- }
1828
- pm_serialize_location(parser, &((pm_string_node_t *)node)->content_loc, buffer);
1829
- if (((pm_string_node_t *)node)->closing_loc.start == NULL) {
1830
- pm_buffer_append_byte(buffer, 0);
1831
- } else {
1832
- pm_buffer_append_byte(buffer, 1);
1833
- pm_serialize_location(parser, &((pm_string_node_t *)node)->closing_loc, buffer);
1834
- }
1835
- pm_serialize_string(parser, &((pm_string_node_t *)node)->unescaped, buffer);
1836
- break;
1837
- }
1838
- case PM_SUPER_NODE: {
1839
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1840
- pm_serialize_location(parser, &((pm_super_node_t *)node)->keyword_loc, buffer);
1841
- if (((pm_super_node_t *)node)->lparen_loc.start == NULL) {
1842
- pm_buffer_append_byte(buffer, 0);
1843
- } else {
1844
- pm_buffer_append_byte(buffer, 1);
1845
- pm_serialize_location(parser, &((pm_super_node_t *)node)->lparen_loc, buffer);
1846
- }
1847
- if (((pm_super_node_t *)node)->arguments == NULL) {
1848
- pm_buffer_append_byte(buffer, 0);
1849
- } else {
1850
- pm_serialize_node(parser, (pm_node_t *)((pm_super_node_t *)node)->arguments, buffer);
1851
- }
1852
- if (((pm_super_node_t *)node)->rparen_loc.start == NULL) {
1853
- pm_buffer_append_byte(buffer, 0);
1854
- } else {
1855
- pm_buffer_append_byte(buffer, 1);
1856
- pm_serialize_location(parser, &((pm_super_node_t *)node)->rparen_loc, buffer);
1857
- }
1858
- if (((pm_super_node_t *)node)->block == NULL) {
1859
- pm_buffer_append_byte(buffer, 0);
1860
- } else {
1861
- pm_serialize_node(parser, (pm_node_t *)((pm_super_node_t *)node)->block, buffer);
1862
- }
1863
- break;
1864
- }
1865
- case PM_SYMBOL_NODE: {
1866
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1867
- if (((pm_symbol_node_t *)node)->opening_loc.start == NULL) {
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) {
1874
- pm_buffer_append_byte(buffer, 0);
1875
- } else {
1876
- pm_buffer_append_byte(buffer, 1);
1877
- pm_serialize_location(parser, &((pm_symbol_node_t *)node)->value_loc, buffer);
1878
- }
1879
- if (((pm_symbol_node_t *)node)->closing_loc.start == NULL) {
1880
- pm_buffer_append_byte(buffer, 0);
1881
- } else {
1882
- pm_buffer_append_byte(buffer, 1);
1883
- pm_serialize_location(parser, &((pm_symbol_node_t *)node)->closing_loc, buffer);
1884
- }
1885
- pm_serialize_string(parser, &((pm_symbol_node_t *)node)->unescaped, buffer);
1886
- break;
1887
- }
1888
- case PM_TRUE_NODE: {
1889
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1890
- break;
1891
- }
1892
- case PM_UNDEF_NODE: {
1893
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1894
- uint32_t names_size = pm_sizet_to_u32(((pm_undef_node_t *)node)->names.size);
1895
- pm_buffer_append_varuint(buffer, names_size);
1896
- for (uint32_t index = 0; index < names_size; index++) {
1897
- pm_serialize_node(parser, (pm_node_t *) ((pm_undef_node_t *)node)->names.nodes[index], buffer);
1898
- }
1899
- pm_serialize_location(parser, &((pm_undef_node_t *)node)->keyword_loc, buffer);
1900
- break;
1901
- }
1902
- case PM_UNLESS_NODE: {
1903
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1904
- pm_serialize_location(parser, &((pm_unless_node_t *)node)->keyword_loc, buffer);
1905
- pm_serialize_node(parser, (pm_node_t *)((pm_unless_node_t *)node)->predicate, buffer);
1906
- if (((pm_unless_node_t *)node)->then_keyword_loc.start == NULL) {
1907
- pm_buffer_append_byte(buffer, 0);
1908
- } else {
1909
- pm_buffer_append_byte(buffer, 1);
1910
- pm_serialize_location(parser, &((pm_unless_node_t *)node)->then_keyword_loc, buffer);
1911
- }
1912
- if (((pm_unless_node_t *)node)->statements == NULL) {
1913
- pm_buffer_append_byte(buffer, 0);
1914
- } else {
1915
- pm_serialize_node(parser, (pm_node_t *)((pm_unless_node_t *)node)->statements, buffer);
1916
- }
1917
- if (((pm_unless_node_t *)node)->else_clause == NULL) {
1918
- pm_buffer_append_byte(buffer, 0);
1919
- } else {
1920
- pm_serialize_node(parser, (pm_node_t *)((pm_unless_node_t *)node)->else_clause, buffer);
1921
- }
1922
- if (((pm_unless_node_t *)node)->end_keyword_loc.start == NULL) {
1923
- pm_buffer_append_byte(buffer, 0);
1924
- } else {
1925
- pm_buffer_append_byte(buffer, 1);
1926
- pm_serialize_location(parser, &((pm_unless_node_t *)node)->end_keyword_loc, buffer);
1927
- }
1928
- break;
1929
- }
1930
- case PM_UNTIL_NODE: {
1931
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1932
- pm_serialize_location(parser, &((pm_until_node_t *)node)->keyword_loc, buffer);
1933
- if (((pm_until_node_t *)node)->do_keyword_loc.start == NULL) {
1934
- pm_buffer_append_byte(buffer, 0);
1935
- } else {
1936
- pm_buffer_append_byte(buffer, 1);
1937
- pm_serialize_location(parser, &((pm_until_node_t *)node)->do_keyword_loc, buffer);
1938
- }
1939
- if (((pm_until_node_t *)node)->closing_loc.start == NULL) {
1940
- pm_buffer_append_byte(buffer, 0);
1941
- } else {
1942
- pm_buffer_append_byte(buffer, 1);
1943
- pm_serialize_location(parser, &((pm_until_node_t *)node)->closing_loc, buffer);
1944
- }
1945
- pm_serialize_node(parser, (pm_node_t *)((pm_until_node_t *)node)->predicate, buffer);
1946
- if (((pm_until_node_t *)node)->statements == NULL) {
1947
- pm_buffer_append_byte(buffer, 0);
1948
- } else {
1949
- pm_serialize_node(parser, (pm_node_t *)((pm_until_node_t *)node)->statements, buffer);
1950
- }
1951
- break;
1952
- }
1953
- case PM_WHEN_NODE: {
1954
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1955
- pm_serialize_location(parser, &((pm_when_node_t *)node)->keyword_loc, buffer);
1956
- uint32_t conditions_size = pm_sizet_to_u32(((pm_when_node_t *)node)->conditions.size);
1957
- pm_buffer_append_varuint(buffer, conditions_size);
1958
- for (uint32_t index = 0; index < conditions_size; index++) {
1959
- pm_serialize_node(parser, (pm_node_t *) ((pm_when_node_t *)node)->conditions.nodes[index], buffer);
1960
- }
1961
- if (((pm_when_node_t *)node)->then_keyword_loc.start == NULL) {
1962
- pm_buffer_append_byte(buffer, 0);
1963
- } else {
1964
- pm_buffer_append_byte(buffer, 1);
1965
- pm_serialize_location(parser, &((pm_when_node_t *)node)->then_keyword_loc, buffer);
1966
- }
1967
- if (((pm_when_node_t *)node)->statements == NULL) {
1968
- pm_buffer_append_byte(buffer, 0);
1969
- } else {
1970
- pm_serialize_node(parser, (pm_node_t *)((pm_when_node_t *)node)->statements, buffer);
1971
- }
1972
- break;
1973
- }
1974
- case PM_WHILE_NODE: {
1975
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1976
- pm_serialize_location(parser, &((pm_while_node_t *)node)->keyword_loc, buffer);
1977
- if (((pm_while_node_t *)node)->do_keyword_loc.start == NULL) {
1978
- pm_buffer_append_byte(buffer, 0);
1979
- } else {
1980
- pm_buffer_append_byte(buffer, 1);
1981
- pm_serialize_location(parser, &((pm_while_node_t *)node)->do_keyword_loc, buffer);
1982
- }
1983
- if (((pm_while_node_t *)node)->closing_loc.start == NULL) {
1984
- pm_buffer_append_byte(buffer, 0);
1985
- } else {
1986
- pm_buffer_append_byte(buffer, 1);
1987
- pm_serialize_location(parser, &((pm_while_node_t *)node)->closing_loc, buffer);
1988
- }
1989
- pm_serialize_node(parser, (pm_node_t *)((pm_while_node_t *)node)->predicate, buffer);
1990
- if (((pm_while_node_t *)node)->statements == NULL) {
1991
- pm_buffer_append_byte(buffer, 0);
1992
- } else {
1993
- pm_serialize_node(parser, (pm_node_t *)((pm_while_node_t *)node)->statements, buffer);
1994
- }
1995
- break;
1996
- }
1997
- case PM_X_STRING_NODE: {
1998
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
1999
- pm_serialize_location(parser, &((pm_x_string_node_t *)node)->opening_loc, buffer);
2000
- pm_serialize_location(parser, &((pm_x_string_node_t *)node)->content_loc, buffer);
2001
- pm_serialize_location(parser, &((pm_x_string_node_t *)node)->closing_loc, buffer);
2002
- pm_serialize_string(parser, &((pm_x_string_node_t *)node)->unescaped, buffer);
2003
- break;
2004
- }
2005
- case PM_YIELD_NODE: {
2006
- pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
2007
- pm_serialize_location(parser, &((pm_yield_node_t *)node)->keyword_loc, buffer);
2008
- if (((pm_yield_node_t *)node)->lparen_loc.start == NULL) {
2009
- pm_buffer_append_byte(buffer, 0);
2010
- } else {
2011
- pm_buffer_append_byte(buffer, 1);
2012
- pm_serialize_location(parser, &((pm_yield_node_t *)node)->lparen_loc, buffer);
2013
- }
2014
- if (((pm_yield_node_t *)node)->arguments == NULL) {
2015
- pm_buffer_append_byte(buffer, 0);
2016
- } else {
2017
- pm_serialize_node(parser, (pm_node_t *)((pm_yield_node_t *)node)->arguments, buffer);
2018
- }
2019
- if (((pm_yield_node_t *)node)->rparen_loc.start == NULL) {
2020
- pm_buffer_append_byte(buffer, 0);
2021
- } else {
2022
- pm_buffer_append_byte(buffer, 1);
2023
- pm_serialize_location(parser, &((pm_yield_node_t *)node)->rparen_loc, buffer);
2024
- }
2025
- break;
2026
- }
2027
- }
2028
- }
2029
-
2030
- static void
2031
- pm_serialize_newline_list(pm_newline_list_t *list, pm_buffer_t *buffer) {
2032
- uint32_t size = pm_sizet_to_u32(list->size);
2033
- pm_buffer_append_varuint(buffer, size);
2034
-
2035
- for (uint32_t i = 0; i < size; i++) {
2036
- uint32_t offset = pm_sizet_to_u32(list->offsets[i]);
2037
- pm_buffer_append_varuint(buffer, offset);
2038
- }
2039
- }
2040
-
2041
- static void
2042
- pm_serialize_comment(pm_parser_t *parser, pm_comment_t *comment, pm_buffer_t *buffer) {
2043
- // serialize type
2044
- pm_buffer_append_byte(buffer, (uint8_t) comment->type);
2045
-
2046
- // serialize location
2047
- pm_serialize_location(parser, &comment->location, buffer);
2048
- }
2049
-
2050
- /**
2051
- * Serialize the given list of comments to the given buffer.
2052
- */
2053
- void
2054
- pm_serialize_comment_list(pm_parser_t *parser, pm_list_t *list, pm_buffer_t *buffer) {
2055
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(pm_list_size(list)));
2056
-
2057
- pm_comment_t *comment;
2058
- for (comment = (pm_comment_t *) list->head; comment != NULL; comment = (pm_comment_t *) comment->node.next) {
2059
- pm_serialize_comment(parser, comment, buffer);
2060
- }
2061
- }
2062
-
2063
- static void
2064
- pm_serialize_magic_comment(pm_parser_t *parser, pm_magic_comment_t *magic_comment, pm_buffer_t *buffer) {
2065
- // serialize key location
2066
- pm_buffer_append_varuint(buffer, pm_ptrdifft_to_u32(magic_comment->key_start - parser->start));
2067
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(magic_comment->key_length));
2068
-
2069
- // serialize value location
2070
- pm_buffer_append_varuint(buffer, pm_ptrdifft_to_u32(magic_comment->value_start - parser->start));
2071
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(magic_comment->value_length));
2072
- }
2073
-
2074
- static void
2075
- pm_serialize_magic_comment_list(pm_parser_t *parser, pm_list_t *list, pm_buffer_t *buffer) {
2076
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(pm_list_size(list)));
2077
-
2078
- pm_magic_comment_t *magic_comment;
2079
- 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(parser, magic_comment, buffer);
2081
- }
2082
- }
2083
-
2084
- static void
2085
- pm_serialize_data_loc(const pm_parser_t *parser, pm_buffer_t *buffer) {
2086
- if (parser->data_loc.end == NULL) {
2087
- pm_buffer_append_byte(buffer, 0);
2088
- } else {
2089
- pm_buffer_append_byte(buffer, 1);
2090
- pm_serialize_location(parser, &parser->data_loc, buffer);
2091
- }
2092
- }
2093
-
2094
- static void
2095
- pm_serialize_diagnostic(pm_parser_t *parser, pm_diagnostic_t *diagnostic, pm_buffer_t *buffer) {
2096
- // serialize the type
2097
- pm_buffer_append_varuint(buffer, (uint32_t) diagnostic->diag_id);
2098
-
2099
- // serialize message
2100
- size_t message_length = strlen(diagnostic->message);
2101
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(message_length));
2102
- pm_buffer_append_string(buffer, diagnostic->message, message_length);
2103
-
2104
- // serialize location
2105
- pm_serialize_location(parser, &diagnostic->location, buffer);
2106
-
2107
- pm_buffer_append_byte(buffer, diagnostic->level);
2108
- }
2109
-
2110
- static void
2111
- pm_serialize_diagnostic_list(pm_parser_t *parser, pm_list_t *list, pm_buffer_t *buffer) {
2112
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(pm_list_size(list)));
2113
-
2114
- pm_diagnostic_t *diagnostic;
2115
- for (diagnostic = (pm_diagnostic_t *) list->head; diagnostic != NULL; diagnostic = (pm_diagnostic_t *) diagnostic->node.next) {
2116
- pm_serialize_diagnostic(parser, diagnostic, buffer);
2117
- }
2118
- }
2119
-
2120
- /**
2121
- * Serialize the name of the encoding to the buffer.
2122
- */
2123
- void
2124
- pm_serialize_encoding(const pm_encoding_t *encoding, pm_buffer_t *buffer) {
2125
- size_t encoding_length = strlen(encoding->name);
2126
- pm_buffer_append_varuint(buffer, pm_sizet_to_u32(encoding_length));
2127
- pm_buffer_append_string(buffer, encoding->name, encoding_length);
2128
- }
2129
-
2130
- static void
2131
- pm_serialize_metadata(pm_parser_t *parser, pm_buffer_t *buffer) {
2132
- pm_serialize_encoding(parser->encoding, buffer);
2133
- pm_buffer_append_varsint(buffer, parser->start_line);
2134
- pm_serialize_newline_list(&parser->newline_list, buffer);
2135
- pm_serialize_comment_list(parser, &parser->comment_list, buffer);
2136
- pm_serialize_magic_comment_list(parser, &parser->magic_comment_list, buffer);
2137
- pm_serialize_data_loc(parser, buffer);
2138
- pm_serialize_diagnostic_list(parser, &parser->error_list, buffer);
2139
- pm_serialize_diagnostic_list(parser, &parser->warning_list, buffer);
2140
- }
2141
-
2142
- #line 275 "prism/templates/src/serialize.c.erb"
2143
- /**
2144
- * Serialize the metadata, nodes, and constant pool.
2145
- */
2146
- void
2147
- pm_serialize_content(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer) {
2148
- pm_serialize_metadata(parser, buffer);
2149
-
2150
- // Here we're going to leave space for the offset of the constant pool in
2151
- // the buffer.
2152
- size_t offset = buffer->length;
2153
- pm_buffer_append_zeroes(buffer, 4);
2154
-
2155
- // Next, encode the length of the constant pool.
2156
- pm_buffer_append_varuint(buffer, parser->constant_pool.size);
2157
-
2158
- // Now we're going to serialize the content of the node.
2159
- pm_serialize_node(parser, node, buffer);
2160
-
2161
- // Now we're going to serialize the offset of the constant pool back where
2162
- // we left space for it.
2163
- uint32_t length = pm_sizet_to_u32(buffer->length);
2164
- memcpy(buffer->value + offset, &length, sizeof(uint32_t));
2165
-
2166
- // Now we're going to serialize the constant pool.
2167
- offset = buffer->length;
2168
- pm_buffer_append_zeroes(buffer, parser->constant_pool.size * 8);
2169
-
2170
- for (uint32_t index = 0; index < parser->constant_pool.capacity; index++) {
2171
- pm_constant_pool_bucket_t *bucket = &parser->constant_pool.buckets[index];
2172
-
2173
- // If we find a constant at this index, serialize it at the correct
2174
- // index in the buffer.
2175
- if (bucket->id != 0) {
2176
- pm_constant_t *constant = &parser->constant_pool.constants[bucket->id - 1];
2177
- size_t buffer_offset = offset + ((((size_t)bucket->id) - 1) * 8);
2178
-
2179
- if (bucket->type == PM_CONSTANT_POOL_BUCKET_OWNED || bucket->type == PM_CONSTANT_POOL_BUCKET_CONSTANT) {
2180
- // Since this is an owned or constant constant, we are going to
2181
- // write its contents into the buffer after the constant pool.
2182
- // So effectively in place of the source offset, we have a
2183
- // buffer offset. We will add a leading 1 to indicate that this
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
- }
2199
-
2200
- // Now we can write the length of the constant into the buffer.
2201
- uint32_t constant_length = pm_sizet_to_u32(constant->length);
2202
- memcpy(buffer->value + buffer_offset + 4, &constant_length, 4);
2203
- }
2204
- }
2205
- }
2206
-
2207
- static void
2208
- serialize_token(void *data, pm_parser_t *parser, pm_token_t *token) {
2209
- pm_buffer_t *buffer = (pm_buffer_t *) data;
2210
-
2211
- pm_buffer_append_varuint(buffer, token->type);
2212
- pm_buffer_append_varuint(buffer, pm_ptrdifft_to_u32(token->start - parser->start));
2213
- pm_buffer_append_varuint(buffer, pm_ptrdifft_to_u32(token->end - token->start));
2214
- pm_buffer_append_varuint(buffer, parser->lex_state);
2215
- }
2216
-
2217
- /**
2218
- * Lex the given source and serialize to the given buffer.
2219
- */
2220
- PRISM_EXPORTED_FUNCTION void
2221
- pm_serialize_lex(pm_buffer_t *buffer, const uint8_t *source, size_t size, const char *data) {
2222
- pm_options_t options = { 0 };
2223
- pm_options_read(&options, data);
2224
-
2225
- pm_parser_t parser;
2226
- pm_parser_init(&parser, source, size, &options);
2227
-
2228
- pm_lex_callback_t lex_callback = (pm_lex_callback_t) {
2229
- .data = (void *) buffer,
2230
- .callback = serialize_token,
2231
- };
2232
-
2233
- parser.lex_callback = &lex_callback;
2234
- pm_node_t *node = pm_parse(&parser);
2235
-
2236
- // Append 0 to mark end of tokens.
2237
- pm_buffer_append_byte(buffer, 0);
2238
-
2239
- pm_serialize_metadata(&parser, buffer);
2240
-
2241
- pm_node_destroy(&parser, node);
2242
- pm_parser_free(&parser);
2243
- pm_options_free(&options);
2244
- }
2245
-
2246
- /**
2247
- * Parse and serialize both the AST and the tokens represented by the given
2248
- * source to the given buffer.
2249
- */
2250
- PRISM_EXPORTED_FUNCTION void
2251
- pm_serialize_parse_lex(pm_buffer_t *buffer, const uint8_t *source, size_t size, const char *data) {
2252
- pm_options_t options = { 0 };
2253
- pm_options_read(&options, data);
2254
-
2255
- pm_parser_t parser;
2256
- pm_parser_init(&parser, source, size, &options);
2257
-
2258
- pm_lex_callback_t lex_callback = (pm_lex_callback_t) {
2259
- .data = (void *) buffer,
2260
- .callback = serialize_token,
2261
- };
2262
-
2263
- parser.lex_callback = &lex_callback;
2264
- pm_node_t *node = pm_parse(&parser);
2265
-
2266
- pm_buffer_append_byte(buffer, 0);
2267
- pm_serialize(&parser, node, buffer);
2268
-
2269
- pm_node_destroy(&parser, node);
2270
- pm_parser_free(&parser);
2271
- pm_options_free(&options);
2272
- }
2273
-
2274
- #endif