rbs 4.1.0.pre.2-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
@@ -0,0 +1,705 @@
1
+ # <!-- rdoc-file=enumerator.c -->
2
+ # A class which allows both internal and external iteration.
3
+ #
4
+ # An Enumerator can be created by the following methods.
5
+ # * Object#to_enum
6
+ # * Object#enum_for
7
+ # * Enumerator.new
8
+ #
9
+ # Most methods have two forms: a block form where the contents are evaluated for
10
+ # each item in the enumeration, and a non-block form which returns a new
11
+ # Enumerator wrapping the iteration.
12
+ #
13
+ # enumerator = %w(one two three).each
14
+ # puts enumerator.class # => Enumerator
15
+ #
16
+ # enumerator.each_with_object("foo") do |item, obj|
17
+ # puts "#{obj}: #{item}"
18
+ # end
19
+ #
20
+ # # foo: one
21
+ # # foo: two
22
+ # # foo: three
23
+ #
24
+ # enum_with_obj = enumerator.each_with_object("foo")
25
+ # puts enum_with_obj.class # => Enumerator
26
+ #
27
+ # enum_with_obj.each do |item, obj|
28
+ # puts "#{obj}: #{item}"
29
+ # end
30
+ #
31
+ # # foo: one
32
+ # # foo: two
33
+ # # foo: three
34
+ #
35
+ # This allows you to chain Enumerators together. For example, you can map a
36
+ # list's elements to strings containing the index and the element as a string
37
+ # via:
38
+ #
39
+ # puts %w[foo bar baz].map.with_index { |w, i| "#{i}:#{w}" }
40
+ # # => ["0:foo", "1:bar", "2:baz"]
41
+ #
42
+ # ## External Iteration
43
+ #
44
+ # An Enumerator can also be used as an external iterator. For example,
45
+ # Enumerator#next returns the next value of the iterator or raises StopIteration
46
+ # if the Enumerator is at the end.
47
+ #
48
+ # e = [1,2,3].each # returns an enumerator object.
49
+ # puts e.next # => 1
50
+ # puts e.next # => 2
51
+ # puts e.next # => 3
52
+ # puts e.next # raises StopIteration
53
+ #
54
+ # `next`, `next_values`, `peek`, and `peek_values` are the only methods which
55
+ # use external iteration (and Array#zip(Enumerable-not-Array) which uses `next`
56
+ # internally).
57
+ #
58
+ # These methods do not affect other internal enumeration methods, unless the
59
+ # underlying iteration method itself has side-effect, e.g. IO#each_line.
60
+ #
61
+ # FrozenError will be raised if these methods are called against a frozen
62
+ # enumerator. Since `rewind` and `feed` also change state for external
63
+ # iteration, these methods may raise FrozenError too.
64
+ #
65
+ # External iteration differs **significantly** from internal iteration due to
66
+ # using a Fiber:
67
+ # * The Fiber adds some overhead compared to internal enumeration.
68
+ # * The stacktrace will only include the stack from the Enumerator, not above.
69
+ # * Fiber-local variables are **not** inherited inside the Enumerator Fiber,
70
+ # which instead starts with no Fiber-local variables.
71
+ # * Fiber storage variables **are** inherited and are designed to handle
72
+ # Enumerator Fibers. Assigning to a Fiber storage variable only affects the
73
+ # current Fiber, so if you want to change state in the caller Fiber of the
74
+ # Enumerator Fiber, you need to use an extra indirection (e.g., use some
75
+ # object in the Fiber storage variable and mutate some ivar of it).
76
+ #
77
+ # Concretely:
78
+ #
79
+ # Thread.current[:fiber_local] = 1
80
+ # Fiber[:storage_var] = 1
81
+ # e = Enumerator.new do |y|
82
+ # p Thread.current[:fiber_local] # for external iteration: nil, for internal iteration: 1
83
+ # p Fiber[:storage_var] # => 1, inherited
84
+ # Fiber[:storage_var] += 1
85
+ # y << 42
86
+ # end
87
+ #
88
+ # p e.next # => 42
89
+ # p Fiber[:storage_var] # => 1 (it ran in a different Fiber)
90
+ #
91
+ # e.each { p _1 }
92
+ # p Fiber[:storage_var] # => 2 (it ran in the same Fiber/"stack" as the current Fiber)
93
+ #
94
+ # ## Convert External Iteration to Internal Iteration
95
+ #
96
+ # You can use an external iterator to implement an internal iterator as follows:
97
+ #
98
+ # def ext_each(e)
99
+ # while true
100
+ # begin
101
+ # vs = e.next_values
102
+ # rescue StopIteration
103
+ # return $!.result
104
+ # end
105
+ # y = yield(*vs)
106
+ # e.feed y
107
+ # end
108
+ # end
109
+ #
110
+ # o = Object.new
111
+ #
112
+ # def o.each
113
+ # puts yield
114
+ # puts yield(1)
115
+ # puts yield(1, 2)
116
+ # 3
117
+ # end
118
+ #
119
+ # # use o.each as an internal iterator directly.
120
+ # puts o.each {|*x| puts x; [:b, *x] }
121
+ # # => [], [:b], [1], [:b, 1], [1, 2], [:b, 1, 2], 3
122
+ #
123
+ # # convert o.each to an external iterator for
124
+ # # implementing an internal iterator.
125
+ # puts ext_each(o.to_enum) {|*x| puts x; [:b, *x] }
126
+ # # => [], [:b], [1], [:b, 1], [1, 2], [:b, 1, 2], 3
127
+ #
128
+ class Enumerator[unchecked out E, out R = void] < Object
129
+ include Enumerable[E]
130
+
131
+ # A convenience interface for `each` with optional block
132
+ #
133
+ interface _Each[out T, out R]
134
+ def each: () { (T) -> void } -> R
135
+ | () -> Enumerator[T, R]
136
+ end
137
+
138
+ # <!--
139
+ # rdoc-file=enumerator.c
140
+ # - Enumerator.produce(initial = nil, size: nil) { |prev| block } -> enumerator
141
+ # -->
142
+ # Creates an infinite enumerator from any block, just called over and over. The
143
+ # result of the previous iteration is passed to the next one. If `initial` is
144
+ # provided, it is passed to the first iteration, and becomes the first element
145
+ # of the enumerator; if it is not provided, the first iteration receives `nil`,
146
+ # and its result becomes the first element of the iterator.
147
+ #
148
+ # Raising StopIteration from the block stops an iteration.
149
+ #
150
+ # Enumerator.produce(1, &:succ) # => enumerator of 1, 2, 3, 4, ....
151
+ #
152
+ # Enumerator.produce { rand(10) } # => infinite random number sequence
153
+ #
154
+ # ancestors = Enumerator.produce(node) { |prev| node = prev.parent or raise StopIteration }
155
+ # enclosing_section = ancestors.find { |n| n.type == :section }
156
+ #
157
+ # Using ::produce together with Enumerable methods like Enumerable#detect,
158
+ # Enumerable#slice_after, Enumerable#take_while can provide Enumerator-based
159
+ # alternatives for `while` and `until` cycles:
160
+ #
161
+ # # Find next Tuesday
162
+ # require "date"
163
+ # Enumerator.produce(Date.today, &:succ).detect(&:tuesday?)
164
+ #
165
+ # # Simple lexer:
166
+ # require "strscan"
167
+ # scanner = StringScanner.new("7+38/6")
168
+ # PATTERN = %r{\d+|[-/+*]}
169
+ # Enumerator.produce { scanner.scan(PATTERN) }.slice_after { scanner.eos? }.first
170
+ # # => ["7", "+", "38", "/", "6"]
171
+ #
172
+ # The optional `size` keyword argument specifies the size of the enumerator,
173
+ # which can be retrieved by Enumerator#size. It can be an integer,
174
+ # <code>Float::INFINITY</code>, a callable object (such as a lambda), or `nil`
175
+ # to indicate unknown size. When not specified, the size defaults to
176
+ # <code>Float::INFINITY</code>.
177
+ #
178
+ # # Infinite enumerator
179
+ # enum = Enumerator.produce(1, size: Float::INFINITY, &:succ)
180
+ # enum.size # => Float::INFINITY
181
+ #
182
+ # # Finite enumerator with known/computable size
183
+ # abs_dir = File.expand_path("./baz") # => "/foo/bar/baz"
184
+ # traverser = Enumerator.produce(abs_dir, size: -> { abs_dir.count("/") + 1 }) {
185
+ # raise StopIteration if it == "/"
186
+ # File.dirname(it)
187
+ # }
188
+ # traverser.size # => 4
189
+ #
190
+ # # Finite enumerator with unknown size
191
+ # calendar = Enumerator.produce(Date.today, size: nil) {
192
+ # it.monday? ? raise(StopIteration) : it + 1
193
+ # }
194
+ # calendar.size # => nil
195
+ #
196
+ def self.produce: [T] () { (T? prev) -> T } -> Enumerator[T, bot]
197
+ | [T] (T initial) { (T prev) -> T } -> Enumerator[T, bot]
198
+
199
+ # <!--
200
+ # rdoc-file=enumerator.c
201
+ # - Enumerator.product(*enums) -> enumerator
202
+ # - Enumerator.product(*enums) { |elts| ... } -> enumerator
203
+ # -->
204
+ # Generates a new enumerator object that generates a Cartesian product of given
205
+ # enumerable objects. This is equivalent to Enumerator::Product.new.
206
+ #
207
+ # e = Enumerator.product(1..3, [4, 5])
208
+ # e.to_a #=> [[1, 4], [1, 5], [2, 4], [2, 5], [3, 4], [3, 5]]
209
+ # e.size #=> 6
210
+ #
211
+ # When a block is given, calls the block with each N-element array generated and
212
+ # returns `nil`.
213
+ #
214
+ def self.product: [E] (*_EachEntry[E]) -> Product[E]
215
+
216
+ # <!--
217
+ # rdoc-file=enumerator.c
218
+ # - enum.each { |elm| block } -> obj
219
+ # - enum.each -> enum
220
+ # - enum.each(*appending_args) { |elm| block } -> obj
221
+ # - enum.each(*appending_args) -> an_enumerator
222
+ # -->
223
+ # Iterates over the block according to how this Enumerator was constructed. If
224
+ # no block and no arguments are given, returns self.
225
+ #
226
+ # ### Examples
227
+ #
228
+ # "Hello, world!".scan(/\w+/) #=> ["Hello", "world"]
229
+ # "Hello, world!".to_enum(:scan, /\w+/).to_a #=> ["Hello", "world"]
230
+ # "Hello, world!".to_enum(:scan).each(/\w+/).to_a #=> ["Hello", "world"]
231
+ #
232
+ # obj = Object.new
233
+ #
234
+ # def obj.each_arg(a, b=:b, *rest)
235
+ # yield a
236
+ # yield b
237
+ # yield rest
238
+ # :method_returned
239
+ # end
240
+ #
241
+ # enum = obj.to_enum :each_arg, :a, :x
242
+ #
243
+ # enum.each.to_a #=> [:a, :x, []]
244
+ # enum.each.equal?(enum) #=> true
245
+ # enum.each { |elm| elm } #=> :method_returned
246
+ #
247
+ # enum.each(:y, :z).to_a #=> [:a, :x, [:y, :z]]
248
+ # enum.each(:y, :z).equal?(enum) #=> false
249
+ # enum.each(:y, :z) { |elm| elm } #=> :method_returned
250
+ #
251
+ def each: () { (E arg0) -> untyped } -> R
252
+ | () -> self
253
+
254
+ # <!--
255
+ # rdoc-file=enumerator.c
256
+ # - e.feed obj -> nil
257
+ # -->
258
+ # Sets the value to be returned by the next yield inside `e`.
259
+ #
260
+ # If the value is not set, the yield returns nil.
261
+ #
262
+ # This value is cleared after being yielded.
263
+ #
264
+ # # Array#map passes the array's elements to "yield" and collects the
265
+ # # results of "yield" as an array.
266
+ # # Following example shows that "next" returns the passed elements and
267
+ # # values passed to "feed" are collected as an array which can be
268
+ # # obtained by StopIteration#result.
269
+ # e = [1,2,3].map
270
+ # p e.next #=> 1
271
+ # e.feed "a"
272
+ # p e.next #=> 2
273
+ # e.feed "b"
274
+ # p e.next #=> 3
275
+ # e.feed "c"
276
+ # begin
277
+ # e.next
278
+ # rescue StopIteration
279
+ # p $!.result #=> ["a", "b", "c"]
280
+ # end
281
+ #
282
+ # o = Object.new
283
+ # def o.each
284
+ # x = yield # (2) blocks
285
+ # p x # (5) => "foo"
286
+ # x = yield # (6) blocks
287
+ # p x # (8) => nil
288
+ # x = yield # (9) blocks
289
+ # p x # not reached w/o another e.next
290
+ # end
291
+ #
292
+ # e = o.to_enum
293
+ # e.next # (1)
294
+ # e.feed "foo" # (3)
295
+ # e.next # (4)
296
+ # e.next # (7)
297
+ # # (10)
298
+ #
299
+ def feed: (E arg0) -> NilClass
300
+
301
+ # <!--
302
+ # rdoc-file=enumerator.c
303
+ # - Enumerator.new(size = nil) { |yielder| ... }
304
+ # -->
305
+ # Creates a new Enumerator object, which can be used as an Enumerable.
306
+ #
307
+ # Iteration is defined by the given block, in which a "yielder" object, given as
308
+ # block parameter, can be used to yield a value by calling the `yield` method
309
+ # (aliased as <code><<</code>):
310
+ #
311
+ # fib = Enumerator.new do |y|
312
+ # a = b = 1
313
+ # loop do
314
+ # y << a
315
+ # a, b = b, a + b
316
+ # end
317
+ # end
318
+ #
319
+ # fib.take(10) # => [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
320
+ #
321
+ # The optional parameter can be used to specify how to calculate the size in a
322
+ # lazy fashion (see Enumerator#size). It can either be a value or a callable
323
+ # object.
324
+ #
325
+ def initialize: (?Integer arg0) { (Enumerator::Yielder arg0) -> R } -> void
326
+
327
+ # <!--
328
+ # rdoc-file=enumerator.c
329
+ # - e.inspect -> string
330
+ # -->
331
+ # Creates a printable version of *e*.
332
+ #
333
+ def inspect: () -> String
334
+
335
+ # <!--
336
+ # rdoc-file=enumerator.c
337
+ # - e.next -> object
338
+ # -->
339
+ # Returns the next object in the enumerator, and move the internal position
340
+ # forward. When the position reached at the end, StopIteration is raised.
341
+ #
342
+ # ### Example
343
+ #
344
+ # a = [1,2,3]
345
+ # e = a.to_enum
346
+ # p e.next #=> 1
347
+ # p e.next #=> 2
348
+ # p e.next #=> 3
349
+ # p e.next #raises StopIteration
350
+ #
351
+ # See class-level notes about external iterators.
352
+ #
353
+ def next: () -> E
354
+
355
+ # <!--
356
+ # rdoc-file=enumerator.c
357
+ # - e.next_values -> array
358
+ # -->
359
+ # Returns the next object as an array in the enumerator, and move the internal
360
+ # position forward. When the position reached at the end, StopIteration is
361
+ # raised.
362
+ #
363
+ # See class-level notes about external iterators.
364
+ #
365
+ # This method can be used to distinguish `yield` and `yield nil`.
366
+ #
367
+ # ### Example
368
+ #
369
+ # o = Object.new
370
+ # def o.each
371
+ # yield
372
+ # yield 1
373
+ # yield 1, 2
374
+ # yield nil
375
+ # yield [1, 2]
376
+ # end
377
+ # e = o.to_enum
378
+ # p e.next_values
379
+ # p e.next_values
380
+ # p e.next_values
381
+ # p e.next_values
382
+ # p e.next_values
383
+ # e = o.to_enum
384
+ # p e.next
385
+ # p e.next
386
+ # p e.next
387
+ # p e.next
388
+ # p e.next
389
+ #
390
+ # ## yield args next_values next
391
+ # # yield [] nil
392
+ # # yield 1 [1] 1
393
+ # # yield 1, 2 [1, 2] [1, 2]
394
+ # # yield nil [nil] nil
395
+ # # yield [1, 2] [[1, 2]] [1, 2]
396
+ #
397
+ def next_values: () -> ::Array[E]
398
+
399
+ # <!--
400
+ # rdoc-file=enumerator.c
401
+ # - e.peek -> object
402
+ # -->
403
+ # Returns the next object in the enumerator, but doesn't move the internal
404
+ # position forward. If the position is already at the end, StopIteration is
405
+ # raised.
406
+ #
407
+ # See class-level notes about external iterators.
408
+ #
409
+ # ### Example
410
+ #
411
+ # a = [1,2,3]
412
+ # e = a.to_enum
413
+ # p e.next #=> 1
414
+ # p e.peek #=> 2
415
+ # p e.peek #=> 2
416
+ # p e.peek #=> 2
417
+ # p e.next #=> 2
418
+ # p e.next #=> 3
419
+ # p e.peek #raises StopIteration
420
+ #
421
+ def peek: () -> E
422
+
423
+ # <!--
424
+ # rdoc-file=enumerator.c
425
+ # - e.peek_values -> array
426
+ # -->
427
+ # Returns the next object as an array, similar to Enumerator#next_values, but
428
+ # doesn't move the internal position forward. If the position is already at the
429
+ # end, StopIteration is raised.
430
+ #
431
+ # See class-level notes about external iterators.
432
+ #
433
+ # ### Example
434
+ #
435
+ # o = Object.new
436
+ # def o.each
437
+ # yield
438
+ # yield 1
439
+ # yield 1, 2
440
+ # end
441
+ # e = o.to_enum
442
+ # p e.peek_values #=> []
443
+ # e.next
444
+ # p e.peek_values #=> [1]
445
+ # p e.peek_values #=> [1]
446
+ # e.next
447
+ # p e.peek_values #=> [1, 2]
448
+ # e.next
449
+ # p e.peek_values # raises StopIteration
450
+ #
451
+ def peek_values: () -> ::Array[E]
452
+
453
+ # <!--
454
+ # rdoc-file=enumerator.c
455
+ # - e.rewind -> e
456
+ # -->
457
+ # Rewinds the enumeration sequence to the beginning.
458
+ #
459
+ # If the enclosed object responds to a "rewind" method, it is called.
460
+ #
461
+ def rewind: () -> self
462
+
463
+ # <!--
464
+ # rdoc-file=enumerator.c
465
+ # - e.size -> int, Float::INFINITY or nil
466
+ # -->
467
+ # Returns the size of the enumerator, or `nil` if it can't be calculated lazily.
468
+ #
469
+ # (1..100).to_a.permutation(4).size # => 94109400
470
+ # loop.size # => Float::INFINITY
471
+ # (1..100).drop_while.size # => nil
472
+ #
473
+ # Note that enumerator size might be inaccurate, and should be rather treated as
474
+ # a hint. For example, there is no check that the size provided to ::new is
475
+ # accurate:
476
+ #
477
+ # e = Enumerator.new(5) { |y| 2.times { y << it} }
478
+ # e.size # => 5
479
+ # e.to_a.size # => 2
480
+ #
481
+ # Another example is an enumerator created by ::produce without a `size`
482
+ # argument. Such enumerators return `Infinity` for size, but this is inaccurate
483
+ # if the passed block raises StopIteration:
484
+ #
485
+ # e = Enumerator.produce(1) { it + 1 }
486
+ # e.size # => Infinity
487
+ #
488
+ # e = Enumerator.produce(1) { it > 3 ? raise(StopIteration) : it + 1 }
489
+ # e.size # => Infinity
490
+ # e.to_a.size # => 4
491
+ #
492
+ def size: () -> (Integer | Float)?
493
+
494
+ # <!--
495
+ # rdoc-file=enumerator.c
496
+ # - e + enum -> enumerator
497
+ # -->
498
+ # Returns an enumerator object generated from this enumerator and a given
499
+ # enumerable.
500
+ #
501
+ # e = (1..3).each + [4, 5]
502
+ # e.to_a #=> [1, 2, 3, 4, 5]
503
+ #
504
+ def +: [Elem2] (::_Each[Elem2]) -> ::Enumerator::Chain[E | Elem2]
505
+
506
+ # <!--
507
+ # rdoc-file=enumerator.c
508
+ # - e.with_index(offset = 0) {|(*args), idx| ... }
509
+ # - e.with_index(offset = 0)
510
+ # -->
511
+ # Iterates the given block for each element with an index, which starts from
512
+ # `offset`. If no block is given, returns a new Enumerator that includes the
513
+ # index, starting from `offset`
514
+ #
515
+ # `offset`
516
+ # : the starting index to use
517
+ #
518
+ def with_index: (?Integer offset) { (E arg0, Integer arg1) -> untyped } -> R
519
+ | (?Integer offset) -> ::Enumerator[[ E, Integer ], R]
520
+
521
+ # <!-- rdoc-file=enumerator.c -->
522
+ # Iterates the given block for each element with an arbitrary object, `obj`, and
523
+ # returns `obj`
524
+ #
525
+ # If no block is given, returns a new Enumerator.
526
+ #
527
+ # ### Example
528
+ #
529
+ # to_three = Enumerator.new do |y|
530
+ # 3.times do |x|
531
+ # y << x
532
+ # end
533
+ # end
534
+ #
535
+ # to_three_with_string = to_three.with_object("foo")
536
+ # to_three_with_string.each do |x,string|
537
+ # puts "#{string}: #{x}"
538
+ # end
539
+ #
540
+ # # => foo: 0
541
+ # # => foo: 1
542
+ # # => foo: 2
543
+ #
544
+ def with_object: [U] (U obj) { (E, U obj) -> untyped } -> U
545
+ | [U] (U obj) -> ::Enumerator[[ E, U ], U]
546
+ end
547
+
548
+ # <!-- rdoc-file=enumerator.c -->
549
+ # Generator
550
+ #
551
+ class Enumerator::Generator[out E] < Object
552
+ include Enumerable[E]
553
+
554
+ def each: () { (E) -> void } -> void
555
+ end
556
+
557
+ # <!-- rdoc-file=enumerator.c -->
558
+ # Enumerator::Lazy is a special type of Enumerator, that allows constructing
559
+ # chains of operations without evaluating them immediately, and evaluating
560
+ # values on as-needed basis. In order to do so it redefines most of Enumerable
561
+ # methods so that they just construct another lazy enumerator.
562
+ #
563
+ # Enumerator::Lazy can be constructed from any Enumerable with the
564
+ # Enumerable#lazy method.
565
+ #
566
+ # lazy = (1..Float::INFINITY).lazy.select(&:odd?).drop(10).take_while { |i| i < 30 }
567
+ # # => #<Enumerator::Lazy: #<Enumerator::Lazy: #<Enumerator::Lazy: #<Enumerator::Lazy: 1..Infinity>:select>:drop(10)>:take_while>
568
+ #
569
+ # The real enumeration is performed when any non-redefined Enumerable method is
570
+ # called, like Enumerable#first or Enumerable#to_a (the latter is aliased as
571
+ # #force for more semantic code):
572
+ #
573
+ # lazy.first(2)
574
+ # #=> [21, 23]
575
+ #
576
+ # lazy.force
577
+ # #=> [21, 23, 25, 27, 29]
578
+ #
579
+ # Note that most Enumerable methods that could be called with or without a
580
+ # block, on Enumerator::Lazy will always require a block:
581
+ #
582
+ # [1, 2, 3].map #=> #<Enumerator: [1, 2, 3]:map>
583
+ # [1, 2, 3].lazy.map # ArgumentError: tried to call lazy map without a block
584
+ #
585
+ # This class allows idiomatic calculations on long or infinite sequences, as
586
+ # well as chaining of calculations without constructing intermediate arrays.
587
+ #
588
+ # Example for working with a slowly calculated sequence:
589
+ #
590
+ # require 'open-uri'
591
+ #
592
+ # # This will fetch all URLs before selecting
593
+ # # necessary data
594
+ # URLS.map { |u| JSON.parse(URI.open(u).read) }
595
+ # .select { |data| data.key?('stats') }
596
+ # .first(5)
597
+ #
598
+ # # This will fetch URLs one-by-one, only till
599
+ # # there is enough data to satisfy the condition
600
+ # URLS.lazy.map { |u| JSON.parse(URI.open(u).read) }
601
+ # .select { |data| data.key?('stats') }
602
+ # .first(5)
603
+ #
604
+ # Ending a chain with ".eager" generates a non-lazy enumerator, which is
605
+ # suitable for returning or passing to another method that expects a normal
606
+ # enumerator.
607
+ #
608
+ # def active_items
609
+ # groups
610
+ # .lazy
611
+ # .flat_map(&:items)
612
+ # .reject(&:disabled)
613
+ # .eager
614
+ # end
615
+ #
616
+ # # This works lazily; if a checked item is found, it stops
617
+ # # iteration and does not look into remaining groups.
618
+ # first_checked = active_items.find(&:checked)
619
+ #
620
+ # # This returns an array of items like a normal enumerator does.
621
+ # all_checked = active_items.select(&:checked)
622
+ #
623
+ class Enumerator::Lazy[out E, out R = void] < Enumerator[E, R]
624
+ # <!-- rdoc-file=enumerator.c -->
625
+ # Expands `lazy` enumerator to an array. See Enumerable#to_a.
626
+ #
627
+ alias force to_a
628
+
629
+ # <!--
630
+ # rdoc-file=enumerator.c
631
+ # - lazy.compact -> lazy_enumerator
632
+ # -->
633
+ # Like Enumerable#compact, but chains operation to be lazy-evaluated.
634
+ #
635
+ def compact: () -> Enumerator::Lazy[E, R]
636
+
637
+ # <!--
638
+ # rdoc-file=enumerator.c
639
+ # - lzy.eager -> enum
640
+ # -->
641
+ # Returns a non-lazy Enumerator converted from the lazy enumerator.
642
+ #
643
+ def eager: () -> ::Enumerator[E, R]
644
+ end
645
+
646
+ # <!-- rdoc-file=enumerator.c -->
647
+ # Yielder
648
+ #
649
+ class Enumerator::Yielder < Object
650
+ def <<: (untyped arg0) -> void
651
+
652
+ def yield: (*untyped arg0) -> void
653
+
654
+ # <!--
655
+ # rdoc-file=enumerator.c
656
+ # - to_proc()
657
+ # -->
658
+ # Returns a Proc object that takes arguments and yields them.
659
+ #
660
+ # This method is implemented so that a Yielder object can be directly passed to
661
+ # another method as a block argument.
662
+ #
663
+ # enum = Enumerator.new { |y|
664
+ # Dir.glob("*.rb") { |file|
665
+ # File.open(file) { |f| f.each_line(&y) }
666
+ # }
667
+ # }
668
+ #
669
+ def to_proc: () -> Proc
670
+ end
671
+
672
+ # <!-- rdoc-file=enumerator.c -->
673
+ # Enumerator::Chain is a subclass of Enumerator, which represents a chain of
674
+ # enumerables that works as a single enumerator.
675
+ #
676
+ # This type of objects can be created by Enumerable#chain and Enumerator#+.
677
+ #
678
+ class Enumerator::Chain[out E] < Enumerator[E, void]
679
+ # <!--
680
+ # rdoc-file=enumerator.c
681
+ # - Enumerator::Chain.new(*enums) -> enum
682
+ # -->
683
+ # Generates a new enumerator object that iterates over the elements of given
684
+ # enumerable objects in sequence.
685
+ #
686
+ # e = Enumerator::Chain.new(1..3, [4, 5])
687
+ # e.to_a #=> [1, 2, 3, 4, 5]
688
+ # e.size #=> 5
689
+ #
690
+ def initialize: (*_Each[E] enums) -> void
691
+
692
+ # <!--
693
+ # rdoc-file=enumerator.c
694
+ # - obj.each(*args) { |...| ... } -> obj
695
+ # - obj.each(*args) -> enumerator
696
+ # -->
697
+ # Iterates over the elements of the first enumerable by calling the "each"
698
+ # method on it with the given arguments, then proceeds to the following
699
+ # enumerables in sequence until all of the enumerables are exhausted.
700
+ #
701
+ # If no block is given, returns an enumerator.
702
+ #
703
+ def each: () { (E) -> void } -> self
704
+ | () -> Enumerator[E, self]
705
+ end
data/core/env.rbs ADDED
@@ -0,0 +1,6 @@
1
+ # <!-- rdoc-file=hash.c -->
2
+ # `ENV` is a Hash-like accessor for environment variables.
3
+ #
4
+ # See ENV (the class) for more details.
5
+ #
6
+ ENV: RBS::Unnamed::ENVClass