rbs 2.8.4 → 3.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (434) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +12 -4
  3. data/.github/workflows/comments.yml +11 -11
  4. data/.github/workflows/dependabot.yml +30 -0
  5. data/.github/workflows/ruby.yml +40 -49
  6. data/.github/workflows/typecheck.yml +36 -0
  7. data/.github/workflows/windows.yml +28 -0
  8. data/.gitignore +1 -0
  9. data/.rubocop.yml +42 -2
  10. data/CHANGELOG.md +845 -1
  11. data/README.md +64 -4
  12. data/Rakefile +198 -18
  13. data/Steepfile +11 -11
  14. data/config.yml +311 -0
  15. data/core/array.rbs +2189 -1914
  16. data/core/basic_object.rbs +59 -84
  17. data/core/binding.rbs +7 -69
  18. data/core/builtin.rbs +210 -11
  19. data/core/class.rbs +37 -0
  20. data/core/comparable.rbs +23 -25
  21. data/core/complex.rbs +449 -227
  22. data/core/constants.rbs +29 -21
  23. data/core/data.rbs +415 -0
  24. data/core/dir.rbs +698 -415
  25. data/core/encoding.rbs +468 -843
  26. data/core/enumerable.rbs +495 -455
  27. data/core/enumerator/product.rbs +92 -0
  28. data/core/enumerator.rbs +106 -9
  29. data/core/env.rbs +1 -1
  30. data/core/errno.rbs +506 -605
  31. data/core/errors.rbs +15 -17
  32. data/core/exception.rbs +361 -145
  33. data/core/false_class.rbs +39 -26
  34. data/core/fiber.rbs +121 -14
  35. data/core/file.rbs +1262 -320
  36. data/core/file_test.rbs +62 -45
  37. data/core/float.rbs +187 -208
  38. data/core/gc.rbs +446 -196
  39. data/core/global_variables.rbs +29 -29
  40. data/core/hash.rbs +242 -349
  41. data/core/integer.rbs +246 -308
  42. data/core/io/buffer.rbs +373 -122
  43. data/core/io/wait.rbs +29 -17
  44. data/core/io.rbs +1881 -1518
  45. data/core/kernel.rbs +2116 -1538
  46. data/core/marshal.rbs +24 -14
  47. data/core/match_data.rbs +413 -166
  48. data/core/math.rbs +531 -291
  49. data/core/method.rbs +101 -32
  50. data/core/module.rbs +228 -64
  51. data/core/nil_class.rbs +106 -47
  52. data/core/numeric.rbs +206 -292
  53. data/core/object.rbs +73 -1168
  54. data/core/object_space/weak_key_map.rbs +166 -0
  55. data/core/object_space.rbs +5 -3
  56. data/core/proc.rbs +280 -39
  57. data/core/process.rbs +1318 -658
  58. data/core/ractor.rbs +200 -134
  59. data/core/random.rbs +21 -4
  60. data/core/range.rbs +309 -153
  61. data/core/rational.rbs +4 -12
  62. data/core/rb_config.rbs +64 -43
  63. data/core/rbs/unnamed/argf.rbs +411 -147
  64. data/core/rbs/unnamed/env_class.rbs +137 -253
  65. data/core/rbs/unnamed/random.rbs +49 -26
  66. data/core/refinement.rbs +16 -1
  67. data/core/regexp.rbs +1568 -862
  68. data/core/ruby_vm.rbs +719 -7
  69. data/core/rubygems/config_file.rbs +3 -0
  70. data/core/rubygems/errors.rbs +69 -6
  71. data/core/rubygems/rubygems.rbs +71 -17
  72. data/core/rubygems/version.rbs +11 -7
  73. data/{stdlib/set/0 → core}/set.rbs +80 -91
  74. data/core/signal.rbs +14 -8
  75. data/core/string.rbs +1732 -1607
  76. data/core/struct.rbs +467 -95
  77. data/core/symbol.rbs +215 -245
  78. data/core/thread.rbs +133 -89
  79. data/core/thread_group.rbs +9 -9
  80. data/core/time.rbs +1141 -841
  81. data/core/trace_point.rbs +181 -121
  82. data/core/true_class.rbs +58 -32
  83. data/core/unbound_method.rbs +103 -30
  84. data/core/warning.rbs +50 -5
  85. data/docs/CONTRIBUTING.md +1 -1
  86. data/docs/architecture.md +110 -0
  87. data/docs/collection.md +59 -5
  88. data/docs/data_and_struct.md +86 -0
  89. data/docs/gem.md +57 -0
  90. data/docs/rbs_by_example.md +16 -35
  91. data/docs/repo.md +1 -1
  92. data/docs/sigs.md +7 -7
  93. data/docs/stdlib.md +63 -5
  94. data/docs/syntax.md +255 -61
  95. data/docs/tools.md +1 -0
  96. data/ext/rbs_extension/extconf.rb +10 -0
  97. data/ext/rbs_extension/lexer.c +1741 -1548
  98. data/ext/rbs_extension/lexer.h +11 -1
  99. data/ext/rbs_extension/lexer.re +12 -6
  100. data/ext/rbs_extension/lexstate.c +26 -3
  101. data/ext/rbs_extension/location.c +119 -111
  102. data/ext/rbs_extension/location.h +32 -7
  103. data/ext/rbs_extension/main.c +3 -0
  104. data/ext/rbs_extension/parser.c +883 -481
  105. data/ext/rbs_extension/parserstate.c +65 -25
  106. data/ext/rbs_extension/parserstate.h +13 -3
  107. data/ext/rbs_extension/rbs_extension.h +1 -10
  108. data/ext/rbs_extension/unescape.c +7 -47
  109. data/goodcheck.yml +2 -2
  110. data/{ext/rbs_extension → include/rbs}/constants.h +26 -15
  111. data/include/rbs/ruby_objs.h +72 -0
  112. data/include/rbs.h +7 -0
  113. data/lib/rbs/annotate/annotations.rb +3 -3
  114. data/lib/rbs/annotate/formatter.rb +13 -3
  115. data/lib/rbs/annotate/rdoc_annotator.rb +1 -1
  116. data/lib/rbs/annotate/rdoc_source.rb +12 -3
  117. data/lib/rbs/ast/declarations.rb +85 -2
  118. data/lib/rbs/ast/directives.rb +39 -0
  119. data/lib/rbs/ast/members.rb +49 -15
  120. data/lib/rbs/ast/type_param.rb +104 -15
  121. data/lib/rbs/ast/visitor.rb +137 -0
  122. data/lib/rbs/buffer.rb +5 -0
  123. data/lib/rbs/cli/colored_io.rb +48 -0
  124. data/lib/rbs/cli/diff.rb +83 -0
  125. data/lib/rbs/cli/validate.rb +356 -0
  126. data/lib/rbs/cli.rb +253 -143
  127. data/lib/rbs/collection/cleaner.rb +8 -1
  128. data/lib/rbs/collection/config/lockfile.rb +92 -0
  129. data/lib/rbs/collection/config/lockfile_generator.rb +154 -65
  130. data/lib/rbs/collection/config.rb +19 -46
  131. data/lib/rbs/collection/installer.rb +12 -13
  132. data/lib/rbs/collection/sources/base.rb +2 -2
  133. data/lib/rbs/collection/sources/git.rb +146 -69
  134. data/lib/rbs/collection/sources/local.rb +81 -0
  135. data/lib/rbs/collection/sources/rubygems.rb +10 -12
  136. data/lib/rbs/collection/sources/stdlib.rb +14 -13
  137. data/lib/rbs/collection/sources.rb +15 -2
  138. data/lib/rbs/collection.rb +2 -1
  139. data/lib/rbs/definition.rb +13 -16
  140. data/lib/rbs/definition_builder/ancestor_builder.rb +100 -24
  141. data/lib/rbs/definition_builder/method_builder.rb +4 -4
  142. data/lib/rbs/definition_builder.rb +489 -584
  143. data/lib/rbs/diff.rb +125 -0
  144. data/lib/rbs/environment/use_map.rb +77 -0
  145. data/lib/rbs/environment.rb +406 -105
  146. data/lib/rbs/environment_loader.rb +48 -44
  147. data/lib/rbs/environment_walker.rb +1 -1
  148. data/lib/rbs/errors.rb +175 -56
  149. data/lib/rbs/file_finder.rb +28 -0
  150. data/lib/rbs/location_aux.rb +8 -7
  151. data/lib/rbs/locator.rb +37 -15
  152. data/lib/rbs/method_type.rb +23 -0
  153. data/lib/rbs/namespace.rb +1 -0
  154. data/lib/rbs/parser/lex_result.rb +15 -0
  155. data/lib/rbs/parser/token.rb +23 -0
  156. data/lib/rbs/parser_aux.rb +22 -13
  157. data/lib/rbs/prototype/helpers.rb +48 -22
  158. data/lib/rbs/prototype/node_usage.rb +99 -0
  159. data/lib/rbs/prototype/rb.rb +125 -31
  160. data/lib/rbs/prototype/rbi.rb +49 -36
  161. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  162. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  163. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  164. data/lib/rbs/prototype/runtime.rb +273 -159
  165. data/lib/rbs/resolver/constant_resolver.rb +24 -8
  166. data/lib/rbs/resolver/type_name_resolver.rb +41 -7
  167. data/lib/rbs/sorter.rb +153 -123
  168. data/lib/rbs/substitution.rb +19 -0
  169. data/lib/rbs/subtractor.rb +201 -0
  170. data/lib/rbs/test/errors.rb +24 -11
  171. data/lib/rbs/test/guaranteed.rb +30 -0
  172. data/lib/rbs/test/hook.rb +45 -40
  173. data/lib/rbs/test/setup.rb +1 -1
  174. data/lib/rbs/test/tester.rb +1 -1
  175. data/lib/rbs/test/type_check.rb +120 -23
  176. data/lib/rbs/test.rb +6 -3
  177. data/lib/rbs/type_alias_dependency.rb +13 -3
  178. data/lib/rbs/type_alias_regularity.rb +21 -14
  179. data/lib/rbs/type_name.rb +18 -13
  180. data/lib/rbs/types.rb +352 -18
  181. data/lib/rbs/unit_test/convertibles.rb +176 -0
  182. data/lib/rbs/unit_test/spy.rb +136 -0
  183. data/lib/rbs/unit_test/type_assertions.rb +341 -0
  184. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  185. data/lib/rbs/unit_test.rb +6 -0
  186. data/lib/rbs/validator.rb +55 -30
  187. data/lib/rbs/variance_calculator.rb +26 -23
  188. data/lib/rbs/vendorer.rb +3 -3
  189. data/lib/rbs/version.rb +1 -1
  190. data/lib/rbs/writer.rb +69 -22
  191. data/lib/rbs.rb +7 -2
  192. data/lib/rdoc/discover.rb +1 -1
  193. data/lib/rdoc_plugin/parser.rb +5 -5
  194. data/rbs.gemspec +12 -2
  195. data/schema/decls.json +1 -1
  196. data/schema/members.json +15 -10
  197. data/sig/ancestor_builder.rbs +4 -0
  198. data/sig/ancestor_graph.rbs +22 -2
  199. data/sig/annotate/formatter.rbs +2 -2
  200. data/sig/annotate/rdoc_annotater.rbs +1 -1
  201. data/sig/cli/colored_io.rbs +15 -0
  202. data/sig/cli/diff.rbs +21 -0
  203. data/sig/cli/validate.rbs +43 -0
  204. data/sig/cli.rbs +4 -0
  205. data/sig/collection/config/lockfile.rbs +74 -0
  206. data/sig/collection/config/lockfile_generator.rbs +66 -0
  207. data/sig/collection/config.rbs +5 -48
  208. data/sig/collection/installer.rbs +1 -1
  209. data/sig/collection/sources.rbs +105 -33
  210. data/sig/constant.rbs +1 -1
  211. data/sig/declarations.rbs +42 -3
  212. data/sig/definition.rbs +26 -10
  213. data/sig/definition_builder.rbs +103 -81
  214. data/sig/diff.rbs +28 -0
  215. data/sig/directives.rbs +61 -0
  216. data/sig/environment.rbs +175 -29
  217. data/sig/environment_loader.rbs +20 -18
  218. data/sig/errors.rbs +123 -2
  219. data/sig/file_finder.rbs +28 -0
  220. data/sig/location.rbs +0 -3
  221. data/sig/locator.rbs +14 -2
  222. data/sig/manifest.yaml +0 -1
  223. data/sig/members.rbs +32 -9
  224. data/sig/method_types.rbs +10 -4
  225. data/sig/namespace.rbs +2 -3
  226. data/sig/parser.rbs +55 -16
  227. data/sig/prototype/helpers.rbs +4 -0
  228. data/sig/prototype/node_usage.rbs +20 -0
  229. data/sig/prototype/rb.rbs +10 -2
  230. data/sig/prototype/rbi.rbs +2 -0
  231. data/sig/prototype/runtime.rbs +182 -0
  232. data/sig/rbs.rbs +1 -1
  233. data/sig/rdoc/rbs.rbs +4 -0
  234. data/sig/repository.rbs +7 -5
  235. data/sig/resolver/constant_resolver.rbs +3 -4
  236. data/sig/resolver/context.rbs +1 -1
  237. data/sig/resolver/type_name_resolver.rbs +5 -1
  238. data/sig/shims/bundler.rbs +38 -0
  239. data/sig/shims/rubygems.rbs +19 -0
  240. data/sig/sorter.rbs +23 -5
  241. data/sig/substitution.rbs +6 -0
  242. data/sig/subtractor.rbs +37 -0
  243. data/sig/test/errors.rbs +52 -0
  244. data/sig/test/guranteed.rbs +9 -0
  245. data/sig/test/type_check.rbs +19 -0
  246. data/sig/test.rbs +82 -0
  247. data/sig/type_alias_dependency.rbs +31 -0
  248. data/sig/type_alias_regularity.rbs +12 -6
  249. data/sig/type_param.rbs +45 -9
  250. data/sig/typename.rbs +8 -5
  251. data/sig/types.rbs +119 -12
  252. data/sig/unit_test/convertibles.rbs +154 -0
  253. data/sig/unit_test/spy.rbs +28 -0
  254. data/sig/unit_test/type_assertions.rbs +194 -0
  255. data/sig/unit_test/with_aliases.rbs +136 -0
  256. data/sig/use_map.rbs +35 -0
  257. data/sig/validator.rbs +12 -5
  258. data/sig/variance_calculator.rbs +3 -1
  259. data/sig/vendorer.rbs +1 -1
  260. data/sig/visitor.rbs +47 -0
  261. data/sig/writer.rbs +6 -2
  262. data/src/constants.c +153 -0
  263. data/src/ruby_objs.c +793 -0
  264. data/stdlib/base64/0/base64.rbs +298 -45
  265. data/stdlib/benchmark/0/benchmark.rbs +12 -3
  266. data/stdlib/bigdecimal/0/big_decimal.rbs +62 -198
  267. data/stdlib/cgi/0/core.rbs +68 -15
  268. data/stdlib/cgi/0/manifest.yaml +1 -0
  269. data/stdlib/coverage/0/coverage.rbs +50 -11
  270. data/stdlib/csv/0/csv.rbs +90 -119
  271. data/stdlib/csv/0/manifest.yaml +1 -0
  272. data/stdlib/date/0/date.rbs +806 -735
  273. data/stdlib/date/0/date_time.rbs +70 -211
  274. data/stdlib/dbm/0/dbm.rbs +0 -2
  275. data/stdlib/delegate/0/delegator.rbs +184 -0
  276. data/stdlib/delegate/0/kernel.rbs +47 -0
  277. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  278. data/stdlib/did_you_mean/0/did_you_mean.rbs +3 -8
  279. data/stdlib/digest/0/digest.rbs +48 -35
  280. data/stdlib/erb/0/erb.rbs +15 -39
  281. data/stdlib/etc/0/etc.rbs +174 -54
  282. data/stdlib/fileutils/0/fileutils.rbs +1234 -385
  283. data/stdlib/forwardable/0/forwardable.rbs +4 -4
  284. data/stdlib/io-console/0/io-console.rbs +82 -17
  285. data/stdlib/ipaddr/0/ipaddr.rbs +11 -6
  286. data/stdlib/json/0/json.rbs +434 -151
  287. data/stdlib/kconv/0/kconv.rbs +166 -0
  288. data/stdlib/logger/0/formatter.rbs +0 -2
  289. data/stdlib/logger/0/log_device.rbs +1 -3
  290. data/stdlib/logger/0/logger.rbs +465 -328
  291. data/stdlib/minitest/0/kernel.rbs +2 -2
  292. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
  293. data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
  294. data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
  295. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
  296. data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
  297. data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
  298. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  299. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  300. data/stdlib/minitest/0/minitest/mock.rbs +9 -5
  301. data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
  302. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
  303. data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
  304. data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
  305. data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
  306. data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
  307. data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
  308. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
  309. data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
  310. data/stdlib/minitest/0/minitest/spec.rbs +1 -1
  311. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
  312. data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
  313. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +7 -7
  314. data/stdlib/minitest/0/minitest/test.rbs +7 -14
  315. data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
  316. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  317. data/stdlib/minitest/0/minitest/unit.rbs +1 -2
  318. data/stdlib/minitest/0/minitest.rbs +41 -892
  319. data/stdlib/monitor/0/monitor.rbs +91 -10
  320. data/stdlib/mutex_m/0/mutex_m.rbs +0 -2
  321. data/stdlib/net-http/0/manifest.yaml +1 -1
  322. data/stdlib/net-http/0/net-http.rbs +3858 -964
  323. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  324. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  325. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  326. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  327. data/stdlib/nkf/0/nkf.rbs +35 -5
  328. data/stdlib/objspace/0/objspace.rbs +40 -18
  329. data/stdlib/observable/0/observable.rbs +217 -0
  330. data/stdlib/open-uri/0/manifest.yaml +4 -0
  331. data/stdlib/open-uri/0/open-uri.rbs +393 -0
  332. data/stdlib/open3/0/open3.rbs +147 -0
  333. data/stdlib/openssl/0/manifest.yaml +1 -0
  334. data/stdlib/openssl/0/openssl.rbs +681 -316
  335. data/stdlib/optparse/0/optparse.rbs +100 -65
  336. data/stdlib/pathname/0/pathname.rbs +24 -15
  337. data/stdlib/pp/0/manifest.yaml +2 -0
  338. data/stdlib/pp/0/pp.rbs +300 -0
  339. data/stdlib/prettyprint/0/prettyprint.rbs +2 -6
  340. data/stdlib/pstore/0/pstore.rbs +370 -156
  341. data/stdlib/psych/0/core_ext.rbs +12 -0
  342. data/stdlib/{yaml → psych}/0/dbm.rbs +3 -3
  343. data/stdlib/psych/0/manifest.yaml +3 -0
  344. data/stdlib/psych/0/psych.rbs +402 -0
  345. data/stdlib/{yaml → psych}/0/store.rbs +2 -2
  346. data/stdlib/pty/0/pty.rbs +63 -11
  347. data/stdlib/rdoc/0/code_object.rbs +51 -0
  348. data/stdlib/rdoc/0/comment.rbs +59 -0
  349. data/stdlib/rdoc/0/context.rbs +153 -0
  350. data/stdlib/rdoc/0/markup.rbs +117 -0
  351. data/stdlib/rdoc/0/parser.rbs +56 -0
  352. data/stdlib/rdoc/0/rdoc.rbs +13 -380
  353. data/stdlib/rdoc/0/ri.rbs +17 -0
  354. data/stdlib/rdoc/0/store.rbs +48 -0
  355. data/stdlib/rdoc/0/top_level.rbs +97 -0
  356. data/stdlib/resolv/0/resolv.rbs +16 -79
  357. data/stdlib/ripper/0/ripper.rbs +1648 -0
  358. data/stdlib/securerandom/0/securerandom.rbs +7 -2
  359. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  360. data/stdlib/singleton/0/singleton.rbs +0 -3
  361. data/stdlib/socket/0/addrinfo.rbs +13 -18
  362. data/stdlib/socket/0/basic_socket.rbs +5 -10
  363. data/stdlib/socket/0/ip_socket.rbs +0 -2
  364. data/stdlib/socket/0/socket.rbs +77 -46
  365. data/stdlib/socket/0/tcp_server.rbs +0 -5
  366. data/stdlib/socket/0/tcp_socket.rbs +36 -3
  367. data/stdlib/socket/0/udp_socket.rbs +4 -5
  368. data/stdlib/socket/0/unix_server.rbs +0 -5
  369. data/stdlib/socket/0/unix_socket.rbs +2 -4
  370. data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +188 -107
  371. data/stdlib/strscan/0/string_scanner.rbs +1269 -425
  372. data/stdlib/tempfile/0/tempfile.rbs +224 -61
  373. data/stdlib/time/0/time.rbs +48 -35
  374. data/stdlib/timeout/0/timeout.rbs +17 -8
  375. data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
  376. data/stdlib/tsort/0/tsort.rbs +0 -4
  377. data/stdlib/uri/0/common.rbs +271 -144
  378. data/stdlib/uri/0/file.rbs +5 -0
  379. data/stdlib/uri/0/ftp.rbs +1 -1
  380. data/stdlib/uri/0/generic.rbs +26 -22
  381. data/stdlib/uri/0/http.rbs +4 -4
  382. data/stdlib/uri/0/ldap.rbs +1 -1
  383. data/stdlib/uri/0/mailto.rbs +84 -0
  384. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  385. data/stdlib/yaml/0/manifest.yaml +1 -2
  386. data/stdlib/yaml/0/yaml.rbs +1 -199
  387. data/stdlib/zlib/0/buf_error.rbs +10 -0
  388. data/stdlib/zlib/0/data_error.rbs +10 -0
  389. data/stdlib/zlib/0/deflate.rbs +210 -0
  390. data/stdlib/zlib/0/error.rbs +20 -0
  391. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  392. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  393. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  394. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  395. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  396. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  397. data/stdlib/zlib/0/gzip_writer.rbs +166 -0
  398. data/stdlib/zlib/0/inflate.rbs +180 -0
  399. data/stdlib/zlib/0/mem_error.rbs +10 -0
  400. data/stdlib/zlib/0/need_dict.rbs +13 -0
  401. data/stdlib/zlib/0/stream_end.rbs +11 -0
  402. data/stdlib/zlib/0/stream_error.rbs +11 -0
  403. data/stdlib/zlib/0/version_error.rbs +11 -0
  404. data/stdlib/zlib/0/zlib.rbs +1 -3
  405. data/stdlib/zlib/0/zstream.rbs +200 -0
  406. data/templates/include/rbs/constants.h.erb +20 -0
  407. data/templates/include/rbs/ruby_objs.h.erb +10 -0
  408. data/templates/src/constants.c.erb +36 -0
  409. data/templates/src/ruby_objs.c.erb +27 -0
  410. data/templates/template.rb +122 -0
  411. metadata +136 -36
  412. data/Gemfile +0 -33
  413. data/Gemfile.lock +0 -118
  414. data/core/deprecated.rbs +0 -9
  415. data/ext/rbs_extension/constants.c +0 -135
  416. data/ext/rbs_extension/ruby_objs.c +0 -525
  417. data/ext/rbs_extension/ruby_objs.h +0 -43
  418. data/lib/rbs/constant_table.rb +0 -167
  419. data/lib/rbs/parser_compat/lexer_error.rb +0 -6
  420. data/lib/rbs/parser_compat/located_value.rb +0 -7
  421. data/lib/rbs/parser_compat/semantics_error.rb +0 -6
  422. data/lib/rbs/parser_compat/syntax_error.rb +0 -6
  423. data/lib/rbs/test/spy.rb +0 -6
  424. data/lib/rbs/type_name_resolver.rb +0 -67
  425. data/sig/constant_table.rbs +0 -30
  426. data/sig/shims/abstract_syntax_tree.rbs +0 -25
  427. data/sig/shims/pp.rbs +0 -3
  428. data/sig/shims/ripper.rbs +0 -8
  429. data/sig/shims.rbs +0 -69
  430. data/sig/type_name_resolver.rbs +0 -26
  431. data/stdlib/minitest/0/manifest.yaml +0 -2
  432. data/stdlib/prime/0/integer-extension.rbs +0 -41
  433. data/stdlib/prime/0/manifest.yaml +0 -2
  434. data/stdlib/prime/0/prime.rbs +0 -372
@@ -27,7 +27,6 @@ class TCPSocket < IPSocket
27
27
  # cannot be released since gethostbyname() is not thread safe.)
28
28
  # * This method uses gethostbyname() function already removed from POSIX.
29
29
  #
30
- #
31
30
  # This method lookups host information by *hostname*.
32
31
  #
33
32
  # TCPSocket.gethostbyname("localhost")
@@ -38,9 +37,43 @@ class TCPSocket < IPSocket
38
37
  private
39
38
 
40
39
  # <!--
41
- # rdoc-file=lib/resolv-replace.rb
42
- # - new(host, serv, *rest)
40
+ # rdoc-file=ext/socket/tcpsocket.c
41
+ # - TCPSocket.new(remote_host, remote_port, local_host=nil, local_port=nil, resolv_timeout: nil, connect_timeout: nil, fast_fallback: true)
43
42
  # -->
43
+ # Opens a TCP connection to `remote_host` on `remote_port`. If `local_host` and
44
+ # `local_port` are specified, then those parameters are used on the local end to
45
+ # establish the connection.
46
+ #
47
+ # Starting from Ruby 3.4, this method operates according to the Happy Eyeballs
48
+ # Version 2 ([RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305))
49
+ # algorithm by default, except on Windows.
50
+ #
51
+ # For details on Happy Eyeballs Version 2, see
52
+ # [Socket.tcp_fast_fallback=](rdoc-ref:Socket.tcp_fast_fallback=).
53
+ #
54
+ # To make it behave the same as in Ruby 3.3 and earlier, explicitly specify the
55
+ # option fast_fallback:false. Or, setting Socket.tcp_fast_fallback=false will
56
+ # disable Happy Eyeballs Version 2 not only for this method but for all Socket
57
+ # globally.
58
+ #
59
+ # When using TCPSocket.new on Windows, Happy Eyeballs Version 2 is not provided,
60
+ # and it behaves the same as in Ruby 3.3 and earlier.
61
+ #
62
+ # :resolv_timeout
63
+ # : Specifies the timeout in seconds from when the hostname resolution starts.
64
+ #
65
+ # :connect_timeout
66
+ # : This method sequentially attempts connecting to all candidate destination
67
+ # addresses.
68
+ # The `connect_timeout` specifies the timeout in seconds from the start of
69
+ # the connection attempt to the last candidate.
70
+ # By default, all connection attempts continue until the timeout occurs.
71
+ # When `fast_fallback:false` is explicitly specified,
72
+ # a timeout is set for each connection attempt and any connection attempt
73
+ # that exceeds its timeout will be canceled.
74
+ #
75
+ # :fast_fallback
76
+ # : Enables the Happy Eyeballs Version 2 algorithm (enabled by default).
44
77
  #
45
78
  def initialize: (String remote_host, Integer remote_port, ?String local_host, ?Integer local_port) -> untyped
46
79
  end
@@ -2,8 +2,6 @@
2
2
  # UDPSocket represents a UDP/IP socket.
3
3
  #
4
4
  class UDPSocket < IPSocket
5
- public
6
-
7
5
  # <!--
8
6
  # rdoc-file=ext/socket/udpsocket.c
9
7
  # - udpsocket.bind(host, port) #=> 0
@@ -44,8 +42,10 @@ class UDPSocket < IPSocket
44
42
  # received. The second element, *sender_inet_addr*, is an array to represent the
45
43
  # sender address.
46
44
  #
47
- # When recvfrom(2) returns 0, Socket#recvfrom_nonblock returns an empty string
48
- # as data. It means an empty packet.
45
+ # When recvfrom(2) returns 0, Socket#recv_nonblock returns nil. In most cases it
46
+ # means the connection was closed, but it may also mean an empty packet was
47
+ # received, as the underlying API makes it impossible to distinguish these two
48
+ # cases.
49
49
  #
50
50
  # ### Parameters
51
51
  # * `maxlen` - the number of bytes to receive from the socket
@@ -53,7 +53,6 @@ class UDPSocket < IPSocket
53
53
  # * `outbuf` - destination String buffer
54
54
  # * `options` - keyword hash, supporting `exception: false`
55
55
  #
56
- #
57
56
  # ### Example
58
57
  # require 'socket'
59
58
  # s1 = UDPSocket.new
@@ -2,8 +2,6 @@
2
2
  # UNIXServer represents a UNIX domain stream server socket.
3
3
  #
4
4
  class UNIXServer < UNIXSocket
5
- public
6
-
7
5
  # <!--
8
6
  # rdoc-file=ext/socket/unixserver.c
9
7
  # - unixserver.accept => unixsocket
@@ -71,7 +69,6 @@ class UNIXServer < UNIXSocket
71
69
  # ### Parameter
72
70
  # * `backlog` - the maximum length of the queue for pending connections.
73
71
  #
74
- #
75
72
  # ### Example 1
76
73
  # require 'socket'
77
74
  # include Socket::Constants
@@ -108,7 +105,6 @@ class UNIXServer < UNIXSocket
108
105
  # * Errno::ENOBUFS - insufficient resources are available in the system to
109
106
  # complete the call
110
107
  #
111
- #
112
108
  # ### Windows Exceptions
113
109
  # On Windows systems the following system exceptions may be raised if the call
114
110
  # to *listen* fails:
@@ -128,7 +124,6 @@ class UNIXServer < UNIXSocket
128
124
  # * Errno::EOPNOTSUPP - the referenced `socket` is not a type that supports
129
125
  # the *listen* method
130
126
  #
131
- #
132
127
  # ### See
133
128
  # * listen manual pages on unix-based systems
134
129
  # * listen function in Microsoft's Winsock functions reference
@@ -9,7 +9,7 @@ class UNIXSocket < BasicSocket
9
9
  # -->
10
10
  # Creates a pair of sockets connected to each other.
11
11
  #
12
- # *socktype* should be a socket type such as: :STREAM, :DGRAM, :RAW, etc.
12
+ # *type* should be a socket type such as: :STREAM, :DGRAM, :RAW, etc.
13
13
  #
14
14
  # *protocol* should be a protocol defined in the domain. 0 is default protocol
15
15
  # for the domain.
@@ -28,7 +28,7 @@ class UNIXSocket < BasicSocket
28
28
  # -->
29
29
  # Creates a pair of sockets connected to each other.
30
30
  #
31
- # *socktype* should be a socket type such as: :STREAM, :DGRAM, :RAW, etc.
31
+ # *type* should be a socket type such as: :STREAM, :DGRAM, :RAW, etc.
32
32
  #
33
33
  # *protocol* should be a protocol defined in the domain. 0 is default protocol
34
34
  # for the domain.
@@ -40,8 +40,6 @@ class UNIXSocket < BasicSocket
40
40
  #
41
41
  def self.socketpair: (?Symbol socktype, ?Integer protocol) -> [ instance, instance ]
42
42
 
43
- public
44
-
45
43
  # <!--
46
44
  # rdoc-file=ext/socket/unixsocket.c
47
45
  # - unixsocket.addr => [address_family, unix_path]
@@ -1,39 +1,52 @@
1
1
  # <!-- rdoc-file=ext/stringio/stringio.c -->
2
- # Pseudo I/O on String object, with interface corresponding to IO.
2
+ # IO streams for strings, with access similar to [IO](rdoc-ref:IO); see
3
+ # [IO](rdoc-ref:IO).
3
4
  #
4
- # Commonly used to simulate `$stdio` or `$stderr`
5
+ # ### About the Examples
5
6
  #
6
- # ### Examples
7
+ # Examples on this page assume that StringIO has been required:
7
8
  #
8
9
  # require 'stringio'
9
10
  #
10
- # # Writing stream emulation
11
- # io = StringIO.new
12
- # io.puts "Hello World"
13
- # io.string #=> "Hello World\n"
14
- #
15
- # # Reading stream emulation
16
- # io = StringIO.new "first\nsecond\nlast\n"
17
- # io.getc #=> "f"
18
- # io.gets #=> "irst\n"
19
- # io.read #=> "second\nlast\n"
20
- #
21
11
  class StringIO
22
12
  # <!--
23
13
  # rdoc-file=ext/stringio/stringio.c
24
- # - StringIO.new(string=""[, mode])
14
+ # - StringIO.new(string = '', mode = 'r+') -> new_stringio
25
15
  # -->
26
- # Creates new StringIO instance from with *string* and *mode*.
16
+ # Note that `mode` defaults to `'r'` if `string` is frozen.
17
+ #
18
+ # Returns a new StringIO instance formed from `string` and `mode`; see [Access
19
+ # Modes](rdoc-ref:File@Access+Modes):
20
+ #
21
+ # strio = StringIO.new # => #<StringIO>
22
+ # strio.close
23
+ #
24
+ # The instance should be closed when no longer needed.
25
+ #
26
+ # Related: StringIO.open (accepts block; closes automatically).
27
27
  #
28
28
  def initialize: (?String string, ?String? mode) -> void
29
29
 
30
30
  # <!--
31
31
  # rdoc-file=ext/stringio/stringio.c
32
- # - StringIO.open(string=""[, mode]) {|strio| ...}
32
+ # - StringIO.open(string = '', mode = 'r+') {|strio| ... }
33
33
  # -->
34
- # Equivalent to StringIO.new except that when it is called with a block, it
35
- # yields with the new instance and closes it, and returns the result which
36
- # returned from the block.
34
+ # Note that `mode` defaults to `'r'` if `string` is frozen.
35
+ #
36
+ # Creates a new StringIO instance formed from `string` and `mode`; see [Access
37
+ # Modes](rdoc-ref:File@Access+Modes).
38
+ #
39
+ # With no block, returns the new instance:
40
+ #
41
+ # strio = StringIO.open # => #<StringIO>
42
+ #
43
+ # With a block, calls the block with the new instance and returns the block's
44
+ # value; closes the instance on block exit.
45
+ #
46
+ # StringIO.open {|strio| p strio }
47
+ # # => #<StringIO>
48
+ #
49
+ # Related: StringIO.new.
37
50
  #
38
51
  def self.open: [U] (?String string, ?String? mode) { (StringIO arg) -> U } -> U
39
52
 
@@ -41,116 +54,130 @@ class StringIO
41
54
 
42
55
  # <!--
43
56
  # rdoc-file=ext/stringio/stringio.c
44
- # - strio.binmode -> stringio
57
+ # - binmode -> self
45
58
  # -->
46
- # Puts stream into binary mode. See IO#binmode.
59
+ # Sets the data mode in `self` to binary mode; see [Data
60
+ # Mode](rdoc-ref:File@Data+Mode).
47
61
  #
48
62
  def binmode: () -> self
49
63
 
50
64
  # <!--
51
65
  # rdoc-file=ext/stringio/stringio.c
52
- # - strio.close -> nil
66
+ # - close -> nil
53
67
  # -->
54
- # Closes a StringIO. The stream is unavailable for any further data operations;
55
- # an `IOError` is raised if such an attempt is made.
68
+ # Closes `self` for both reading and writing.
69
+ #
70
+ # Raises IOError if reading or writing is attempted.
71
+ #
72
+ # Related: StringIO#close_read, StringIO#close_write.
56
73
  #
57
74
  def close: () -> nil
58
75
 
59
76
  # <!--
60
77
  # rdoc-file=ext/stringio/stringio.c
61
- # - strio.close_read -> nil
78
+ # - close_read -> nil
62
79
  # -->
63
- # Closes the read end of a StringIO. Will raise an `IOError` if the receiver is
64
- # not readable.
80
+ # Closes `self` for reading; closed-write setting remains unchanged.
81
+ #
82
+ # Raises IOError if reading is attempted.
83
+ #
84
+ # Related: StringIO#close, StringIO#close_write.
65
85
  #
66
86
  def close_read: () -> nil
67
87
 
68
88
  # <!--
69
89
  # rdoc-file=ext/stringio/stringio.c
70
- # - strio.close_write -> nil
90
+ # - close_write -> nil
71
91
  # -->
72
- # Closes the write end of a StringIO. Will raise an `IOError` if the receiver
73
- # is not writeable.
92
+ # Closes `self` for writing; closed-read setting remains unchanged.
93
+ #
94
+ # Raises IOError if writing is attempted.
95
+ #
96
+ # Related: StringIO#close, StringIO#close_read.
74
97
  #
75
98
  def close_write: () -> nil
76
99
 
77
100
  # <!--
78
101
  # rdoc-file=ext/stringio/stringio.c
79
- # - strio.closed? -> true or false
102
+ # - closed? -> true or false
80
103
  # -->
81
- # Returns `true` if the stream is completely closed, `false` otherwise.
104
+ # Returns `true` if `self` is closed for both reading and writing, `false`
105
+ # otherwise.
82
106
  #
83
107
  def closed?: () -> bool
84
108
 
85
109
  # <!--
86
110
  # rdoc-file=ext/stringio/stringio.c
87
- # - strio.closed_read? -> true or false
111
+ # - closed_read? -> true or false
88
112
  # -->
89
- # Returns `true` if the stream is not readable, `false` otherwise.
113
+ # Returns `true` if `self` is closed for reading, `false` otherwise.
90
114
  #
91
115
  def closed_read?: () -> bool
92
116
 
93
117
  # <!--
94
118
  # rdoc-file=ext/stringio/stringio.c
95
- # - strio.closed_write? -> true or false
119
+ # - closed_write? -> true or false
96
120
  # -->
97
- # Returns `true` if the stream is not writable, `false` otherwise.
121
+ # Returns `true` if `self` is closed for writing, `false` otherwise.
98
122
  #
99
123
  def closed_write?: () -> bool
100
124
 
101
125
  # <!--
102
126
  # rdoc-file=ext/stringio/stringio.c
103
- # - strio.each(sep=$/, chomp: false) {|line| block } -> strio
104
- # - strio.each(limit, chomp: false) {|line| block } -> strio
105
- # - strio.each(sep, limit, chomp: false) {|line| block } -> strio
106
- # - strio.each(...) -> anEnumerator
107
- # - strio.each_line(sep=$/, chomp: false) {|line| block } -> strio
108
- # - strio.each_line(limit, chomp: false) {|line| block } -> strio
109
- # - strio.each_line(sep, limit, chomp: false) {|line| block } -> strio
110
- # - strio.each_line(...) -> anEnumerator
127
+ # - each_line(sep = $/, chomp: false) {|line| ... } -> self
128
+ # - each_line(limit, chomp: false) {|line| ... } -> self
129
+ # - each_line(sep, limit, chomp: false) {|line| ... } -> self
111
130
  # -->
112
- # See IO#each.
131
+ # Calls the block with each remaining line read from the stream; does nothing if
132
+ # already at end-of-file; returns `self`. See [Line IO](rdoc-ref:IO@Line+IO).
113
133
  #
114
134
  def each: (?String sep, ?Integer limit, ?chomp: boolish) { (String) -> untyped } -> self
115
135
  | (?String sep, ?Integer limit, ?chomp: boolish) -> ::Enumerator[String, self]
116
136
 
117
137
  # <!--
118
138
  # rdoc-file=ext/stringio/stringio.c
119
- # - strio.each_byte {|byte| block } -> strio
120
- # - strio.each_byte -> anEnumerator
139
+ # - each_byte {|byte| ... } -> self
121
140
  # -->
122
- # See IO#each_byte.
141
+ # With a block given, calls the block with each remaining byte in the stream;
142
+ # see [Byte IO](rdoc-ref:IO@Byte+IO).
143
+ #
144
+ # With no block given, returns an enumerator.
123
145
  #
124
146
  def each_byte: () { (Integer arg0) -> untyped } -> self
125
147
  | () -> ::Enumerator[Integer, self]
126
148
 
127
149
  # <!--
128
150
  # rdoc-file=ext/stringio/stringio.c
129
- # - strio.each_char {|char| block } -> strio
130
- # - strio.each_char -> anEnumerator
151
+ # - each_char {|c| ... } -> self
131
152
  # -->
132
- # See IO#each_char.
153
+ # With a block given, calls the block with each remaining character in the
154
+ # stream; see [Character IO](rdoc-ref:IO@Character+IO).
155
+ #
156
+ # With no block given, returns an enumerator.
133
157
  #
134
158
  def each_char: () { (String arg0) -> untyped } -> self
135
159
  | () -> ::Enumerator[String, self]
136
160
 
137
161
  # <!--
138
162
  # rdoc-file=ext/stringio/stringio.c
139
- # - strio.each_codepoint {|c| block } -> strio
140
- # - strio.each_codepoint -> anEnumerator
163
+ # - each_codepoint {|codepoint| ... } -> self
141
164
  # -->
142
- # See IO#each_codepoint.
165
+ # With a block given, calls the block with each remaining codepoint in the
166
+ # stream; see [Codepoint IO](rdoc-ref:IO@Codepoint+IO).
167
+ #
168
+ # With no block given, returns an enumerator.
143
169
  #
144
170
  def each_codepoint: () { (Integer arg0) -> untyped } -> self
145
171
  | () -> ::Enumerator[Integer, self]
146
172
 
147
173
  # <!--
148
174
  # rdoc-file=ext/stringio/stringio.c
149
- # - strio.eof -> true or false
150
- # - strio.eof? -> true or false
175
+ # - eof? -> true or false
151
176
  # -->
152
- # Returns true if the stream is at the end of the data (underlying string). The
153
- # stream must be opened for reading or an `IOError` will be raised.
177
+ # Returns `true` if positioned at end-of-stream, `false` otherwise; see
178
+ # [Position](rdoc-ref:IO@Position).
179
+ #
180
+ # Raises IOError if the stream is not opened for reading.
154
181
  #
155
182
  def eof: () -> bool
156
183
 
@@ -188,27 +215,30 @@ class StringIO
188
215
 
189
216
  # <!--
190
217
  # rdoc-file=ext/stringio/stringio.c
191
- # - strio.getbyte -> fixnum or nil
218
+ # - getbyte -> byte or nil
192
219
  # -->
193
- # See IO#getbyte.
220
+ # Reads and returns the next 8-bit byte from the stream; see [Byte
221
+ # IO](rdoc-ref:IO@Byte+IO).
194
222
  #
195
223
  def getbyte: () -> Integer?
196
224
 
197
225
  # <!--
198
226
  # rdoc-file=ext/stringio/stringio.c
199
- # - strio.getc -> string or nil
227
+ # - getc -> character or nil
200
228
  # -->
201
- # See IO#getc.
229
+ # Reads and returns the next character from the stream; see [Character
230
+ # IO](rdoc-ref:IO@Character+IO).
202
231
  #
203
232
  def getc: () -> String?
204
233
 
205
234
  # <!--
206
235
  # rdoc-file=ext/stringio/stringio.c
207
- # - strio.gets(sep=$/, chomp: false) -> string or nil
208
- # - strio.gets(limit, chomp: false) -> string or nil
209
- # - strio.gets(sep, limit, chomp: false) -> string or nil
236
+ # - gets(sep = $/, chomp: false) -> string or nil
237
+ # - gets(limit, chomp: false) -> string or nil
238
+ # - gets(sep, limit, chomp: false) -> string or nil
210
239
  # -->
211
- # See IO#gets.
240
+ # Reads and returns a line from the stream; assigns the return value to `$_`;
241
+ # see [Line IO](rdoc-ref:IO@Line+IO).
212
242
  #
213
243
  def gets: (?String sep, ?Integer limit, ?chomp: boolish) -> String?
214
244
 
@@ -240,21 +270,19 @@ class StringIO
240
270
 
241
271
  # <!--
242
272
  # rdoc-file=ext/stringio/stringio.c
243
- # - strio.lineno -> integer
273
+ # - lineno -> current_line_number
244
274
  # -->
245
- # Returns the current line number. The stream must be opened for reading.
246
- # `lineno` counts the number of times `gets` is called, rather than the number
247
- # of newlines encountered. The two values will differ if `gets` is called with
248
- # a separator other than newline. See also the `$.` variable.
275
+ # Returns the current line number in `self`; see [Line
276
+ # Number](rdoc-ref:IO@Line+Number).
249
277
  #
250
278
  def lineno: () -> Integer
251
279
 
252
280
  # <!--
253
281
  # rdoc-file=ext/stringio/stringio.c
254
- # - strio.lineno = integer -> integer
282
+ # - lineno = new_line_number -> new_line_number
255
283
  # -->
256
- # Manually sets the current line number to the given value. `$.` is updated only
257
- # on the next read.
284
+ # Sets the current line number in `self` to the given `new_line_number`; see
285
+ # [Line Number](rdoc-ref:IO@Line+Number).
258
286
  #
259
287
  def lineno=: (Integer arg0) -> Integer
260
288
 
@@ -268,18 +296,17 @@ class StringIO
268
296
 
269
297
  # <!--
270
298
  # rdoc-file=ext/stringio/stringio.c
271
- # - strio.pos -> integer
272
- # - strio.tell -> integer
299
+ # - pos -> stream_position
273
300
  # -->
274
- # Returns the current offset (in bytes).
301
+ # Returns the current position (in bytes); see [Position](rdoc-ref:IO@Position).
275
302
  #
276
303
  def pos: () -> Integer
277
304
 
278
305
  # <!--
279
306
  # rdoc-file=ext/stringio/stringio.c
280
- # - strio.pos = integer -> integer
307
+ # - pos = new_position -> new_position
281
308
  # -->
282
- # Seeks to the given position (in bytes).
309
+ # Sets the current position (in bytes); see [Position](rdoc-ref:IO@Position).
283
310
  #
284
311
  def pos=: (Integer arg0) -> Integer
285
312
 
@@ -327,29 +354,45 @@ class StringIO
327
354
 
328
355
  # <!--
329
356
  # rdoc-file=ext/stringio/stringio.c
330
- # - strio.reopen(other_StrIO) -> strio
331
- # - strio.reopen(string, mode) -> strio
357
+ # - reopen(other, mode = 'r+') -> self
332
358
  # -->
333
- # Reinitializes the stream with the given *other_StrIO* or *string* and *mode*
334
- # (see StringIO#new).
359
+ # Reinitializes the stream with the given `other` (string or StringIO) and
360
+ # `mode`; see IO.new:
361
+ #
362
+ # StringIO.open('foo') do |strio|
363
+ # p strio.string
364
+ # strio.reopen('bar')
365
+ # p strio.string
366
+ # other_strio = StringIO.new('baz')
367
+ # strio.reopen(other_strio)
368
+ # p strio.string
369
+ # other_strio.close
370
+ # end
371
+ #
372
+ # Output:
373
+ #
374
+ # "foo"
375
+ # "bar"
376
+ # "baz"
335
377
  #
336
378
  def reopen: (StringIO other) -> self
337
379
  | (String other, ?String mode_str) -> self
338
380
 
339
381
  # <!--
340
382
  # rdoc-file=ext/stringio/stringio.c
341
- # - strio.rewind -> 0
383
+ # - rewind -> 0
342
384
  # -->
343
- # Positions the stream to the beginning of input, resetting `lineno` to zero.
385
+ # Sets the current position and line number to zero; see
386
+ # [Position](rdoc-ref:IO@Position) and [Line Number](rdoc-ref:IO@Line+Number).
344
387
  #
345
388
  def rewind: () -> Integer
346
389
 
347
390
  # <!--
348
391
  # rdoc-file=ext/stringio/stringio.c
349
- # - strio.seek(amount, whence=SEEK_SET) -> 0
392
+ # - seek(offset, whence = SEEK_SET) -> 0
350
393
  # -->
351
- # Seeks to a given offset *amount* in the stream according to the value of
352
- # *whence* (see IO#seek).
394
+ # Sets the current position to the given integer `offset` (in bytes), with
395
+ # respect to a given constant `whence`; see [Position](rdoc-ref:IO@Position).
353
396
  #
354
397
  def seek: (Integer amount, ?Integer whence) -> Integer
355
398
 
@@ -366,17 +409,44 @@ class StringIO
366
409
 
367
410
  # <!--
368
411
  # rdoc-file=ext/stringio/stringio.c
369
- # - strio.string -> string
412
+ # - string -> string
370
413
  # -->
371
- # Returns underlying String object, the subject of IO.
414
+ # Returns underlying string:
415
+ #
416
+ # StringIO.open('foo') do |strio|
417
+ # p strio.string
418
+ # strio.string = 'bar'
419
+ # p strio.string
420
+ # end
421
+ #
422
+ # Output:
423
+ #
424
+ # "foo"
425
+ # "bar"
426
+ #
427
+ # Related: StringIO#string= (assigns the underlying string).
372
428
  #
373
429
  def string: () -> String
374
430
 
375
431
  # <!--
376
432
  # rdoc-file=ext/stringio/stringio.c
377
- # - strio.string = string -> string
433
+ # - string = other_string -> other_string
378
434
  # -->
379
- # Changes underlying String object, the subject of IO.
435
+ # Assigns the underlying string as `other_string`, and sets position to zero;
436
+ # returns `other_string`:
437
+ #
438
+ # StringIO.open('foo') do |strio|
439
+ # p strio.string
440
+ # strio.string = 'bar'
441
+ # p strio.string
442
+ # end
443
+ #
444
+ # Output:
445
+ #
446
+ # "foo"
447
+ # "bar"
448
+ #
449
+ # Related: StringIO#string (returns the underlying string).
380
450
  #
381
451
  def string=: (String str) -> String
382
452
 
@@ -391,9 +461,9 @@ class StringIO
391
461
 
392
462
  # <!--
393
463
  # rdoc-file=ext/stringio/stringio.c
394
- # - strio.sync -> true
464
+ # - sync -> true
395
465
  # -->
396
- # Returns `true` always.
466
+ # Returns `true`; implemented only for compatibility with other stream classes.
397
467
  #
398
468
  def sync: () -> bool
399
469
 
@@ -411,13 +481,21 @@ class StringIO
411
481
 
412
482
  # <!--
413
483
  # rdoc-file=ext/stringio/stringio.c
414
- # - strio.pos -> integer
415
- # - strio.tell -> integer
484
+ # - pos -> stream_position
416
485
  # -->
417
- # Returns the current offset (in bytes).
486
+ # Returns the current position (in bytes); see [Position](rdoc-ref:IO@Position).
418
487
  #
419
488
  def tell: () -> Integer
420
489
 
490
+ # <!--
491
+ # rdoc-file=ext/stringio/stringio.c
492
+ # - strio.truncate(integer) -> 0
493
+ # -->
494
+ # Truncates the buffer string to at most *integer* bytes. The stream must be
495
+ # opened for writing.
496
+ #
497
+ def truncate: (Integer) -> 0
498
+
421
499
  # <!-- rdoc-file=ext/stringio/stringio.c -->
422
500
  # Returns `false`. Just for compatibility to IO.
423
501
  #
@@ -425,19 +503,19 @@ class StringIO
425
503
 
426
504
  # <!--
427
505
  # rdoc-file=ext/stringio/stringio.c
428
- # - strio.ungetbyte(fixnum) -> nil
506
+ # - ungetbyte(byte) -> nil
429
507
  # -->
430
- # See IO#ungetbyte
508
+ # Pushes back ("unshifts") an 8-bit byte onto the stream; see [Byte
509
+ # IO](rdoc-ref:IO@Byte+IO).
431
510
  #
432
511
  def ungetbyte: (String | Integer arg0) -> nil
433
512
 
434
513
  # <!--
435
514
  # rdoc-file=ext/stringio/stringio.c
436
- # - strio.ungetc(string) -> nil
515
+ # - ungetc(character) -> nil
437
516
  # -->
438
- # Pushes back one character (passed as a parameter) such that a subsequent
439
- # buffered read will return it. There is no limitation for multiple pushbacks
440
- # including pushing back behind the beginning of the buffer string.
517
+ # Pushes back ("unshifts") a character or integer onto the stream; see
518
+ # [Character IO](rdoc-ref:IO@Character+IO).
441
519
  #
442
520
  def ungetc: (String arg0) -> nil
443
521
 
@@ -468,14 +546,17 @@ class StringIO
468
546
  | () -> ::Enumerator[Integer, self]
469
547
 
470
548
  # <!-- rdoc-file=ext/stringio/stringio.c -->
471
- # See IO#each.
549
+ # Calls the block with each remaining line read from the stream; does nothing if
550
+ # already at end-of-file; returns `self`. See [Line IO](rdoc-ref:IO@Line+IO).
472
551
  #
473
552
  def each_line: (?String sep, ?Integer limit, ?chomp: boolish) { (String) -> untyped } -> self
474
553
  | (?String sep, ?Integer limit, ?chomp: boolish) -> ::Enumerator[String, self]
475
554
 
476
555
  # <!-- rdoc-file=ext/stringio/stringio.c -->
477
- # Returns true if the stream is at the end of the data (underlying string). The
478
- # stream must be opened for reading or an `IOError` will be raised.
556
+ # Returns `true` if positioned at end-of-stream, `false` otherwise; see
557
+ # [Position](rdoc-ref:IO@Position).
558
+ #
559
+ # Raises IOError if the stream is not opened for reading.
479
560
  #
480
561
  def eof?: () -> bool
481
562