rbs 4.1.0.pre.2-java

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 (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
data/core/ruby_vm.rbs ADDED
@@ -0,0 +1,809 @@
1
+ # <!-- rdoc-file=vm.c -->
2
+ # The RubyVM module only exists on MRI. `RubyVM` is not defined in other Ruby
3
+ # implementations such as JRuby and TruffleRuby.
4
+ #
5
+ # The RubyVM module provides some access to MRI internals. This module is for
6
+ # very limited purposes, such as debugging, prototyping, and research. Normal
7
+ # users must not use it. This module is not portable between Ruby
8
+ # implementations.
9
+ #
10
+ class RubyVM < Object
11
+ end
12
+
13
+ # <!-- rdoc-file=vm.c -->
14
+ # ::RubyVM::DEFAULT_PARAMS This constant exposes the VM's default parameters.
15
+ # Note that changing these values does not affect VM execution. Specification is
16
+ # not stable and you should not depend on this value. Of course, this constant
17
+ # is MRI specific.
18
+ #
19
+ RubyVM::DEFAULT_PARAMS: Hash[Symbol, Integer]
20
+
21
+ # <!-- rdoc-file=vm.c -->
22
+ # ::RubyVM::INSTRUCTION_NAMES A list of bytecode instruction names in MRI. This
23
+ # constant is MRI specific.
24
+ #
25
+ RubyVM::INSTRUCTION_NAMES: Array[String]
26
+
27
+ # <!-- rdoc-file=vm.c -->
28
+ # ::RubyVM::OPTS An Array of VM build options. This constant is MRI specific.
29
+ #
30
+ RubyVM::OPTS: Array[String]
31
+
32
+ # <!-- rdoc-file=iseq.c -->
33
+ # The InstructionSequence class represents a compiled sequence of instructions
34
+ # for the Virtual Machine used in MRI. Not all implementations of Ruby may
35
+ # implement this class, and for the implementations that implement it, the
36
+ # methods defined and behavior of the methods can change in any version.
37
+ #
38
+ # With it, you can get a handle to the instructions that make up a method or a
39
+ # proc, compile strings of Ruby code down to VM instructions, and disassemble
40
+ # instruction sequences to strings for easy inspection. It is mostly useful if
41
+ # you want to learn how YARV works, but it also lets you control various
42
+ # settings for the Ruby iseq compiler.
43
+ #
44
+ # You can find the source for the VM instructions in <code>insns.def</code> in
45
+ # the Ruby source.
46
+ #
47
+ # The instruction sequence results will almost certainly change as Ruby changes,
48
+ # so example output in this documentation may be different from what you see.
49
+ #
50
+ # Of course, this class is MRI specific.
51
+ #
52
+ class RubyVM::InstructionSequence < Object
53
+ # <!--
54
+ # rdoc-file=iseq.c
55
+ # - absolute_path()
56
+ # -->
57
+ # Returns the absolute path of this instruction sequence.
58
+ #
59
+ # `nil` if the iseq was evaluated from a string.
60
+ #
61
+ # For example, using ::compile_file:
62
+ #
63
+ # # /tmp/method.rb
64
+ # def hello
65
+ # puts "hello, world"
66
+ # end
67
+ #
68
+ # # in irb
69
+ # > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
70
+ # > iseq.absolute_path #=> /tmp/method.rb
71
+ #
72
+ def absolute_path: () -> String?
73
+
74
+ # <!--
75
+ # rdoc-file=iseq.c
76
+ # - base_label()
77
+ # -->
78
+ # Returns the base label of this instruction sequence.
79
+ #
80
+ # For example, using irb:
81
+ #
82
+ # iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
83
+ # #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
84
+ # iseq.base_label
85
+ # #=> "<compiled>"
86
+ #
87
+ # Using ::compile_file:
88
+ #
89
+ # # /tmp/method.rb
90
+ # def hello
91
+ # puts "hello, world"
92
+ # end
93
+ #
94
+ # # in irb
95
+ # > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
96
+ # > iseq.base_label #=> <main>
97
+ #
98
+ def base_label: () -> String
99
+
100
+ # <!--
101
+ # rdoc-file=iseq.c
102
+ # - iseq.disasm -> str
103
+ # - iseq.disassemble -> str
104
+ # -->
105
+ # Returns the instruction sequence as a `String` in human readable form.
106
+ #
107
+ # puts RubyVM::InstructionSequence.compile('1 + 2').disasm
108
+ #
109
+ # Produces:
110
+ #
111
+ # == disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
112
+ # 0000 trace 1 ( 1)
113
+ # 0002 putobject 1
114
+ # 0004 putobject 2
115
+ # 0006 opt_plus <ic:1>
116
+ # 0008 leave
117
+ #
118
+ def disasm: () -> String
119
+
120
+ # <!-- rdoc-file=iseq.c -->
121
+ # Returns the instruction sequence as a `String` in human readable form.
122
+ #
123
+ # puts RubyVM::InstructionSequence.compile('1 + 2').disasm
124
+ #
125
+ # Produces:
126
+ #
127
+ # == disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
128
+ # 0000 trace 1 ( 1)
129
+ # 0002 putobject 1
130
+ # 0004 putobject 2
131
+ # 0006 opt_plus <ic:1>
132
+ # 0008 leave
133
+ #
134
+ def disassemble: () -> String
135
+
136
+ # <!--
137
+ # rdoc-file=iseq.c
138
+ # - iseq.each_child{|child_iseq| ...} -> iseq
139
+ # -->
140
+ # Iterate all direct child instruction sequences. Iteration order is
141
+ # implementation/version defined so that people should not rely on the order.
142
+ #
143
+ def each_child: () -> RubyVM::InstructionSequence
144
+
145
+ # <!--
146
+ # rdoc-file=iseq.c
147
+ # - iseq.eval -> obj
148
+ # -->
149
+ # Evaluates the instruction sequence and returns the result.
150
+ #
151
+ # RubyVM::InstructionSequence.compile("1 + 2").eval #=> 3
152
+ #
153
+ def eval: () -> untyped
154
+
155
+ # <!--
156
+ # rdoc-file=iseq.c
157
+ # - first_lineno()
158
+ # -->
159
+ # Returns the number of the first source line where the instruction sequence was
160
+ # loaded from.
161
+ #
162
+ # For example, using irb:
163
+ #
164
+ # iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
165
+ # #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
166
+ # iseq.first_lineno
167
+ # #=> 1
168
+ #
169
+ def first_lineno: () -> Integer
170
+
171
+ # <!--
172
+ # rdoc-file=iseq.c
173
+ # - inspect()
174
+ # -->
175
+ # Returns a human-readable string representation of this instruction sequence,
176
+ # including the #label and #path.
177
+ #
178
+ def inspect: () -> String
179
+
180
+ # <!--
181
+ # rdoc-file=iseq.c
182
+ # - label()
183
+ # -->
184
+ # Returns the label of this instruction sequence.
185
+ #
186
+ # <code><main></code> if it's at the top level, <code><compiled></code> if it
187
+ # was evaluated from a string.
188
+ #
189
+ # For example, using irb:
190
+ #
191
+ # iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
192
+ # #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
193
+ # iseq.label
194
+ # #=> "<compiled>"
195
+ #
196
+ # Using ::compile_file:
197
+ #
198
+ # # /tmp/method.rb
199
+ # def hello
200
+ # puts "hello, world"
201
+ # end
202
+ #
203
+ # # in irb
204
+ # > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
205
+ # > iseq.label #=> <main>
206
+ #
207
+ def label: () -> String
208
+
209
+ # <!--
210
+ # rdoc-file=iseq.c
211
+ # - path()
212
+ # -->
213
+ # Returns the path of this instruction sequence.
214
+ #
215
+ # <code><compiled></code> if the iseq was evaluated from a string.
216
+ #
217
+ # For example, using irb:
218
+ #
219
+ # iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
220
+ # #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
221
+ # iseq.path
222
+ # #=> "<compiled>"
223
+ #
224
+ # Using ::compile_file:
225
+ #
226
+ # # /tmp/method.rb
227
+ # def hello
228
+ # puts "hello, world"
229
+ # end
230
+ #
231
+ # # in irb
232
+ # > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
233
+ # > iseq.path #=> /tmp/method.rb
234
+ #
235
+ def path: () -> String
236
+
237
+ # <!--
238
+ # rdoc-file=iseq.c
239
+ # - iseq.script_lines -> array or nil
240
+ # -->
241
+ # It returns recorded script lines if it is available. The script lines are not
242
+ # limited to the iseq range, but are entire lines of the source file.
243
+ #
244
+ # Note that this is an API for ruby internal use, debugging, and research. Do
245
+ # not use this for any other purpose. The compatibility is not guaranteed.
246
+ #
247
+ def script_lines: () -> Array[String]?
248
+
249
+ # <!--
250
+ # rdoc-file=iseq.c
251
+ # - iseq.to_a -> ary
252
+ # -->
253
+ # Returns an Array with 14 elements representing the instruction sequence with
254
+ # the following data:
255
+ #
256
+ # magic
257
+ # : A string identifying the data format. <strong>Always
258
+ # <code>YARVInstructionSequence/SimpleDataFormat</code>.</strong>
259
+ #
260
+ #
261
+ # major_version
262
+ # : The major version of the instruction sequence.
263
+ #
264
+ #
265
+ # minor_version
266
+ # : The minor version of the instruction sequence.
267
+ #
268
+ #
269
+ # format_type
270
+ # : A number identifying the data format. **Always 1**.
271
+ #
272
+ #
273
+ # misc
274
+ # : A hash containing:
275
+ #
276
+ # <code>:arg_size</code>
277
+ # : the total number of arguments taken by the method or the block (0 if
278
+ # *iseq* doesn't represent a method or block)
279
+ #
280
+ # <code>:local_size</code>
281
+ # : the number of local variables + 1
282
+ #
283
+ # <code>:stack_max</code>
284
+ # : used in calculating the stack depth at which a SystemStackError is
285
+ # thrown.
286
+ #
287
+ #
288
+ #
289
+ # #label
290
+ # : The name of the context (block, method, class, module, etc.) that this
291
+ # instruction sequence belongs to.
292
+ #
293
+ # <code><main></code> if it's at the top level, <code><compiled></code> if
294
+ # it was evaluated from a string.
295
+ #
296
+ #
297
+ # #path
298
+ # : The relative path to the Ruby file where the instruction sequence was
299
+ # loaded from.
300
+ #
301
+ # <code><compiled></code> if the iseq was evaluated from a string.
302
+ #
303
+ #
304
+ # #absolute_path
305
+ # : The absolute path to the Ruby file where the instruction sequence was
306
+ # loaded from.
307
+ #
308
+ # `nil` if the iseq was evaluated from a string.
309
+ #
310
+ #
311
+ # #first_lineno
312
+ # : The number of the first source line where the instruction sequence was
313
+ # loaded from.
314
+ #
315
+ #
316
+ # type
317
+ # : The type of the instruction sequence.
318
+ #
319
+ # Valid values are <code>:top</code>, <code>:method</code>,
320
+ # <code>:block</code>, <code>:class</code>, <code>:rescue</code>,
321
+ # <code>:ensure</code>, <code>:eval</code>, <code>:main</code>, and `plain`.
322
+ #
323
+ #
324
+ # locals
325
+ # : An array containing the names of all arguments and local variables as
326
+ # symbols.
327
+ #
328
+ #
329
+ # params
330
+ # : An Hash object containing parameter information.
331
+ #
332
+ # More info about these values can be found in <code>vm_core.h</code>.
333
+ #
334
+ #
335
+ # catch_table
336
+ # : A list of exceptions and control flow operators (rescue, next, redo,
337
+ # break, etc.).
338
+ #
339
+ #
340
+ # bytecode
341
+ # : An array of arrays containing the instruction names and operands that make
342
+ # up the body of the instruction sequence.
343
+ #
344
+ #
345
+ # Note that this format is MRI specific and version dependent.
346
+ #
347
+ def to_a: () -> Array[untyped]
348
+
349
+ # <!--
350
+ # rdoc-file=iseq.c
351
+ # - iseq.to_binary(extra_data = nil) -> binary str
352
+ # -->
353
+ # Returns serialized iseq binary format data as a String object. A corresponding
354
+ # iseq object is created by RubyVM::InstructionSequence.load_from_binary()
355
+ # method.
356
+ #
357
+ # String extra_data will be saved with binary data. You can access this data
358
+ # with RubyVM::InstructionSequence.load_from_binary_extra_data(binary).
359
+ #
360
+ # Note that the translated binary data is not portable. You can not move this
361
+ # binary data to another machine. You can not use the binary data which is
362
+ # created by another version/another architecture of Ruby.
363
+ #
364
+ def to_binary: () -> String
365
+
366
+ # <!--
367
+ # rdoc-file=iseq.c
368
+ # - iseq.trace_points -> ary
369
+ # -->
370
+ # Return trace points in the instruction sequence. Return an array of [line,
371
+ # event_symbol] pair.
372
+ #
373
+ def trace_points: () -> Array[untyped]
374
+
375
+ # <!--
376
+ # rdoc-file=iseq.c
377
+ # - of(p1)
378
+ # -->
379
+ # Returns the instruction sequence containing the given proc or method.
380
+ #
381
+ # For example, using irb:
382
+ #
383
+ # # a proc
384
+ # > p = proc { num = 1 + 2 }
385
+ # > RubyVM::InstructionSequence.of(p)
386
+ # > #=> <RubyVM::InstructionSequence:block in irb_binding@(irb)>
387
+ #
388
+ # # for a method
389
+ # > def foo(bar); puts bar; end
390
+ # > RubyVM::InstructionSequence.of(method(:foo))
391
+ # > #=> <RubyVM::InstructionSequence:foo@(irb)>
392
+ #
393
+ # Using ::compile_file:
394
+ #
395
+ # # /tmp/iseq_of.rb
396
+ # def hello
397
+ # puts "hello, world"
398
+ # end
399
+ #
400
+ # $a_global_proc = proc { str = 'a' + 'b' }
401
+ #
402
+ # # in irb
403
+ # > require '/tmp/iseq_of.rb'
404
+ #
405
+ # # first the method hello
406
+ # > RubyVM::InstructionSequence.of(method(:hello))
407
+ # > #=> #<RubyVM::InstructionSequence:0x007fb73d7cb1d0>
408
+ #
409
+ # # then the global proc
410
+ # > RubyVM::InstructionSequence.of($a_global_proc)
411
+ # > #=> #<RubyVM::InstructionSequence:0x007fb73d7caf78>
412
+ #
413
+ def self.of: (Proc | Method | UnboundMethod body) -> RubyVM::InstructionSequence?
414
+ end
415
+
416
+ # <!-- rdoc-file=ast.rb -->
417
+ # AbstractSyntaxTree provides methods to parse Ruby code into abstract syntax
418
+ # trees. The nodes in the tree are instances of
419
+ # RubyVM::AbstractSyntaxTree::Node.
420
+ #
421
+ # This module is MRI specific as it exposes implementation details of the MRI
422
+ # abstract syntax tree.
423
+ #
424
+ # This module is experimental and its API is not stable, therefore it might
425
+ # change without notice. As examples, the order of children nodes is not
426
+ # guaranteed, the number of children nodes might change, there is no way to
427
+ # access children nodes by name, etc.
428
+ #
429
+ # If you are looking for a stable API or an API working under multiple Ruby
430
+ # implementations, consider using the *prism* gem, which is the official Ruby
431
+ # API to parse Ruby code.
432
+ #
433
+ module RubyVM::AbstractSyntaxTree
434
+ # <!--
435
+ # rdoc-file=ast.rb
436
+ # - RubyVM::AbstractSyntaxTree.parse(string, keep_script_lines: RubyVM.keep_script_lines, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
437
+ # -->
438
+ # Parses the given *string* into an abstract syntax tree, returning the root
439
+ # node of that tree.
440
+ #
441
+ # RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
442
+ # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-1:9>
443
+ #
444
+ # If <code>keep_script_lines: true</code> option is provided, the text of the
445
+ # parsed source is associated with nodes and is available via Node#script_lines.
446
+ #
447
+ # If <code>keep_tokens: true</code> option is provided, Node#tokens are
448
+ # populated.
449
+ #
450
+ # SyntaxError is raised if the given *string* is invalid syntax. To overwrite
451
+ # this behavior, <code>error_tolerant: true</code> can be provided. In this
452
+ # case, the parser will produce a tree where expressions with syntax errors
453
+ # would be represented by Node with <code>type=:ERROR</code>.
454
+ #
455
+ # root = RubyVM::AbstractSyntaxTree.parse("x = 1; p(x; y=2")
456
+ # # <internal:ast>:33:in `parse': syntax error, unexpected ';', expecting ')' (SyntaxError)
457
+ # # x = 1; p(x; y=2
458
+ # # ^
459
+ #
460
+ # root = RubyVM::AbstractSyntaxTree.parse("x = 1; p(x; y=2", error_tolerant: true)
461
+ # # (SCOPE@1:0-1:15
462
+ # # tbl: [:x, :y]
463
+ # # args: nil
464
+ # # body: (BLOCK@1:0-1:15 (LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)) (ERROR@1:7-1:11) (LASGN@1:12-1:15 :y (LIT@1:14-1:15 2))))
465
+ # root.children.last.children
466
+ # # [(LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)),
467
+ # # (ERROR@1:7-1:11),
468
+ # # (LASGN@1:12-1:15 :y (LIT@1:14-1:15 2))]
469
+ #
470
+ # Note that parsing continues even after the errored expression.
471
+ #
472
+ def self.parse: (String string, ?keep_script_lines: bool, ?error_tolerant: bool, ?keep_tokens: bool) -> Node
473
+
474
+ # <!--
475
+ # rdoc-file=ast.rb
476
+ # - RubyVM::AbstractSyntaxTree.parse_file(pathname, keep_script_lines: RubyVM.keep_script_lines, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
477
+ # -->
478
+ # Reads the file from *pathname*, then parses it like ::parse, returning the
479
+ # root node of the abstract syntax tree.
480
+ #
481
+ # SyntaxError is raised if *pathname*'s contents are not valid Ruby syntax.
482
+ #
483
+ # RubyVM::AbstractSyntaxTree.parse_file("my-app/app.rb")
484
+ # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-31:3>
485
+ #
486
+ # See ::parse for explanation of keyword argument meaning and usage.
487
+ #
488
+ def self.parse_file: (path string, ?keep_script_lines: bool, ?error_tolerant: bool, ?keep_tokens: bool) -> Node
489
+
490
+ # <!--
491
+ # rdoc-file=ast.rb
492
+ # - RubyVM::AbstractSyntaxTree.of(proc, keep_script_lines: RubyVM.keep_script_lines, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
493
+ # - RubyVM::AbstractSyntaxTree.of(method, keep_script_lines: RubyVM.keep_script_lines, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
494
+ # -->
495
+ # Returns AST nodes of the given *proc* or *method*.
496
+ #
497
+ # RubyVM::AbstractSyntaxTree.of(proc {1 + 2})
498
+ # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:35-1:42>
499
+ #
500
+ # def hello
501
+ # puts "hello, world"
502
+ # end
503
+ #
504
+ # RubyVM::AbstractSyntaxTree.of(method(:hello))
505
+ # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-3:3>
506
+ #
507
+ # See ::parse for explanation of keyword argument meaning and usage.
508
+ #
509
+ def self.of: (Proc | Method | UnboundMethod body, ?keep_script_lines: bool, ?error_tolerant: bool, ?keep_tokens: bool) -> Node?
510
+
511
+ # <!--
512
+ # rdoc-file=ast.rb
513
+ # - RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(backtrace_location) -> integer
514
+ # -->
515
+ # Returns the node id for the given backtrace location.
516
+ #
517
+ # begin
518
+ # raise
519
+ # rescue => e
520
+ # loc = e.backtrace_locations.first
521
+ # RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(loc)
522
+ # end # => 0
523
+ #
524
+ def self.node_id_for_backtrace_location: (Thread::Backtrace::Location backtrace_location) -> Integer
525
+
526
+ # <!-- rdoc-file=ast.rb -->
527
+ # RubyVM::AbstractSyntaxTree::Node instances are created by parse methods in
528
+ # RubyVM::AbstractSyntaxTree.
529
+ #
530
+ # This class is MRI specific.
531
+ #
532
+ class Node
533
+ # <!--
534
+ # rdoc-file=ast.rb
535
+ # - node.type -> symbol
536
+ # -->
537
+ # Returns the type of this node as a symbol.
538
+ #
539
+ # root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
540
+ # root.type # => :SCOPE
541
+ # lasgn = root.children[2]
542
+ # lasgn.type # => :LASGN
543
+ # call = lasgn.children[1]
544
+ # call.type # => :OPCALL
545
+ #
546
+ def type: () -> Symbol
547
+
548
+ # <!--
549
+ # rdoc-file=ast.rb
550
+ # - node.first_lineno -> integer
551
+ # -->
552
+ # The line number in the source code where this AST's text began.
553
+ #
554
+ def first_lineno: () -> Integer
555
+
556
+ # <!--
557
+ # rdoc-file=ast.rb
558
+ # - node.first_column -> integer
559
+ # -->
560
+ # The column number in the source code where this AST's text began.
561
+ #
562
+ def first_column: () -> Integer
563
+
564
+ # <!--
565
+ # rdoc-file=ast.rb
566
+ # - node.last_lineno -> integer
567
+ # -->
568
+ # The line number in the source code where this AST's text ended.
569
+ #
570
+ def last_lineno: () -> Integer
571
+
572
+ # <!--
573
+ # rdoc-file=ast.rb
574
+ # - node.last_column -> integer
575
+ # -->
576
+ # The column number in the source code where this AST's text ended.
577
+ #
578
+ def last_column: () -> Integer
579
+
580
+ # <!--
581
+ # rdoc-file=ast.rb
582
+ # - node.locations -> array
583
+ # -->
584
+ # Returns location objects associated with the AST node. The returned array
585
+ # contains RubyVM::AbstractSyntaxTree::Location.
586
+ #
587
+ def locations: () -> Array[Location]
588
+
589
+ # <!--
590
+ # rdoc-file=ast.rb
591
+ # - node.tokens -> array
592
+ # -->
593
+ # Returns tokens corresponding to the location of the node. Returns `nil` if
594
+ # `keep_tokens` is not enabled when #parse method is called.
595
+ #
596
+ # root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true)
597
+ # root.tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
598
+ # root.tokens.map{_1[2]}.join # => "x = 1 + 2"
599
+ #
600
+ # Token is an array of:
601
+ #
602
+ # * id
603
+ # * token type
604
+ # * source code text
605
+ # * location [ first_lineno, first_column, last_lineno, last_column ]
606
+ #
607
+ def tokens: () -> Array[[Integer, Symbol, String, [Integer, Integer, Integer, Integer]]]?
608
+
609
+ # <!--
610
+ # rdoc-file=ast.rb
611
+ # - node.all_tokens -> array
612
+ # -->
613
+ # Returns all tokens for the input script regardless the receiver node. Returns
614
+ # `nil` if `keep_tokens` is not enabled when #parse method is called.
615
+ #
616
+ # root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true)
617
+ # root.all_tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
618
+ # root.children[-1].all_tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
619
+ #
620
+ def all_tokens: () -> Array[[Integer, Symbol, String, [Integer, Integer, Integer, Integer]]]?
621
+
622
+ # <!--
623
+ # rdoc-file=ast.rb
624
+ # - node.children -> array
625
+ # -->
626
+ # Returns AST nodes under this one. Each kind of node has different children,
627
+ # depending on what kind of node it is.
628
+ #
629
+ # The returned array may contain other nodes or `nil`.
630
+ #
631
+ def children: () -> Array[untyped]
632
+ end
633
+
634
+ # <!-- rdoc-file=ast.rb -->
635
+ # RubyVM::AbstractSyntaxTree::Location instances are created by
636
+ # RubyVM::AbstractSyntaxTree::Node#locations.
637
+ #
638
+ # This class is MRI specific.
639
+ #
640
+ class Location
641
+ # <!--
642
+ # rdoc-file=ast.rb
643
+ # - location.first_column -> integer
644
+ # -->
645
+ # The column number in the source code where this AST's text began.
646
+ #
647
+ def first_column: () -> Integer
648
+
649
+ # <!--
650
+ # rdoc-file=ast.rb
651
+ # - location.first_lineno -> integer
652
+ # -->
653
+ # The line number in the source code where this AST's text began.
654
+ #
655
+ def first_lineno: () -> Integer
656
+
657
+ # <!--
658
+ # rdoc-file=ast.rb
659
+ # - location.inspect -> string
660
+ # -->
661
+ # Returns debugging information about this location as a string.
662
+ #
663
+ def inspect: () -> String
664
+
665
+ # <!--
666
+ # rdoc-file=ast.rb
667
+ # - location.last_lineno -> integer
668
+ # -->
669
+ # The line number in the source code where this AST's text ended.
670
+ #
671
+ def last_lineno: () -> Integer
672
+
673
+ # <!--
674
+ # rdoc-file=ast.rb
675
+ # - location.last_column -> integer
676
+ # -->
677
+ # The column number in the source code where this AST's text ended.
678
+ #
679
+ def last_column: () -> Integer
680
+ end
681
+ end
682
+
683
+ # <!-- rdoc-file=yjit.rb -->
684
+ # This module allows for introspection of YJIT, CRuby's just-in-time compiler.
685
+ # Everything in the module is highly implementation specific and the API might
686
+ # be less stable compared to the standard library.
687
+ # This module may not exist if YJIT does not support the particular platform
688
+ # for which CRuby is built.
689
+ #
690
+ module RubyVM::YJIT
691
+ # <!--
692
+ # rdoc-file=yjit.rb
693
+ # - code_gc()
694
+ # -->
695
+ # Discard existing compiled code to reclaim memory
696
+ # and allow for recompilations in the future.
697
+ #
698
+ def self.code_gc: () -> void
699
+
700
+ # <!--
701
+ # rdoc-file=yjit.rb
702
+ # - dump_exit_locations(filename)
703
+ # -->
704
+ # Marshal dumps exit locations to the given filename.
705
+ # Usage:
706
+ # If <code>--yjit-exit-locations</code> is passed, a file named
707
+ # "yjit_exit_locations.dump" will automatically be generated.
708
+ # If you want to collect traces manually, call `dump_exit_locations`
709
+ # directly.
710
+ # Note that calling this in a script will generate stats after the
711
+ # dump is created, so the stats data may include exits from the
712
+ # dump itself.
713
+ # In a script call:
714
+ # at_exit do
715
+ # RubyVM::YJIT.dump_exit_locations("my_file.dump")
716
+ # end
717
+ #
718
+ # Then run the file with the following options:
719
+ # ruby --yjit --yjit-trace-exits test.rb
720
+ #
721
+ # Once the code is done running, use Stackprof to read the dump file.
722
+ # See Stackprof documentation for options.
723
+ #
724
+ def self.dump_exit_locations: (untyped filename) -> void
725
+
726
+ # <!--
727
+ # rdoc-file=yjit.rb
728
+ # - enable(stats: false, log: false, mem_size: nil, call_threshold: nil)
729
+ # -->
730
+ # Enable YJIT compilation. `stats` option decides whether to enable YJIT stats
731
+ # or not. `log` decides
732
+ # whether to enable YJIT compilation logging or not. Optional `mem_size` and
733
+ # `call_threshold` can be
734
+ # provided to override default configuration.
735
+ # * `stats`:
736
+ # * `false`: Don't enable stats.
737
+ # * `true`: Enable stats. Print stats at exit.
738
+ # * <code>:quiet</code>: Enable stats. Do not print stats at exit.
739
+ # * `log`:
740
+ # * `false`: Don't enable the log.
741
+ # * `true`: Enable the log. Print log at exit.
742
+ # * <code>:quiet</code>: Enable the log. Do not print log at exit.
743
+ #
744
+ def self.enable: (?stats: false | true | :quiet) -> void
745
+
746
+ # <!--
747
+ # rdoc-file=yjit.rb
748
+ # - enabled?()
749
+ # -->
750
+ # Check if YJIT is enabled.
751
+ #
752
+ def self.enabled?: () -> bool
753
+
754
+ # <!--
755
+ # rdoc-file=yjit.rb
756
+ # - format_number(pad, number)
757
+ # -->
758
+ # Format large numbers with comma separators for readability
759
+ #
760
+ def self.format_number: (untyped pad, untyped number) -> untyped
761
+
762
+ # <!--
763
+ # rdoc-file=yjit.rb
764
+ # - format_number_pct(pad, number, total)
765
+ # -->
766
+ # Format a number along with a percentage over a total value
767
+ #
768
+ def self.format_number_pct: (untyped pad, untyped number, untyped total) -> untyped
769
+
770
+ # <!--
771
+ # rdoc-file=yjit.rb
772
+ # - reset_stats!()
773
+ # -->
774
+ # Discard statistics collected for <code>--yjit-stats</code>.
775
+ #
776
+ def self.reset_stats!: () -> void
777
+
778
+ # <!--
779
+ # rdoc-file=yjit.rb
780
+ # - runtime_stats(key = nil)
781
+ # -->
782
+ # Return a hash for statistics generated for the <code>--yjit-stats</code>
783
+ # command line option.
784
+ # Return `nil` when option is not passed or unavailable.
785
+ # If a symbol argument is provided, return only the value for the named stat.
786
+ # If any other type is provided, raises TypeError.
787
+ #
788
+ def self.runtime_stats: (?context: bool) -> Hash[untyped, untyped]?
789
+
790
+ # <!--
791
+ # rdoc-file=yjit.rb
792
+ # - stats_enabled?()
793
+ # -->
794
+ # Check if <code>--yjit-stats</code> is used.
795
+ #
796
+ def self.stats_enabled?: () -> bool
797
+
798
+ # <!--
799
+ # rdoc-file=yjit.rb
800
+ # - stats_string()
801
+ # -->
802
+ # Format and print out counters as a String. This returns a non-empty
803
+ # content only when <code>--yjit-stats</code> is enabled.
804
+ #
805
+ def self.stats_string: () -> String
806
+ end
807
+
808
+ module RubyVM::RJIT
809
+ end