@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
@@ -0,0 +1,449 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NodeHandling
4
+ # AST levels to emit before truncating. Each emitted level costs at most two JSON nesting
5
+ # levels (the node object and the array/hash holding its children), so the JSON nesting limit
6
+ # must always be derived from this cap via .json_nesting_limit — JSON.generate's default of
7
+ # 100 dies at an AST depth of ~49, which used to make serialization fail and cost the whole
8
+ # file for inputs this cap never saw.
9
+ MAX_NESTING_DEPTH = 250
10
+
11
+ # The JSON.generate max_nesting that always accepts a tree truncated at +max_depth+ AST
12
+ # levels (+2 for the deepest node's own meta_data, plus headroom).
13
+ def self.json_nesting_limit(max_depth = MAX_NESTING_DEPTH)
14
+ max_depth * 2 + 16
15
+ end
16
+
17
+ # A pre-rendered piece of output. Payload values are never Fragments, which is how the writer
18
+ # below tells punctuation it queued from data it still has to render.
19
+ Fragment = Struct.new(:text)
20
+
21
+ OPEN_OBJECT = Fragment.new("{").freeze
22
+ CLOSE_OBJECT = Fragment.new("}").freeze
23
+ CLOSE_ARRAY = Fragment.new("]").freeze
24
+ COMMA = Fragment.new(",").freeze
25
+
26
+ # Serializes the payload without recursion.
27
+ #
28
+ # `JSON.generate` recurses once per nesting level, and how deep that can go is a property of the
29
+ # runtime, not of the JSON: on CRuby the C extension manages ~100_000 levels, but on TruffleRuby
30
+ # it runs through Sulong and a tree truncated at the default cap of 250 AST levels exhausts a
31
+ # worker thread's stack. The file was then logged and skipped — the outcome the depth cap exists
32
+ # to prevent, and one that made the output depend on the interpreter. Iterating has no depth
33
+ # limit, so a file that parses is emitted on every runtime. Scalars still go through the stdlib,
34
+ # since that is where the escaping rules live.
35
+ def self.dump_json(value)
36
+ out = +""
37
+ stack = [value]
38
+
39
+ until stack.empty?
40
+ item = stack.pop
41
+ case item
42
+ when Fragment
43
+ out << item.text
44
+ when Hash
45
+ out << "{"
46
+ queued = []
47
+ item.each_with_index do |(key, nested), index|
48
+ queued << Fragment.new("#{index.zero? ? "" : ","}#{key.to_s.to_json}:")
49
+ queued << nested
50
+ end
51
+ queued << CLOSE_OBJECT
52
+ stack.concat(queued.reverse!)
53
+ when Array
54
+ out << "["
55
+ queued = []
56
+ item.each_with_index do |nested, index|
57
+ queued << COMMA unless index.zero?
58
+ queued << nested
59
+ end
60
+ queued << CLOSE_ARRAY
61
+ stack.concat(queued.reverse!)
62
+ else
63
+ out << json_scalar(item)
64
+ end
65
+ end
66
+
67
+ out
68
+ end
69
+
70
+ # Scalars are rendered exactly as JSON.generate would, including UTF-8 passed through unescaped.
71
+ def self.json_scalar(value)
72
+ case value
73
+ when nil then "null"
74
+ when true then "true"
75
+ when false then "false"
76
+ when Integer then value.to_s
77
+ when Symbol then value.to_s.to_json
78
+ else value.to_json
79
+ end
80
+ end
81
+
82
+ SINGLETONS = %i[nil true false].freeze
83
+ LITERALS = %i[int float rational complex str sym __FILE__ __LINE__ __ENCODING__].freeze
84
+ CALLS = %i[send csend].freeze
85
+ DYNAMIC_LITERALS = %i[dsym dstr].freeze
86
+ CONTROL_KW = %i[break next].freeze
87
+ ARGUMENTS = %i[arg restarg blockarg kwrestarg shadowarg itarg blocknilarg].freeze
88
+ KW_ARGUMENTS = %i[kwarg kwnilarg kwoptarg].freeze
89
+ REFS = %i[nth_ref back_ref].freeze
90
+ FORWARD_ARGUMENTS = %i[forward_args forwarded_args forward_arg forwarded_restarg
91
+ forwarded_kwrestarg].freeze
92
+ ASSIGNMENTS = %i[or_asgn and_asgn lvasgn ivasgn gvasgn cvasgn match_with_lvasgn match_write].freeze
93
+ BIN_OP = %i[and or in_match match_pattern match_pattern_p].freeze
94
+ ACCESS = %i[self ident lvar cvar gvar ivar splat kwsplat block_pass
95
+ match_var].freeze
96
+ QUAL_ACCESS = [:casgn].freeze
97
+ COLLECTIONS = %i[args array hash mlhs hash_pattern array_pattern
98
+ array_pattern_with_tail find_pattern kwargs undef procarg0].freeze
99
+ SPECIAL_CMD = %i[yield super defined? xstr not].freeze
100
+ RANGE_OP = %i[erange irange eflipflop iflipflop].freeze
101
+
102
+ # A missing location member is expected for synthesized nodes, so it degrades to -1. The rescue
103
+ # is narrow on purpose (plan 03 §9): a bare `rescue` also hid genuine shape changes in the
104
+ # parser's location classes behind a plausible-looking offset.
105
+ def self.fetch_member(loc, method)
106
+ loc.public_send(method)
107
+ rescue NoMethodError => e
108
+ RubyAstGen::Logger.debug "No location member '#{method}' on #{loc.class}: #{e.message}"
109
+ -1
110
+ end
111
+
112
+ # Syntax facts the parser's locations already know, attached at the node level (plan 02 §4).
113
+ # Keys are emitted only when the fact holds, so the plain form stays key-less — the same
114
+ # convention as optional per-type keys like superclass. All values were verified identical on
115
+ # the prism translation and the parser gem.
116
+ #
117
+ # send/csend: call_operator ("." | "::" | "&.") when the call carries an explicit operator,
118
+ # and has_parentheses when it was written with parentheses. A block node's begin/end are
119
+ # `do`/`{` and `end`/`}`, so blocks deliberately get no has_parentheses key.
120
+ # heredoc strings: heredoc: true plus the character offsets of the body. meta_data covers
121
+ # only the `<<~SQL` marker, so these offsets are the only way to reach the body text
122
+ # without re-lexing the source.
123
+ # array: percent_array ("%w" | "%i" | "%W" | "%I") when the literal used percent notation,
124
+ # regardless of the delimiter that follows it.
125
+ def self.syntax_metadata(node_type, loc)
126
+ metadata = {}
127
+ return metadata unless loc
128
+
129
+ if CALLS.include?(node_type)
130
+ dot = loc.respond_to?(:dot) ? loc.dot : nil
131
+ metadata[:call_operator] = dot.source if dot
132
+ metadata[:has_parentheses] = true if loc.begin && loc.end
133
+ elsif loc.is_a?(::Parser::Source::Map::Heredoc)
134
+ metadata[:heredoc] = true
135
+ metadata[:heredoc_body_start] = loc.heredoc_body.begin_pos
136
+ metadata[:heredoc_body_end] = loc.heredoc_body.end_pos
137
+ elsif node_type == :array && loc.begin
138
+ prefix = loc.begin.source[/\A%[wiWI]/]
139
+ metadata[:percent_array] = prefix if prefix
140
+ end
141
+ metadata
142
+ end
143
+
144
+ # +state+ accumulates the truncation count for one file. It is threaded through the recursion
145
+ # (not kept in module state) because 10 worker threads share this module: a shared counter
146
+ # would race and attribute one file's truncations to another. The caller reads the count to
147
+ # emit one warning per file and the top-level truncated_nodes key.
148
+ def self.ast_to_json(node, code, current_depth: 0, file_path: nil, max_depth: MAX_NESTING_DEPTH,
149
+ state: {truncated: 0, first_type: nil})
150
+ return unless node.is_a?(Parser::AST::Node)
151
+
152
+ loc = node.location
153
+ meta_data = {
154
+ start_line: fetch_member(loc, :line),
155
+ start_column: fetch_member(loc, :column),
156
+ end_line: fetch_member(loc, :last_line),
157
+ end_column: fetch_member(loc, :last_column),
158
+ offset_start: loc&.expression&.begin_pos,
159
+ offset_end: loc&.expression&.end_pos,
160
+ code: extract_code_snippet(loc, code)
161
+ }
162
+ if current_depth >= max_depth
163
+ state[:truncated] += 1
164
+ state[:first_type] ||= node.type.to_s
165
+ return {type: node.type.to_s, meta_data: meta_data, nested: true, truncated: true}
166
+ end
167
+
168
+ json_children = node.children.map do |child|
169
+ if child.is_a?(Parser::AST::Node)
170
+ ast_to_json(child, code, current_depth: current_depth + 1, file_path: file_path,
171
+ max_depth: max_depth, state: state) # Recursively process child nodes
172
+ else
173
+ child # If it's not a node (e.g., literal), return as-is
174
+ end
175
+ end
176
+ base_hash = {
177
+ type: node.type.to_s, # Node type (e.g., :send, :def, etc.)
178
+ meta_data: meta_data,
179
+ children: json_children
180
+ }
181
+ add_node_properties(node.type, base_hash, file_path)
182
+ # Truncated nodes keep their documented {type, meta_data, nested, truncated} shape, which is
183
+ # why this happens after the truncation return above.
184
+ metadata = syntax_metadata(node.type, loc)
185
+ base_hash.merge!(metadata) unless metadata.empty?
186
+ # Statement lists live at every level (file root, class/module bodies, method bodies), and a
187
+ # `sig` block attaches to the def that follows it in the same list, so the check runs on
188
+ # every node's children (plan 02 §3).
189
+ mark_sig_attachments(node, json_children)
190
+ base_hash
191
+ end
192
+
193
+ # Marks `has_sig: true` on a def/defs whose immediately preceding sibling in the same
194
+ # statement list is a Sorbet `sig` block (`sig { params(...).returns(...) }` parses as a block
195
+ # on `send nil, :sig`). The consumer otherwise has to stitch the two statements by position.
196
+ # Like the other syntax facts, the key is emitted only when the fact holds.
197
+ def self.mark_sig_attachments(parent_node, json_children)
198
+ raw_children = parent_node.children
199
+ return unless raw_children.is_a?(Array)
200
+
201
+ json_children.each_with_index do |json_child, index|
202
+ next if index.zero?
203
+ next unless sig_block?(raw_children[index - 1])
204
+ next unless json_child.is_a?(Hash) && !json_child[:truncated] && %w[def defs].include?(json_child[:type])
205
+
206
+ json_child[:has_sig] = true
207
+ end
208
+ end
209
+
210
+ # True for every statement Sorbet accepts as a signature, all of which are a `sig` block
211
+ # somewhere underneath:
212
+ #
213
+ # sig { void } block on `send nil, :sig`
214
+ # sig(:final) { void } arguments are irrelevant
215
+ # sig { void }.checked(:never) the block is the receiver of a trailing send chain
216
+ # T::Sig::WithoutRuntime.sig { void } sig called on a constant path
217
+ #
218
+ # The trailing-send and constant-receiver forms are the reason this is not a single shape test:
219
+ # missing them marks a real signature as absent, and a consumer reading has_sig as authoritative
220
+ # (chen does) would type those methods as untyped.
221
+ def self.sig_block?(node)
222
+ return false unless node.is_a?(Parser::AST::Node)
223
+
224
+ case node.type
225
+ when :block then sig_call?(node.children[0])
226
+ when :send then sig_block?(node.children[0]) # `.checked(:never)` and friends
227
+ else false
228
+ end
229
+ end
230
+
231
+ def self.sig_call?(node)
232
+ node.is_a?(Parser::AST::Node) &&
233
+ node.type == :send &&
234
+ node.children[1] == :sig &&
235
+ sig_receiver?(node.children[0])
236
+ end
237
+
238
+ # No receiver (`extend T::Sig`), or a constant path such as T::Sig::WithoutRuntime. Anything
239
+ # else — `helper.sig { }` — is some other DSL, not a signature.
240
+ def self.sig_receiver?(receiver)
241
+ return true if receiver.nil?
242
+
243
+ receiver.is_a?(Parser::AST::Node) && receiver.type == :const &&
244
+ (receiver.children[0].nil? || sig_receiver?(receiver.children[0]))
245
+ end
246
+
247
+ def self.trim_string(string)
248
+ string.tr("\n", " ").gsub(/(\s)+/, " ")
249
+ end
250
+
251
+ def self.extract_code_snippet(location, source_code)
252
+ return nil unless location
253
+
254
+ range = location.expression || location
255
+ return nil unless range.is_a?(Parser::Source::Range)
256
+
257
+ snippet = source_code[range.begin_pos...range.end_pos]
258
+ trim_string(snippet.strip)
259
+ end
260
+
261
+ def self.add_node_properties(node_type, base_map, file_path)
262
+ children = base_map.delete(:children)
263
+
264
+ case node_type
265
+ when :def
266
+ base_map[:name] = children[0]
267
+ base_map[:arguments] = children[1]
268
+ base_map[:body] = children[2]
269
+ when :defs
270
+ base_map[:base] = children[0]
271
+ base_map[:name] = children[1]
272
+ base_map[:arguments] = children[2]
273
+ base_map[:body] = children[3]
274
+
275
+ when :class
276
+ base_map[:name] = children[0]
277
+ base_map[:superclass] = children[1] if children[1]
278
+ base_map[:body] = children[2]
279
+ when :sclass
280
+ base_map[:name] = children[0]
281
+ base_map[:def] = children[1]
282
+ base_map[:body] = children[2]
283
+ when :module
284
+ base_map[:name] = children[0]
285
+ base_map[:body] = children[1]
286
+
287
+ when :if
288
+ base_map[:condition] = children[0]
289
+ base_map[:then_branch] = children[1]
290
+ base_map[:else_branch] = children[2] if children[2]
291
+ when :while, :while_post
292
+ base_map[:condition] = children[0]
293
+ base_map[:body] = children[1]
294
+ when :for, :for_post
295
+ base_map[:variable] = children[0]
296
+ base_map[:collection] = children[1]
297
+ base_map[:body] = children[2]
298
+ when :block
299
+ base_map[:call_name] = children[0]
300
+ base_map[:arguments] = children[1]
301
+ base_map[:body] = children[2]
302
+ when :begin
303
+ base_map[:body] = children
304
+ when :kwbegin
305
+ base_map[:body] = children
306
+ when :case
307
+ base_map[:case_expression] = children[0]
308
+ base_map[:when_clauses] = children[1..-2]
309
+ base_map[:else_clause] = children[-1] if children[-1]
310
+ when :when
311
+ base_map[:conditions] = children[0..-2]
312
+ base_map[:then_branch] = children[-1]
313
+ when :unless
314
+ base_map[:condition] = children[0]
315
+ base_map[:then_branch] = children[1]
316
+ when :until, :until_post
317
+ base_map[:condition] = children[0]
318
+ base_map[:body] = children[1]
319
+ when :rescue, :case_match
320
+ base_map[:statement] = children[0]
321
+ base_map[:bodies] = children[1..-2]
322
+ base_map[:else_clause] = children[-1] if children[-1]
323
+ when :match_as
324
+ base_map[:value] = children[0]
325
+ base_map[:as] = children[1]
326
+ when :in_pattern
327
+ base_map[:pattern] = children[0]
328
+ base_map[:guard] = children[1]
329
+ base_map[:body] = children[2]
330
+ when :const_pattern
331
+ base_map[:const] = children[0]
332
+ base_map[:pattern] = children[1]
333
+ when :if_guard, :unless_guard
334
+ base_map[:condition] = children[0]
335
+ when :match_alt
336
+ base_map[:left] = children[0]
337
+ base_map[:right] = children[1]
338
+ when :match_current_line
339
+ base_map[:value] = children[0]
340
+ when :match_with_trailing_comma
341
+ base_map[:value] = children[0]
342
+ when :resbody
343
+ base_map[:exec_list] = children[0]
344
+ base_map[:exec_var] = children[1]
345
+ base_map[:body] = children[2]
346
+ when :ensure
347
+ base_map[:statement] = children[0]
348
+ base_map[:body] = children[1]
349
+ when :regopt
350
+ # `/x/imx` parses to s(:regopt, :i, :m, :x), so a single `value` loses every flag but the
351
+ # first. `value` stays as it was for readers that predate `options`; `options` carries all
352
+ # of them, and an option-less regexp keeps both keys absent.
353
+ base_map[:value] = children[0] if children[0]
354
+ base_map[:options] = children.compact.map(&:to_s) if children.compact.any?
355
+ when *REFS, :redo
356
+ base_map[:value] = children[0] if children[0]
357
+ when :return
358
+ base_map[:values] = children if children[0]
359
+ when *CONTROL_KW
360
+ base_map[:arguments] = children[0] if children[0]
361
+ when *FORWARD_ARGUMENTS, :empty_else, :lambda, :retry, :zsuper, :match_nil_pattern
362
+ # refer to :type
363
+ when *QUAL_ACCESS
364
+ base_map[:base] = children[0]
365
+ base_map[:lhs] = children[1]
366
+ base_map[:rhs] = children[2]
367
+ when :op_asgn
368
+ base_map[:lhs] = children[0]
369
+ base_map[:op] = children[1]
370
+ base_map[:rhs] = children[2]
371
+ when *ASSIGNMENTS
372
+ base_map[:lhs] = children[0]
373
+ base_map[:rhs] = children[1] if children[1]
374
+ when *BIN_OP
375
+ base_map[:lhs] = children[0]
376
+ base_map[:rhs] = children[1]
377
+ when *SINGLETONS
378
+ base_map[:value] = node_type
379
+ when *KW_ARGUMENTS
380
+ base_map[:key] = children[0]
381
+ base_map[:value] = children[1]
382
+ when *LITERALS, *ARGUMENTS, *ACCESS, :arg_expr, :blockarg_expr, :match_rest,
383
+ :numargs, :objc_restarg, :objc_varargs, :restarg_expr
384
+ base_map[:value] = children[0]
385
+ when :cbase
386
+ base_map[:base] = children[0]
387
+ base_map[:name] = children[1]
388
+
389
+ when *CALLS
390
+ base_map[:receiver] = children[0]
391
+ base_map[:name] = children[1]
392
+ base_map[:arguments] = children[2..] # Variable arguments
393
+ when :index
394
+ base_map[:receiver] = children[0]
395
+ base_map[:arguments] = children[1..]
396
+ when :indexasgn
397
+ base_map[:receiver] = children[0]
398
+ base_map[:arguments] = children[1...-1] || []
399
+ base_map[:value] = children[-1]
400
+ when *SPECIAL_CMD
401
+ base_map[:arguments] = children
402
+
403
+ when :pair, :optarg
404
+ base_map[:key] = children[0]
405
+ base_map[:value] = children[1]
406
+ when :objc_kwarg
407
+ base_map[:key] = children[0]
408
+ base_map[:value] = children[1]
409
+ when :const
410
+ base_map[:base] = children[0]
411
+ base_map[:name] = children[1]
412
+ when :alias
413
+ base_map[:alias] = children[0]
414
+ base_map[:name] = children[1]
415
+ when :regexp
416
+ base_map[:value] = children[0]
417
+ base_map[:opt] = children[1]
418
+ when *RANGE_OP
419
+ base_map[:start] = children[0]
420
+ base_map[:end] = children[1]
421
+ when :itblock
422
+ base_map[:call] = children[0]
423
+ base_map[:param] = children[1]
424
+ base_map[:body] = children[2]
425
+ when :numblock
426
+ base_map[:call] = children[0]
427
+ base_map[:param_idx] = children[1]
428
+ base_map[:body] = children[2]
429
+
430
+ when :masgn
431
+ base_map[:lhs] = children[0]
432
+ base_map[:rhs] = children[1]
433
+
434
+ when :preexe, :postexe
435
+ base_map[:body] = children[0]
436
+
437
+ when :pin
438
+ base_map[:value] = children[0]
439
+
440
+ when *COLLECTIONS, *DYNAMIC_LITERALS
441
+ # put :children back
442
+ base_map[:children] = children
443
+
444
+ else
445
+ RubyAstGen::Logger.warn "Unhandled AST node type: #{node_type} - #{file_path}"
446
+ base_map[:children] = children
447
+ end
448
+ end
449
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyAstGen
4
- VERSION = "1.3.0"
4
+ VERSION = "2.0.1"
5
5
  end