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/numeric.rbs ADDED
@@ -0,0 +1,832 @@
1
+ # <!-- rdoc-file=numeric.c -->
2
+ # Numeric is the class from which all higher-level numeric classes should
3
+ # inherit.
4
+ #
5
+ # Numeric allows instantiation of heap-allocated objects. Other core numeric
6
+ # classes such as Integer are implemented as immediates, which means that each
7
+ # Integer is a single immutable object which is always passed by value.
8
+ #
9
+ # a = 1
10
+ # 1.object_id == a.object_id #=> true
11
+ #
12
+ # There can only ever be one instance of the integer `1`, for example. Ruby
13
+ # ensures this by preventing instantiation. If duplication is attempted, the
14
+ # same instance is returned.
15
+ #
16
+ # Integer.new(1) #=> NoMethodError: undefined method `new' for Integer:Class
17
+ # 1.dup #=> 1
18
+ # 1.object_id == 1.dup.object_id #=> true
19
+ #
20
+ # For this reason, Numeric should be used when defining other numeric classes.
21
+ #
22
+ # Classes which inherit from Numeric must implement `coerce`, which returns a
23
+ # two-member Array containing an object that has been coerced into an instance
24
+ # of the new class and `self` (see #coerce).
25
+ #
26
+ # Inheriting classes should also implement arithmetic operator methods
27
+ # (<code>+</code>, <code>-</code>, <code>*</code> and <code>/</code>) and the
28
+ # <code><=></code> operator (see Comparable). These methods may rely on `coerce`
29
+ # to ensure interoperability with instances of other numeric classes.
30
+ #
31
+ # class Tally < Numeric
32
+ # def initialize(string)
33
+ # @string = string
34
+ # end
35
+ #
36
+ # def to_s
37
+ # @string
38
+ # end
39
+ #
40
+ # def to_i
41
+ # @string.size
42
+ # end
43
+ #
44
+ # def coerce(other)
45
+ # [self.class.new('|' * other.to_i), self]
46
+ # end
47
+ #
48
+ # def <=>(other)
49
+ # to_i <=> other.to_i
50
+ # end
51
+ #
52
+ # def +(other)
53
+ # self.class.new('|' * (to_i + other.to_i))
54
+ # end
55
+ #
56
+ # def -(other)
57
+ # self.class.new('|' * (to_i - other.to_i))
58
+ # end
59
+ #
60
+ # def *(other)
61
+ # self.class.new('|' * (to_i * other.to_i))
62
+ # end
63
+ #
64
+ # def /(other)
65
+ # self.class.new('|' * (to_i / other.to_i))
66
+ # end
67
+ # end
68
+ #
69
+ # tally = Tally.new('||')
70
+ # puts tally * 2 #=> "||||"
71
+ # puts tally > 1 #=> true
72
+ #
73
+ # ## What's Here
74
+ #
75
+ # First, what's elsewhere. Class Numeric:
76
+ #
77
+ # * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
78
+ # * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
79
+ #
80
+ # Here, class Numeric provides methods for:
81
+ #
82
+ # * [Querying](rdoc-ref:Numeric@Querying)
83
+ # * [Comparing](rdoc-ref:Numeric@Comparing)
84
+ # * [Converting](rdoc-ref:Numeric@Converting)
85
+ # * [Other](rdoc-ref:Numeric@Other)
86
+ #
87
+ # ### Querying
88
+ #
89
+ # * #finite?: Returns true unless `self` is infinite or not a number.
90
+ # * #infinite?: Returns -1, `nil` or +1, depending on whether `self` is
91
+ # <code>-Infinity<tt>, finite, or <tt>+Infinity</code>.
92
+ # * #integer?: Returns whether `self` is an integer.
93
+ # * #negative?: Returns whether `self` is negative.
94
+ # * #nonzero?: Returns whether `self` is not zero.
95
+ # * #positive?: Returns whether `self` is positive.
96
+ # * #real?: Returns whether `self` is a real value.
97
+ # * #zero?: Returns whether `self` is zero.
98
+ #
99
+ # ### Comparing
100
+ #
101
+ # * #<=>: Returns:
102
+ #
103
+ # * -1 if `self` is less than the given value.
104
+ # * 0 if `self` is equal to the given value.
105
+ # * 1 if `self` is greater than the given value.
106
+ # * `nil` if `self` and the given value are not comparable.
107
+ #
108
+ # * #eql?: Returns whether `self` and the given value have the same value and
109
+ # type.
110
+ #
111
+ # ### Converting
112
+ #
113
+ # * #% (aliased as #modulo): Returns the remainder of `self` divided by the
114
+ # given value.
115
+ # * #-@: Returns the value of `self`, negated.
116
+ # * #abs (aliased as #magnitude): Returns the absolute value of `self`.
117
+ # * #abs2: Returns the square of `self`.
118
+ # * #angle (aliased as #arg and #phase): Returns 0 if `self` is positive,
119
+ # Math::PI otherwise.
120
+ # * #ceil: Returns the smallest number greater than or equal to `self`, to a
121
+ # given precision.
122
+ # * #coerce: Returns array <code>[coerced_self, coerced_other]</code> for the
123
+ # given other value.
124
+ # * #conj (aliased as #conjugate): Returns the complex conjugate of `self`.
125
+ # * #denominator: Returns the denominator (always positive) of the Rational
126
+ # representation of `self`.
127
+ # * #div: Returns the value of `self` divided by the given value and converted
128
+ # to an integer.
129
+ # * #divmod: Returns array <code>[quotient, modulus]</code> resulting from
130
+ # dividing `self` the given divisor.
131
+ # * #fdiv: Returns the Float result of dividing `self` by the given divisor.
132
+ # * #floor: Returns the largest number less than or equal to `self`, to a
133
+ # given precision.
134
+ # * #i: Returns the Complex object <code>Complex(0, self)</code>. the given
135
+ # value.
136
+ # * #imaginary (aliased as #imag): Returns the imaginary part of the `self`.
137
+ # * #numerator: Returns the numerator of the Rational representation of
138
+ # `self`; has the same sign as `self`.
139
+ # * #polar: Returns the array <code>[self.abs, self.arg]</code>.
140
+ # * #quo: Returns the value of `self` divided by the given value.
141
+ # * #real: Returns the real part of `self`.
142
+ # * #rect (aliased as #rectangular): Returns the array <code>[self, 0]</code>.
143
+ # * #remainder: Returns <code>self-arg*(self/arg).truncate</code> for the
144
+ # given `arg`.
145
+ # * #round: Returns the value of `self` rounded to the nearest value for the
146
+ # given a precision.
147
+ # * #to_c: Returns the Complex representation of `self`.
148
+ # * #to_int: Returns the Integer representation of `self`, truncating if
149
+ # necessary.
150
+ # * #truncate: Returns `self` truncated (toward zero) to a given precision.
151
+ #
152
+ # ### Other
153
+ #
154
+ # * #clone: Returns `self`; does not allow freezing.
155
+ # * #dup (aliased as #+@): Returns `self`.
156
+ # * #step: Invokes the given block with the sequence of specified numbers.
157
+ #
158
+ class Numeric
159
+ include Comparable
160
+
161
+ # The direction you can round
162
+ type round_mode = :up | :down | :even | 'up' | 'down' | 'even' | string | nil
163
+
164
+ # <!--
165
+ # rdoc-file=numeric.c
166
+ # - self % other -> real_numeric
167
+ # -->
168
+ # Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
169
+ #
170
+ # Of the Core and Standard Library classes, only Rational uses this
171
+ # implementation.
172
+ #
173
+ # For Rational `r` and real number `n`, these expressions are equivalent:
174
+ #
175
+ # r % n
176
+ # r-n*(r/n).floor
177
+ # r.divmod(n)[1]
178
+ #
179
+ # See Numeric#divmod.
180
+ #
181
+ # Examples:
182
+ #
183
+ # r = Rational(1, 2) # => (1/2)
184
+ # r2 = Rational(2, 3) # => (2/3)
185
+ # r % r2 # => (1/2)
186
+ # r % 2 # => (1/2)
187
+ # r % 2.0 # => 0.5
188
+ #
189
+ # r = Rational(301,100) # => (301/100)
190
+ # r2 = Rational(7,5) # => (7/5)
191
+ # r % r2 # => (21/100)
192
+ # r % -r2 # => (-119/100)
193
+ # (-r) % r2 # => (119/100)
194
+ # (-r) %-r2 # => (-21/100)
195
+ #
196
+ def %: (Numeric) -> Numeric
197
+
198
+ # Performs addition: the class of the resulting object depends on the class of
199
+ # `numeric`.
200
+ #
201
+ def +: (Numeric) -> Numeric
202
+
203
+ # <!--
204
+ # rdoc-file=numeric.rb
205
+ # - +self -> self
206
+ # -->
207
+ # Returns `self`.
208
+ #
209
+ def +@: () -> self
210
+
211
+ # Performs subtraction: the class of the resulting object depends on the class
212
+ # of `numeric`.
213
+ #
214
+ def -: (Numeric) -> Numeric
215
+
216
+ # <!--
217
+ # rdoc-file=numeric.c
218
+ # - -self -> numeric
219
+ # -->
220
+ # Returns `self`, negated.
221
+ #
222
+ def -@: () -> self
223
+
224
+ # <!--
225
+ # rdoc-file=numeric.c
226
+ # - self <=> other -> zero or nil
227
+ # -->
228
+ # Compares `self` and `other`.
229
+ #
230
+ # Returns:
231
+ #
232
+ # * Zero, if `self` is the same as `other`.
233
+ # * `nil`, otherwise.
234
+ #
235
+ # Class Numeric includes module Comparable, each of whose methods uses
236
+ # Numeric#<=> for comparison.
237
+ #
238
+ # No subclass in the Ruby Core or Standard Library uses this implementation.
239
+ #
240
+ def <=>: (Numeric other) -> Integer
241
+
242
+ # <!--
243
+ # rdoc-file=numeric.c
244
+ # - abs -> numeric
245
+ # -->
246
+ # Returns the absolute value of `self`.
247
+ #
248
+ # 12.abs #=> 12
249
+ # (-34.56).abs #=> 34.56
250
+ # -34.56.abs #=> 34.56
251
+ #
252
+ def abs: () -> Numeric
253
+
254
+ # <!--
255
+ # rdoc-file=complex.c
256
+ # - abs2 -> real
257
+ # -->
258
+ # Returns the square of `self`.
259
+ #
260
+ def abs2: () -> self
261
+
262
+ # <!-- rdoc-file=complex.c -->
263
+ # Returns zero if `self` is positive, Math::PI otherwise.
264
+ #
265
+ def angle: () -> (0 | Float)
266
+
267
+ # <!--
268
+ # rdoc-file=complex.c
269
+ # - arg -> 0 or Math::PI
270
+ # -->
271
+ # Returns zero if `self` is positive, Math::PI otherwise.
272
+ #
273
+ alias arg angle
274
+
275
+ # <!--
276
+ # rdoc-file=numeric.c
277
+ # - ceil(ndigits = 0) -> float or integer
278
+ # -->
279
+ # Returns the smallest float or integer that is greater than or equal to `self`,
280
+ # as specified by the given `ndigits`, which must be an [integer-convertible
281
+ # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
282
+ #
283
+ # Equivalent to <code>self.to_f.ceil(ndigits)</code>.
284
+ #
285
+ # Related: #floor, Float#ceil.
286
+ #
287
+ def ceil: () -> Integer
288
+ | (Integer digits) -> (Integer | Numeric)
289
+
290
+ # <!--
291
+ # rdoc-file=numeric.c
292
+ # - coerce(other) -> array
293
+ # -->
294
+ # Returns a 2-element array containing two numeric elements, formed from the two
295
+ # operands `self` and `other`, of a common compatible type.
296
+ #
297
+ # Of the Core and Standard Library classes, Integer, Rational, and Complex use
298
+ # this implementation.
299
+ #
300
+ # Examples:
301
+ #
302
+ # i = 2 # => 2
303
+ # i.coerce(3) # => [3, 2]
304
+ # i.coerce(3.0) # => [3.0, 2.0]
305
+ # i.coerce(Rational(1, 2)) # => [0.5, 2.0]
306
+ # i.coerce(Complex(3, 4)) # Raises RangeError.
307
+ #
308
+ # r = Rational(5, 2) # => (5/2)
309
+ # r.coerce(2) # => [(2/1), (5/2)]
310
+ # r.coerce(2.0) # => [2.0, 2.5]
311
+ # r.coerce(Rational(2, 3)) # => [(2/3), (5/2)]
312
+ # r.coerce(Complex(3, 4)) # => [(3+4i), ((5/2)+0i)]
313
+ #
314
+ # c = Complex(2, 3) # => (2+3i)
315
+ # c.coerce(2) # => [(2+0i), (2+3i)]
316
+ # c.coerce(2.0) # => [(2.0+0i), (2+3i)]
317
+ # c.coerce(Rational(1, 2)) # => [((1/2)+0i), (2+3i)]
318
+ # c.coerce(Complex(3, 4)) # => [(3+4i), (2+3i)]
319
+ #
320
+ # Raises an exception if any type conversion fails.
321
+ #
322
+ def coerce: (Numeric) -> [ Numeric, Numeric ]
323
+
324
+ # <!--
325
+ # rdoc-file=numeric.rb
326
+ # - conj -> self
327
+ # -->
328
+ # Returns `self`.
329
+ #
330
+ def conjugate: () -> self
331
+
332
+ # <!--
333
+ # rdoc-file=numeric.rb
334
+ # - conj()
335
+ # -->
336
+ #
337
+ alias conj conjugate
338
+
339
+ # <!--
340
+ # rdoc-file=rational.c
341
+ # - num.denominator -> integer
342
+ # -->
343
+ # Returns the denominator (always positive).
344
+ #
345
+ def denominator: () -> Integer
346
+
347
+ # <!--
348
+ # rdoc-file=numeric.c
349
+ # - div(other) -> integer
350
+ # -->
351
+ # Returns the quotient <code>self/other</code> as an integer (via `floor`),
352
+ # using method <code>/</code> as defined in the subclass of Numeric. (Numeric
353
+ # itself does not define <code>/</code>.)
354
+ #
355
+ # Of the Core and Standard Library classes, Only Float and Rational use this
356
+ # implementation.
357
+ #
358
+ def div: (Numeric) -> Integer
359
+
360
+ # <!--
361
+ # rdoc-file=numeric.c
362
+ # - divmod(other) -> array
363
+ # -->
364
+ # Returns a 2-element array <code>[q, r]</code>, where
365
+ #
366
+ # q = (self/other).floor # Quotient
367
+ # r = self % other # Remainder
368
+ #
369
+ # Of the Core and Standard Library classes, only Rational uses this
370
+ # implementation.
371
+ #
372
+ # Examples:
373
+ #
374
+ # Rational(11, 1).divmod(4) # => [2, (3/1)]
375
+ # Rational(11, 1).divmod(-4) # => [-3, (-1/1)]
376
+ # Rational(-11, 1).divmod(4) # => [-3, (1/1)]
377
+ # Rational(-11, 1).divmod(-4) # => [2, (-3/1)]
378
+ #
379
+ # Rational(12, 1).divmod(4) # => [3, (0/1)]
380
+ # Rational(12, 1).divmod(-4) # => [-3, (0/1)]
381
+ # Rational(-12, 1).divmod(4) # => [-3, (0/1)]
382
+ # Rational(-12, 1).divmod(-4) # => [3, (0/1)]
383
+ #
384
+ # Rational(13, 1).divmod(4.0) # => [3, 1.0]
385
+ # Rational(13, 1).divmod(Rational(4, 11)) # => [35, (3/11)]
386
+ #
387
+ def divmod: (Numeric) -> [ Numeric, Numeric ]
388
+
389
+ # <!--
390
+ # rdoc-file=numeric.c
391
+ # - eql?(other) -> true or false
392
+ # -->
393
+ # Returns `true` if `self` and `other` are the same type and have equal values.
394
+ #
395
+ # Of the Core and Standard Library classes, only Integer, Rational, and Complex
396
+ # use this implementation.
397
+ #
398
+ # Examples:
399
+ #
400
+ # 1.eql?(1) # => true
401
+ # 1.eql?(1.0) # => false
402
+ # 1.eql?(Rational(1, 1)) # => false
403
+ # 1.eql?(Complex(1, 0)) # => false
404
+ #
405
+ # Method <code>eql?</code> is different from <code>==</code> in that
406
+ # <code>eql?</code> requires matching types, while <code>==</code> does not.
407
+ #
408
+ def eql?: (untyped) -> bool
409
+
410
+ # <!--
411
+ # rdoc-file=numeric.c
412
+ # - fdiv(other) -> float
413
+ # -->
414
+ # Returns the quotient <code>self/other</code> as a float, using method
415
+ # <code>/</code> as defined in the subclass of Numeric. (Numeric itself does not
416
+ # define <code>/</code>.)
417
+ #
418
+ # Of the Core and Standard Library classes, only BigDecimal uses this
419
+ # implementation.
420
+ #
421
+ def fdiv: (Numeric) -> Numeric
422
+
423
+ # <!--
424
+ # rdoc-file=numeric.rb
425
+ # - finite? -> true or false
426
+ # -->
427
+ # Returns `true` if `self` is a finite number, `false` otherwise.
428
+ #
429
+ def finite?: () -> bool
430
+
431
+ # <!--
432
+ # rdoc-file=numeric.c
433
+ # - floor(ndigits = 0) -> float or integer
434
+ # -->
435
+ # Returns the largest float or integer that is less than or equal to `self`, as
436
+ # specified by the given `ndigits`, which must be an [integer-convertible
437
+ # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
438
+ #
439
+ # Equivalent to <code>self.to_f.floor(ndigits)</code>.
440
+ #
441
+ # Related: #ceil, Float#floor.
442
+ #
443
+ def floor: () -> Integer
444
+ | (Integer digits) -> Numeric
445
+
446
+ # <!--
447
+ # rdoc-file=numeric.c
448
+ # - i -> complex
449
+ # -->
450
+ # Returns <code>Complex(0, self)</code>:
451
+ #
452
+ # 2.i # => (0+2i)
453
+ # -2.i # => (0-2i)
454
+ # 2.0.i # => (0+2.0i)
455
+ # Rational(1, 2).i # => (0+(1/2)*i)
456
+ # Complex(3, 4).i # Raises NoMethodError.
457
+ #
458
+ def i: () -> Complex
459
+
460
+ # <!--
461
+ # rdoc-file=numeric.rb
462
+ # - imag -> 0
463
+ # -->
464
+ # Returns zero.
465
+ #
466
+ def imaginary: () -> 0
467
+
468
+ # <!--
469
+ # rdoc-file=numeric.rb
470
+ # - imag()
471
+ # -->
472
+ #
473
+ alias imag imaginary
474
+
475
+ # <!--
476
+ # rdoc-file=numeric.rb
477
+ # - infinite? -> -1, 1, or nil
478
+ # -->
479
+ # Returns `nil`, -1, or 1 depending on whether `self` is finite,
480
+ # <code>-Infinity</code>, or <code>+Infinity</code>.
481
+ #
482
+ def infinite?: () -> Integer?
483
+
484
+ # <!--
485
+ # rdoc-file=numeric.rb
486
+ # - integer? -> true or false
487
+ # -->
488
+ # Returns `true` if `self` is an Integer.
489
+ #
490
+ # 1.0.integer? # => false
491
+ # 1.integer? # => true
492
+ #
493
+ def integer?: () -> bool
494
+
495
+ # <!-- rdoc-file=numeric.c -->
496
+ # Returns the absolute value of `self`.
497
+ #
498
+ # 12.abs #=> 12
499
+ # (-34.56).abs #=> 34.56
500
+ # -34.56.abs #=> 34.56
501
+ #
502
+ alias magnitude abs
503
+
504
+ # <!-- rdoc-file=numeric.c -->
505
+ # Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
506
+ #
507
+ # Of the Core and Standard Library classes, only Rational uses this
508
+ # implementation.
509
+ #
510
+ # For Rational `r` and real number `n`, these expressions are equivalent:
511
+ #
512
+ # r % n
513
+ # r-n*(r/n).floor
514
+ # r.divmod(n)[1]
515
+ #
516
+ # See Numeric#divmod.
517
+ #
518
+ # Examples:
519
+ #
520
+ # r = Rational(1, 2) # => (1/2)
521
+ # r2 = Rational(2, 3) # => (2/3)
522
+ # r % r2 # => (1/2)
523
+ # r % 2 # => (1/2)
524
+ # r % 2.0 # => 0.5
525
+ #
526
+ # r = Rational(301,100) # => (301/100)
527
+ # r2 = Rational(7,5) # => (7/5)
528
+ # r % r2 # => (21/100)
529
+ # r % -r2 # => (-119/100)
530
+ # (-r) % r2 # => (119/100)
531
+ # (-r) %-r2 # => (-21/100)
532
+ #
533
+ def modulo: (Numeric) -> Numeric
534
+
535
+ # <!--
536
+ # rdoc-file=numeric.c
537
+ # - negative? -> true or false
538
+ # -->
539
+ # Returns `true` if `self` is less than 0, `false` otherwise.
540
+ #
541
+ def negative?: () -> bool
542
+
543
+ # <!--
544
+ # rdoc-file=numeric.c
545
+ # - nonzero? -> self or nil
546
+ # -->
547
+ # Returns `self` if `self` is not a zero value, `nil` otherwise; uses method
548
+ # <code>zero?</code> for the evaluation.
549
+ #
550
+ # The returned `self` allows the method to be chained:
551
+ #
552
+ # a = %w[z Bb bB bb BB a aA Aa AA A]
553
+ # a.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b }
554
+ # # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
555
+ #
556
+ # Of the Core and Standard Library classes, Integer, Float, Rational, and
557
+ # Complex use this implementation.
558
+ #
559
+ # Related: #zero?
560
+ #
561
+ def nonzero?: () -> self?
562
+
563
+ # <!--
564
+ # rdoc-file=rational.c
565
+ # - num.numerator -> integer
566
+ # -->
567
+ # Returns the numerator.
568
+ #
569
+ def numerator: () -> Numeric
570
+
571
+ # <!-- rdoc-file=complex.c -->
572
+ # Returns zero if `self` is positive, Math::PI otherwise.
573
+ #
574
+ alias phase angle
575
+
576
+ # <!--
577
+ # rdoc-file=complex.c
578
+ # - polar -> array
579
+ # -->
580
+ # Returns array <code>[self.abs, self.arg]</code>.
581
+ #
582
+ def polar: () -> [ Numeric, Numeric ]
583
+
584
+ # <!--
585
+ # rdoc-file=numeric.c
586
+ # - positive? -> true or false
587
+ # -->
588
+ # Returns `true` if `self` is greater than 0, `false` otherwise.
589
+ #
590
+ def positive?: () -> bool
591
+
592
+ # <!--
593
+ # rdoc-file=rational.c
594
+ # - num.quo(int_or_rat) -> rat
595
+ # - num.quo(flo) -> flo
596
+ # -->
597
+ # Returns the most exact division (rational for integers, float for floats).
598
+ #
599
+ def quo: (Numeric) -> Numeric
600
+
601
+ # <!--
602
+ # rdoc-file=numeric.rb
603
+ # - real -> self
604
+ # -->
605
+ # Returns `self`.
606
+ #
607
+ def real: () -> self
608
+
609
+ # <!--
610
+ # rdoc-file=numeric.rb
611
+ # - real? -> true or false
612
+ # -->
613
+ # Returns `true` if `self` is a real number (i.e. not Complex).
614
+ #
615
+ def real?: () -> true
616
+
617
+ # <!-- rdoc-file=complex.c -->
618
+ # Returns array <code>[self, 0]</code>.
619
+ #
620
+ def rect: () -> [ Numeric, Numeric ]
621
+
622
+ # <!--
623
+ # rdoc-file=complex.c
624
+ # - rect -> array
625
+ # -->
626
+ # Returns array <code>[self, 0]</code>.
627
+ #
628
+ alias rectangular rect
629
+
630
+ # <!--
631
+ # rdoc-file=numeric.c
632
+ # - remainder(other) -> real_number
633
+ # -->
634
+ # Returns the remainder after dividing `self` by `other`.
635
+ #
636
+ # Of the Core and Standard Library classes, only Float and Rational use this
637
+ # implementation.
638
+ #
639
+ # Examples:
640
+ #
641
+ # 11.0.remainder(4) # => 3.0
642
+ # 11.0.remainder(-4) # => 3.0
643
+ # -11.0.remainder(4) # => -3.0
644
+ # -11.0.remainder(-4) # => -3.0
645
+ #
646
+ # 12.0.remainder(4) # => 0.0
647
+ # 12.0.remainder(-4) # => 0.0
648
+ # -12.0.remainder(4) # => -0.0
649
+ # -12.0.remainder(-4) # => -0.0
650
+ #
651
+ # 13.0.remainder(4.0) # => 1.0
652
+ # 13.0.remainder(Rational(4, 1)) # => 1.0
653
+ #
654
+ # Rational(13, 1).remainder(4) # => (1/1)
655
+ # Rational(13, 1).remainder(-4) # => (1/1)
656
+ # Rational(-13, 1).remainder(4) # => (-1/1)
657
+ # Rational(-13, 1).remainder(-4) # => (-1/1)
658
+ #
659
+ def remainder: (Numeric) -> Numeric
660
+
661
+ # <!--
662
+ # rdoc-file=numeric.c
663
+ # - round(digits = 0) -> integer or float
664
+ # -->
665
+ # Returns `self` rounded to the nearest value with a precision of `digits`
666
+ # decimal digits.
667
+ #
668
+ # Numeric implements this by converting `self` to a Float and invoking
669
+ # Float#round.
670
+ #
671
+ def round: () -> Integer
672
+ | (Integer digits) -> Numeric
673
+
674
+ # <!--
675
+ # rdoc-file=numeric.c
676
+ # - step(to = nil, by = 1) {|n| ... } -> self
677
+ # - step(to = nil, by = 1) -> enumerator
678
+ # - step(to = nil, by: 1) {|n| ... } -> self
679
+ # - step(to = nil, by: 1) -> enumerator
680
+ # - step(by: 1, to: ) {|n| ... } -> self
681
+ # - step(by: 1, to: ) -> enumerator
682
+ # - step(by: , to: nil) {|n| ... } -> self
683
+ # - step(by: , to: nil) -> enumerator
684
+ # -->
685
+ # Generates a sequence of numbers; with a block given, traverses the sequence.
686
+ #
687
+ # Of the Core and Standard Library classes, Integer, Float, and Rational use
688
+ # this implementation.
689
+ #
690
+ # A quick example:
691
+ #
692
+ # squares = []
693
+ # 1.step(by: 2, to: 10) {|i| squares.push(i*i) }
694
+ # squares # => [1, 9, 25, 49, 81]
695
+ #
696
+ # The generated sequence:
697
+ #
698
+ # * Begins with `self`.
699
+ # * Continues at intervals of `by` (which may not be zero).
700
+ # * Ends with the last number that is within or equal to `to`; that is, less
701
+ # than or equal to `to` if `by` is positive, greater than or equal to `to`
702
+ # if `by` is negative. If `to` is `nil`, the sequence is of infinite length.
703
+ #
704
+ # If a block is given, calls the block with each number in the sequence; returns
705
+ # `self`. If no block is given, returns an Enumerator::ArithmeticSequence.
706
+ #
707
+ # **Keyword Arguments**
708
+ #
709
+ # With keyword arguments `by` and `to`, their values (or defaults) determine the
710
+ # step and limit:
711
+ #
712
+ # # Both keywords given.
713
+ # squares = []
714
+ # 4.step(by: 2, to: 10) {|i| squares.push(i*i) } # => 4
715
+ # squares # => [16, 36, 64, 100]
716
+ # cubes = []
717
+ # 3.step(by: -1.5, to: -3) {|i| cubes.push(i*i*i) } # => 3
718
+ # cubes # => [27.0, 3.375, 0.0, -3.375, -27.0]
719
+ # squares = []
720
+ # 1.2.step(by: 0.2, to: 2.0) {|f| squares.push(f*f) }
721
+ # squares # => [1.44, 1.9599999999999997, 2.5600000000000005, 3.24, 4.0]
722
+ #
723
+ # squares = []
724
+ # Rational(6/5).step(by: 0.2, to: 2.0) {|r| squares.push(r*r) }
725
+ # squares # => [1.0, 1.44, 1.9599999999999997, 2.5600000000000005, 3.24, 4.0]
726
+ #
727
+ # # Only keyword to given.
728
+ # squares = []
729
+ # 4.step(to: 10) {|i| squares.push(i*i) } # => 4
730
+ # squares # => [16, 25, 36, 49, 64, 81, 100]
731
+ # # Only by given.
732
+ #
733
+ # # Only keyword by given
734
+ # squares = []
735
+ # 4.step(by:2) {|i| squares.push(i*i); break if i > 10 }
736
+ # squares # => [16, 36, 64, 100, 144]
737
+ #
738
+ # # No block given.
739
+ # e = 3.step(by: -1.5, to: -3) # => (3.step(by: -1.5, to: -3))
740
+ # e.class # => Enumerator::ArithmeticSequence
741
+ #
742
+ # **Positional Arguments**
743
+ #
744
+ # With optional positional arguments `to` and `by`, their values (or defaults)
745
+ # determine the step and limit:
746
+ #
747
+ # squares = []
748
+ # 4.step(10, 2) {|i| squares.push(i*i) } # => 4
749
+ # squares # => [16, 36, 64, 100]
750
+ # squares = []
751
+ # 4.step(10) {|i| squares.push(i*i) }
752
+ # squares # => [16, 25, 36, 49, 64, 81, 100]
753
+ # squares = []
754
+ # 4.step {|i| squares.push(i*i); break if i > 10 } # => nil
755
+ # squares # => [16, 25, 36, 49, 64, 81, 100, 121]
756
+ #
757
+ # **Implementation Notes**
758
+ #
759
+ # If all the arguments are integers, the loop operates using an integer counter.
760
+ #
761
+ # If any of the arguments are floating point numbers, all are converted to
762
+ # floats, and the loop is executed <em>floor(n + n*Float::EPSILON) + 1</em>
763
+ # times, where <em>n = (limit - self)/step</em>.
764
+ #
765
+ def step: (?Numeric limit, ?Numeric step) { (Numeric) -> void } -> self
766
+ | (?Numeric limit, ?Numeric step) -> Enumerator::ArithmeticSequence
767
+ | (?by: Numeric, ?to: Numeric) { (Numeric) -> void } -> self
768
+ | (?by: Numeric, ?to: Numeric) -> Enumerator::ArithmeticSequence
769
+
770
+ # <!--
771
+ # rdoc-file=complex.c
772
+ # - to_c -> complex
773
+ # -->
774
+ # Returns `self` as a Complex object.
775
+ #
776
+ def to_c: () -> Complex
777
+
778
+ # <!--
779
+ # rdoc-file=numeric.c
780
+ # - to_int -> integer
781
+ # -->
782
+ # Returns `self` as an integer; converts using method `to_i` in the subclass of
783
+ # Numeric. (Numeric itself does not define `to_i`.)
784
+ #
785
+ # Of the Core and Standard Library classes, only Rational and Complex use this
786
+ # implementation.
787
+ #
788
+ # Examples:
789
+ #
790
+ # Rational(1, 2).to_int # => 0
791
+ # Rational(2, 1).to_int # => 2
792
+ # Complex(2, 0).to_int # => 2
793
+ # Complex(2, 1).to_int # Raises RangeError (non-zero imaginary part)
794
+ #
795
+ def to_int: () -> Integer
796
+
797
+ # <!--
798
+ # rdoc-file=numeric.c
799
+ # - truncate(digits = 0) -> integer or float
800
+ # -->
801
+ # Returns `self` truncated (toward zero) to a precision of `digits` decimal
802
+ # digits.
803
+ #
804
+ # Numeric implements this by converting `self` to a Float and invoking
805
+ # Float#truncate.
806
+ #
807
+ def truncate: () -> Integer
808
+ | (Integer ndigits) -> (Integer | Numeric)
809
+
810
+ # <!--
811
+ # rdoc-file=numeric.c
812
+ # - zero? -> true or false
813
+ # -->
814
+ # Returns `true` if `zero` has a zero value, `false` otherwise.
815
+ #
816
+ # Of the Core and Standard Library classes, only Rational and Complex use this
817
+ # implementation.
818
+ #
819
+ def zero?: () -> bool
820
+
821
+ # <!--
822
+ # rdoc-file=numeric.c
823
+ # - clone(freeze: true) -> self
824
+ # -->
825
+ # Returns `self`.
826
+ #
827
+ # Raises an exception if the value for `freeze` is neither `true` nor `nil`.
828
+ #
829
+ # Related: Numeric#dup.
830
+ #
831
+ def clone: (?freeze: true?) -> self
832
+ end