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/struct.rbs ADDED
@@ -0,0 +1,668 @@
1
+ # <!-- rdoc-file=struct.c -->
2
+ # Class Struct provides a convenient way to create a simple class that can store
3
+ # and fetch values.
4
+ #
5
+ # This example creates a subclass of `Struct`, <code>Struct::Customer</code>;
6
+ # the first argument, a string, is the name of the subclass; the other
7
+ # arguments, symbols, determine the *members* of the new subclass.
8
+ #
9
+ # Customer = Struct.new('Customer', :name, :address, :zip)
10
+ # Customer.name # => "Struct::Customer"
11
+ # Customer.class # => Class
12
+ # Customer.superclass # => Struct
13
+ #
14
+ # Corresponding to each member are two methods, a writer and a reader, that
15
+ # store and fetch values:
16
+ #
17
+ # methods = Customer.instance_methods false
18
+ # methods # => [:zip, :address=, :zip=, :address, :name, :name=]
19
+ #
20
+ # An instance of the subclass may be created, and its members assigned values,
21
+ # via method <code>::new</code>:
22
+ #
23
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
24
+ # joe # => #<struct Struct::Customer name="Joe Smith", address="123 Maple, Anytown NC", zip=12345>
25
+ #
26
+ # The member values may be managed thus:
27
+ #
28
+ # joe.name # => "Joe Smith"
29
+ # joe.name = 'Joseph Smith'
30
+ # joe.name # => "Joseph Smith"
31
+ #
32
+ # And thus; note that member name may be expressed as either a string or a
33
+ # symbol:
34
+ #
35
+ # joe[:name] # => "Joseph Smith"
36
+ # joe[:name] = 'Joseph Smith, Jr.'
37
+ # joe['name'] # => "Joseph Smith, Jr."
38
+ #
39
+ # See Struct::new.
40
+ #
41
+ # ## What's Here
42
+ #
43
+ # First, what's elsewhere. Class Struct:
44
+ #
45
+ # * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
46
+ # * Includes [module Enumerable](rdoc-ref:Enumerable@What-27s+Here), which
47
+ # provides dozens of additional methods.
48
+ #
49
+ # See also Data, which is a somewhat similar, but stricter concept for defining
50
+ # immutable value objects.
51
+ #
52
+ # Here, class Struct provides methods that are useful for:
53
+ #
54
+ # * [Creating a Struct
55
+ # Subclass](rdoc-ref:Struct@Methods+for+Creating+a+Struct+Subclass)
56
+ # * [Querying](rdoc-ref:Struct@Methods+for+Querying)
57
+ # * [Comparing](rdoc-ref:Struct@Methods+for+Comparing)
58
+ # * [Fetching](rdoc-ref:Struct@Methods+for+Fetching)
59
+ # * [Assigning](rdoc-ref:Struct@Methods+for+Assigning)
60
+ # * [Iterating](rdoc-ref:Struct@Methods+for+Iterating)
61
+ # * [Converting](rdoc-ref:Struct@Methods+for+Converting)
62
+ #
63
+ # ### Methods for Creating a Struct Subclass
64
+ #
65
+ # * ::new: Returns a new subclass of Struct.
66
+ #
67
+ # ### Methods for Querying
68
+ #
69
+ # * #hash: Returns the integer hash code.
70
+ # * #size (aliased as #length): Returns the number of members.
71
+ #
72
+ # ### Methods for Comparing
73
+ #
74
+ # * #==: Returns whether a given object is equal to `self`, using
75
+ # <code>==</code> to compare member values.
76
+ # * #eql?: Returns whether a given object is equal to `self`, using
77
+ # <code>eql?</code> to compare member values.
78
+ #
79
+ # ### Methods for Fetching
80
+ #
81
+ # * #[]: Returns the value associated with a given member name.
82
+ # * #to_a (aliased as #values, #deconstruct): Returns the member values in
83
+ # `self` as an array.
84
+ # * #deconstruct_keys: Returns a hash of the name/value pairs for given member
85
+ # names.
86
+ # * #dig: Returns the object in nested objects that is specified by a given
87
+ # member name and additional arguments.
88
+ # * #members: Returns an array of the member names.
89
+ # * #select (aliased as #filter): Returns an array of member values from
90
+ # `self`, as selected by the given block.
91
+ # * #values_at: Returns an array containing values for given member names.
92
+ #
93
+ # ### Methods for Assigning
94
+ #
95
+ # * #[]=: Assigns a given value to a given member name.
96
+ #
97
+ # ### Methods for Iterating
98
+ #
99
+ # * #each: Calls a given block with each member name.
100
+ # * #each_pair: Calls a given block with each member name/value pair.
101
+ #
102
+ # ### Methods for Converting
103
+ #
104
+ # * #inspect (aliased as #to_s): Returns a string representation of `self`.
105
+ # * #to_h: Returns a hash of the member name/value pairs in `self`.
106
+ #
107
+ class Struct[E]
108
+ include Enumerable[E]
109
+
110
+ # The types that can be used when "indexing" into a `Struct` via `[]`, `[]=`, `dig`, and
111
+ # `deconstruct_keys`.
112
+ #
113
+ type index = String | Symbol | int
114
+
115
+ # <!--
116
+ # rdoc-file=struct.c
117
+ # - Struct.new(*member_names, keyword_init: nil){|Struct_subclass| ... } -> Struct_subclass
118
+ # - Struct.new(class_name, *member_names, keyword_init: nil){|Struct_subclass| ... } -> Struct_subclass
119
+ # - Struct_subclass.new(*member_names) -> Struct_subclass_instance
120
+ # - Struct_subclass.new(**member_names) -> Struct_subclass_instance
121
+ # -->
122
+ # <code>Struct.new</code> returns a new subclass of `Struct`. The new subclass:
123
+ #
124
+ # * May be anonymous, or may have the name given by `class_name`.
125
+ # * May have members as given by `member_names`.
126
+ # * May have initialization via ordinary arguments, or via keyword arguments
127
+ #
128
+ # The new subclass has its own method <code>::new</code>; thus:
129
+ #
130
+ # Foo = Struct.new('Foo', :foo, :bar) # => Struct::Foo
131
+ # f = Foo.new(0, 1) # => #<struct Struct::Foo foo=0, bar=1>
132
+ #
133
+ # **Class Name**
134
+ #
135
+ # With string argument `class_name`, returns a new subclass of `Struct` named
136
+ # <code>Struct::<em>class_name</em></code>:
137
+ #
138
+ # Foo = Struct.new('Foo', :foo, :bar) # => Struct::Foo
139
+ # Foo.name # => "Struct::Foo"
140
+ # Foo.superclass # => Struct
141
+ #
142
+ # Without string argument `class_name`, returns a new anonymous subclass of
143
+ # `Struct`:
144
+ #
145
+ # Struct.new(:foo, :bar).name # => nil
146
+ #
147
+ # **Block**
148
+ #
149
+ # With a block given, the created subclass is yielded to the block:
150
+ #
151
+ # Customer = Struct.new('Customer', :name, :address) do |new_class|
152
+ # p "The new subclass is #{new_class}"
153
+ # def greeting
154
+ # "Hello #{name} at #{address}"
155
+ # end
156
+ # end # => Struct::Customer
157
+ # dave = Customer.new('Dave', '123 Main')
158
+ # dave # => #<struct Struct::Customer name="Dave", address="123 Main">
159
+ # dave.greeting # => "Hello Dave at 123 Main"
160
+ #
161
+ # Output, from <code>Struct.new</code>:
162
+ #
163
+ # "The new subclass is Struct::Customer"
164
+ #
165
+ # **Member Names**
166
+ #
167
+ # Symbol arguments `member_names` determines the members of the new subclass:
168
+ #
169
+ # Struct.new(:foo, :bar).members # => [:foo, :bar]
170
+ # Struct.new('Foo', :foo, :bar).members # => [:foo, :bar]
171
+ #
172
+ # The new subclass has instance methods corresponding to `member_names`:
173
+ #
174
+ # Foo = Struct.new('Foo', :foo, :bar)
175
+ # Foo.instance_methods(false) # => [:foo, :bar, :foo=, :bar=]
176
+ # f = Foo.new # => #<struct Struct::Foo foo=nil, bar=nil>
177
+ # f.foo # => nil
178
+ # f.foo = 0 # => 0
179
+ # f.bar # => nil
180
+ # f.bar = 1 # => 1
181
+ # f # => #<struct Struct::Foo foo=0, bar=1>
182
+ #
183
+ # **Singleton Methods**
184
+ #
185
+ # A subclass returned by Struct.new has these singleton methods:
186
+ #
187
+ # * Method <code>::new </code> creates an instance of the subclass:
188
+ #
189
+ # Foo.new # => #<struct Struct::Foo foo=nil, bar=nil>
190
+ # Foo.new(0) # => #<struct Struct::Foo foo=0, bar=nil>
191
+ # Foo.new(0, 1) # => #<struct Struct::Foo foo=0, bar=1>
192
+ # Foo.new(0, 1, 2) # Raises ArgumentError: struct size differs
193
+ #
194
+ # # Initialization with keyword arguments:
195
+ # Foo.new(foo: 0) # => #<struct Struct::Foo foo=0, bar=nil>
196
+ # Foo.new(foo: 0, bar: 1) # => #<struct Struct::Foo foo=0, bar=1>
197
+ # Foo.new(foo: 0, bar: 1, baz: 2)
198
+ # # Raises ArgumentError: unknown keywords: baz
199
+ #
200
+ # * Method <code>:inspect</code> returns a string representation of the
201
+ # subclass:
202
+ #
203
+ # Foo.inspect
204
+ # # => "Struct::Foo"
205
+ #
206
+ # * Method <code>::members</code> returns an array of the member names:
207
+ #
208
+ # Foo.members # => [:foo, :bar]
209
+ #
210
+ # **Keyword Argument**
211
+ #
212
+ # By default, the arguments for initializing an instance of the new subclass can
213
+ # be both positional and keyword arguments.
214
+ #
215
+ # Optional keyword argument <code>keyword_init:</code> allows to force only one
216
+ # type of arguments to be accepted:
217
+ #
218
+ # KeywordsOnly = Struct.new(:foo, :bar, keyword_init: true)
219
+ # KeywordsOnly.new(bar: 1, foo: 0)
220
+ # # => #<struct KeywordsOnly foo=0, bar=1>
221
+ # KeywordsOnly.new(0, 1)
222
+ # # Raises ArgumentError: wrong number of arguments
223
+ #
224
+ # PositionalOnly = Struct.new(:foo, :bar, keyword_init: false)
225
+ # PositionalOnly.new(0, 1)
226
+ # # => #<struct PositionalOnly foo=0, bar=1>
227
+ # PositionalOnly.new(bar: 1, foo: 0)
228
+ # # => #<struct PositionalOnly foo={:foo=>1, :bar=>2}, bar=nil>
229
+ # # Note that no error is raised, but arguments treated as one hash value
230
+ #
231
+ # # Same as not providing keyword_init:
232
+ # Any = Struct.new(:foo, :bar, keyword_init: nil)
233
+ # Any.new(foo: 1, bar: 2)
234
+ # # => #<struct Any foo=1, bar=2>
235
+ # Any.new(1, 2)
236
+ # # => #<struct Any foo=1, bar=2>
237
+ #
238
+ def self.new: (string? classname, *interned fields, ?keyword_init: boolish?) ?{ (singleton(Struct)) [self: singleton(Struct)] -> void } -> untyped
239
+ | (Symbol field1, *interned fields, ?keyword_init: boolish?) ?{ (singleton(Struct)) [self: singleton(Struct)] -> void } -> untyped
240
+
241
+ # <!--
242
+ # rdoc-file=struct.c
243
+ # - StructClass::members -> array_of_symbols
244
+ # -->
245
+ # Returns the member names of the Struct descendant as an array:
246
+ #
247
+ # Customer = Struct.new(:name, :address, :zip)
248
+ # Customer.members # => [:name, :address, :zip]
249
+ #
250
+ def self.members: () -> Array[Symbol]
251
+
252
+ # <!--
253
+ # rdoc-file=struct.c
254
+ # - StructClass::keyword_init? -> true or falsy value
255
+ # -->
256
+ # Returns `true` if the class was initialized with <code>keyword_init:
257
+ # true</code>. Otherwise returns `nil` or `false`.
258
+ #
259
+ # Examples:
260
+ # Foo = Struct.new(:a)
261
+ # Foo.keyword_init? # => nil
262
+ # Bar = Struct.new(:a, keyword_init: true)
263
+ # Bar.keyword_init? # => true
264
+ # Baz = Struct.new(:a, keyword_init: false)
265
+ # Baz.keyword_init? # => false
266
+ #
267
+ def self.keyword_init?: () -> bool?
268
+
269
+ # <!--
270
+ # rdoc-file=struct.c
271
+ # - self == other -> true or false
272
+ # -->
273
+ # Returns `true` if and only if the following are true; otherwise returns
274
+ # `false`:
275
+ #
276
+ # * <code>other.class == self.class</code>.
277
+ # * For each member name `name`, <code>other.name == self.name</code>.
278
+ #
279
+ # Examples:
280
+ #
281
+ # Customer = Struct.new(:name, :address, :zip)
282
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
283
+ # joe_jr = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
284
+ # joe_jr == joe # => true
285
+ # joe_jr[:name] = 'Joe Smith, Jr.'
286
+ # # => "Joe Smith, Jr."
287
+ # joe_jr == joe # => false
288
+ #
289
+ def ==: (untyped other) -> bool
290
+
291
+ # <!--
292
+ # rdoc-file=struct.c
293
+ # - eql?(other) -> true or false
294
+ # -->
295
+ # Returns `true` if and only if the following are true; otherwise returns
296
+ # `false`:
297
+ #
298
+ # * <code>other.class == self.class</code>.
299
+ # * For each member name `name`, <code>other.name.eql?(self.name)</code>.
300
+ #
301
+ # Customer = Struct.new(:name, :address, :zip)
302
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
303
+ # joe_jr = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
304
+ # joe_jr.eql?(joe) # => true
305
+ # joe_jr[:name] = 'Joe Smith, Jr.'
306
+ # joe_jr.eql?(joe) # => false
307
+ #
308
+ # Related: Object#==.
309
+ #
310
+ def eql?: (untyped other) -> bool
311
+
312
+ # <!--
313
+ # rdoc-file=struct.c
314
+ # - hash -> integer
315
+ # -->
316
+ # Returns the integer hash value for `self`.
317
+ #
318
+ # Two structs of the same class and with the same content will have the same
319
+ # hash code (and will compare using Struct#eql?):
320
+ #
321
+ # Customer = Struct.new(:name, :address, :zip)
322
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
323
+ # joe_jr = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
324
+ # joe.hash == joe_jr.hash # => true
325
+ # joe_jr[:name] = 'Joe Smith, Jr.'
326
+ # joe.hash == joe_jr.hash # => false
327
+ #
328
+ # Related: Object#hash.
329
+ #
330
+ def hash: () -> Integer
331
+
332
+ # <!--
333
+ # rdoc-file=struct.c
334
+ # - inspect -> string
335
+ # -->
336
+ # Returns a string representation of `self`:
337
+ #
338
+ # Customer = Struct.new(:name, :address, :zip) # => Customer
339
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
340
+ # joe.inspect # => "#<struct Customer name=\"Joe Smith\", address=\"123 Maple, Anytown NC\", zip=12345>"
341
+ #
342
+ def inspect: () -> String
343
+
344
+ # <!-- rdoc-file=struct.c -->
345
+ # Returns a string representation of `self`:
346
+ #
347
+ # Customer = Struct.new(:name, :address, :zip) # => Customer
348
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
349
+ # joe.inspect # => "#<struct Customer name=\"Joe Smith\", address=\"123 Maple, Anytown NC\", zip=12345>"
350
+ #
351
+ alias to_s inspect
352
+
353
+ # <!--
354
+ # rdoc-file=struct.c
355
+ # - to_a -> array
356
+ # -->
357
+ # Returns the values in `self` as an array:
358
+ #
359
+ # Customer = Struct.new(:name, :address, :zip)
360
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
361
+ # joe.to_a # => ["Joe Smith", "123 Maple, Anytown NC", 12345]
362
+ #
363
+ # Related: #members.
364
+ #
365
+ def to_a: () -> Array[E]
366
+
367
+ # <!--
368
+ # rdoc-file=struct.c
369
+ # - to_h -> hash
370
+ # - to_h {|name, value| ... } -> hash
371
+ # -->
372
+ # Returns a hash containing the name and value for each member:
373
+ #
374
+ # Customer = Struct.new(:name, :address, :zip)
375
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
376
+ # h = joe.to_h
377
+ # h # => {:name=>"Joe Smith", :address=>"123 Maple, Anytown NC", :zip=>12345}
378
+ #
379
+ # If a block is given, it is called with each name/value pair; the block should
380
+ # return a 2-element array whose elements will become a key/value pair in the
381
+ # returned hash:
382
+ #
383
+ # h = joe.to_h{|name, value| [name.upcase, value.to_s.upcase]}
384
+ # h # => {:NAME=>"JOE SMITH", :ADDRESS=>"123 MAPLE, ANYTOWN NC", :ZIP=>"12345"}
385
+ #
386
+ # Raises ArgumentError if the block returns an inappropriate value.
387
+ #
388
+ def to_h: () -> Hash[Symbol, E]
389
+ | [K, V] () { (Symbol key, E value) -> [K, V] } -> Hash[K, V]
390
+
391
+ # <!-- rdoc-file=struct.c -->
392
+ # Returns the values in `self` as an array:
393
+ #
394
+ # Customer = Struct.new(:name, :address, :zip)
395
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
396
+ # joe.to_a # => ["Joe Smith", "123 Maple, Anytown NC", 12345]
397
+ #
398
+ # Related: #members.
399
+ #
400
+ alias values to_a
401
+
402
+ # <!--
403
+ # rdoc-file=struct.c
404
+ # - size -> integer
405
+ # -->
406
+ # Returns the number of members.
407
+ #
408
+ # Customer = Struct.new(:name, :address, :zip)
409
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
410
+ # joe.size #=> 3
411
+ #
412
+ def size: () -> Integer
413
+
414
+ # <!-- rdoc-file=struct.c -->
415
+ # Returns the number of members.
416
+ #
417
+ # Customer = Struct.new(:name, :address, :zip)
418
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
419
+ # joe.size #=> 3
420
+ #
421
+ alias length size
422
+
423
+ # <!--
424
+ # rdoc-file=struct.c
425
+ # - each {|value| ... } -> self
426
+ # - each -> enumerator
427
+ # -->
428
+ # Calls the given block with the value of each member; returns `self`:
429
+ #
430
+ # Customer = Struct.new(:name, :address, :zip)
431
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
432
+ # joe.each {|value| p value }
433
+ #
434
+ # Output:
435
+ #
436
+ # "Joe Smith"
437
+ # "123 Maple, Anytown NC"
438
+ # 12345
439
+ #
440
+ # Returns an Enumerator if no block is given.
441
+ #
442
+ # Related: #each_pair.
443
+ #
444
+ def each: () -> Enumerator[E, self]
445
+ | () { (E value) -> void } -> self
446
+
447
+ # <!--
448
+ # rdoc-file=struct.c
449
+ # - each_pair {|(name, value)| ... } -> self
450
+ # - each_pair -> enumerator
451
+ # -->
452
+ # Calls the given block with each member name/value pair; returns `self`:
453
+ #
454
+ # Customer = Struct.new(:name, :address, :zip) # => Customer
455
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
456
+ # joe.each_pair {|(name, value)| p "#{name} => #{value}" }
457
+ #
458
+ # Output:
459
+ #
460
+ # "name => Joe Smith"
461
+ # "address => 123 Maple, Anytown NC"
462
+ # "zip => 12345"
463
+ #
464
+ # Returns an Enumerator if no block is given.
465
+ #
466
+ # Related: #each.
467
+ #
468
+ def each_pair: () -> Enumerator[[Symbol, E], self]
469
+ | () { ([Symbol, E] key_value) -> void } -> self
470
+
471
+ # <!--
472
+ # rdoc-file=struct.c
473
+ # - struct[name] -> object
474
+ # - struct[n] -> object
475
+ # -->
476
+ # Returns a value from `self`.
477
+ #
478
+ # With symbol or string argument `name` given, returns the value for the named
479
+ # member:
480
+ #
481
+ # Customer = Struct.new(:name, :address, :zip)
482
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
483
+ # joe[:zip] # => 12345
484
+ #
485
+ # Raises NameError if `name` is not the name of a member.
486
+ #
487
+ # With integer argument `n` given, returns <code>self.values[n]</code> if `n` is
488
+ # in range; see Array@Array+Indexes:
489
+ #
490
+ # joe[2] # => 12345
491
+ # joe[-2] # => "123 Maple, Anytown NC"
492
+ #
493
+ # Raises IndexError if `n` is out of range.
494
+ #
495
+ def []: (index name_or_position) -> E
496
+
497
+ # <!--
498
+ # rdoc-file=struct.c
499
+ # - struct[name] = value -> value
500
+ # - struct[n] = value -> value
501
+ # -->
502
+ # Assigns a value to a member.
503
+ #
504
+ # With symbol or string argument `name` given, assigns the given `value` to the
505
+ # named member; returns `value`:
506
+ #
507
+ # Customer = Struct.new(:name, :address, :zip)
508
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
509
+ # joe[:zip] = 54321 # => 54321
510
+ # joe # => #<struct Customer name="Joe Smith", address="123 Maple, Anytown NC", zip=54321>
511
+ #
512
+ # Raises NameError if `name` is not the name of a member.
513
+ #
514
+ # With integer argument `n` given, assigns the given `value` to the `n`-th
515
+ # member if `n` is in range; see Array@Array+Indexes:
516
+ #
517
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
518
+ # joe[2] = 54321 # => 54321
519
+ # joe[-3] = 'Joseph Smith' # => "Joseph Smith"
520
+ # joe # => #<struct Customer name="Joseph Smith", address="123 Maple, Anytown NC", zip=54321>
521
+ #
522
+ # Raises IndexError if `n` is out of range.
523
+ #
524
+ def []=: (index name_or_position, E value) -> E
525
+
526
+ # <!--
527
+ # rdoc-file=struct.c
528
+ # - select {|value| ... } -> array
529
+ # - select -> enumerator
530
+ # -->
531
+ # With a block given, returns an array of values from `self` for which the block
532
+ # returns a truthy value:
533
+ #
534
+ # Customer = Struct.new(:name, :address, :zip)
535
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
536
+ # a = joe.select {|value| value.is_a?(String) }
537
+ # a # => ["Joe Smith", "123 Maple, Anytown NC"]
538
+ # a = joe.select {|value| value.is_a?(Integer) }
539
+ # a # => [12345]
540
+ #
541
+ # With no block given, returns an Enumerator.
542
+ #
543
+ def select: () -> Enumerator[E, Array[E]]
544
+ | () { (E value) -> boolish } -> Array[E]
545
+
546
+ # <!-- rdoc-file=struct.c -->
547
+ # With a block given, returns an array of values from `self` for which the block
548
+ # returns a truthy value:
549
+ #
550
+ # Customer = Struct.new(:name, :address, :zip)
551
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
552
+ # a = joe.select {|value| value.is_a?(String) }
553
+ # a # => ["Joe Smith", "123 Maple, Anytown NC"]
554
+ # a = joe.select {|value| value.is_a?(Integer) }
555
+ # a # => [12345]
556
+ #
557
+ # With no block given, returns an Enumerator.
558
+ #
559
+ alias filter select
560
+
561
+ # <!--
562
+ # rdoc-file=struct.c
563
+ # - values_at(*integers) -> array
564
+ # - values_at(integer_range) -> array
565
+ # -->
566
+ # Returns an array of values from `self`.
567
+ #
568
+ # With integer arguments `integers` given, returns an array containing each
569
+ # value given by one of `integers`:
570
+ #
571
+ # Customer = Struct.new(:name, :address, :zip)
572
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
573
+ # joe.values_at(0, 2) # => ["Joe Smith", 12345]
574
+ # joe.values_at(2, 0) # => [12345, "Joe Smith"]
575
+ # joe.values_at(2, 1, 0) # => [12345, "123 Maple, Anytown NC", "Joe Smith"]
576
+ # joe.values_at(0, -3) # => ["Joe Smith", "Joe Smith"]
577
+ #
578
+ # Raises IndexError if any of `integers` is out of range; see
579
+ # Array@Array+Indexes.
580
+ #
581
+ # With integer range argument `integer_range` given, returns an array containing
582
+ # each value given by the elements of the range; fills with `nil` values for
583
+ # range elements larger than the structure:
584
+ #
585
+ # joe.values_at(0..2)
586
+ # # => ["Joe Smith", "123 Maple, Anytown NC", 12345]
587
+ # joe.values_at(-3..-1)
588
+ # # => ["Joe Smith", "123 Maple, Anytown NC", 12345]
589
+ # joe.values_at(1..4) # => ["123 Maple, Anytown NC", 12345, nil, nil]
590
+ #
591
+ # Raises RangeError if any element of the range is negative and out of range;
592
+ # see Array@Array+Indexes.
593
+ #
594
+ def values_at: (*int | range[int?] positions) -> Array[E]
595
+
596
+ # <!--
597
+ # rdoc-file=struct.c
598
+ # - members -> array_of_symbols
599
+ # -->
600
+ # Returns the member names from `self` as an array:
601
+ #
602
+ # Customer = Struct.new(:name, :address, :zip)
603
+ # Customer.new.members # => [:name, :address, :zip]
604
+ #
605
+ # Related: #to_a.
606
+ #
607
+ def members: () -> Array[Symbol]
608
+
609
+ # <!--
610
+ # rdoc-file=struct.c
611
+ # - dig(name, *identifiers) -> object
612
+ # - dig(n, *identifiers) -> object
613
+ # -->
614
+ # Finds and returns an object among nested objects. The nested objects may be
615
+ # instances of various classes. See [Dig Methods](rdoc-ref:dig_methods.rdoc).
616
+ #
617
+ # Given symbol or string argument `name`, returns the object that is specified
618
+ # by `name` and `identifiers`:
619
+ #
620
+ # Foo = Struct.new(:a)
621
+ # f = Foo.new(Foo.new({b: [1, 2, 3]}))
622
+ # f.dig(:a) # => #<struct Foo a={:b=>[1, 2, 3]}>
623
+ # f.dig(:a, :a) # => {:b=>[1, 2, 3]}
624
+ # f.dig(:a, :a, :b) # => [1, 2, 3]
625
+ # f.dig(:a, :a, :b, 0) # => 1
626
+ # f.dig(:b, 0) # => nil
627
+ #
628
+ # Given integer argument `n`, returns the object that is specified by `n` and
629
+ # `identifiers`:
630
+ #
631
+ # f.dig(0) # => #<struct Foo a={:b=>[1, 2, 3]}>
632
+ # f.dig(0, 0) # => {:b=>[1, 2, 3]}
633
+ # f.dig(0, 0, :b) # => [1, 2, 3]
634
+ # f.dig(0, 0, :b, 0) # => 1
635
+ # f.dig(:b, 0) # => nil
636
+ #
637
+ def dig: (index name_or_position) -> E
638
+ | (index name_or_position, untyped, *untyped) -> untyped
639
+
640
+ # <!-- rdoc-file=struct.c -->
641
+ # Returns the values in `self` as an array:
642
+ #
643
+ # Customer = Struct.new(:name, :address, :zip)
644
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
645
+ # joe.to_a # => ["Joe Smith", "123 Maple, Anytown NC", 12345]
646
+ #
647
+ # Related: #members.
648
+ #
649
+ alias deconstruct to_a
650
+
651
+ # <!--
652
+ # rdoc-file=struct.c
653
+ # - deconstruct_keys(array_of_names) -> hash
654
+ # -->
655
+ # Returns a hash of the name/value pairs for the given member names.
656
+ #
657
+ # Customer = Struct.new(:name, :address, :zip)
658
+ # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
659
+ # h = joe.deconstruct_keys([:zip, :address])
660
+ # h # => {:zip=>12345, :address=>"123 Maple, Anytown NC"}
661
+ #
662
+ # Returns all names and values if `array_of_names` is `nil`:
663
+ #
664
+ # h = joe.deconstruct_keys(nil)
665
+ # h # => {:name=>"Joseph Smith, Jr.", :address=>"123 Maple, Anytown NC", :zip=>12345}
666
+ #
667
+ def deconstruct_keys: (Array[index & Hash::_Key]? indices) -> Hash[index & Hash::_Key, E]
668
+ end