rbs 2.8.4 → 3.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (434) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +12 -4
  3. data/.github/workflows/comments.yml +11 -11
  4. data/.github/workflows/dependabot.yml +30 -0
  5. data/.github/workflows/ruby.yml +40 -49
  6. data/.github/workflows/typecheck.yml +36 -0
  7. data/.github/workflows/windows.yml +28 -0
  8. data/.gitignore +1 -0
  9. data/.rubocop.yml +42 -2
  10. data/CHANGELOG.md +845 -1
  11. data/README.md +64 -4
  12. data/Rakefile +198 -18
  13. data/Steepfile +11 -11
  14. data/config.yml +311 -0
  15. data/core/array.rbs +2189 -1914
  16. data/core/basic_object.rbs +59 -84
  17. data/core/binding.rbs +7 -69
  18. data/core/builtin.rbs +210 -11
  19. data/core/class.rbs +37 -0
  20. data/core/comparable.rbs +23 -25
  21. data/core/complex.rbs +449 -227
  22. data/core/constants.rbs +29 -21
  23. data/core/data.rbs +415 -0
  24. data/core/dir.rbs +698 -415
  25. data/core/encoding.rbs +468 -843
  26. data/core/enumerable.rbs +495 -455
  27. data/core/enumerator/product.rbs +92 -0
  28. data/core/enumerator.rbs +106 -9
  29. data/core/env.rbs +1 -1
  30. data/core/errno.rbs +506 -605
  31. data/core/errors.rbs +15 -17
  32. data/core/exception.rbs +361 -145
  33. data/core/false_class.rbs +39 -26
  34. data/core/fiber.rbs +121 -14
  35. data/core/file.rbs +1262 -320
  36. data/core/file_test.rbs +62 -45
  37. data/core/float.rbs +187 -208
  38. data/core/gc.rbs +446 -196
  39. data/core/global_variables.rbs +29 -29
  40. data/core/hash.rbs +242 -349
  41. data/core/integer.rbs +246 -308
  42. data/core/io/buffer.rbs +373 -122
  43. data/core/io/wait.rbs +29 -17
  44. data/core/io.rbs +1881 -1518
  45. data/core/kernel.rbs +2116 -1538
  46. data/core/marshal.rbs +24 -14
  47. data/core/match_data.rbs +413 -166
  48. data/core/math.rbs +531 -291
  49. data/core/method.rbs +101 -32
  50. data/core/module.rbs +228 -64
  51. data/core/nil_class.rbs +106 -47
  52. data/core/numeric.rbs +206 -292
  53. data/core/object.rbs +73 -1168
  54. data/core/object_space/weak_key_map.rbs +166 -0
  55. data/core/object_space.rbs +5 -3
  56. data/core/proc.rbs +280 -39
  57. data/core/process.rbs +1318 -658
  58. data/core/ractor.rbs +200 -134
  59. data/core/random.rbs +21 -4
  60. data/core/range.rbs +309 -153
  61. data/core/rational.rbs +4 -12
  62. data/core/rb_config.rbs +64 -43
  63. data/core/rbs/unnamed/argf.rbs +411 -147
  64. data/core/rbs/unnamed/env_class.rbs +137 -253
  65. data/core/rbs/unnamed/random.rbs +49 -26
  66. data/core/refinement.rbs +16 -1
  67. data/core/regexp.rbs +1568 -862
  68. data/core/ruby_vm.rbs +719 -7
  69. data/core/rubygems/config_file.rbs +3 -0
  70. data/core/rubygems/errors.rbs +69 -6
  71. data/core/rubygems/rubygems.rbs +71 -17
  72. data/core/rubygems/version.rbs +11 -7
  73. data/{stdlib/set/0 → core}/set.rbs +80 -91
  74. data/core/signal.rbs +14 -8
  75. data/core/string.rbs +1732 -1607
  76. data/core/struct.rbs +467 -95
  77. data/core/symbol.rbs +215 -245
  78. data/core/thread.rbs +133 -89
  79. data/core/thread_group.rbs +9 -9
  80. data/core/time.rbs +1141 -841
  81. data/core/trace_point.rbs +181 -121
  82. data/core/true_class.rbs +58 -32
  83. data/core/unbound_method.rbs +103 -30
  84. data/core/warning.rbs +50 -5
  85. data/docs/CONTRIBUTING.md +1 -1
  86. data/docs/architecture.md +110 -0
  87. data/docs/collection.md +59 -5
  88. data/docs/data_and_struct.md +86 -0
  89. data/docs/gem.md +57 -0
  90. data/docs/rbs_by_example.md +16 -35
  91. data/docs/repo.md +1 -1
  92. data/docs/sigs.md +7 -7
  93. data/docs/stdlib.md +63 -5
  94. data/docs/syntax.md +255 -61
  95. data/docs/tools.md +1 -0
  96. data/ext/rbs_extension/extconf.rb +10 -0
  97. data/ext/rbs_extension/lexer.c +1741 -1548
  98. data/ext/rbs_extension/lexer.h +11 -1
  99. data/ext/rbs_extension/lexer.re +12 -6
  100. data/ext/rbs_extension/lexstate.c +26 -3
  101. data/ext/rbs_extension/location.c +119 -111
  102. data/ext/rbs_extension/location.h +32 -7
  103. data/ext/rbs_extension/main.c +3 -0
  104. data/ext/rbs_extension/parser.c +883 -481
  105. data/ext/rbs_extension/parserstate.c +65 -25
  106. data/ext/rbs_extension/parserstate.h +13 -3
  107. data/ext/rbs_extension/rbs_extension.h +1 -10
  108. data/ext/rbs_extension/unescape.c +7 -47
  109. data/goodcheck.yml +2 -2
  110. data/{ext/rbs_extension → include/rbs}/constants.h +26 -15
  111. data/include/rbs/ruby_objs.h +72 -0
  112. data/include/rbs.h +7 -0
  113. data/lib/rbs/annotate/annotations.rb +3 -3
  114. data/lib/rbs/annotate/formatter.rb +13 -3
  115. data/lib/rbs/annotate/rdoc_annotator.rb +1 -1
  116. data/lib/rbs/annotate/rdoc_source.rb +12 -3
  117. data/lib/rbs/ast/declarations.rb +85 -2
  118. data/lib/rbs/ast/directives.rb +39 -0
  119. data/lib/rbs/ast/members.rb +49 -15
  120. data/lib/rbs/ast/type_param.rb +104 -15
  121. data/lib/rbs/ast/visitor.rb +137 -0
  122. data/lib/rbs/buffer.rb +5 -0
  123. data/lib/rbs/cli/colored_io.rb +48 -0
  124. data/lib/rbs/cli/diff.rb +83 -0
  125. data/lib/rbs/cli/validate.rb +356 -0
  126. data/lib/rbs/cli.rb +253 -143
  127. data/lib/rbs/collection/cleaner.rb +8 -1
  128. data/lib/rbs/collection/config/lockfile.rb +92 -0
  129. data/lib/rbs/collection/config/lockfile_generator.rb +154 -65
  130. data/lib/rbs/collection/config.rb +19 -46
  131. data/lib/rbs/collection/installer.rb +12 -13
  132. data/lib/rbs/collection/sources/base.rb +2 -2
  133. data/lib/rbs/collection/sources/git.rb +146 -69
  134. data/lib/rbs/collection/sources/local.rb +81 -0
  135. data/lib/rbs/collection/sources/rubygems.rb +10 -12
  136. data/lib/rbs/collection/sources/stdlib.rb +14 -13
  137. data/lib/rbs/collection/sources.rb +15 -2
  138. data/lib/rbs/collection.rb +2 -1
  139. data/lib/rbs/definition.rb +13 -16
  140. data/lib/rbs/definition_builder/ancestor_builder.rb +100 -24
  141. data/lib/rbs/definition_builder/method_builder.rb +4 -4
  142. data/lib/rbs/definition_builder.rb +489 -584
  143. data/lib/rbs/diff.rb +125 -0
  144. data/lib/rbs/environment/use_map.rb +77 -0
  145. data/lib/rbs/environment.rb +406 -105
  146. data/lib/rbs/environment_loader.rb +48 -44
  147. data/lib/rbs/environment_walker.rb +1 -1
  148. data/lib/rbs/errors.rb +175 -56
  149. data/lib/rbs/file_finder.rb +28 -0
  150. data/lib/rbs/location_aux.rb +8 -7
  151. data/lib/rbs/locator.rb +37 -15
  152. data/lib/rbs/method_type.rb +23 -0
  153. data/lib/rbs/namespace.rb +1 -0
  154. data/lib/rbs/parser/lex_result.rb +15 -0
  155. data/lib/rbs/parser/token.rb +23 -0
  156. data/lib/rbs/parser_aux.rb +22 -13
  157. data/lib/rbs/prototype/helpers.rb +48 -22
  158. data/lib/rbs/prototype/node_usage.rb +99 -0
  159. data/lib/rbs/prototype/rb.rb +125 -31
  160. data/lib/rbs/prototype/rbi.rb +49 -36
  161. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  162. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  163. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  164. data/lib/rbs/prototype/runtime.rb +273 -159
  165. data/lib/rbs/resolver/constant_resolver.rb +24 -8
  166. data/lib/rbs/resolver/type_name_resolver.rb +41 -7
  167. data/lib/rbs/sorter.rb +153 -123
  168. data/lib/rbs/substitution.rb +19 -0
  169. data/lib/rbs/subtractor.rb +201 -0
  170. data/lib/rbs/test/errors.rb +24 -11
  171. data/lib/rbs/test/guaranteed.rb +30 -0
  172. data/lib/rbs/test/hook.rb +45 -40
  173. data/lib/rbs/test/setup.rb +1 -1
  174. data/lib/rbs/test/tester.rb +1 -1
  175. data/lib/rbs/test/type_check.rb +120 -23
  176. data/lib/rbs/test.rb +6 -3
  177. data/lib/rbs/type_alias_dependency.rb +13 -3
  178. data/lib/rbs/type_alias_regularity.rb +21 -14
  179. data/lib/rbs/type_name.rb +18 -13
  180. data/lib/rbs/types.rb +352 -18
  181. data/lib/rbs/unit_test/convertibles.rb +176 -0
  182. data/lib/rbs/unit_test/spy.rb +136 -0
  183. data/lib/rbs/unit_test/type_assertions.rb +341 -0
  184. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  185. data/lib/rbs/unit_test.rb +6 -0
  186. data/lib/rbs/validator.rb +55 -30
  187. data/lib/rbs/variance_calculator.rb +26 -23
  188. data/lib/rbs/vendorer.rb +3 -3
  189. data/lib/rbs/version.rb +1 -1
  190. data/lib/rbs/writer.rb +69 -22
  191. data/lib/rbs.rb +7 -2
  192. data/lib/rdoc/discover.rb +1 -1
  193. data/lib/rdoc_plugin/parser.rb +5 -5
  194. data/rbs.gemspec +12 -2
  195. data/schema/decls.json +1 -1
  196. data/schema/members.json +15 -10
  197. data/sig/ancestor_builder.rbs +4 -0
  198. data/sig/ancestor_graph.rbs +22 -2
  199. data/sig/annotate/formatter.rbs +2 -2
  200. data/sig/annotate/rdoc_annotater.rbs +1 -1
  201. data/sig/cli/colored_io.rbs +15 -0
  202. data/sig/cli/diff.rbs +21 -0
  203. data/sig/cli/validate.rbs +43 -0
  204. data/sig/cli.rbs +4 -0
  205. data/sig/collection/config/lockfile.rbs +74 -0
  206. data/sig/collection/config/lockfile_generator.rbs +66 -0
  207. data/sig/collection/config.rbs +5 -48
  208. data/sig/collection/installer.rbs +1 -1
  209. data/sig/collection/sources.rbs +105 -33
  210. data/sig/constant.rbs +1 -1
  211. data/sig/declarations.rbs +42 -3
  212. data/sig/definition.rbs +26 -10
  213. data/sig/definition_builder.rbs +103 -81
  214. data/sig/diff.rbs +28 -0
  215. data/sig/directives.rbs +61 -0
  216. data/sig/environment.rbs +175 -29
  217. data/sig/environment_loader.rbs +20 -18
  218. data/sig/errors.rbs +123 -2
  219. data/sig/file_finder.rbs +28 -0
  220. data/sig/location.rbs +0 -3
  221. data/sig/locator.rbs +14 -2
  222. data/sig/manifest.yaml +0 -1
  223. data/sig/members.rbs +32 -9
  224. data/sig/method_types.rbs +10 -4
  225. data/sig/namespace.rbs +2 -3
  226. data/sig/parser.rbs +55 -16
  227. data/sig/prototype/helpers.rbs +4 -0
  228. data/sig/prototype/node_usage.rbs +20 -0
  229. data/sig/prototype/rb.rbs +10 -2
  230. data/sig/prototype/rbi.rbs +2 -0
  231. data/sig/prototype/runtime.rbs +182 -0
  232. data/sig/rbs.rbs +1 -1
  233. data/sig/rdoc/rbs.rbs +4 -0
  234. data/sig/repository.rbs +7 -5
  235. data/sig/resolver/constant_resolver.rbs +3 -4
  236. data/sig/resolver/context.rbs +1 -1
  237. data/sig/resolver/type_name_resolver.rbs +5 -1
  238. data/sig/shims/bundler.rbs +38 -0
  239. data/sig/shims/rubygems.rbs +19 -0
  240. data/sig/sorter.rbs +23 -5
  241. data/sig/substitution.rbs +6 -0
  242. data/sig/subtractor.rbs +37 -0
  243. data/sig/test/errors.rbs +52 -0
  244. data/sig/test/guranteed.rbs +9 -0
  245. data/sig/test/type_check.rbs +19 -0
  246. data/sig/test.rbs +82 -0
  247. data/sig/type_alias_dependency.rbs +31 -0
  248. data/sig/type_alias_regularity.rbs +12 -6
  249. data/sig/type_param.rbs +45 -9
  250. data/sig/typename.rbs +8 -5
  251. data/sig/types.rbs +119 -12
  252. data/sig/unit_test/convertibles.rbs +154 -0
  253. data/sig/unit_test/spy.rbs +28 -0
  254. data/sig/unit_test/type_assertions.rbs +194 -0
  255. data/sig/unit_test/with_aliases.rbs +136 -0
  256. data/sig/use_map.rbs +35 -0
  257. data/sig/validator.rbs +12 -5
  258. data/sig/variance_calculator.rbs +3 -1
  259. data/sig/vendorer.rbs +1 -1
  260. data/sig/visitor.rbs +47 -0
  261. data/sig/writer.rbs +6 -2
  262. data/src/constants.c +153 -0
  263. data/src/ruby_objs.c +793 -0
  264. data/stdlib/base64/0/base64.rbs +298 -45
  265. data/stdlib/benchmark/0/benchmark.rbs +12 -3
  266. data/stdlib/bigdecimal/0/big_decimal.rbs +62 -198
  267. data/stdlib/cgi/0/core.rbs +68 -15
  268. data/stdlib/cgi/0/manifest.yaml +1 -0
  269. data/stdlib/coverage/0/coverage.rbs +50 -11
  270. data/stdlib/csv/0/csv.rbs +90 -119
  271. data/stdlib/csv/0/manifest.yaml +1 -0
  272. data/stdlib/date/0/date.rbs +806 -735
  273. data/stdlib/date/0/date_time.rbs +70 -211
  274. data/stdlib/dbm/0/dbm.rbs +0 -2
  275. data/stdlib/delegate/0/delegator.rbs +184 -0
  276. data/stdlib/delegate/0/kernel.rbs +47 -0
  277. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  278. data/stdlib/did_you_mean/0/did_you_mean.rbs +3 -8
  279. data/stdlib/digest/0/digest.rbs +48 -35
  280. data/stdlib/erb/0/erb.rbs +15 -39
  281. data/stdlib/etc/0/etc.rbs +174 -54
  282. data/stdlib/fileutils/0/fileutils.rbs +1234 -385
  283. data/stdlib/forwardable/0/forwardable.rbs +4 -4
  284. data/stdlib/io-console/0/io-console.rbs +82 -17
  285. data/stdlib/ipaddr/0/ipaddr.rbs +11 -6
  286. data/stdlib/json/0/json.rbs +434 -151
  287. data/stdlib/kconv/0/kconv.rbs +166 -0
  288. data/stdlib/logger/0/formatter.rbs +0 -2
  289. data/stdlib/logger/0/log_device.rbs +1 -3
  290. data/stdlib/logger/0/logger.rbs +465 -328
  291. data/stdlib/minitest/0/kernel.rbs +2 -2
  292. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
  293. data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
  294. data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
  295. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
  296. data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
  297. data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
  298. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  299. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  300. data/stdlib/minitest/0/minitest/mock.rbs +9 -5
  301. data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
  302. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
  303. data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
  304. data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
  305. data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
  306. data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
  307. data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
  308. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
  309. data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
  310. data/stdlib/minitest/0/minitest/spec.rbs +1 -1
  311. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
  312. data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
  313. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +7 -7
  314. data/stdlib/minitest/0/minitest/test.rbs +7 -14
  315. data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
  316. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  317. data/stdlib/minitest/0/minitest/unit.rbs +1 -2
  318. data/stdlib/minitest/0/minitest.rbs +41 -892
  319. data/stdlib/monitor/0/monitor.rbs +91 -10
  320. data/stdlib/mutex_m/0/mutex_m.rbs +0 -2
  321. data/stdlib/net-http/0/manifest.yaml +1 -1
  322. data/stdlib/net-http/0/net-http.rbs +3858 -964
  323. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  324. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  325. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  326. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  327. data/stdlib/nkf/0/nkf.rbs +35 -5
  328. data/stdlib/objspace/0/objspace.rbs +40 -18
  329. data/stdlib/observable/0/observable.rbs +217 -0
  330. data/stdlib/open-uri/0/manifest.yaml +4 -0
  331. data/stdlib/open-uri/0/open-uri.rbs +393 -0
  332. data/stdlib/open3/0/open3.rbs +147 -0
  333. data/stdlib/openssl/0/manifest.yaml +1 -0
  334. data/stdlib/openssl/0/openssl.rbs +681 -316
  335. data/stdlib/optparse/0/optparse.rbs +100 -65
  336. data/stdlib/pathname/0/pathname.rbs +24 -15
  337. data/stdlib/pp/0/manifest.yaml +2 -0
  338. data/stdlib/pp/0/pp.rbs +300 -0
  339. data/stdlib/prettyprint/0/prettyprint.rbs +2 -6
  340. data/stdlib/pstore/0/pstore.rbs +370 -156
  341. data/stdlib/psych/0/core_ext.rbs +12 -0
  342. data/stdlib/{yaml → psych}/0/dbm.rbs +3 -3
  343. data/stdlib/psych/0/manifest.yaml +3 -0
  344. data/stdlib/psych/0/psych.rbs +402 -0
  345. data/stdlib/{yaml → psych}/0/store.rbs +2 -2
  346. data/stdlib/pty/0/pty.rbs +63 -11
  347. data/stdlib/rdoc/0/code_object.rbs +51 -0
  348. data/stdlib/rdoc/0/comment.rbs +59 -0
  349. data/stdlib/rdoc/0/context.rbs +153 -0
  350. data/stdlib/rdoc/0/markup.rbs +117 -0
  351. data/stdlib/rdoc/0/parser.rbs +56 -0
  352. data/stdlib/rdoc/0/rdoc.rbs +13 -380
  353. data/stdlib/rdoc/0/ri.rbs +17 -0
  354. data/stdlib/rdoc/0/store.rbs +48 -0
  355. data/stdlib/rdoc/0/top_level.rbs +97 -0
  356. data/stdlib/resolv/0/resolv.rbs +16 -79
  357. data/stdlib/ripper/0/ripper.rbs +1648 -0
  358. data/stdlib/securerandom/0/securerandom.rbs +7 -2
  359. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  360. data/stdlib/singleton/0/singleton.rbs +0 -3
  361. data/stdlib/socket/0/addrinfo.rbs +13 -18
  362. data/stdlib/socket/0/basic_socket.rbs +5 -10
  363. data/stdlib/socket/0/ip_socket.rbs +0 -2
  364. data/stdlib/socket/0/socket.rbs +77 -46
  365. data/stdlib/socket/0/tcp_server.rbs +0 -5
  366. data/stdlib/socket/0/tcp_socket.rbs +36 -3
  367. data/stdlib/socket/0/udp_socket.rbs +4 -5
  368. data/stdlib/socket/0/unix_server.rbs +0 -5
  369. data/stdlib/socket/0/unix_socket.rbs +2 -4
  370. data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +188 -107
  371. data/stdlib/strscan/0/string_scanner.rbs +1269 -425
  372. data/stdlib/tempfile/0/tempfile.rbs +224 -61
  373. data/stdlib/time/0/time.rbs +48 -35
  374. data/stdlib/timeout/0/timeout.rbs +17 -8
  375. data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
  376. data/stdlib/tsort/0/tsort.rbs +0 -4
  377. data/stdlib/uri/0/common.rbs +271 -144
  378. data/stdlib/uri/0/file.rbs +5 -0
  379. data/stdlib/uri/0/ftp.rbs +1 -1
  380. data/stdlib/uri/0/generic.rbs +26 -22
  381. data/stdlib/uri/0/http.rbs +4 -4
  382. data/stdlib/uri/0/ldap.rbs +1 -1
  383. data/stdlib/uri/0/mailto.rbs +84 -0
  384. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  385. data/stdlib/yaml/0/manifest.yaml +1 -2
  386. data/stdlib/yaml/0/yaml.rbs +1 -199
  387. data/stdlib/zlib/0/buf_error.rbs +10 -0
  388. data/stdlib/zlib/0/data_error.rbs +10 -0
  389. data/stdlib/zlib/0/deflate.rbs +210 -0
  390. data/stdlib/zlib/0/error.rbs +20 -0
  391. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  392. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  393. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  394. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  395. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  396. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  397. data/stdlib/zlib/0/gzip_writer.rbs +166 -0
  398. data/stdlib/zlib/0/inflate.rbs +180 -0
  399. data/stdlib/zlib/0/mem_error.rbs +10 -0
  400. data/stdlib/zlib/0/need_dict.rbs +13 -0
  401. data/stdlib/zlib/0/stream_end.rbs +11 -0
  402. data/stdlib/zlib/0/stream_error.rbs +11 -0
  403. data/stdlib/zlib/0/version_error.rbs +11 -0
  404. data/stdlib/zlib/0/zlib.rbs +1 -3
  405. data/stdlib/zlib/0/zstream.rbs +200 -0
  406. data/templates/include/rbs/constants.h.erb +20 -0
  407. data/templates/include/rbs/ruby_objs.h.erb +10 -0
  408. data/templates/src/constants.c.erb +36 -0
  409. data/templates/src/ruby_objs.c.erb +27 -0
  410. data/templates/template.rb +122 -0
  411. metadata +136 -36
  412. data/Gemfile +0 -33
  413. data/Gemfile.lock +0 -118
  414. data/core/deprecated.rbs +0 -9
  415. data/ext/rbs_extension/constants.c +0 -135
  416. data/ext/rbs_extension/ruby_objs.c +0 -525
  417. data/ext/rbs_extension/ruby_objs.h +0 -43
  418. data/lib/rbs/constant_table.rb +0 -167
  419. data/lib/rbs/parser_compat/lexer_error.rb +0 -6
  420. data/lib/rbs/parser_compat/located_value.rb +0 -7
  421. data/lib/rbs/parser_compat/semantics_error.rb +0 -6
  422. data/lib/rbs/parser_compat/syntax_error.rb +0 -6
  423. data/lib/rbs/test/spy.rb +0 -6
  424. data/lib/rbs/type_name_resolver.rb +0 -67
  425. data/sig/constant_table.rbs +0 -30
  426. data/sig/shims/abstract_syntax_tree.rbs +0 -25
  427. data/sig/shims/pp.rbs +0 -3
  428. data/sig/shims/ripper.rbs +0 -8
  429. data/sig/shims.rbs +0 -69
  430. data/sig/type_name_resolver.rbs +0 -26
  431. data/stdlib/minitest/0/manifest.yaml +0 -2
  432. data/stdlib/prime/0/integer-extension.rbs +0 -41
  433. data/stdlib/prime/0/manifest.yaml +0 -2
  434. data/stdlib/prime/0/prime.rbs +0 -372
data/core/numeric.rbs CHANGED
@@ -74,168 +74,88 @@
74
74
  #
75
75
  # First, what's elsewhere. Class Numeric:
76
76
  #
77
- # * Inherits from [class
78
- # Object](Object.html#class-Object-label-What-27s+Here).
79
- # * Includes [module
80
- # Comparable](Comparable.html#module-Comparable-label-What-27s+Here).
81
- #
77
+ # * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
78
+ # * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
82
79
  #
83
80
  # Here, class Numeric provides methods for:
84
81
  #
85
- # * [Querying](#class-Numeric-label-Querying)
86
- # * [Comparing](#class-Numeric-label-Comparing)
87
- # * [Converting](#class-Numeric-label-Converting)
88
- # * [Other](#class-Numeric-label-Other)
89
- #
82
+ # * [Querying](rdoc-ref:Numeric@Querying)
83
+ # * [Comparing](rdoc-ref:Numeric@Comparing)
84
+ # * [Converting](rdoc-ref:Numeric@Converting)
85
+ # * [Other](rdoc-ref:Numeric@Other)
90
86
  #
91
87
  # ### Querying
92
88
  #
93
- # #finite?
94
- # : Returns true unless `self` is infinite or not a number.
95
- #
96
- # #infinite?
97
- # : Returns -1, `nil` or +1, depending on whether `self` is
98
- # `-Infinity<tt>, finite, or <tt>+Infinity`.
99
- #
100
- # #integer?
101
- # : Returns whether `self` is an integer.
102
- #
103
- # #negative?
104
- # : Returns whether `self` is negative.
105
- #
106
- # #nonzero?
107
- # : Returns whether `self` is not zero.
108
- #
109
- # #positive?
110
- # : Returns whether `self` is positive.
111
- #
112
- # #real?
113
- # : Returns whether `self` is a real value.
114
- #
115
- # #zero?
116
- # : Returns whether `self` is zero.
117
- #
118
- #
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
+ # `-Infinity<tt>, finite, or <tt>+Infinity`.
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.
119
98
  #
120
99
  # ### Comparing
121
100
  #
122
- # [<=>](#method-i-3C-3D-3E)
123
- # : Returns:
101
+ # * #<=>: Returns:
124
102
  #
125
103
  # * -1 if `self` is less than the given value.
126
104
  # * 0 if `self` is equal to the given value.
127
105
  # * 1 if `self` is greater than the given value.
128
106
  # * `nil` if `self` and the given value are not comparable.
129
107
  #
130
- # #eql?
131
- # : Returns whether `self` and the given value have the same value and
132
- # type.
133
- #
134
- #
108
+ # * #eql?: Returns whether `self` and the given value have the same value and
109
+ # type.
135
110
  #
136
111
  # ### Converting
137
112
  #
138
- # #% (aliased as #modulo)
139
- # : Returns the remainder of `self` divided by the given value.
140
- #
141
- # #-@
142
- # : Returns the value of `self`, negated.
143
- #
144
- # #abs (aliased as #magnitude)
145
- # : Returns the absolute value of `self`.
146
- #
147
- # #abs2
148
- # : Returns the square of `self`.
149
- #
150
- # #angle (aliased as #arg and #phase)
151
- # : Returns 0 if `self` is positive, Math::PI otherwise.
152
- #
153
- # #ceil
154
- # : Returns the smallest number greater than or equal to `self`, to a
155
- # given precision.
156
- #
157
- # #coerce
158
- # : Returns array `[coerced_self, coerced_other]` for the given other
159
- # value.
160
- #
161
- # #conj (aliased as #conjugate)
162
- # : Returns the complex conjugate of `self`.
163
- #
164
- # #denominator
165
- # : Returns the denominator (always positive) of the Rational
166
- # representation of `self`.
167
- #
168
- # #div
169
- # : Returns the value of `self` divided by the given value and converted
170
- # to an integer.
171
- #
172
- # #divmod
173
- # : Returns array `[quotient, modulus]` resulting from dividing `self` the
174
- # given divisor.
175
- #
176
- # #fdiv
177
- # : Returns the Float result of dividing `self` by the given divisor.
178
- #
179
- # #floor
180
- # : Returns the largest number less than or equal to `self`, to a given
181
- # precision.
182
- #
183
- # #i
184
- # : Returns the Complex object `Complex(0, self)`. the given value.
185
- #
186
- # #imaginary (aliased as #imag)
187
- # : Returns the imaginary part of the `self`.
188
- #
189
- # #numerator
190
- # : Returns the numerator of the Rational representation of `self`; has
191
- # the same sign as `self`.
192
- #
193
- # #polar
194
- # : Returns the array `[self.abs, self.arg]`.
195
- #
196
- # #quo
197
- # : Returns the value of `self` divided by the given value.
198
- #
199
- # #real
200
- # : Returns the real part of `self`.
201
- #
202
- # #rect (aliased as #rectangular)
203
- # : Returns the array `[self, 0]`.
204
- #
205
- # #remainder
206
- # : Returns `self-arg*(self/arg).truncate` for the given `arg`.
207
- #
208
- # #round
209
- # : Returns the value of `self` rounded to the nearest value for the given
210
- # a precision.
211
- #
212
- # #to_c
213
- # : Returns the Complex representation of `self`.
214
- #
215
- # #to_int
216
- # : Returns the Integer representation of `self`, truncating if necessary.
217
- #
218
- # #truncate
219
- # : Returns `self` truncated (toward zero) to a given precision.
220
- #
221
- #
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 `[coerced_self, coerced_other]` for the given other
123
+ # 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 `[quotient, modulus]` resulting from dividing
130
+ # `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 `Complex(0, self)`. the given value.
135
+ # * #imaginary (aliased as #imag): Returns the imaginary part of the `self`.
136
+ # * #numerator: Returns the numerator of the Rational representation of
137
+ # `self`; has the same sign as `self`.
138
+ # * #polar: Returns the array `[self.abs, self.arg]`.
139
+ # * #quo: Returns the value of `self` divided by the given value.
140
+ # * #real: Returns the real part of `self`.
141
+ # * #rect (aliased as #rectangular): Returns the array `[self, 0]`.
142
+ # * #remainder: Returns `self-arg*(self/arg).truncate` for the given `arg`.
143
+ # * #round: Returns the value of `self` rounded to the nearest value for the
144
+ # given a precision.
145
+ # * #to_c: Returns the Complex representation of `self`.
146
+ # * #to_int: Returns the Integer representation of `self`, truncating if
147
+ # necessary.
148
+ # * #truncate: Returns `self` truncated (toward zero) to a given precision.
222
149
  #
223
150
  # ### Other
224
151
  #
225
- # #clone
226
- # : Returns `self`; does not allow freezing.
227
- #
228
- # #dup (aliased as #+@)
229
- # : Returns `self`.
230
- #
231
- # #step
232
- # : Invokes the given block with the sequence of specified numbers.
152
+ # * #clone: Returns `self`; does not allow freezing.
153
+ # * #dup (aliased as #+@): Returns `self`.
154
+ # * #step: Invokes the given block with the sequence of specified numbers.
233
155
  #
234
156
  class Numeric
235
157
  include Comparable
236
158
 
237
- public
238
-
239
159
  # <!--
240
160
  # rdoc-file=numeric.c
241
161
  # - self % other -> real_numeric
@@ -247,9 +167,9 @@ class Numeric
247
167
  #
248
168
  # For Rational `r` and real number `n`, these expressions are equivalent:
249
169
  #
250
- # c % n
251
- # c-n*(c/n).floor
252
- # c.divmod(n)[1]
170
+ # r % n
171
+ # r-n*(r/n).floor
172
+ # r.divmod(n)[1]
253
173
  #
254
174
  # See Numeric#divmod.
255
175
  #
@@ -268,8 +188,6 @@ class Numeric
268
188
  # (-r) % r2 # => (119/100)
269
189
  # (-r) %-r2 # => (-21/100)
270
190
  #
271
- # Numeric#modulo is an alias for Numeric#%.
272
- #
273
191
  def %: (Numeric) -> Numeric
274
192
 
275
193
  # Performs addition: the class of the resulting object depends on the class of
@@ -278,7 +196,7 @@ class Numeric
278
196
  def +: (Numeric) -> Numeric
279
197
 
280
198
  # <!--
281
- # rdoc-file=numeric.c
199
+ # rdoc-file=numeric.rb
282
200
  # - +self -> self
283
201
  # -->
284
202
  # Returns `self`.
@@ -318,42 +236,40 @@ class Numeric
318
236
  # (-34.56).abs #=> 34.56
319
237
  # -34.56.abs #=> 34.56
320
238
  #
321
- # Numeric#magnitude is an alias for Numeric#abs.
322
- #
323
239
  def abs: () -> Numeric
324
240
 
325
241
  # <!--
326
242
  # rdoc-file=complex.c
327
- # - num.abs2 -> real
243
+ # - abs2 -> real
328
244
  # -->
329
- # Returns square of self.
245
+ # Returns the square of `self`.
330
246
  #
331
247
  def abs2: () -> Numeric
332
248
 
333
249
  # <!-- rdoc-file=complex.c -->
334
- # Returns 0 if the value is positive, pi otherwise.
250
+ # Returns zero if `self` is positive, Math::PI otherwise.
335
251
  #
336
252
  def angle: () -> Numeric
337
253
 
338
254
  # <!--
339
255
  # rdoc-file=complex.c
340
- # - num.arg -> 0 or float
341
- # - num.angle -> 0 or float
342
- # - num.phase -> 0 or float
256
+ # - arg -> 0 or Math::PI
343
257
  # -->
344
- # Returns 0 if the value is positive, pi otherwise.
258
+ # Returns zero if `self` is positive, Math::PI otherwise.
345
259
  #
346
260
  alias arg angle
347
261
 
348
262
  # <!--
349
263
  # rdoc-file=numeric.c
350
- # - ceil(digits = 0) -> integer or float
264
+ # - ceil(ndigits = 0) -> float or integer
351
265
  # -->
352
- # Returns the smallest number that is greater than or equal to `self` with a
353
- # precision of `digits` decimal digits.
266
+ # Returns the smallest float or integer that is greater than or equal to `self`,
267
+ # as specified by the given `ndigits`, which must be an [integer-convertible
268
+ # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
354
269
  #
355
- # Numeric implements this by converting `self` to a Float and invoking
356
- # Float#ceil.
270
+ # Equivalent to `self.to_f.ceil(ndigits)`.
271
+ #
272
+ # Related: #floor, Float#ceil.
357
273
  #
358
274
  def ceil: () -> Integer
359
275
  | (Integer digits) -> (Integer | Numeric)
@@ -392,17 +308,18 @@ class Numeric
392
308
  #
393
309
  def coerce: (Numeric) -> [ Numeric, Numeric ]
394
310
 
395
- # <!-- rdoc-file=complex.c -->
396
- # Returns self.
311
+ # <!--
312
+ # rdoc-file=numeric.rb
313
+ # - conj()
314
+ # -->
397
315
  #
398
316
  def conj: () -> Numeric
399
317
 
400
318
  # <!--
401
- # rdoc-file=complex.c
402
- # - num.conj -> self
403
- # - num.conjugate -> self
319
+ # rdoc-file=numeric.rb
320
+ # - conj -> self
404
321
  # -->
405
- # Returns self.
322
+ # Returns `self`.
406
323
  #
407
324
  def conjugate: () -> Numeric
408
325
 
@@ -422,8 +339,8 @@ class Numeric
422
339
  # `/` in the derived class of `self`. (Numeric itself does not define method
423
340
  # `/`.)
424
341
  #
425
- # Of the Core and Standard Library classes, Float, Rational, and Complex use
426
- # this implementation.
342
+ # Of the Core and Standard Library classes, Only Float and Rational use this
343
+ # implementation.
427
344
  #
428
345
  def div: (Numeric) -> Integer
429
346
 
@@ -472,8 +389,8 @@ class Numeric
472
389
  # 1.eql?(Rational(1, 1)) # => false
473
390
  # 1.eql?(Complex(1, 0)) # => false
474
391
  #
475
- # Method `eql?` is different from +==+ in that `eql?` requires matching types,
476
- # while +==+ does not.
392
+ # Method `eql?` is different from `==` in that `eql?` requires matching types,
393
+ # while `==` does not.
477
394
  #
478
395
  def eql?: (untyped) -> bool
479
396
 
@@ -491,21 +408,23 @@ class Numeric
491
408
 
492
409
  # <!--
493
410
  # rdoc-file=numeric.rb
494
- # - num.finite? -> true or false
411
+ # - finite? -> true or false
495
412
  # -->
496
- # Returns `true` if `num` is a finite number, otherwise returns `false`.
413
+ # Returns `true` if `self` is a finite number, `false` otherwise.
497
414
  #
498
415
  def finite?: () -> bool
499
416
 
500
417
  # <!--
501
418
  # rdoc-file=numeric.c
502
- # - floor(digits = 0) -> integer or float
419
+ # - floor(ndigits = 0) -> float or integer
503
420
  # -->
504
- # Returns the largest number that is less than or equal to `self` with a
505
- # precision of `digits` decimal digits.
421
+ # Returns the largest float or integer that is less than or equal to `self`, as
422
+ # specified by the given `ndigits`, which must be an [integer-convertible
423
+ # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
506
424
  #
507
- # Numeric implements this by converting `self` to a Float and invoking
508
- # Float#floor.
425
+ # Equivalent to `self.to_f.floor(ndigits)`.
426
+ #
427
+ # Related: #ceil, Float#floor.
509
428
  #
510
429
  def floor: () -> Integer
511
430
  | (Integer digits) -> Numeric
@@ -524,15 +443,16 @@ class Numeric
524
443
  #
525
444
  def i: () -> Complex
526
445
 
527
- # <!-- rdoc-file=complex.c -->
528
- # Returns zero.
446
+ # <!--
447
+ # rdoc-file=numeric.rb
448
+ # - imag()
449
+ # -->
529
450
  #
530
451
  def imag: () -> Numeric
531
452
 
532
453
  # <!--
533
- # rdoc-file=complex.c
534
- # - num.imag -> 0
535
- # - num.imaginary -> 0
454
+ # rdoc-file=numeric.rb
455
+ # - imag -> 0
536
456
  # -->
537
457
  # Returns zero.
538
458
  #
@@ -540,21 +460,21 @@ class Numeric
540
460
 
541
461
  # <!--
542
462
  # rdoc-file=numeric.rb
543
- # - num.infinite? -> -1, 1, or nil
463
+ # - infinite? -> -1, 1, or nil
544
464
  # -->
545
- # Returns `nil`, -1, or 1 depending on whether the value is finite, `-Infinity`,
546
- # or `+Infinity`.
465
+ # Returns `nil`, -1, or 1 depending on whether `self` is finite, `-Infinity`, or
466
+ # `+Infinity`.
547
467
  #
548
468
  def infinite?: () -> Integer?
549
469
 
550
470
  # <!--
551
471
  # rdoc-file=numeric.rb
552
- # - num.integer? -> true or false
472
+ # - integer? -> true or false
553
473
  # -->
554
- # Returns `true` if `num` is an Integer.
474
+ # Returns `true` if `self` is an Integer.
555
475
  #
556
- # 1.0.integer? #=> false
557
- # 1.integer? #=> true
476
+ # 1.0.integer? # => false
477
+ # 1.integer? # => true
558
478
  #
559
479
  def integer?: () -> bool
560
480
 
@@ -565,8 +485,6 @@ class Numeric
565
485
  # (-34.56).abs #=> 34.56
566
486
  # -34.56.abs #=> 34.56
567
487
  #
568
- # Numeric#magnitude is an alias for Numeric#abs.
569
- #
570
488
  alias magnitude abs
571
489
 
572
490
  # <!-- rdoc-file=numeric.c -->
@@ -577,9 +495,9 @@ class Numeric
577
495
  #
578
496
  # For Rational `r` and real number `n`, these expressions are equivalent:
579
497
  #
580
- # c % n
581
- # c-n*(c/n).floor
582
- # c.divmod(n)[1]
498
+ # r % n
499
+ # r-n*(r/n).floor
500
+ # r.divmod(n)[1]
583
501
  #
584
502
  # See Numeric#divmod.
585
503
  #
@@ -598,8 +516,6 @@ class Numeric
598
516
  # (-r) % r2 # => (119/100)
599
517
  # (-r) %-r2 # => (-21/100)
600
518
  #
601
- # Numeric#modulo is an alias for Numeric#%.
602
- #
603
519
  def modulo: (Numeric) -> Numeric
604
520
 
605
521
  # <!--
@@ -614,17 +530,19 @@ class Numeric
614
530
  # rdoc-file=numeric.c
615
531
  # - nonzero? -> self or nil
616
532
  # -->
617
- # Returns `self` if `self` is not a zero value, `nil` otherwise; uses method
618
- # `zero?` for the evaluation.
533
+ # Returns +self+ if +self+ is not a zero value, +nil+ otherwise;
534
+ # uses method <tt>zero?</tt> for the evaluation.
535
+ #
536
+ # The returned +self+ allows the method to be chained:
619
537
  #
620
- # The returned `self` allows the method to be chained:
538
+ # a = %w[z Bb bB bb BB a aA Aa AA A]
539
+ # a.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b }
540
+ # # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
621
541
  #
622
- # a = %w[z Bb bB bb BB a aA Aa AA A]
623
- # a.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b }
624
- # # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
542
+ # Of the Core and Standard Library classes,
543
+ # Integer, Float, Rational, and Complex use this implementation.
625
544
  #
626
- # Of the Core and Standard Library classes, Integer, Float, Rational, and
627
- # Complex use this implementation.
545
+ # Related: #zero?
628
546
  #
629
547
  def nonzero?: () -> self?
630
548
 
@@ -637,15 +555,15 @@ class Numeric
637
555
  def numerator: () -> Numeric
638
556
 
639
557
  # <!-- rdoc-file=complex.c -->
640
- # Returns 0 if the value is positive, pi otherwise.
558
+ # Returns zero if `self` is positive, Math::PI otherwise.
641
559
  #
642
560
  alias phase angle
643
561
 
644
562
  # <!--
645
563
  # rdoc-file=complex.c
646
- # - num.polar -> array
564
+ # - polar -> array
647
565
  # -->
648
- # Returns an array; [num.abs, num.arg].
566
+ # Returns array `[self.abs, self.arg]`.
649
567
  #
650
568
  def polar: () -> [ Numeric, Numeric ]
651
569
 
@@ -667,32 +585,31 @@ class Numeric
667
585
  def quo: (Numeric) -> Numeric
668
586
 
669
587
  # <!--
670
- # rdoc-file=complex.c
671
- # - num.real -> self
588
+ # rdoc-file=numeric.rb
589
+ # - real -> self
672
590
  # -->
673
- # Returns self.
591
+ # Returns `self`.
674
592
  #
675
593
  def real: () -> Numeric
676
594
 
677
595
  # <!--
678
596
  # rdoc-file=numeric.rb
679
- # - num.real? -> true or false
597
+ # - real? -> true or false
680
598
  # -->
681
- # Returns `true` if `num` is a real number (i.e. not Complex).
599
+ # Returns `true` if `self` is a real number (i.e. not Complex).
682
600
  #
683
601
  def real?: () -> bool
684
602
 
685
603
  # <!-- rdoc-file=complex.c -->
686
- # Returns an array; [num, 0].
604
+ # Returns array `[self, 0]`.
687
605
  #
688
606
  def rect: () -> [ Numeric, Numeric ]
689
607
 
690
608
  # <!--
691
609
  # rdoc-file=complex.c
692
- # - num.rect -> array
693
- # - num.rectangular -> array
610
+ # - rect -> array
694
611
  # -->
695
- # Returns an array; [num, 0].
612
+ # Returns array `[self, 0]`.
696
613
  #
697
614
  alias rectangular rect
698
615
 
@@ -753,86 +670,83 @@ class Numeric
753
670
  # -->
754
671
  # Generates a sequence of numbers; with a block given, traverses the sequence.
755
672
  #
756
- # Of the Core and Standard Library classes,
757
- # Integer, Float, and Rational use this implementation.
758
- #
759
- # A quick example:
760
- #
761
- # squares = []
762
- # 1.step(by: 2, to: 10) {|i| squares.push(i*i) }
763
- # squares # => [1, 9, 25, 49, 81]
764
- #
765
- # The generated sequence:
766
- #
767
- # - Begins with +self+.
768
- # - Continues at intervals of +step+ (which may not be zero).
769
- # - Ends with the last number that is within or equal to +limit+;
770
- # that is, less than or equal to +limit+ if +step+ is positive,
771
- # greater than or equal to +limit+ if +step+ is negative.
772
- # If +limit+ is not given, the sequence is of infinite length.
773
- #
774
- # If a block is given, calls the block with each number in the sequence;
775
- # returns +self+. If no block is given, returns an Enumerator::ArithmeticSequence.
776
- #
777
- # <b>Keyword Arguments</b>
778
- #
779
- # With keyword arguments +by+ and +to+,
780
- # their values (or defaults) determine the step and limit:
781
- #
782
- # # Both keywords given.
783
- # squares = []
784
- # 4.step(by: 2, to: 10) {|i| squares.push(i*i) } # => 4
785
- # squares # => [16, 36, 64, 100]
786
- # cubes = []
787
- # 3.step(by: -1.5, to: -3) {|i| cubes.push(i*i*i) } # => 3
788
- # cubes # => [27.0, 3.375, 0.0, -3.375, -27.0]
789
- # squares = []
790
- # 1.2.step(by: 0.2, to: 2.0) {|f| squares.push(f*f) }
791
- # squares # => [1.44, 1.9599999999999997, 2.5600000000000005, 3.24, 4.0]
792
- #
793
- # squares = []
794
- # Rational(6/5).step(by: 0.2, to: 2.0) {|r| squares.push(r*r) }
795
- # squares # => [1.0, 1.44, 1.9599999999999997, 2.5600000000000005, 3.24, 4.0]
796
- #
797
- # # Only keyword to given.
798
- # squares = []
799
- # 4.step(to: 10) {|i| squares.push(i*i) } # => 4
800
- # squares # => [16, 25, 36, 49, 64, 81, 100]
801
- # # Only by given.
802
- #
803
- # # Only keyword by given
804
- # squares = []
805
- # 4.step(by:2) {|i| squares.push(i*i); break if i > 10 }
806
- # squares # => [16, 36, 64, 100, 144]
807
- #
808
- # # No block given.
809
- # e = 3.step(by: -1.5, to: -3) # => (3.step(by: -1.5, to: -3))
810
- # e.class # => Enumerator::ArithmeticSequence
811
- #
812
- # <b>Positional Arguments</b>
813
- #
814
- # With optional positional arguments +limit+ and +step+,
815
- # their values (or defaults) determine the step and limit:
816
- #
817
- # squares = []
818
- # 4.step(10, 2) {|i| squares.push(i*i) } # => 4
819
- # squares # => [16, 36, 64, 100]
820
- # squares = []
821
- # 4.step(10) {|i| squares.push(i*i) }
822
- # squares # => [16, 25, 36, 49, 64, 81, 100]
823
- # squares = []
824
- # 4.step {|i| squares.push(i*i); break if i > 10 } # => nil
825
- # squares # => [16, 25, 36, 49, 64, 81, 100, 121]
673
+ # Of the Core and Standard Library classes, Integer, Float, and Rational use
674
+ # this implementation.
675
+ #
676
+ # A quick example:
677
+ #
678
+ # squares = []
679
+ # 1.step(by: 2, to: 10) {|i| squares.push(i*i) }
680
+ # squares # => [1, 9, 25, 49, 81]
681
+ #
682
+ # The generated sequence:
683
+ #
684
+ # * Begins with `self`.
685
+ # * Continues at intervals of `by` (which may not be zero).
686
+ # * Ends with the last number that is within or equal to `to`; that is, less
687
+ # than or equal to `to` if `by` is positive, greater than or equal to `to`
688
+ # if `by` is negative. If `to` is `nil`, the sequence is of infinite length.
689
+ #
690
+ # If a block is given, calls the block with each number in the sequence; returns
691
+ # `self`. If no block is given, returns an Enumerator::ArithmeticSequence.
692
+ #
693
+ # **Keyword Arguments**
694
+ #
695
+ # With keyword arguments `by` and `to`, their values (or defaults) determine the
696
+ # step and limit:
697
+ #
698
+ # # Both keywords given.
699
+ # squares = []
700
+ # 4.step(by: 2, to: 10) {|i| squares.push(i*i) } # => 4
701
+ # squares # => [16, 36, 64, 100]
702
+ # cubes = []
703
+ # 3.step(by: -1.5, to: -3) {|i| cubes.push(i*i*i) } # => 3
704
+ # cubes # => [27.0, 3.375, 0.0, -3.375, -27.0]
705
+ # squares = []
706
+ # 1.2.step(by: 0.2, to: 2.0) {|f| squares.push(f*f) }
707
+ # squares # => [1.44, 1.9599999999999997, 2.5600000000000005, 3.24, 4.0]
708
+ #
709
+ # squares = []
710
+ # Rational(6/5).step(by: 0.2, to: 2.0) {|r| squares.push(r*r) }
711
+ # squares # => [1.0, 1.44, 1.9599999999999997, 2.5600000000000005, 3.24, 4.0]
712
+ #
713
+ # # Only keyword to given.
714
+ # squares = []
715
+ # 4.step(to: 10) {|i| squares.push(i*i) } # => 4
716
+ # squares # => [16, 25, 36, 49, 64, 81, 100]
717
+ # # Only by given.
718
+ #
719
+ # # Only keyword by given
720
+ # squares = []
721
+ # 4.step(by:2) {|i| squares.push(i*i); break if i > 10 }
722
+ # squares # => [16, 36, 64, 100, 144]
723
+ #
724
+ # # No block given.
725
+ # e = 3.step(by: -1.5, to: -3) # => (3.step(by: -1.5, to: -3))
726
+ # e.class # => Enumerator::ArithmeticSequence
727
+ #
728
+ # **Positional Arguments**
729
+ #
730
+ # With optional positional arguments `to` and `by`, their values (or defaults)
731
+ # determine the step and limit:
732
+ #
733
+ # squares = []
734
+ # 4.step(10, 2) {|i| squares.push(i*i) } # => 4
735
+ # squares # => [16, 36, 64, 100]
736
+ # squares = []
737
+ # 4.step(10) {|i| squares.push(i*i) }
738
+ # squares # => [16, 25, 36, 49, 64, 81, 100]
739
+ # squares = []
740
+ # 4.step {|i| squares.push(i*i); break if i > 10 } # => nil
741
+ # squares # => [16, 25, 36, 49, 64, 81, 100, 121]
826
742
  #
827
743
  # **Implementation Notes**
828
744
  #
829
- # If all the arguments are integers, the loop operates using an integer
830
- # counter.
745
+ # If all the arguments are integers, the loop operates using an integer counter.
831
746
  #
832
- # If any of the arguments are floating point numbers, all are converted
833
- # to floats, and the loop is executed
834
- # <i>floor(n + n*Float::EPSILON) + 1</i> times,
835
- # where <i>n = (limit - self)/step</i>.
747
+ # If any of the arguments are floating point numbers, all are converted to
748
+ # floats, and the loop is executed *floor(n + n*Float::EPSILON) + 1* times,
749
+ # where *n = (limit - self)/step*.
836
750
  #
837
751
  def step: (?Numeric limit, ?Numeric step) { (Numeric) -> void } -> self
838
752
  | (?Numeric limit, ?Numeric step) -> Enumerator[Numeric, self]
@@ -841,9 +755,9 @@ class Numeric
841
755
 
842
756
  # <!--
843
757
  # rdoc-file=complex.c
844
- # - num.to_c -> complex
758
+ # - to_c -> complex
845
759
  # -->
846
- # Returns the value as a complex.
760
+ # Returns `self` as a Complex object.
847
761
  #
848
762
  def to_c: () -> Complex
849
763
 
@@ -862,7 +776,7 @@ class Numeric
862
776
  # Rational(1, 2).to_int # => 0
863
777
  # Rational(2, 1).to_int # => 2
864
778
  # Complex(2, 0).to_int # => 2
865
- # Complex(2, 1) # Raises RangeError (non-zero imaginary part)
779
+ # Complex(2, 1).to_int # Raises RangeError (non-zero imaginary part)
866
780
  #
867
781
  def to_int: () -> Integer
868
782