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
@@ -0,0 +1,337 @@
1
+ # <!-- rdoc-file=proc.c -->
2
+ # Ruby supports two forms of objectified methods. Class `Method` is used to
3
+ # represent methods that are associated with a particular object: these method
4
+ # objects are bound to that object. Bound method objects for an object can be
5
+ # created using Object#method.
6
+ #
7
+ # Ruby also supports unbound methods; methods objects that are not associated
8
+ # with a particular object. These can be created either by calling
9
+ # Module#instance_method or by calling #unbind on a bound method object. The
10
+ # result of both of these is an UnboundMethod object.
11
+ #
12
+ # Unbound methods can only be called after they are bound to an object. That
13
+ # object must be a kind_of? the method's original class.
14
+ #
15
+ # class Square
16
+ # def area
17
+ # @side * @side
18
+ # end
19
+ # def initialize(side)
20
+ # @side = side
21
+ # end
22
+ # end
23
+ #
24
+ # area_un = Square.instance_method(:area)
25
+ #
26
+ # s = Square.new(12)
27
+ # area = area_un.bind(s)
28
+ # area.call #=> 144
29
+ #
30
+ # Unbound methods are a reference to the method at the time it was objectified:
31
+ # subsequent changes to the underlying class will not affect the unbound method.
32
+ #
33
+ # class Test
34
+ # def test
35
+ # :original
36
+ # end
37
+ # end
38
+ # um = Test.instance_method(:test)
39
+ # class Test
40
+ # def test
41
+ # :modified
42
+ # end
43
+ # end
44
+ # t = Test.new
45
+ # t.test #=> :modified
46
+ # um.bind(t).call #=> :original
47
+ #
48
+ class UnboundMethod
49
+ # <!--
50
+ # rdoc-file=proc.c
51
+ # - meth.eql?(other_meth) -> true or false
52
+ # - meth == other_meth -> true or false
53
+ # -->
54
+ # Two unbound method objects are equal if they refer to the same method
55
+ # definition.
56
+ #
57
+ # Array.instance_method(:each_slice) == Enumerable.instance_method(:each_slice)
58
+ # #=> true
59
+ #
60
+ # Array.instance_method(:sum) == Enumerable.instance_method(:sum)
61
+ # #=> false, Array redefines the method for efficiency
62
+ #
63
+ def ==: (untyped other) -> bool
64
+
65
+ # <!-- rdoc-file=proc.c -->
66
+ # Two unbound method objects are equal if they refer to the same method
67
+ # definition.
68
+ #
69
+ # Array.instance_method(:each_slice) == Enumerable.instance_method(:each_slice)
70
+ # #=> true
71
+ #
72
+ # Array.instance_method(:sum) == Enumerable.instance_method(:sum)
73
+ # #=> false, Array redefines the method for efficiency
74
+ #
75
+ alias eql? ==
76
+
77
+ # <!--
78
+ # rdoc-file=proc.c
79
+ # - meth.hash -> integer
80
+ # -->
81
+ # Returns a hash value corresponding to the method object.
82
+ #
83
+ # See also Object#hash.
84
+ #
85
+ def hash: () -> Integer
86
+
87
+ # <!--
88
+ # rdoc-file=proc.c
89
+ # - method.clone -> new_method
90
+ # -->
91
+ # Returns a clone of this method.
92
+ #
93
+ # class A
94
+ # def foo
95
+ # return "bar"
96
+ # end
97
+ # end
98
+ #
99
+ # m = A.new.method(:foo)
100
+ # m.call # => "bar"
101
+ # n = m.clone.call # => "bar"
102
+ #
103
+ def clone: () -> self
104
+
105
+ # <!--
106
+ # rdoc-file=proc.c
107
+ # - meth.arity -> integer
108
+ # -->
109
+ # Returns an indication of the number of arguments accepted by a method. Returns
110
+ # a nonnegative integer for methods that take a fixed number of arguments. For
111
+ # Ruby methods that take a variable number of arguments, returns -n-1, where n
112
+ # is the number of required arguments. Keyword arguments will be considered as a
113
+ # single additional argument, that argument being mandatory if any keyword
114
+ # argument is mandatory. For methods written in C, returns -1 if the call takes
115
+ # a variable number of arguments.
116
+ #
117
+ # class C
118
+ # def one; end
119
+ # def two(a); end
120
+ # def three(*a); end
121
+ # def four(a, b); end
122
+ # def five(a, b, *c); end
123
+ # def six(a, b, *c, &d); end
124
+ # def seven(a, b, x:0); end
125
+ # def eight(x:, y:); end
126
+ # def nine(x:, y:, **z); end
127
+ # def ten(*a, x:, y:); end
128
+ # end
129
+ # c = C.new
130
+ # c.method(:one).arity #=> 0
131
+ # c.method(:two).arity #=> 1
132
+ # c.method(:three).arity #=> -1
133
+ # c.method(:four).arity #=> 2
134
+ # c.method(:five).arity #=> -3
135
+ # c.method(:six).arity #=> -3
136
+ # c.method(:seven).arity #=> -3
137
+ # c.method(:eight).arity #=> 1
138
+ # c.method(:nine).arity #=> 1
139
+ # c.method(:ten).arity #=> -2
140
+ #
141
+ # "cat".method(:size).arity #=> 0
142
+ # "cat".method(:replace).arity #=> 1
143
+ # "cat".method(:squeeze).arity #=> -1
144
+ # "cat".method(:count).arity #=> -1
145
+ #
146
+ def arity: () -> Integer
147
+
148
+ # <!--
149
+ # rdoc-file=proc.c
150
+ # - umeth.bind(obj) -> method
151
+ # -->
152
+ # Bind *umeth* to *obj*. If Klass was the class from which *umeth* was obtained,
153
+ # <code>obj.kind_of?(Klass)</code> must be true.
154
+ #
155
+ # class A
156
+ # def test
157
+ # puts "In test, class = #{self.class}"
158
+ # end
159
+ # end
160
+ # class B < A
161
+ # end
162
+ # class C < B
163
+ # end
164
+ #
165
+ # um = B.instance_method(:test)
166
+ # bm = um.bind(C.new)
167
+ # bm.call
168
+ # bm = um.bind(B.new)
169
+ # bm.call
170
+ # bm = um.bind(A.new)
171
+ # bm.call
172
+ #
173
+ # <em>produces:</em>
174
+ #
175
+ # In test, class = C
176
+ # In test, class = B
177
+ # prog.rb:16:in `bind': bind argument must be an instance of B (TypeError)
178
+ # from prog.rb:16
179
+ #
180
+ def bind: (untyped obj) -> Method
181
+
182
+ # <!--
183
+ # rdoc-file=proc.c
184
+ # - meth.to_s -> string
185
+ # - meth.inspect -> string
186
+ # -->
187
+ # Returns a human-readable description of the underlying method.
188
+ #
189
+ # "cat".method(:count).inspect #=> "#<Method: String#count(*)>"
190
+ # (1..3).method(:map).inspect #=> "#<Method: Range(Enumerable)#map()>"
191
+ #
192
+ # In the latter case, the method description includes the "owner" of the
193
+ # original method (`Enumerable` module, which is included into `Range`).
194
+ #
195
+ # `inspect` also provides, when possible, method argument names (call sequence)
196
+ # and source location.
197
+ #
198
+ # require 'net/http'
199
+ # Net::HTTP.method(:get).inspect
200
+ # #=> "#<Method: Net::HTTP.get(uri_or_host, path=..., port=...) <skip>/lib/ruby/2.7.0/net/http.rb:457>"
201
+ #
202
+ # <code>...</code> in argument definition means argument is optional (has some
203
+ # default value).
204
+ #
205
+ # For methods defined in C (language core and extensions), location and argument
206
+ # names can't be extracted, and only generic information is provided in form of
207
+ # <code>*</code> (any number of arguments) or `_` (some positional argument).
208
+ #
209
+ # "cat".method(:count).inspect #=> "#<Method: String#count(*)>"
210
+ # "cat".method(:+).inspect #=> "#<Method: String#+(_)>""
211
+ #
212
+ def inspect: () -> String
213
+
214
+ # <!-- rdoc-file=proc.c -->
215
+ # Returns a human-readable description of the underlying method.
216
+ #
217
+ # "cat".method(:count).inspect #=> "#<Method: String#count(*)>"
218
+ # (1..3).method(:map).inspect #=> "#<Method: Range(Enumerable)#map()>"
219
+ #
220
+ # In the latter case, the method description includes the "owner" of the
221
+ # original method (`Enumerable` module, which is included into `Range`).
222
+ #
223
+ # `inspect` also provides, when possible, method argument names (call sequence)
224
+ # and source location.
225
+ #
226
+ # require 'net/http'
227
+ # Net::HTTP.method(:get).inspect
228
+ # #=> "#<Method: Net::HTTP.get(uri_or_host, path=..., port=...) <skip>/lib/ruby/2.7.0/net/http.rb:457>"
229
+ #
230
+ # <code>...</code> in argument definition means argument is optional (has some
231
+ # default value).
232
+ #
233
+ # For methods defined in C (language core and extensions), location and argument
234
+ # names can't be extracted, and only generic information is provided in form of
235
+ # <code>*</code> (any number of arguments) or `_` (some positional argument).
236
+ #
237
+ # "cat".method(:count).inspect #=> "#<Method: String#count(*)>"
238
+ # "cat".method(:+).inspect #=> "#<Method: String#+(_)>""
239
+ #
240
+ alias to_s inspect
241
+
242
+ # <!--
243
+ # rdoc-file=proc.c
244
+ # - meth.name -> symbol
245
+ # -->
246
+ # Returns the name of the method.
247
+ #
248
+ def name: () -> Symbol
249
+
250
+ # <!--
251
+ # rdoc-file=proc.c
252
+ # - meth.owner -> class_or_module
253
+ # -->
254
+ # Returns the class or module on which this method is defined. In other words,
255
+ #
256
+ # meth.owner.instance_methods(false).include?(meth.name) # => true
257
+ #
258
+ # holds as long as the method is not removed/undefined/replaced, (with
259
+ # private_instance_methods instead of instance_methods if the method is
260
+ # private).
261
+ #
262
+ # See also Method#receiver.
263
+ #
264
+ # (1..3).method(:map).owner #=> Enumerable
265
+ #
266
+ def owner: () -> (Class | Module)
267
+
268
+ # <!--
269
+ # rdoc-file=proc.c
270
+ # - meth.parameters -> array
271
+ # -->
272
+ # Returns the parameter information of this method.
273
+ #
274
+ # def foo(bar); end
275
+ # method(:foo).parameters #=> [[:req, :bar]]
276
+ #
277
+ # def foo(bar, baz, bat, &blk); end
278
+ # method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:req, :bat], [:block, :blk]]
279
+ #
280
+ # def foo(bar, *args); end
281
+ # method(:foo).parameters #=> [[:req, :bar], [:rest, :args]]
282
+ #
283
+ # def foo(bar, baz, *args, &blk); end
284
+ # method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:rest, :args], [:block, :blk]]
285
+ #
286
+ def parameters: () -> Method::param_types
287
+
288
+ # <!--
289
+ # rdoc-file=proc.c
290
+ # - meth.source_location -> [String, Integer, Integer, Integer, Integer]
291
+ # -->
292
+ # Returns the location where the method was defined. The returned Array
293
+ # contains:
294
+ # (1) the Ruby source filename
295
+ # (2) the line number where the definition starts
296
+ # (3) the column number where the definition starts
297
+ # (4) the line number where the definition ends
298
+ # (5) the column number where the definitions ends
299
+ #
300
+ # This method will return `nil` if the method was not defined in Ruby (i.e.
301
+ # native).
302
+ #
303
+ def source_location: () -> [String, Integer]?
304
+
305
+ # <!--
306
+ # rdoc-file=proc.c
307
+ # - meth.super_method -> method
308
+ # -->
309
+ # Returns a `Method` of superclass which would be called when super is used or
310
+ # nil if there is no method on superclass.
311
+ #
312
+ def super_method: () -> UnboundMethod?
313
+
314
+ # <!--
315
+ # rdoc-file=proc.c
316
+ # - meth.original_name -> symbol
317
+ # -->
318
+ # Returns the original name of the method.
319
+ #
320
+ # class C
321
+ # def foo; end
322
+ # alias bar foo
323
+ # end
324
+ # C.instance_method(:bar).original_name # => :foo
325
+ #
326
+ def original_name: () -> Symbol
327
+
328
+ # <!--
329
+ # rdoc-file=proc.c
330
+ # - umeth.bind_call(recv, args, ...) -> obj
331
+ # -->
332
+ # Bind *umeth* to *recv* and then invokes the method with the specified
333
+ # arguments. This is semantically equivalent to
334
+ # <code>umeth.bind(recv).call(args, ...)</code>.
335
+ #
336
+ def bind_call: (untyped recv, *untyped, **untyped) ?{ (?) -> untyped } -> untyped
337
+ end
data/core/warning.rbs ADDED
@@ -0,0 +1,87 @@
1
+ # <!-- rdoc-file=error.c -->
2
+ # The Warning module contains a single method named #warn, and the module
3
+ # extends itself, making Warning.warn available. Warning.warn is called for all
4
+ # warnings issued by Ruby. By default, warnings are printed to $stderr.
5
+ #
6
+ # Changing the behavior of Warning.warn is useful to customize how warnings are
7
+ # handled by Ruby, for instance by filtering some warnings, and/or outputting
8
+ # warnings somewhere other than <code>$stderr</code>.
9
+ #
10
+ # If you want to change the behavior of Warning.warn you should use
11
+ # <code>Warning.extend(MyNewModuleWithWarnMethod)</code> and you can use `super`
12
+ # to get the default behavior of printing the warning to <code>$stderr</code>.
13
+ #
14
+ # Example:
15
+ # module MyWarningFilter
16
+ # def warn(message, category: nil, **kwargs)
17
+ # if /some warning I want to ignore/.match?(message)
18
+ # # ignore
19
+ # else
20
+ # super
21
+ # end
22
+ # end
23
+ # end
24
+ # Warning.extend MyWarningFilter
25
+ #
26
+ # You should never redefine Warning#warn (the instance method), as that will
27
+ # then no longer provide a way to use the default behavior.
28
+ #
29
+ # The [warning](https://rubygems.org/gems/warning) gem provides convenient ways
30
+ # to customize Warning.warn.
31
+ #
32
+ module Warning
33
+ # The types of categories the `Warning` module understands.
34
+ #
35
+ type category = :deprecated | :experimental | :performance
36
+
37
+ # <!--
38
+ # rdoc-file=error.c
39
+ # - Warning[category] -> true or false
40
+ # -->
41
+ # Returns the flag to show the warning messages for `category`. Supported
42
+ # categories are:
43
+ #
44
+ # <code>:deprecated</code>
45
+ # : deprecation warnings
46
+ # * assignment of non-nil value to <code>$,</code> and <code>$;</code>
47
+ # * keyword arguments
48
+ # etc.
49
+ #
50
+ #
51
+ # <code>:experimental</code>
52
+ # : experimental features
53
+ #
54
+ #
55
+ # <code>:performance</code>
56
+ # : performance hints
57
+ # * Shape variation limit
58
+ #
59
+ def self.[]: (category) -> bool
60
+
61
+ # <!--
62
+ # rdoc-file=error.c
63
+ # - Warning[category] = flag -> flag
64
+ # -->
65
+ # Sets the warning flags for `category`. See Warning.[] for the categories.
66
+ #
67
+ def self.[]=: [T] (category, T flag) -> T
68
+
69
+ # <!--
70
+ # rdoc-file=error.c
71
+ # - categories -> array
72
+ # -->
73
+ # Returns a list of the supported category symbols.
74
+ #
75
+ def self.categories: () -> Array[Symbol]
76
+
77
+ # <!--
78
+ # rdoc-file=error.c
79
+ # - warn(msg, category: nil) -> nil
80
+ # -->
81
+ # Writes warning message `msg` to $stderr. This method is called by Ruby for all
82
+ # emitted warnings. A `category` may be included with the warning.
83
+ #
84
+ # See the documentation of the Warning module for how to customize this.
85
+ #
86
+ def self?.warn: (String message, ?category: category?) -> nil
87
+ end
@@ -0,0 +1,107 @@
1
+ # Core and Standard Library Signatures Contribution Guide
2
+
3
+ ## Guides
4
+
5
+ * [RBS by Example](rbs_by_example.md)
6
+ * [Writing Signature Guide](sigs.md)
7
+ * [Testing Core API and Standard Library Types](stdlib.md)
8
+ * [Syntax](syntax.md)
9
+
10
+ ## Introduction
11
+
12
+ The RBS repository contains the type definitions of Core API and Standard Libraries.
13
+ There are some discussions whether if it is the best to have them in this repository, but we have them and continue updating the files meanwhile.
14
+
15
+ The target version of the bundled type definitions is the [latest _release_ of Ruby](https://www.ruby-lang.org/en/downloads/branches/) -- `4.0` as of 2026.
16
+ Note, however, that the CI currently retains the tests on Ruby 3.2 as well.
17
+
18
+ **The core API** type definitions are in `core` directory.
19
+ You will find the familiar class names in the directory, like `string.rbs` or `array.rbs`.
20
+
21
+ **The standard libraries** type definitions are in `stdlib` directory.
22
+ They have the [third party repository](repo.md) structure.
23
+ There is a `set` directory for the `set` library, and it contains `0` directory.
24
+ Because RBS supports the latest release of Ruby, we have one set of RBS files which corresponds to the bundled versions of the libraries.
25
+
26
+ ## Steps for Contribution
27
+
28
+ 1. Pick the class/library you will work for.
29
+ 2. Make a directory `stdlib/foo/0` if you work for one of the standard libraries.
30
+ 3. Write RBS type definitions and tests.
31
+
32
+ You will typically follow the steps as follows:
33
+
34
+ 1. Run `rbs prototype runtime` to generate list of methods.
35
+ 2. Run `rbs annotate` to import RDoc comments.
36
+ 3. Run `rake generate:stdlib_test[LIB]` to generate a test case.
37
+ 4. Write the type definitions and tests.
38
+
39
+ See the next *Useful Tools* section and the guides above for writing and testing RBS files.
40
+
41
+ ## Useful Tools
42
+
43
+ * `rbs prototype runtime --merge String`
44
+ * Generate a prototype using runtime API.
45
+ * `--merge` tells to use the method types in RBS if exists.
46
+ * `rbs prototype runtime --merge --method-owner=Numeric Integer`
47
+ * You can use --method-owner if you want to print method of other classes too, for documentation purpose.
48
+ * `rbs annotate core/string.rbs`
49
+ * Import RDoc comments.
50
+ * The imported docs contain the description, *arglists*, and filenames to help writing types.
51
+ * `bin/query-rdoc String#initialize`
52
+ * Print RDoc documents in the format you can copy-and-paste to RBS.
53
+ * `bin/sort core/string.rbs`
54
+ * Sort declarations members in RBS files.
55
+ * `rbs -r LIB validate`
56
+ Validate the syntax and some of the semantics.
57
+ * `rake generate:stdlib_test[String]`
58
+ Scaffold the stdlib test.
59
+ * `rake test/stdlib/Array_test.rb`
60
+ Run specific stdlib test with the path.
61
+
62
+ ### Standard STDLIB Members Order
63
+
64
+ We define the standard members order so that ordering doesn't bother reading diffs or git-annotate outputs.
65
+
66
+ 1. `def self.new` or `def initialize`
67
+ 2. Mixins
68
+ 3. Attributes
69
+ 4. Singleton methods
70
+ 5. `public` & public instance methods
71
+ 6. `private` & private instance methods
72
+
73
+ ```rbs
74
+ class HelloWorld[X]
75
+ def self.new: [A] () { (void) -> A } -> HelloWorld[A] # new or initialize comes first
76
+ def initialize: () -> void
77
+
78
+ include Enumerable[X, void] # Mixin comes next
79
+
80
+ attr_reader language: (:ja | :en) # Attributes
81
+
82
+ def self.all_languages: () -> Array[Symbol] # Singleton methods
83
+
84
+ public # Public instance methods
85
+
86
+ def each: () { (A) -> void } -> void # Members are sorted dictionary order
87
+
88
+ def to_s: (?Locale) -> String
89
+
90
+ private # Private instance methods
91
+
92
+ alias validate validate_locale
93
+
94
+ def validate_locale: () -> void
95
+ end
96
+ ```
97
+
98
+ ## Q&A
99
+
100
+ ### Some of the standard libraries are gems. Why we put the files in this repo?
101
+
102
+ You are correct. We want to move to their repos. We haven't started the migration yet.
103
+
104
+ ### How can we handle incompatibilities of core APIs and standard libraries between Rubies
105
+
106
+ We ignore the incompatibilities for now.
107
+ We focus on the latest version of core APIs and standard libraries.
data/docs/aliases.md ADDED
@@ -0,0 +1,79 @@
1
+ # Aliases
2
+
3
+ This document explains module/class aliases and type aliases.
4
+
5
+ ## Module/class alias
6
+
7
+ Module/class aliases give another name to a module/class.
8
+ This is useful for some syntaxes that has lexical constraints.
9
+
10
+ ```rbs
11
+ class C
12
+ end
13
+
14
+ class D = C # ::D is an alias for ::C
15
+
16
+ class E < D # ::E inherits from ::D, which is actually ::C
17
+ end
18
+ ```
19
+
20
+ Note that module/class aliases cannot be recursive.
21
+
22
+ So, we can define a *normalization* of aliased module/class names.
23
+ Normalization follows the chain of alias definitions and resolves them to the original module/class defined with `module`/`class` syntax.
24
+
25
+ ```rbs
26
+ class C
27
+ end
28
+
29
+ class D = C
30
+ class E = D
31
+ ```
32
+
33
+ `::E` is defined as an alias, and it can be normalized to `::C`.
34
+
35
+ ## Type alias
36
+
37
+ The biggest difference from module/class alias is that type alias can be recursive.
38
+
39
+ ```rbs
40
+ # cons_cell type is defined recursively
41
+ type cons_cell = nil
42
+ | [Integer, cons_cell]
43
+ ```
44
+
45
+ This means type aliases *cannot be* normalized generally.
46
+ So, we provide another operation for type alias, `DefinitionBuilder#expand_alias` and its family.
47
+ It substitutes with the immediate right hand side of a type alias.
48
+
49
+ ```
50
+ cons_cell ===> nil | [Integer, cons_cell] (expand 1 step)
51
+ ===> nil | [Integer, nil | [Integer, cons_cell]] (expand 2 steps)
52
+ ===> ... (expand will go infinitely)
53
+ ```
54
+
55
+ Note that the namespace of a type alias *can be* normalized, because they are module names.
56
+
57
+ ```rbs
58
+ module M
59
+ type t = String
60
+ end
61
+
62
+ module N = M
63
+ ```
64
+
65
+ With the type definition above, a type `::N::t` can be normalized to `::M::t`.
66
+ And then it can be expanded to `::String`.
67
+
68
+ > [!NOTE]
69
+ > This is something like an *unfold* operation in type theory.
70
+
71
+ ## Type name resolution
72
+
73
+ Type name resolution in RBS usually rewrites *relative* type names to *absolute* type names.
74
+ `Environment#resolve_type_names` converts all type names in the RBS type definitions, and returns a new `Environment` object.
75
+
76
+ It also *normalizes* modules names in type names.
77
+
78
+ - If the type name can be resolved and normalized successfully, the AST has *absolute* type names.
79
+ - If the type name resolution/normalization fails, the AST has *relative* type names.