rbs 4.1.0.pre.2-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
data/core/builtin.rbs ADDED
@@ -0,0 +1,278 @@
1
+ # A type that's convertible to a `Complex`.
2
+ #
3
+ interface _ToC
4
+ # Convert `self` to a `Complex`.
5
+ #
6
+ def to_c: () -> Complex
7
+ end
8
+
9
+ # A type that's convertible to a `Rational`.
10
+ #
11
+ interface _ToR
12
+ # Convert `self` to a `Rational`.
13
+ #
14
+ def to_r: () -> Rational
15
+ end
16
+
17
+ # A type that's convertible to a `Float`.
18
+ #
19
+ interface _ToF
20
+ # Convert `self` to a `Float`.
21
+ #
22
+ def to_f: () -> Float
23
+ end
24
+
25
+ # A type that's convertible to an `Integer`.
26
+ #
27
+ interface _ToI
28
+ # Convert `self` to an `Integer`.
29
+ #
30
+ def to_i: () -> Integer
31
+ end
32
+
33
+ # A type that's implicitly convertible to an `Integer`.
34
+ #
35
+ # Implicit `.to_int` conversions are usable all over Ruby's stdlib, such as `Kernel#exit`,
36
+ # `File#chmod`, and `Array#take`. Virtually anywhere that accepts an `Integer` will also accept
37
+ # something that defines `.to_int`.
38
+ #
39
+ # Interestingly, types that define `.to_int` aren't immediately converted in math operations on
40
+ # `Integers` (eg `1 + defines_to_int`): Instead, `.coerce` must be defined on the right-hand-side
41
+ # value.
42
+ #
43
+ interface _ToInt
44
+ # Converts `self` to an `Integer`.
45
+ #
46
+ def to_int: () -> Integer
47
+ end
48
+
49
+ # A type that's convertible to a `String`.
50
+ #
51
+ interface _ToS
52
+ # Converts `self` to a `String`.
53
+ #
54
+ def to_s: () -> String
55
+ end
56
+
57
+ # A type that's implicitly convertible to a `String`.
58
+ #
59
+ # Implicit `.to_str` conversions are usable all over Ruby's stdlib, such as `Kernel#abort`,
60
+ # `String#+`, and `Object#send`. Virtually anywhere that accepts a `String` will also accept
61
+ # something that defines `.to_str`.
62
+ #
63
+ # Types that define `.to_str` are also usable wherever paths are expected (See the `path` type
64
+ # alias).
65
+ #
66
+ interface _ToStr
67
+ # Converts `self` to a `String`.
68
+ #
69
+ def to_str: () -> String
70
+ end
71
+
72
+ # A type that's explicitly convertible to a `String`.
73
+ #
74
+ # Interestingly enough, most methods that accept `Symbol` in the standard library _do not_ accept
75
+ # an object that defines `.to_sym` (unlike `String` and `.to_str`).
76
+ #
77
+ # There are only two places that `Symbol | _ToSym`, and they're quite obscure:
78
+ # - `Kernel#warn`'s `category:` optional parameter. (Oddly enough, not for `Warning.warn`, though.)
79
+ # - `TracePoint#trace`'s `event`s parameter.
80
+ # Additionally, the `rb_iseq_load` C function, only accessible through `Fiddle`, uses `.to_sym`
81
+ # internally.
82
+ #
83
+ interface _ToSym
84
+ # Converts `self` to a `Symbol`.
85
+ #
86
+ def to_sym: () -> Symbol
87
+ end
88
+
89
+ # A type that's convertible to a `Hash`.
90
+ #
91
+ interface _ToH[K, V]
92
+ # Converts `self` to a `Hash`.
93
+ #
94
+ def to_h: () -> Hash[K, V]
95
+ end
96
+
97
+ # A type that's implicitly convertible to a `Hash`.
98
+ #
99
+ # Implicit `.to_hash` conversions are usable infrequently in Ruby's stdlib, such as `Io#popen`,
100
+ # `Kernel#sprintf`, and `Enumerable#tally`. It's also used with the `**` "splatsplat" operator.
101
+ #
102
+ interface _ToHash[K, V]
103
+ # Converts `self` to a `Hash`.
104
+ #
105
+ def to_hash: () -> Hash[K, V]
106
+ end
107
+
108
+ # A type that's convertible to an `Array`.
109
+ #
110
+ interface _ToA[T]
111
+ # Converts `self` to an `Array`.
112
+ #
113
+ def to_a: () -> Array[T]
114
+ end
115
+
116
+ # A type that's implicitly convertible to an `Array`.
117
+ #
118
+ # Implicit `.to_ary` conversions are usable semi-frequently in Ruby's stdlib, such as `Dir#glob`,
119
+ # `Regex#union`, and `Class#private`. It's also used with the `*` "splat" operator.
120
+ #
121
+ interface _ToAry[T]
122
+ # Converts `self` to an `Array`.
123
+ #
124
+ def to_ary: () -> Array[T]
125
+ end
126
+
127
+ # A type that's convertible to a `Proc`.
128
+ #
129
+ # This is implicitly called when the `&` "block-passing" operator is used, in addition to a handful
130
+ # of other places, such as `Hash#default_proc=`.
131
+ #
132
+ interface _ToProc
133
+ # Converts `self` to a `Proc.`
134
+ #
135
+ def to_proc: () -> Proc
136
+ end
137
+
138
+ # A type that's convertible to a `String` that contains a filepath.
139
+ #
140
+ # Implicit `.to_path` conversions are usable throughout Ruby's stdlib, whenever a file path is
141
+ # expected, such as `Dir#mkdir`, `File#open`, and `UNIXSocket#read`. These functions, however, also
142
+ # accept types that define `.to_str`. See the `path` type alias.
143
+ #
144
+ interface _ToPath
145
+ # Converts `self` to a `String` containing a filepath.
146
+ #
147
+ def to_path: () -> String
148
+ end
149
+
150
+ # A type that's convertible to an `IO`.
151
+ #
152
+ # Implicit `.to_io` conversions are usuable infrequently in Ruby's stdlib, such as `IO#reopen`,
153
+ # `File.exist?`, and `Kernel#select`.
154
+ #
155
+ interface _ToIO
156
+ # Converts `self` to an `IO` object.
157
+ #
158
+ def to_io: () -> IO
159
+ end
160
+
161
+ # A type that defines the `.inspect` method.
162
+ #
163
+ # Since `Object` defines `.inspect`, nearly every object in Ruby has it defined: Only those that
164
+ # derive from `BasicObject`, or `undef inspect` won't have it. It's used in a few locations,
165
+ # such as `Kernel#p` and `Array#join`.
166
+ #
167
+ interface _Inspect
168
+ # Returns a debugging representation of `self`.
169
+ #
170
+ def inspect: () -> String
171
+ end
172
+
173
+ interface _Each[out T, out R = void]
174
+ def each: () { (T) -> void } -> R
175
+ end
176
+
177
+ interface _EachEntry[out T]
178
+ def each_entry: () { (T) -> void } -> self
179
+ end
180
+
181
+ interface _Reader
182
+ def read: (?int? length, ?string? outbuf) -> String?
183
+ end
184
+
185
+ interface _ReaderPartial
186
+ def readpartial: (int maxlen, ?string? outbuf) -> String
187
+ end
188
+
189
+ interface _Writer
190
+ # Writes the +data+ string. Returns the number of bytes written
191
+ #
192
+ def write: (*_ToS data) -> Integer
193
+ end
194
+
195
+ interface _Rewindable
196
+ # Positions the stream to the beginning of input, resetting `lineno` to zero.
197
+ #
198
+ def rewind: () -> Integer
199
+ end
200
+
201
+ # A type that's usable like a `Range[T]`.
202
+ #
203
+ # Implicit `_Range` usage is usable frequently in ruby's stdlib, such as `Comparable#clamp`,
204
+ # `String#[]`, and `Kernel#rand`.
205
+ #
206
+ interface _Range[T]
207
+ # The beginning value, `nil` if there is no beginning.
208
+ def begin: () -> T?
209
+
210
+ # The ending value, `nil` if there is no ending.
211
+ def end: () -> T?
212
+
213
+ # Whether or not to include the end in the range.
214
+ def exclude_end?: () -> bool
215
+ end
216
+
217
+ interface _Exception
218
+ def exception: () -> Exception
219
+ | (String arg0) -> Exception
220
+ end
221
+
222
+ # Represents an `Integer`, or a type convertible to it (via `.to_int`).
223
+ #
224
+ type int = Integer | _ToInt
225
+
226
+ # Represents a `Float`, or a type convertible to it (via `.to_f`).
227
+ #
228
+ %a{deprecated: Use `_ToF` directly}
229
+ type float = Float | _ToF
230
+
231
+ # Represents a `Range[T]`, or a type that acts like it (via `.begin`, `.end`, and `.exclude_end?`).
232
+ #
233
+ type range[T] = Range[T] | _Range[T]
234
+
235
+ # Represents a `String`, or a type convertible to it (via `.to_str`).
236
+ #
237
+ type string = String | _ToStr
238
+
239
+ # Represents an `Array[T]`, or a type convertible to it (via `.to_ary`).
240
+ #
241
+ type array[T] = Array[T] | _ToAry[T]
242
+
243
+ # Represents a `Hash[K, V]`, or a type convertible to it (via `.to_hash`).
244
+ #
245
+ type hash[K, V] = Hash[K, V] | _ToHash[K, V]
246
+
247
+ # Represents an `IO`, or a type convertible to it (via `.to_io`).
248
+ #
249
+ type io = IO | _ToIO
250
+
251
+ # A filesystem path: Either something that defines `.to_path`, or a `String` (or a type that is
252
+ # convertible to a string via `.to_str`).
253
+ #
254
+ # If a type defines both `.to_path` and `.to_str`, the `.to_path` function is called.
255
+ #
256
+ type path = string | _ToPath
257
+
258
+ # An `Encoding`, or a `String` (or type that defines `.to_str`) that represents it.
259
+ #
260
+ type encoding = Encoding | string
261
+
262
+ # A real number, ie not a `Complex`.
263
+ #
264
+ type real = Integer | Float | Rational
265
+
266
+ # Represents a `Symbol` or a `string`.
267
+ #
268
+ # A lot of builtin functions accept either a Symbol, a String, or something which has `.to_str`
269
+ # defined.
270
+ #
271
+ type interned = Symbol | string
272
+
273
+ # `boolish` is a type for documentation.
274
+ # It means the value of this type is only for testing a condition.
275
+ # Unlike `bool` type, it doesn't require the value is one of `true` or `false`.
276
+ # Any Ruby object can have `boolish` type.
277
+ #
278
+ type boolish = top
data/core/class.rbs ADDED
@@ -0,0 +1,223 @@
1
+ # <!-- rdoc-file=object.c -->
2
+ # Classes in Ruby are first-class objects---each is an instance of class Class.
3
+ #
4
+ # Typically, you create a new class by using:
5
+ #
6
+ # class Name
7
+ # # some code describing the class behavior
8
+ # end
9
+ #
10
+ # When a new class is created, an object of type Class is initialized and
11
+ # assigned to a global constant (Name in this case).
12
+ #
13
+ # When <code>Name.new</code> is called to create a new object, the #new method
14
+ # in Class is run by default. This can be demonstrated by overriding #new in
15
+ # Class:
16
+ #
17
+ # class Class
18
+ # alias old_new new
19
+ # def new(*args)
20
+ # print "Creating a new ", self.name, "\n"
21
+ # old_new(*args)
22
+ # end
23
+ # end
24
+ #
25
+ # class Name
26
+ # end
27
+ #
28
+ # n = Name.new
29
+ #
30
+ # <em>produces:</em>
31
+ #
32
+ # Creating a new Name
33
+ #
34
+ # Classes, modules, and objects are interrelated. In the diagram that follows,
35
+ # the vertical arrows represent inheritance, and the parentheses metaclasses.
36
+ # All metaclasses are instances of the class `Class'.
37
+ # +---------+ +-...
38
+ # | | |
39
+ # BasicObject-----|-->(BasicObject)-------|-...
40
+ # ^ | ^ |
41
+ # | | | |
42
+ # Object---------|----->(Object)---------|-...
43
+ # ^ | ^ |
44
+ # | | | |
45
+ # +-------+ | +--------+ |
46
+ # | | | | | |
47
+ # | Module-|---------|--->(Module)-|-...
48
+ # | ^ | | ^ |
49
+ # | | | | | |
50
+ # | Class-|---------|---->(Class)-|-...
51
+ # | ^ | | ^ |
52
+ # | +---+ | +----+
53
+ # | |
54
+ # obj--->OtherClass---------->(OtherClass)-----------...
55
+ #
56
+ %a{annotate:rdoc:source:from=object.c}
57
+ class Class < Module
58
+ # <!--
59
+ # rdoc-file=object.c
60
+ # - Class.new(super_class=Object) -> a_class
61
+ # - Class.new(super_class=Object) { |mod| ... } -> a_class
62
+ # -->
63
+ # Creates a new anonymous (unnamed) class with the given superclass (or Object
64
+ # if no parameter is given). You can give a class a name by assigning the class
65
+ # object to a constant.
66
+ #
67
+ # If a block is given, it is passed the class object, and the block is evaluated
68
+ # in the context of this class like #class_eval.
69
+ #
70
+ # fred = Class.new do
71
+ # def meth1
72
+ # "hello"
73
+ # end
74
+ # def meth2
75
+ # "bye"
76
+ # end
77
+ # end
78
+ #
79
+ # a = fred.new #=> #<#<Class:0x100381890>:0x100376b98>
80
+ # a.meth1 #=> "hello"
81
+ # a.meth2 #=> "bye"
82
+ #
83
+ # Assign the class to a constant (name starting uppercase) if you want to treat
84
+ # it like a regular class.
85
+ #
86
+ def initialize: (?Class superclass) ?{ (Class newclass) [self: Class] -> void } -> void
87
+
88
+ # <!--
89
+ # rdoc-file=object.c
90
+ # - class.allocate() -> obj
91
+ # -->
92
+ # Allocates space for a new object of *class*'s class and does not call
93
+ # initialize on the new instance. The returned object must be an instance of
94
+ # *class*.
95
+ #
96
+ # klass = Class.new do
97
+ # def initialize(*args)
98
+ # @initialized = true
99
+ # end
100
+ #
101
+ # def initialized?
102
+ # @initialized || false
103
+ # end
104
+ # end
105
+ #
106
+ # klass.allocate.initialized? #=> false
107
+ #
108
+ def allocate: () -> untyped
109
+
110
+ def self.allocate: () -> untyped
111
+
112
+ # <!--
113
+ # rdoc-file=object.c
114
+ # - attached_object -> object
115
+ # -->
116
+ # Returns the object for which the receiver is the singleton class.
117
+ #
118
+ # Raises an TypeError if the class is not a singleton class.
119
+ #
120
+ # class Foo; end
121
+ #
122
+ # Foo.singleton_class.attached_object #=> Foo
123
+ # Foo.attached_object #=> TypeError: `Foo' is not a singleton class
124
+ # Foo.new.singleton_class.attached_object #=> #<Foo:0x000000010491a370>
125
+ # TrueClass.attached_object #=> TypeError: `TrueClass' is not a singleton class
126
+ # NilClass.attached_object #=> TypeError: `NilClass' is not a singleton class
127
+ #
128
+ def attached_object: () -> untyped
129
+
130
+ # <!--
131
+ # rdoc-file=object.c
132
+ # - inherited(subclass)
133
+ # -->
134
+ # Callback invoked whenever a subclass of the current class is created.
135
+ #
136
+ # Example:
137
+ #
138
+ # class Foo
139
+ # def self.inherited(subclass)
140
+ # puts "New subclass: #{subclass}"
141
+ # end
142
+ # end
143
+ #
144
+ # class Bar < Foo
145
+ # end
146
+ #
147
+ # class Baz < Bar
148
+ # end
149
+ #
150
+ # <em>produces:</em>
151
+ #
152
+ # New subclass: Bar
153
+ # New subclass: Baz
154
+ #
155
+ private def inherited: (Class subclass) -> void
156
+
157
+ # <!--
158
+ # rdoc-file=object.c
159
+ # - class.new(args, ...) -> obj
160
+ # -->
161
+ # Calls #allocate to create a new object of *class*'s class, then invokes that
162
+ # object's #initialize method, passing it *args*. This is the method that ends
163
+ # up getting called whenever an object is constructed using <code>.new</code>.
164
+ #
165
+ def new: (*untyped, **untyped) ?{ (?) -> untyped } -> untyped
166
+
167
+ # <!--
168
+ # rdoc-file=object.c
169
+ # - subclasses -> array
170
+ # -->
171
+ # Returns an array of classes where the receiver is the direct superclass of the
172
+ # class, excluding singleton classes. The order of the returned array is not
173
+ # defined.
174
+ #
175
+ # class A; end
176
+ # class B < A; end
177
+ # class C < B; end
178
+ # class D < A; end
179
+ #
180
+ # A.subclasses #=> [D, B]
181
+ # B.subclasses #=> [C]
182
+ # C.subclasses #=> []
183
+ #
184
+ # Anonymous subclasses (not associated with a constant) are returned, too:
185
+ #
186
+ # c = Class.new(A)
187
+ # A.subclasses # => [#<Class:0x00007f003c77bd78>, D, B]
188
+ #
189
+ # Note that the parent does not hold references to subclasses and doesn't
190
+ # prevent them from being garbage collected. This means that the subclass might
191
+ # disappear when all references to it are dropped:
192
+ #
193
+ # # drop the reference to subclass, it can be garbage-collected now
194
+ # c = nil
195
+ #
196
+ # A.subclasses
197
+ # # It can be
198
+ # # => [#<Class:0x00007f003c77bd78>, D, B]
199
+ # # ...or just
200
+ # # => [D, B]
201
+ # # ...depending on whether garbage collector was run
202
+ #
203
+ def subclasses: () -> Array[Class]
204
+
205
+ # <!--
206
+ # rdoc-file=object.c
207
+ # - class.superclass -> a_super_class or nil
208
+ # -->
209
+ # Returns the superclass of *class*, or `nil`.
210
+ #
211
+ # File.superclass #=> IO
212
+ # IO.superclass #=> Object
213
+ # Object.superclass #=> BasicObject
214
+ # class Foo; end
215
+ # class Bar < Foo; end
216
+ # Bar.superclass #=> Foo
217
+ #
218
+ # Returns nil when the given class does not have a parent class:
219
+ #
220
+ # BasicObject.superclass #=> nil
221
+ #
222
+ def superclass: () -> Class?
223
+ end
@@ -0,0 +1,192 @@
1
+ # <!-- rdoc-file=compar.c -->
2
+ # The Comparable mixin is used by classes whose objects may be ordered. The
3
+ # class must define the <code><=></code> operator, which compares the receiver
4
+ # against another object, returning a value less than 0, returning 0, or
5
+ # returning a value greater than 0, depending on whether the receiver is less
6
+ # than, equal to, or greater than the other object. If the other object is not
7
+ # comparable then the <code><=></code> operator should return `nil`. Comparable
8
+ # uses <code><=></code> to implement the conventional comparison operators
9
+ # (<code><</code>, <code><=</code>, <code>==</code>, <code>>=</code>, and
10
+ # <code>></code>) and the method <code>between?</code>.
11
+ #
12
+ # class StringSorter
13
+ # include Comparable
14
+ #
15
+ # attr :str
16
+ # def <=>(other)
17
+ # str.size <=> other.str.size
18
+ # end
19
+ #
20
+ # def initialize(str)
21
+ # @str = str
22
+ # end
23
+ #
24
+ # def inspect
25
+ # @str
26
+ # end
27
+ # end
28
+ #
29
+ # s1 = StringSorter.new("Z")
30
+ # s2 = StringSorter.new("YY")
31
+ # s3 = StringSorter.new("XXX")
32
+ # s4 = StringSorter.new("WWWW")
33
+ # s5 = StringSorter.new("VVVVV")
34
+ #
35
+ # s1 < s2 #=> true
36
+ # s4.between?(s1, s3) #=> false
37
+ # s4.between?(s3, s5) #=> true
38
+ # [ s3, s2, s5, s4, s1 ].sort #=> [Z, YY, XXX, WWWW, VVVVV]
39
+ #
40
+ # ## What's Here
41
+ #
42
+ # Module Comparable provides these methods, all of which use method
43
+ # <code>#<=></code>:
44
+ #
45
+ # * #<: Returns whether `self` is less than the given object.
46
+ # * #<=: Returns whether `self` is less than or equal to the given object.
47
+ # * #==: Returns whether `self` is equal to the given object.
48
+ # * #>: Returns whether `self` is greater than the given object.
49
+ # * #>=: Returns whether `self` is greater than or equal to the given object.
50
+ # * #between?: Returns `true` if `self` is between two given objects.
51
+ # * #clamp: For given objects `min` and `max`, or range
52
+ # <code>(min..max)</code>, returns:
53
+ #
54
+ # * `min` if <code>(self <=> min) < 0</code>.
55
+ # * `max` if <code>(self <=> max) > 0</code>.
56
+ # * `self` otherwise.
57
+ #
58
+ module Comparable : _WithSpaceshipOperator
59
+ # <!--
60
+ # rdoc-file=compar.c
61
+ # - self < other -> true or false
62
+ # -->
63
+ # Returns whether `self` is "less than" `other`; equivalent to <code>(self <=>
64
+ # other) < 0</code>:
65
+ #
66
+ # 'foo' < 'foo' # => false
67
+ # 'foo' < 'food' # => true
68
+ #
69
+ def <: (untyped other) -> bool
70
+
71
+ # <!--
72
+ # rdoc-file=compar.c
73
+ # - self <= other -> true or false
74
+ # -->
75
+ # Returns whether `self` is "less than or equal to" `other`; equivalent to
76
+ # <code>(self <=> other) <= 0</code>:
77
+ #
78
+ # 'foo' <= 'foo' # => true
79
+ # 'foo' <= 'food' # => true
80
+ # 'food' <= 'foo' # => false
81
+ #
82
+ def <=: (untyped other) -> bool
83
+
84
+ # <!--
85
+ # rdoc-file=compar.c
86
+ # - obj == other -> true or false
87
+ # -->
88
+ # Compares two objects based on the receiver's <code><=></code> method,
89
+ # returning true if it returns 0. Also returns true if *obj* and *other* are the
90
+ # same object.
91
+ #
92
+ def ==: (untyped other) -> bool
93
+
94
+ # <!--
95
+ # rdoc-file=compar.c
96
+ # - obj > other -> true or false
97
+ # -->
98
+ # Compares two objects based on the receiver's <code><=></code> method,
99
+ # returning true if it returns a value greater than 0.
100
+ #
101
+ def >: (untyped other) -> bool
102
+
103
+ # <!--
104
+ # rdoc-file=compar.c
105
+ # - obj >= other -> true or false
106
+ # -->
107
+ # Compares two objects based on the receiver's <code><=></code> method,
108
+ # returning true if it returns a value greater than or equal to 0.
109
+ #
110
+ def >=: (untyped other) -> bool
111
+
112
+ # <!--
113
+ # rdoc-file=compar.c
114
+ # - obj.between?(min, max) -> true or false
115
+ # -->
116
+ # Returns `false` if *obj* <code><=></code> *min* is less than zero or if *obj*
117
+ # <code><=></code> *max* is greater than zero, `true` otherwise.
118
+ #
119
+ # 3.between?(1, 5) #=> true
120
+ # 6.between?(1, 5) #=> false
121
+ # 'cat'.between?('ant', 'dog') #=> true
122
+ # 'gnu'.between?('ant', 'dog') #=> false
123
+ #
124
+ def between?: (untyped min, untyped max) -> bool
125
+
126
+ # <!--
127
+ # rdoc-file=compar.c
128
+ # - obj.clamp(min, max) -> obj
129
+ # - obj.clamp(range) -> obj
130
+ # -->
131
+ # In <code>(min, max)</code> form, returns *min* if *obj* <code><=></code> *min*
132
+ # is less than zero, *max* if *obj* <code><=></code> *max* is greater than zero,
133
+ # and *obj* otherwise.
134
+ #
135
+ # 12.clamp(0, 100) #=> 12
136
+ # 523.clamp(0, 100) #=> 100
137
+ # -3.123.clamp(0, 100) #=> 0
138
+ #
139
+ # 'd'.clamp('a', 'f') #=> 'd'
140
+ # 'z'.clamp('a', 'f') #=> 'f'
141
+ #
142
+ # If *min* is `nil`, it is considered smaller than *obj*, and if *max* is `nil`,
143
+ # it is considered greater than *obj*.
144
+ #
145
+ # -20.clamp(0, nil) #=> 0
146
+ # 523.clamp(nil, 100) #=> 100
147
+ #
148
+ # In <code>(range)</code> form, returns <em>range.begin</em> if *obj*
149
+ # <code><=></code> <em>range.begin</em> is less than zero, <em>range.end</em> if
150
+ # *obj* <code><=></code> <em>range.end</em> is greater than zero, and *obj*
151
+ # otherwise.
152
+ #
153
+ # 12.clamp(0..100) #=> 12
154
+ # 523.clamp(0..100) #=> 100
155
+ # -3.123.clamp(0..100) #=> 0
156
+ #
157
+ # 'd'.clamp('a'..'f') #=> 'd'
158
+ # 'z'.clamp('a'..'f') #=> 'f'
159
+ #
160
+ # If <em>range.begin</em> is `nil`, it is considered smaller than *obj*, and if
161
+ # <em>range.end</em> is `nil`, it is considered greater than *obj*.
162
+ #
163
+ # -20.clamp(0..) #=> 0
164
+ # 523.clamp(..100) #=> 100
165
+ #
166
+ # When <em>range.end</em> is excluded and not `nil`, an exception is raised.
167
+ #
168
+ # 100.clamp(0...100) # ArgumentError
169
+ #
170
+ def clamp: [A, B] (A min, B max) -> (self | A | B)
171
+ | [A] (Range[A]) -> (self | A)
172
+ end
173
+
174
+ # This interface defines the condition for Comparable mixin.
175
+ #
176
+ interface Comparable::_WithSpaceshipOperator
177
+ # `<=>` operator must return Integer or `nil`.
178
+ # If `other` is greater than `self`, it returns a positive Integer.
179
+ # If `other` equals to `self`, it returns zero.
180
+ # If `other` is less than `self`, it returns a positive Integer.
181
+ # If no comparison is defined with `other` and `self`, it returns `nil`.
182
+ #
183
+ def <=>: (untyped other) -> Comparable::_CompareToZero?
184
+ end
185
+
186
+ # This interface indicates a type is comparable against zero.
187
+ #
188
+ interface Comparable::_CompareToZero
189
+ def <: (0) -> boolish
190
+
191
+ def >: (0) -> boolish
192
+ end