rbs 4.1.0.pre.2-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
data/core/set.rbs ADDED
@@ -0,0 +1,751 @@
1
+ # <!-- rdoc-file=set.c -->
2
+ # The Set class implements a collection of unordered values with no duplicates.
3
+ # It is a hybrid of Array's intuitive inter-operation facilities and Hash's fast
4
+ # lookup.
5
+ #
6
+ # Set is easy to use with Enumerable objects (implementing #each). Most of the
7
+ # initializer methods and binary operators accept generic Enumerable objects
8
+ # besides sets and arrays. An Enumerable object can be converted to Set using
9
+ # the `to_set` method.
10
+ #
11
+ # Set uses a data structure similar to Hash for storage, except that it only has
12
+ # keys and no values.
13
+ #
14
+ # * Equality of elements is determined according to Object#eql? and
15
+ # Object#hash. Use Set#compare_by_identity to make a set compare its
16
+ # elements by their identity.
17
+ # * Set assumes that the identity of each element does not change while it is
18
+ # stored. Modifying an element of a set will render the set to an
19
+ # unreliable state.
20
+ # * When a string is to be stored, a frozen copy of the string is stored
21
+ # instead unless the original string is already frozen.
22
+ #
23
+ # ## Comparison
24
+ #
25
+ # The comparison operators <code><</code>, <code>></code>, <code><=</code>, and
26
+ # <code>>=</code> are implemented as shorthand for the
27
+ # {proper_,}{subset?,superset?} methods. The <code><=></code> operator reflects
28
+ # this order, or returns `nil` for sets that both have distinct elements
29
+ # (<code>{x, y}</code> vs. <code>{x, z}</code> for example).
30
+ #
31
+ # ## Example
32
+ #
33
+ # s1 = Set[1, 2] #=> Set[1, 2]
34
+ # s2 = [1, 2].to_set #=> Set[1, 2]
35
+ # s1 == s2 #=> true
36
+ # s1.add("foo") #=> Set[1, 2, "foo"]
37
+ # s1.merge([2, 6]) #=> Set[1, 2, "foo", 6]
38
+ # s1.subset?(s2) #=> false
39
+ # s2.subset?(s1) #=> true
40
+ #
41
+ # ## Contact
42
+ #
43
+ # * Akinori MUSHA <knu@iDaemons.org> (current maintainer)
44
+ #
45
+ # ## Inheriting from Set
46
+ #
47
+ # Before Ruby 4.0 (released December 2025), Set had a different, less efficient
48
+ # implementation. It was reimplemented in C, and the behavior of some of the
49
+ # core methods were adjusted.
50
+ #
51
+ # To keep backward compatibility, when a class is inherited from Set, additional
52
+ # module <code>Set::SubclassCompatible</code> is included, which makes the
53
+ # inherited class behavior, as well as internal method names, closer to what it
54
+ # was before Ruby 4.0.
55
+ #
56
+ # It can be easily seen, for example, in the #inspect method behavior:
57
+ #
58
+ # p Set[1, 2, 3]
59
+ # # prints "Set[1, 2, 3]"
60
+ #
61
+ # class MySet < Set
62
+ # end
63
+ # p MySet[1, 2, 3]
64
+ # # prints "#<MySet: {1, 2, 3}>", like it was in Ruby 3.4
65
+ #
66
+ # For new code, if backward compatibility is not necessary, it is recommended to
67
+ # instead inherit from <code>Set::CoreSet</code>, which avoids including the
68
+ # "compatibility" layer:
69
+ #
70
+ # class MyCoreSet < Set::CoreSet
71
+ # end
72
+ # p MyCoreSet[1, 2, 3]
73
+ # # prints "MyCoreSet[1, 2, 3]"
74
+ #
75
+ # ## Set's methods
76
+ #
77
+ # First, what's elsewhere. Class Set:
78
+ #
79
+ # * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
80
+ # * Includes [module Enumerable](rdoc-ref:Enumerable@What-27s+Here), which
81
+ # provides dozens of additional methods.
82
+ #
83
+ # In particular, class Set does not have many methods of its own for fetching or
84
+ # for iterating. Instead, it relies on those in Enumerable.
85
+ #
86
+ # Here, class Set provides methods that are useful for:
87
+ #
88
+ # * [Creating a Set](rdoc-ref:Set@Methods+for+Creating+a+Set)
89
+ # * [Set Operations](rdoc-ref:Set@Methods+for+Set+Operations)
90
+ # * [Comparing](rdoc-ref:Set@Methods+for+Comparing)
91
+ # * [Querying](rdoc-ref:Set@Methods+for+Querying)
92
+ # * [Assigning](rdoc-ref:Set@Methods+for+Assigning)
93
+ # * [Deleting](rdoc-ref:Set@Methods+for+Deleting)
94
+ # * [Converting](rdoc-ref:Set@Methods+for+Converting)
95
+ # * [Iterating](rdoc-ref:Set@Methods+for+Iterating)
96
+ # * [And more....](rdoc-ref:Set@Other+Methods)
97
+ #
98
+ # ### Methods for Creating a Set
99
+ #
100
+ # * ::[]: Returns a new set containing the given objects.
101
+ # * ::new: Returns a new set containing either the given objects (if no block
102
+ # given) or the return values from the called block (if a block given).
103
+ #
104
+ # ### Methods for Set Operations
105
+ #
106
+ # * #| (aliased as #union and #+): Returns a new set containing all elements
107
+ # from `self` and all elements from a given enumerable (no duplicates).
108
+ # * #& (aliased as #intersection): Returns a new set containing all elements
109
+ # common to `self` and a given enumerable.
110
+ # * #- (aliased as #difference): Returns a copy of `self` with all elements in
111
+ # a given enumerable removed.
112
+ # * #^: Returns a new set containing all elements from `self` and a given
113
+ # enumerable except those common to both.
114
+ #
115
+ # ### Methods for Comparing
116
+ #
117
+ # * #<=>: Returns -1, 0, or 1 as `self` is less than, equal to, or greater
118
+ # than a given object.
119
+ # * #==: Returns whether `self` and a given enumerable are equal, as
120
+ # determined by Object#eql?.
121
+ # * #compare_by_identity?: Returns whether the set considers only identity
122
+ # when comparing elements.
123
+ #
124
+ # ### Methods for Querying
125
+ #
126
+ # * #length (aliased as #size): Returns the count of elements.
127
+ # * #empty?: Returns whether the set has no elements.
128
+ # * #include? (aliased as #member? and #===): Returns whether a given object
129
+ # is an element in the set.
130
+ # * #subset? (aliased as #<=): Returns whether a given object is a subset of
131
+ # the set.
132
+ # * #proper_subset? (aliased as #<): Returns whether a given enumerable is a
133
+ # proper subset of the set.
134
+ # * #superset? (aliased as #>=): Returns whether a given enumerable is a
135
+ # superset of the set.
136
+ # * #proper_superset? (aliased as #>): Returns whether a given enumerable is a
137
+ # proper superset of the set.
138
+ # * #disjoint?: Returns `true` if the set and a given enumerable have no
139
+ # common elements, `false` otherwise.
140
+ # * #intersect?: Returns `true` if the set and a given enumerable: have any
141
+ # common elements, `false` otherwise.
142
+ # * #compare_by_identity?: Returns whether the set considers only identity
143
+ # when comparing elements.
144
+ #
145
+ # ### Methods for Assigning
146
+ #
147
+ # * #add (aliased as #<<): Adds a given object to the set; returns `self`.
148
+ # * #add?: If the given object is not an element in the set, adds it and
149
+ # returns `self`; otherwise, returns `nil`.
150
+ # * #merge: Merges the elements of each given enumerable object to the set;
151
+ # returns `self`.
152
+ # * #replace: Replaces the contents of the set with the contents of a given
153
+ # enumerable.
154
+ #
155
+ # ### Methods for Deleting
156
+ #
157
+ # * #clear: Removes all elements in the set; returns `self`.
158
+ # * #delete: Removes a given object from the set; returns `self`.
159
+ # * #delete?: If the given object is an element in the set, removes it and
160
+ # returns `self`; otherwise, returns `nil`.
161
+ # * #subtract: Removes each given object from the set; returns `self`.
162
+ # * #delete_if - Removes elements specified by a given block.
163
+ # * #select! (aliased as #filter!): Removes elements not specified by a given
164
+ # block.
165
+ # * #keep_if: Removes elements not specified by a given block.
166
+ # * #reject! Removes elements specified by a given block.
167
+ #
168
+ # ### Methods for Converting
169
+ #
170
+ # * #classify: Returns a hash that classifies the elements, as determined by
171
+ # the given block.
172
+ # * #collect! (aliased as #map!): Replaces each element with a block
173
+ # return-value.
174
+ # * #divide: Returns a hash that classifies the elements, as determined by the
175
+ # given block; differs from #classify in that the block may accept either
176
+ # one or two arguments.
177
+ # * #flatten: Returns a new set that is a recursive flattening of `self`.
178
+ # * #flatten!: Replaces each nested set in `self` with the elements from that
179
+ # set.
180
+ # * #inspect (aliased as #to_s): Returns a string displaying the elements.
181
+ # * #join: Returns a string containing all elements, converted to strings as
182
+ # needed, and joined by the given record separator.
183
+ # * #to_a: Returns an array containing all set elements.
184
+ # * #to_set: Returns `self` if given no arguments and no block; with a block
185
+ # given, returns a new set consisting of block return values.
186
+ #
187
+ # ### Methods for Iterating
188
+ #
189
+ # * #each: Calls the block with each successive element; returns `self`.
190
+ #
191
+ # ### Other Methods
192
+ #
193
+ # * #reset: Resets the internal state; useful if an object has been modified
194
+ # while an element in the set.
195
+ #
196
+ class Set[unchecked out A]
197
+ include Enumerable[A]
198
+
199
+ # <!--
200
+ # rdoc-file=set.c
201
+ # - Set.new -> new_set
202
+ # - Set.new(enum) -> new_set
203
+ # - Set.new(enum) { |elem| ... } -> new_set
204
+ # -->
205
+ # Creates a new set containing the elements of the given enumerable object.
206
+ #
207
+ # If a block is given, the elements of enum are preprocessed by the given block.
208
+ #
209
+ # Set.new([1, 2]) #=> Set[1, 2]
210
+ # Set.new([1, 2, 1]) #=> Set[1, 2]
211
+ # Set.new([1, 'c', :s]) #=> Set[1, "c", :s]
212
+ # Set.new(1..5) #=> Set[1, 2, 3, 4, 5]
213
+ # Set.new([1, 2, 3]) { |x| x * x } #=> Set[1, 4, 9]
214
+ #
215
+ def initialize: (_Each[A]) -> untyped
216
+ | [X] (_Each[X]) { (X) -> A } -> untyped
217
+ | (?nil) -> untyped
218
+
219
+ # <!--
220
+ # rdoc-file=set.c
221
+ # - Set[*objects] -> new_set
222
+ # -->
223
+ # Returns a new Set object populated with the given objects, See Set::new.
224
+ #
225
+ def self.[]: [X] (*X) -> Set[X]
226
+
227
+ # <!--
228
+ # rdoc-file=set.c
229
+ # - set & enum -> new_set
230
+ # -->
231
+ # Returns a new set containing elements common to the set and the given
232
+ # enumerable object.
233
+ #
234
+ # Set[1, 3, 5] & Set[3, 2, 1] #=> Set[3, 1]
235
+ # Set['a', 'b', 'z'] & ['a', 'b', 'c'] #=> Set["a", "b"]
236
+ #
237
+ def &: (_Each[A]) -> self
238
+
239
+ # <!-- rdoc-file=set.c -->
240
+ # Returns a new set containing elements common to the set and the given
241
+ # enumerable object.
242
+ #
243
+ # Set[1, 3, 5] & Set[3, 2, 1] #=> Set[3, 1]
244
+ # Set['a', 'b', 'z'] & ['a', 'b', 'c'] #=> Set["a", "b"]
245
+ #
246
+ alias intersection &
247
+
248
+ # <!--
249
+ # rdoc-file=set.c
250
+ # - set | enum -> new_set
251
+ # -->
252
+ # Returns a new set built by merging the set and the elements of the given
253
+ # enumerable object.
254
+ #
255
+ # Set[1, 2, 3] | Set[2, 4, 5] #=> Set[1, 2, 3, 4, 5]
256
+ # Set[1, 5, 'z'] | (1..6) #=> Set[1, 5, "z", 2, 3, 4, 6]
257
+ #
258
+ def |: (_Each[A]) -> self
259
+
260
+ # <!-- rdoc-file=set.c -->
261
+ # Returns a new set built by merging the set and the elements of the given
262
+ # enumerable object.
263
+ #
264
+ # Set[1, 2, 3] | Set[2, 4, 5] #=> Set[1, 2, 3, 4, 5]
265
+ # Set[1, 5, 'z'] | (1..6) #=> Set[1, 5, "z", 2, 3, 4, 6]
266
+ #
267
+ alias union |
268
+
269
+ # <!-- rdoc-file=set.c -->
270
+ # Returns a new set built by merging the set and the elements of the given
271
+ # enumerable object.
272
+ #
273
+ # Set[1, 2, 3] | Set[2, 4, 5] #=> Set[1, 2, 3, 4, 5]
274
+ # Set[1, 5, 'z'] | (1..6) #=> Set[1, 5, "z", 2, 3, 4, 6]
275
+ #
276
+ alias + |
277
+
278
+ # <!--
279
+ # rdoc-file=set.c
280
+ # - set - enum -> new_set
281
+ # -->
282
+ # Returns a new set built by duplicating the set, removing every element that
283
+ # appears in the given enumerable object.
284
+ #
285
+ # Set[1, 3, 5] - Set[1, 5] #=> Set[3]
286
+ # Set['a', 'b', 'z'] - ['a', 'c'] #=> Set["b", "z"]
287
+ #
288
+ def -: (_Each[A]) -> self
289
+
290
+ # <!-- rdoc-file=set.c -->
291
+ # Returns a new set built by duplicating the set, removing every element that
292
+ # appears in the given enumerable object.
293
+ #
294
+ # Set[1, 3, 5] - Set[1, 5] #=> Set[3]
295
+ # Set['a', 'b', 'z'] - ['a', 'c'] #=> Set["b", "z"]
296
+ #
297
+ alias difference -
298
+
299
+ # <!--
300
+ # rdoc-file=set.c
301
+ # - add(obj) -> self
302
+ # -->
303
+ # Adds the given object to the set and returns self. Use Set#merge to add many
304
+ # elements at once.
305
+ #
306
+ # Set[1, 2].add(3) #=> Set[1, 2, 3]
307
+ # Set[1, 2].add([3, 4]) #=> Set[1, 2, [3, 4]]
308
+ # Set[1, 2].add(2) #=> Set[1, 2]
309
+ #
310
+ def add: (A) -> self
311
+
312
+ # <!-- rdoc-file=set.c -->
313
+ # Adds the given object to the set and returns self. Use Set#merge to add many
314
+ # elements at once.
315
+ #
316
+ # Set[1, 2].add(3) #=> Set[1, 2, 3]
317
+ # Set[1, 2].add([3, 4]) #=> Set[1, 2, [3, 4]]
318
+ # Set[1, 2].add(2) #=> Set[1, 2]
319
+ #
320
+ alias << add
321
+
322
+ # <!--
323
+ # rdoc-file=set.c
324
+ # - add?(obj) -> self or nil
325
+ # -->
326
+ # Adds the given object to the set and returns self. If the object is already in
327
+ # the set, returns nil.
328
+ #
329
+ # Set[1, 2].add?(3) #=> Set[1, 2, 3]
330
+ # Set[1, 2].add?([3, 4]) #=> Set[1, 2, [3, 4]]
331
+ # Set[1, 2].add?(2) #=> nil
332
+ #
333
+ def add?: (A) -> self?
334
+
335
+ # <!--
336
+ # rdoc-file=set.c
337
+ # - include?(item) -> true or false
338
+ # -->
339
+ # Returns true if the set contains the given object:
340
+ #
341
+ # Set[1, 2, 3].include? 2 #=> true
342
+ # Set[1, 2, 3].include? 4 #=> false
343
+ #
344
+ # Note that <code>include?</code> and <code>member?</code> do not test member
345
+ # equality using <code>==</code> as do other Enumerables.
346
+ #
347
+ # This is aliased to #===, so it is usable in `case` expressions:
348
+ #
349
+ # case :apple
350
+ # when Set[:potato, :carrot]
351
+ # "vegetable"
352
+ # when Set[:apple, :banana]
353
+ # "fruit"
354
+ # end
355
+ # # => "fruit"
356
+ #
357
+ # See also Enumerable#include?
358
+ #
359
+ def include?: (Hash::_Key) -> bool
360
+
361
+ # <!-- rdoc-file=set.c -->
362
+ # Returns true if the set contains the given object:
363
+ #
364
+ # Set[1, 2, 3].include? 2 #=> true
365
+ # Set[1, 2, 3].include? 4 #=> false
366
+ #
367
+ # Note that <code>include?</code> and <code>member?</code> do not test member
368
+ # equality using <code>==</code> as do other Enumerables.
369
+ #
370
+ # This is aliased to #===, so it is usable in `case` expressions:
371
+ #
372
+ # case :apple
373
+ # when Set[:potato, :carrot]
374
+ # "vegetable"
375
+ # when Set[:apple, :banana]
376
+ # "fruit"
377
+ # end
378
+ # # => "fruit"
379
+ #
380
+ # See also Enumerable#include?
381
+ #
382
+ alias member? include?
383
+
384
+ # <!--
385
+ # rdoc-file=set.c
386
+ # - set ^ enum -> new_set
387
+ # -->
388
+ # Returns a new set containing elements exclusive between the set and the given
389
+ # enumerable object. <code>(set ^ enum)</code> is equivalent to <code>((set |
390
+ # enum) - (set & enum))</code>.
391
+ #
392
+ # Set[1, 2] ^ Set[2, 3] #=> Set[3, 1]
393
+ # Set[1, 'b', 'c'] ^ ['b', 'd'] #=> Set["d", 1, "c"]
394
+ #
395
+ def ^: (_Each[A]) -> self
396
+
397
+ # <!--
398
+ # rdoc-file=set.c
399
+ # - classify { |o| ... } -> hash
400
+ # - classify -> enumerator
401
+ # -->
402
+ # Classifies the set by the return value of the given block and returns a hash
403
+ # of {value => set of elements} pairs. The block is called once for each
404
+ # element of the set, passing the element as parameter.
405
+ #
406
+ # files = Set.new(Dir.glob("*.rb"))
407
+ # hash = files.classify { |f| File.mtime(f).year }
408
+ # hash #=> {2000 => Set["a.rb", "b.rb"],
409
+ # # 2001 => Set["c.rb", "d.rb", "e.rb"],
410
+ # # 2002 => Set["f.rb"]}
411
+ #
412
+ # Returns an enumerator if no block is given.
413
+ #
414
+ def classify: [X] () { (A) -> X } -> Hash[X, self]
415
+
416
+ # <!--
417
+ # rdoc-file=set.c
418
+ # - clear -> self
419
+ # -->
420
+ # Removes all elements and returns self.
421
+ #
422
+ # set = Set[1, 'c', :s] #=> Set[1, "c", :s]
423
+ # set.clear #=> Set[]
424
+ # set #=> Set[]
425
+ #
426
+ def clear: () -> self
427
+
428
+ # <!--
429
+ # rdoc-file=set.c
430
+ # - collect! { |o| ... } -> self
431
+ # - collect! -> enumerator
432
+ # -->
433
+ # Replaces the elements with ones returned by `collect`. Returns an enumerator
434
+ # if no block is given.
435
+ #
436
+ def collect!: () { (A) -> A } -> self
437
+
438
+ # <!-- rdoc-file=set.c -->
439
+ # Replaces the elements with ones returned by `collect`. Returns an enumerator
440
+ # if no block is given.
441
+ #
442
+ alias map! collect!
443
+
444
+ # <!--
445
+ # rdoc-file=set.c
446
+ # - delete(obj) -> self
447
+ # -->
448
+ # Deletes the given object from the set and returns self. Use subtract to delete
449
+ # many items at once.
450
+ #
451
+ def delete: (A) -> self
452
+
453
+ # <!--
454
+ # rdoc-file=set.c
455
+ # - delete?(obj) -> self or nil
456
+ # -->
457
+ # Deletes the given object from the set and returns self. If the object is not
458
+ # in the set, returns nil.
459
+ #
460
+ def delete?: (A) -> self?
461
+
462
+ # <!--
463
+ # rdoc-file=set.c
464
+ # - delete_if { |o| ... } -> self
465
+ # - delete_if -> enumerator
466
+ # -->
467
+ # Deletes every element of the set for which block evaluates to true, and
468
+ # returns self. Returns an enumerator if no block is given.
469
+ #
470
+ def delete_if: () { (A) -> untyped } -> self
471
+
472
+ # <!--
473
+ # rdoc-file=set.c
474
+ # - reject! { |o| ... } -> self
475
+ # - reject! -> enumerator
476
+ # -->
477
+ # Equivalent to Set#delete_if, but returns nil if no changes were made. Returns
478
+ # an enumerator if no block is given.
479
+ #
480
+ def reject!: () { (A) -> untyped } -> self?
481
+
482
+ # <!--
483
+ # rdoc-file=set.c
484
+ # - compare_by_identity -> self
485
+ # -->
486
+ # Makes the set compare its elements by their identity and returns self.
487
+ #
488
+ def compare_by_identity: () -> self
489
+
490
+ # <!--
491
+ # rdoc-file=set.c
492
+ # - compare_by_identity? -> true or false
493
+ # -->
494
+ # Returns true if the set will compare its elements by their identity. Also see
495
+ # Set#compare_by_identity.
496
+ #
497
+ def compare_by_identity?: () -> bool
498
+
499
+ # <!--
500
+ # rdoc-file=set.c
501
+ # - disjoint?(set) -> true or false
502
+ # -->
503
+ # Returns true if the set and the given enumerable have no element in common.
504
+ # This method is the opposite of <code>intersect?</code>.
505
+ #
506
+ # Set[1, 2, 3].disjoint? Set[3, 4] #=> false
507
+ # Set[1, 2, 3].disjoint? Set[4, 5] #=> true
508
+ # Set[1, 2, 3].disjoint? [3, 4] #=> false
509
+ # Set[1, 2, 3].disjoint? 4..5 #=> true
510
+ #
511
+ def disjoint?: (Set[A] | Enumerable[A]) -> bool
512
+
513
+ # <!--
514
+ # rdoc-file=set.c
515
+ # - divide { |o1, o2| ... } -> set
516
+ # - divide { |o| ... } -> set
517
+ # - divide -> enumerator
518
+ # -->
519
+ # Divides the set into a set of subsets according to the commonality defined by
520
+ # the given block.
521
+ #
522
+ # If the arity of the block is 2, elements o1 and o2 are in common if both
523
+ # block.call(o1, o2) and block.call(o2, o1) are true. Otherwise, elements o1 and
524
+ # o2 are in common if block.call(o1) == block.call(o2).
525
+ #
526
+ # numbers = Set[1, 3, 4, 6, 9, 10, 11]
527
+ # set = numbers.divide { |i,j| (i - j).abs == 1 }
528
+ # set #=> Set[Set[1],
529
+ # # Set[3, 4],
530
+ # # Set[6],
531
+ # # Set[9, 10, 11]]
532
+ #
533
+ # Returns an enumerator if no block is given.
534
+ #
535
+ def divide: () { (A, A) -> Hash::_Key } -> Set[self]
536
+ | () { (A) -> Hash::_Key } -> Set[self]
537
+
538
+ # <!--
539
+ # rdoc-file=set.c
540
+ # - each { |o| ... } -> self
541
+ # - each -> enumerator
542
+ # -->
543
+ # Calls the given block once for each element in the set, passing the element as
544
+ # parameter. Returns an enumerator if no block is given.
545
+ #
546
+ def each: () { (A) -> void } -> self
547
+ | () -> Enumerator[A, self]
548
+
549
+ # <!--
550
+ # rdoc-file=set.c
551
+ # - empty? -> true or false
552
+ # -->
553
+ # Returns true if the set contains no elements.
554
+ #
555
+ def empty?: () -> bool
556
+
557
+ # <!--
558
+ # rdoc-file=set.c
559
+ # - flatten -> set
560
+ # -->
561
+ # Returns a new set that is a copy of the set, flattening each containing set
562
+ # recursively.
563
+ #
564
+ def flatten: () -> Set[untyped]
565
+
566
+ # <!--
567
+ # rdoc-file=set.c
568
+ # - flatten! -> self
569
+ # -->
570
+ # Equivalent to Set#flatten, but replaces the receiver with the result in place.
571
+ # Returns nil if no modifications were made.
572
+ #
573
+ def flatten!: () -> self?
574
+
575
+ # <!--
576
+ # rdoc-file=set.c
577
+ # - intersect?(set) -> true or false
578
+ # -->
579
+ # Returns true if the set and the given enumerable have at least one element in
580
+ # common.
581
+ #
582
+ # Set[1, 2, 3].intersect? Set[4, 5] #=> false
583
+ # Set[1, 2, 3].intersect? Set[3, 4] #=> true
584
+ # Set[1, 2, 3].intersect? 4..5 #=> false
585
+ # Set[1, 2, 3].intersect? [3, 4] #=> true
586
+ #
587
+ def intersect?: (Set[A] | Enumerable[A]) -> bool
588
+
589
+ # <!--
590
+ # rdoc-file=set.c
591
+ # - keep_if { |o| ... } -> self
592
+ # - keep_if -> enumerator
593
+ # -->
594
+ # Deletes every element of the set for which block evaluates to false, and
595
+ # returns self. Returns an enumerator if no block is given.
596
+ #
597
+ def keep_if: () { (A) -> untyped } -> self
598
+
599
+ # <!--
600
+ # rdoc-file=set.c
601
+ # - size -> integer
602
+ # -->
603
+ # Returns the number of elements.
604
+ #
605
+ def size: () -> Integer
606
+
607
+ # <!-- rdoc-file=set.c -->
608
+ # Returns the number of elements.
609
+ #
610
+ alias length size
611
+
612
+ # <!--
613
+ # rdoc-file=set.c
614
+ # - merge(*enums, **nil) -> self
615
+ # -->
616
+ # Merges the elements of the given enumerable objects to the set and returns
617
+ # self.
618
+ #
619
+ def merge: (*_Each[A]) -> self
620
+
621
+ # <!--
622
+ # rdoc-file=set.c
623
+ # - subset?(set) -> true or false
624
+ # -->
625
+ # Returns true if the set is a subset of the given set.
626
+ #
627
+ def subset?: (self) -> bool
628
+
629
+ # <!-- rdoc-file=set.c -->
630
+ # Returns true if the set is a subset of the given set.
631
+ #
632
+ alias <= subset?
633
+
634
+ # <!--
635
+ # rdoc-file=set.c
636
+ # - proper_subset?(set) -> true or false
637
+ # -->
638
+ # Returns true if the set is a proper subset of the given set.
639
+ #
640
+ def proper_subset?: (self) -> bool
641
+
642
+ # <!-- rdoc-file=set.c -->
643
+ # Returns true if the set is a proper subset of the given set.
644
+ #
645
+ alias < proper_subset?
646
+
647
+ # <!--
648
+ # rdoc-file=set.c
649
+ # - superset?(set) -> true or false
650
+ # -->
651
+ # Returns true if the set is a superset of the given set.
652
+ #
653
+ def superset?: (self) -> bool
654
+
655
+ # <!-- rdoc-file=set.c -->
656
+ # Returns true if the set is a superset of the given set.
657
+ #
658
+ alias >= superset?
659
+
660
+ # <!--
661
+ # rdoc-file=set.c
662
+ # - proper_superset?(set) -> true or false
663
+ # -->
664
+ # Returns true if the set is a proper superset of the given set.
665
+ #
666
+ def proper_superset?: (self) -> bool
667
+
668
+ # <!-- rdoc-file=set.c -->
669
+ # Returns true if the set is a proper superset of the given set.
670
+ #
671
+ alias > proper_superset?
672
+
673
+ # <!--
674
+ # rdoc-file=set.c
675
+ # - replace(enum) -> self
676
+ # -->
677
+ # Replaces the contents of the set with the contents of the given enumerable
678
+ # object and returns self.
679
+ #
680
+ # set = Set[1, 'c', :s] #=> Set[1, "c", :s]
681
+ # set.replace([1, 2]) #=> Set[1, 2]
682
+ # set #=> Set[1, 2]
683
+ #
684
+ def replace: (_Each[A]) -> self
685
+
686
+ # <!--
687
+ # rdoc-file=set.c
688
+ # - reset -> self
689
+ # -->
690
+ # Resets the internal state after modification to existing elements and returns
691
+ # self. Elements will be reindexed and deduplicated.
692
+ #
693
+ def reset: () -> self
694
+
695
+ # <!--
696
+ # rdoc-file=set.c
697
+ # - select! { |o| ... } -> self
698
+ # - select! -> enumerator
699
+ # -->
700
+ # Equivalent to Set#keep_if, but returns nil if no changes were made. Returns an
701
+ # enumerator if no block is given.
702
+ #
703
+ def select!: () { (A) -> untyped } -> self?
704
+
705
+ # <!-- rdoc-file=set.c -->
706
+ # Equivalent to Set#keep_if, but returns nil if no changes were made. Returns an
707
+ # enumerator if no block is given.
708
+ #
709
+ alias filter! select!
710
+
711
+ # <!--
712
+ # rdoc-file=set.c
713
+ # - subtract(enum) -> self
714
+ # -->
715
+ # Deletes every element that appears in the given enumerable object and returns
716
+ # self.
717
+ #
718
+ def subtract: (_Each[A]) -> self
719
+
720
+ # <!--
721
+ # rdoc-file=set.c
722
+ # - to_a -> array
723
+ # -->
724
+ # Returns an array containing all elements in the set.
725
+ #
726
+ # Set[1, 2].to_a #=> [1, 2]
727
+ # Set[1, 'c', :s].to_a #=> [1, "c", :s]
728
+ #
729
+ def to_a: () -> Array[A]
730
+
731
+ # <!--
732
+ # rdoc-file=set.c
733
+ # - join(separator=nil)-> new_string
734
+ # -->
735
+ # Returns a string created by converting each element of the set to a string.
736
+ #
737
+ def join: (?string separator) -> String
738
+ end
739
+
740
+ %a{annotate:rdoc:skip}
741
+ module Enumerable[unchecked out E]
742
+ # <!--
743
+ # rdoc-file=prelude.rb
744
+ # - to_set(*args, &block)
745
+ # -->
746
+ # Makes a set from the enumerable object with given arguments. Passing arguments
747
+ # to this method is deprecated.
748
+ #
749
+ def to_set: () -> Set[E]
750
+ | [T] () { (E) -> T } -> Set[T]
751
+ end