rbs 3.10.4 → 4.0.0

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 (267) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +14 -14
  3. data/.github/workflows/bundle-update.yml +60 -0
  4. data/.github/workflows/c-check.yml +7 -5
  5. data/.github/workflows/comments.yml +2 -2
  6. data/.github/workflows/dependabot.yml +2 -2
  7. data/.github/workflows/ruby.yml +16 -26
  8. data/.github/workflows/rust.yml +95 -0
  9. data/.github/workflows/typecheck.yml +1 -1
  10. data/.github/workflows/windows.yml +2 -2
  11. data/.rubocop.yml +2 -2
  12. data/.vscode/extensions.json +5 -0
  13. data/.vscode/settings.json +19 -0
  14. data/CHANGELOG.md +202 -2
  15. data/Rakefile +9 -23
  16. data/Steepfile +2 -0
  17. data/config.yml +457 -13
  18. data/core/array.rbs +218 -188
  19. data/core/basic_object.rbs +9 -8
  20. data/core/binding.rbs +0 -2
  21. data/core/builtin.rbs +2 -2
  22. data/core/class.rbs +6 -5
  23. data/core/comparable.rbs +45 -31
  24. data/core/complex.rbs +66 -55
  25. data/core/dir.rbs +57 -45
  26. data/core/encoding.rbs +6 -6
  27. data/core/enumerable.rbs +105 -91
  28. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  29. data/core/enumerator.rbs +24 -3
  30. data/core/errno.rbs +3 -2
  31. data/core/errors.rbs +31 -29
  32. data/core/exception.rbs +12 -12
  33. data/core/fiber.rbs +47 -36
  34. data/core/file.rbs +242 -169
  35. data/core/file_test.rbs +2 -2
  36. data/core/float.rbs +42 -68
  37. data/core/gc.rbs +78 -70
  38. data/core/hash.rbs +70 -60
  39. data/core/integer.rbs +32 -75
  40. data/core/io/buffer.rbs +36 -36
  41. data/core/io/wait.rbs +7 -7
  42. data/core/io.rbs +192 -146
  43. data/core/kernel.rbs +198 -147
  44. data/core/marshal.rbs +3 -3
  45. data/core/match_data.rbs +14 -12
  46. data/core/math.rbs +69 -67
  47. data/core/method.rbs +6 -8
  48. data/core/module.rbs +148 -88
  49. data/core/nil_class.rbs +4 -3
  50. data/core/numeric.rbs +53 -50
  51. data/core/object.rbs +6 -8
  52. data/core/object_space.rbs +11 -10
  53. data/core/pathname.rbs +131 -81
  54. data/core/proc.rbs +65 -34
  55. data/core/process.rbs +221 -201
  56. data/core/ractor.rbs +15 -11
  57. data/core/random.rbs +21 -3
  58. data/core/range.rbs +152 -49
  59. data/core/rational.rbs +5 -56
  60. data/core/rbs/unnamed/argf.rbs +58 -51
  61. data/core/rbs/unnamed/env_class.rbs +18 -13
  62. data/core/rbs/unnamed/main_class.rbs +123 -0
  63. data/core/rbs/unnamed/random.rbs +7 -116
  64. data/core/regexp.rbs +236 -197
  65. data/core/ruby.rbs +1 -1
  66. data/core/ruby_vm.rbs +32 -30
  67. data/core/rubygems/config_file.rbs +5 -5
  68. data/core/rubygems/errors.rbs +1 -1
  69. data/core/rubygems/requirement.rbs +5 -5
  70. data/core/rubygems/rubygems.rbs +5 -3
  71. data/core/set.rbs +17 -16
  72. data/core/signal.rbs +2 -2
  73. data/core/string.rbs +318 -298
  74. data/core/struct.rbs +26 -25
  75. data/core/symbol.rbs +25 -24
  76. data/core/thread.rbs +40 -41
  77. data/core/time.rbs +47 -42
  78. data/core/trace_point.rbs +34 -31
  79. data/core/true_class.rbs +2 -2
  80. data/core/unbound_method.rbs +10 -10
  81. data/core/warning.rbs +7 -7
  82. data/docs/collection.md +1 -1
  83. data/docs/config.md +171 -0
  84. data/docs/inline.md +576 -0
  85. data/docs/syntax.md +46 -16
  86. data/docs/type_fingerprint.md +21 -0
  87. data/exe/rbs +1 -1
  88. data/ext/rbs_extension/ast_translation.c +595 -98
  89. data/ext/rbs_extension/class_constants.c +30 -0
  90. data/ext/rbs_extension/class_constants.h +15 -0
  91. data/ext/rbs_extension/legacy_location.c +30 -53
  92. data/ext/rbs_extension/legacy_location.h +37 -0
  93. data/ext/rbs_extension/main.c +125 -24
  94. data/include/rbs/ast.h +485 -150
  95. data/include/rbs/lexer.h +11 -4
  96. data/include/rbs/location.h +25 -44
  97. data/include/rbs/parser.h +20 -2
  98. data/include/rbs/util/rbs_constant_pool.h +0 -3
  99. data/include/rbs.h +8 -0
  100. data/lib/rbs/ast/annotation.rb +1 -1
  101. data/lib/rbs/ast/comment.rb +1 -1
  102. data/lib/rbs/ast/declarations.rb +10 -10
  103. data/lib/rbs/ast/members.rb +14 -14
  104. data/lib/rbs/ast/ruby/annotations.rb +409 -0
  105. data/lib/rbs/ast/ruby/comment_block.rb +245 -0
  106. data/lib/rbs/ast/ruby/declarations.rb +281 -0
  107. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  108. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  109. data/lib/rbs/ast/ruby/members.rb +723 -0
  110. data/lib/rbs/ast/type_param.rb +24 -4
  111. data/lib/rbs/buffer.rb +105 -20
  112. data/lib/rbs/cli/diff.rb +16 -15
  113. data/lib/rbs/cli/validate.rb +62 -125
  114. data/lib/rbs/cli.rb +55 -23
  115. data/lib/rbs/collection/config/lockfile_generator.rb +8 -4
  116. data/lib/rbs/collection/sources/git.rb +1 -0
  117. data/lib/rbs/collection.rb +0 -1
  118. data/lib/rbs/definition.rb +6 -1
  119. data/lib/rbs/definition_builder/ancestor_builder.rb +119 -63
  120. data/lib/rbs/definition_builder/method_builder.rb +65 -30
  121. data/lib/rbs/definition_builder.rb +177 -20
  122. data/lib/rbs/diff.rb +7 -1
  123. data/lib/rbs/environment/class_entry.rb +69 -0
  124. data/lib/rbs/environment/module_entry.rb +66 -0
  125. data/lib/rbs/environment.rb +338 -155
  126. data/lib/rbs/environment_loader.rb +2 -2
  127. data/lib/rbs/errors.rb +30 -20
  128. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  129. data/lib/rbs/inline_parser.rb +542 -0
  130. data/lib/rbs/location_aux.rb +36 -4
  131. data/lib/rbs/locator.rb +5 -1
  132. data/lib/rbs/method_type.rb +5 -3
  133. data/lib/rbs/namespace.rb +0 -7
  134. data/lib/rbs/parser_aux.rb +31 -8
  135. data/lib/rbs/prototype/helpers.rb +57 -0
  136. data/lib/rbs/prototype/rb.rb +3 -28
  137. data/lib/rbs/prototype/rbi.rb +3 -20
  138. data/lib/rbs/prototype/runtime.rb +10 -2
  139. data/lib/rbs/resolver/type_name_resolver.rb +0 -8
  140. data/lib/rbs/source.rb +99 -0
  141. data/lib/rbs/subtractor.rb +4 -3
  142. data/lib/rbs/test/type_check.rb +5 -2
  143. data/lib/rbs/type_name.rb +1 -8
  144. data/lib/rbs/types.rb +88 -78
  145. data/lib/rbs/unit_test/convertibles.rb +1 -0
  146. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  147. data/lib/rbs/validator.rb +2 -2
  148. data/lib/rbs/version.rb +1 -1
  149. data/lib/rbs.rb +12 -1
  150. data/rbs.gemspec +3 -2
  151. data/rust/.gitignore +1 -0
  152. data/rust/Cargo.lock +378 -0
  153. data/rust/Cargo.toml +7 -0
  154. data/rust/ruby-rbs/Cargo.toml +22 -0
  155. data/rust/ruby-rbs/build.rs +764 -0
  156. data/rust/ruby-rbs/examples/locations.rs +60 -0
  157. data/rust/ruby-rbs/src/lib.rs +1 -0
  158. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  159. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  160. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  161. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  162. data/rust/ruby-rbs-sys/build.rs +204 -0
  163. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  164. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  165. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  166. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  167. data/schema/typeParam.json +17 -1
  168. data/sig/ancestor_builder.rbs +1 -1
  169. data/sig/ast/ruby/annotations.rbs +421 -0
  170. data/sig/ast/ruby/comment_block.rbs +127 -0
  171. data/sig/ast/ruby/declarations.rbs +158 -0
  172. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  173. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  174. data/sig/ast/ruby/members.rbs +178 -0
  175. data/sig/buffer.rbs +63 -5
  176. data/sig/cli/diff.rbs +5 -11
  177. data/sig/cli/validate.rbs +12 -8
  178. data/sig/cli.rbs +18 -18
  179. data/sig/definition.rbs +6 -0
  180. data/sig/definition_builder.rbs +3 -1
  181. data/sig/environment/class_entry.rbs +50 -0
  182. data/sig/environment/module_entry.rbs +50 -0
  183. data/sig/environment.rbs +37 -81
  184. data/sig/errors.rbs +26 -20
  185. data/sig/inline_parser/comment_association.rbs +71 -0
  186. data/sig/inline_parser.rbs +124 -0
  187. data/sig/location.rbs +32 -7
  188. data/sig/locator.rbs +0 -2
  189. data/sig/method_builder.rbs +9 -4
  190. data/sig/namespace.rbs +0 -5
  191. data/sig/parser.rbs +47 -13
  192. data/sig/prototype/helpers.rbs +2 -0
  193. data/sig/resolver/type_name_resolver.rbs +0 -3
  194. data/sig/source.rbs +48 -0
  195. data/sig/type_param.rbs +13 -8
  196. data/sig/typename.rbs +0 -5
  197. data/sig/types.rbs +6 -7
  198. data/sig/unit_test/spy.rbs +0 -8
  199. data/sig/unit_test/type_assertions.rbs +11 -0
  200. data/src/ast.c +491 -143
  201. data/src/lexer.c +1552 -1314
  202. data/src/lexer.re +7 -0
  203. data/src/lexstate.c +8 -1
  204. data/src/location.c +8 -48
  205. data/src/parser.c +1107 -409
  206. data/src/util/rbs_constant_pool.c +0 -4
  207. data/stdlib/bigdecimal/0/big_decimal.rbs +16 -16
  208. data/stdlib/cgi-escape/0/escape.rbs +4 -4
  209. data/stdlib/coverage/0/coverage.rbs +4 -3
  210. data/stdlib/date/0/date.rbs +33 -28
  211. data/stdlib/date/0/date_time.rbs +24 -23
  212. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  213. data/stdlib/digest/0/digest.rbs +110 -0
  214. data/stdlib/erb/0/erb.rbs +64 -53
  215. data/stdlib/etc/0/etc.rbs +55 -50
  216. data/stdlib/fileutils/0/fileutils.rbs +140 -126
  217. data/stdlib/forwardable/0/forwardable.rbs +10 -10
  218. data/stdlib/io-console/0/io-console.rbs +2 -2
  219. data/stdlib/json/0/json.rbs +158 -131
  220. data/stdlib/monitor/0/monitor.rbs +3 -3
  221. data/stdlib/net-http/0/net-http.rbs +159 -134
  222. data/stdlib/objspace/0/objspace.rbs +8 -30
  223. data/stdlib/open-uri/0/open-uri.rbs +8 -8
  224. data/stdlib/open3/0/open3.rbs +469 -10
  225. data/stdlib/openssl/0/openssl.rbs +144 -129
  226. data/stdlib/optparse/0/optparse.rbs +23 -14
  227. data/stdlib/pathname/0/pathname.rbs +2 -2
  228. data/stdlib/pp/0/pp.rbs +9 -8
  229. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  230. data/stdlib/pstore/0/pstore.rbs +35 -30
  231. data/stdlib/psych/0/psych.rbs +62 -9
  232. data/stdlib/psych/0/store.rbs +2 -4
  233. data/stdlib/pty/0/pty.rbs +9 -6
  234. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  235. data/stdlib/rdoc/0/code_object.rbs +2 -1
  236. data/stdlib/rdoc/0/parser.rbs +1 -1
  237. data/stdlib/rdoc/0/store.rbs +1 -1
  238. data/stdlib/ripper/0/ripper.rbs +20 -17
  239. data/stdlib/securerandom/0/manifest.yaml +2 -0
  240. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  241. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  242. data/stdlib/socket/0/addrinfo.rbs +9 -9
  243. data/stdlib/socket/0/basic_socket.rbs +3 -3
  244. data/stdlib/socket/0/ip_socket.rbs +10 -8
  245. data/stdlib/socket/0/socket.rbs +10 -9
  246. data/stdlib/socket/0/tcp_server.rbs +1 -1
  247. data/stdlib/socket/0/tcp_socket.rbs +1 -1
  248. data/stdlib/socket/0/udp_socket.rbs +1 -1
  249. data/stdlib/socket/0/unix_server.rbs +1 -1
  250. data/stdlib/stringio/0/stringio.rbs +55 -54
  251. data/stdlib/strscan/0/string_scanner.rbs +46 -44
  252. data/stdlib/tempfile/0/tempfile.rbs +24 -20
  253. data/stdlib/time/0/time.rbs +7 -5
  254. data/stdlib/tsort/0/tsort.rbs +7 -6
  255. data/stdlib/uri/0/common.rbs +31 -18
  256. data/stdlib/uri/0/file.rbs +2 -2
  257. data/stdlib/uri/0/generic.rbs +9 -2
  258. data/stdlib/uri/0/http.rbs +2 -2
  259. data/stdlib/uri/0/ldap.rbs +2 -2
  260. data/stdlib/uri/0/mailto.rbs +3 -3
  261. data/stdlib/uri/0/rfc2396_parser.rbs +6 -5
  262. data/stdlib/zlib/0/deflate.rbs +4 -3
  263. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  264. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  265. data/stdlib/zlib/0/inflate.rbs +1 -1
  266. data/stdlib/zlib/0/need_dict.rbs +1 -1
  267. metadata +66 -3
data/core/io/buffer.rbs CHANGED
@@ -81,9 +81,9 @@ class IO
81
81
  # File.read('test.txt')
82
82
  # # => "t--- data"
83
83
  #
84
- # **The class is experimental and the interface is subject to change, this is
85
- # especially true of file mappings which may be removed entirely in the
86
- # future.**
84
+ # <strong>The class is experimental and the interface is subject to change, this
85
+ # is especially true of file mappings which may be removed entirely in the
86
+ # future.</strong>
87
87
  #
88
88
  class Buffer
89
89
  include Comparable
@@ -356,7 +356,7 @@ class IO
356
356
  # - get_string([offset, [length, [encoding]]]) -> string
357
357
  # -->
358
358
  # Read a chunk or all of the buffer into a string, in the specified `encoding`.
359
- # If no encoding is provided `Encoding::BINARY` is used.
359
+ # If no encoding is provided <code>Encoding::BINARY</code> is used.
360
360
  #
361
361
  # buffer = IO::Buffer.for('test')
362
362
  # buffer.get_string
@@ -375,32 +375,32 @@ class IO
375
375
  # Read from buffer a value of `type` at `offset`. `buffer_type` should be one of
376
376
  # symbols:
377
377
  #
378
- # * `:U8`: unsigned integer, 1 byte
379
- # * `:S8`: signed integer, 1 byte
380
- # * `:u16`: unsigned integer, 2 bytes, little-endian
381
- # * `:U16`: unsigned integer, 2 bytes, big-endian
382
- # * `:s16`: signed integer, 2 bytes, little-endian
383
- # * `:S16`: signed integer, 2 bytes, big-endian
384
- # * `:u32`: unsigned integer, 4 bytes, little-endian
385
- # * `:U32`: unsigned integer, 4 bytes, big-endian
386
- # * `:s32`: signed integer, 4 bytes, little-endian
387
- # * `:S32`: signed integer, 4 bytes, big-endian
388
- # * `:u64`: unsigned integer, 8 bytes, little-endian
389
- # * `:U64`: unsigned integer, 8 bytes, big-endian
390
- # * `:s64`: signed integer, 8 bytes, little-endian
391
- # * `:S64`: signed integer, 8 bytes, big-endian
392
- # * `:u128`: unsigned integer, 16 bytes, little-endian
393
- # * `:U128`: unsigned integer, 16 bytes, big-endian
394
- # * `:s128`: signed integer, 16 bytes, little-endian
395
- # * `:S128`: signed integer, 16 bytes, big-endian
396
- # * `:f32`: float, 4 bytes, little-endian
397
- # * `:F32`: float, 4 bytes, big-endian
398
- # * `:f64`: double, 8 bytes, little-endian
399
- # * `:F64`: double, 8 bytes, big-endian
378
+ # * <code>:U8</code>: unsigned integer, 1 byte
379
+ # * <code>:S8</code>: signed integer, 1 byte
380
+ # * <code>:u16</code>: unsigned integer, 2 bytes, little-endian
381
+ # * <code>:U16</code>: unsigned integer, 2 bytes, big-endian
382
+ # * <code>:s16</code>: signed integer, 2 bytes, little-endian
383
+ # * <code>:S16</code>: signed integer, 2 bytes, big-endian
384
+ # * <code>:u32</code>: unsigned integer, 4 bytes, little-endian
385
+ # * <code>:U32</code>: unsigned integer, 4 bytes, big-endian
386
+ # * <code>:s32</code>: signed integer, 4 bytes, little-endian
387
+ # * <code>:S32</code>: signed integer, 4 bytes, big-endian
388
+ # * <code>:u64</code>: unsigned integer, 8 bytes, little-endian
389
+ # * <code>:U64</code>: unsigned integer, 8 bytes, big-endian
390
+ # * <code>:s64</code>: signed integer, 8 bytes, little-endian
391
+ # * <code>:S64</code>: signed integer, 8 bytes, big-endian
392
+ # * <code>:u128</code>: unsigned integer, 16 bytes, little-endian
393
+ # * <code>:U128</code>: unsigned integer, 16 bytes, big-endian
394
+ # * <code>:s128</code>: signed integer, 16 bytes, little-endian
395
+ # * <code>:S128</code>: signed integer, 16 bytes, big-endian
396
+ # * <code>:f32</code>: float, 4 bytes, little-endian
397
+ # * <code>:F32</code>: float, 4 bytes, big-endian
398
+ # * <code>:f64</code>: double, 8 bytes, little-endian
399
+ # * <code>:F64</code>: double, 8 bytes, big-endian
400
400
  #
401
401
  # A buffer type refers specifically to the type of binary buffer that is stored
402
- # in the buffer. For example, a `:u32` buffer type is a 32-bit unsigned integer
403
- # in little-endian format.
402
+ # in the buffer. For example, a <code>:u32</code> buffer type is a 32-bit
403
+ # unsigned integer in little-endian format.
404
404
  #
405
405
  # string = [1.5].pack('f')
406
406
  # # => "\x00\x00\xC0?"
@@ -557,7 +557,7 @@ class IO
557
557
  # -->
558
558
  # Read at least `length` bytes from the `io` starting at the specified `from`
559
559
  # position, into the buffer starting at `offset`. If an error occurs, return
560
- # `-errno`.
560
+ # <code>-errno</code>.
561
561
  #
562
562
  # If `length` is not given or `nil`, it defaults to the size of the buffer minus
563
563
  # the offset, i.e. the entire buffer.
@@ -590,7 +590,7 @@ class IO
590
590
  # -->
591
591
  # Write at least `length` bytes from the buffer starting at `offset`, into the
592
592
  # `io` starting at the specified `from` position. If an error occurs, return
593
- # `-errno`.
593
+ # <code>-errno</code>.
594
594
  #
595
595
  # If `length` is not given or `nil`, it defaults to the size of the buffer minus
596
596
  # the offset, i.e. the entire buffer.
@@ -607,7 +607,7 @@ class IO
607
607
  # IO::Buffer.for('1234567').pwrite(out, 2, 3, 1)
608
608
  #
609
609
  # This leads to `234` (3 bytes, starting from position 1) being written into
610
- # `output.txt`, starting from file position 2.
610
+ # <code>output.txt</code>, starting from file position 2.
611
611
  #
612
612
  def pwrite: (untyped, untyped, untyped) -> untyped
613
613
 
@@ -616,7 +616,7 @@ class IO
616
616
  # - read(io, [length, [offset]]) -> read length or -errno
617
617
  # -->
618
618
  # Read at least `length` bytes from the `io`, into the buffer starting at
619
- # `offset`. If an error occurs, return `-errno`.
619
+ # `offset`. If an error occurs, return <code>-errno</code>.
620
620
  #
621
621
  # If `length` is not given or `nil`, it defaults to the size of the buffer minus
622
622
  # the offset, i.e. the entire buffer.
@@ -756,8 +756,8 @@ class IO
756
756
  # minus the specified offset. If the length is negative, it will raise an
757
757
  # ArgumentError.
758
758
  #
759
- # Raises RuntimeError if the `offset+length` is out of the current buffer's
760
- # bounds.
759
+ # Raises RuntimeError if the <code>offset+length</code> is out of the current
760
+ # buffer's bounds.
761
761
  #
762
762
  # string = 'test'
763
763
  # buffer = IO::Buffer.for(string).dup
@@ -841,7 +841,7 @@ class IO
841
841
  # - write(io, [length, [offset]]) -> written length or -errno
842
842
  # -->
843
843
  # Write at least `length` bytes from the buffer starting at `offset`, into the
844
- # `io`. If an error occurs, return `-errno`.
844
+ # `io`. If an error occurs, return <code>-errno</code>.
845
845
  #
846
846
  # If `length` is not given or `nil`, it defaults to the size of the buffer minus
847
847
  # the offset, i.e. the entire buffer.
@@ -854,7 +854,7 @@ class IO
854
854
  # out = File.open('output.txt', 'wb')
855
855
  # IO::Buffer.for('1234567').write(out, 3)
856
856
  #
857
- # This leads to `123` being written into `output.txt`
857
+ # This leads to `123` being written into <code>output.txt</code>
858
858
  #
859
859
  def write: (untyped, untyped) -> untyped
860
860
 
data/core/io/wait.rbs CHANGED
@@ -8,17 +8,17 @@ class IO
8
8
  # Waits until the IO becomes ready for the specified events and returns the
9
9
  # subset of events that become ready, or a falsy value when times out.
10
10
  #
11
- # The events can be a bit mask of `IO::READABLE`, `IO::WRITABLE` or
12
- # `IO::PRIORITY`.
11
+ # The events can be a bit mask of <code>IO::READABLE</code>,
12
+ # <code>IO::WRITABLE</code> or <code>IO::PRIORITY</code>.
13
13
  #
14
14
  # Returns an event mask (truthy value) immediately when buffered data is
15
15
  # available.
16
16
  #
17
- # The second form: if one or more event symbols (`:read`, `:write`, or
18
- # `:read_write`) are passed, the event mask is the bit OR of the bitmask
19
- # corresponding to those symbols. In this form, `timeout` is optional, the
20
- # order of the arguments is arbitrary, and returns `io` if any of the events is
21
- # ready.
17
+ # The second form: if one or more event symbols (<code>:read</code>,
18
+ # <code>:write</code>, or <code>:read_write</code>) are passed, the event mask
19
+ # is the bit OR of the bitmask corresponding to those symbols. In this form,
20
+ # `timeout` is optional, the order of the arguments is arbitrary, and returns
21
+ # `io` if any of the events is ready.
22
22
  #
23
23
  def wait: (Integer events, ?Time::_Timeout timeout) -> (Integer | false | nil)
24
24
  | (?Time::_Timeout? timeout, *wait_mode mode) -> (self | true | false)