rbs-relaxed 3.9.0.1

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