rbs 4.0.0.dev.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 (281) 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 +18 -11
  5. data/.github/workflows/comments.yml +5 -3
  6. data/.github/workflows/dependabot.yml +2 -2
  7. data/.github/workflows/ruby.yml +27 -34
  8. data/.github/workflows/rust.yml +95 -0
  9. data/.github/workflows/typecheck.yml +2 -2
  10. data/.github/workflows/windows.yml +2 -2
  11. data/.rubocop.yml +1 -1
  12. data/CHANGELOG.md +323 -0
  13. data/README.md +1 -1
  14. data/Rakefile +43 -33
  15. data/Steepfile +1 -0
  16. data/config.yml +426 -24
  17. data/core/array.rbs +307 -227
  18. data/core/basic_object.rbs +9 -8
  19. data/core/binding.rbs +0 -2
  20. data/core/builtin.rbs +2 -2
  21. data/core/class.rbs +6 -5
  22. data/core/comparable.rbs +55 -34
  23. data/core/complex.rbs +104 -78
  24. data/core/dir.rbs +61 -49
  25. data/core/encoding.rbs +12 -15
  26. data/core/enumerable.rbs +179 -87
  27. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  28. data/core/enumerator.rbs +65 -2
  29. data/core/errno.rbs +11 -2
  30. data/core/errors.rbs +58 -29
  31. data/core/exception.rbs +13 -13
  32. data/core/fiber.rbs +74 -54
  33. data/core/file.rbs +280 -177
  34. data/core/file_test.rbs +3 -3
  35. data/core/float.rbs +257 -92
  36. data/core/gc.rbs +425 -281
  37. data/core/hash.rbs +1045 -739
  38. data/core/integer.rbs +135 -137
  39. data/core/io/buffer.rbs +53 -42
  40. data/core/io/wait.rbs +13 -35
  41. data/core/io.rbs +192 -144
  42. data/core/kernel.rbs +216 -155
  43. data/core/marshal.rbs +4 -4
  44. data/core/match_data.rbs +15 -13
  45. data/core/math.rbs +107 -66
  46. data/core/method.rbs +69 -33
  47. data/core/module.rbs +244 -106
  48. data/core/nil_class.rbs +7 -6
  49. data/core/numeric.rbs +74 -63
  50. data/core/object.rbs +9 -11
  51. data/core/object_space.rbs +30 -23
  52. data/core/pathname.rbs +1322 -0
  53. data/core/proc.rbs +95 -58
  54. data/core/process.rbs +222 -202
  55. data/core/ractor.rbs +371 -515
  56. data/core/random.rbs +21 -3
  57. data/core/range.rbs +159 -57
  58. data/core/rational.rbs +60 -89
  59. data/core/rbs/unnamed/argf.rbs +60 -53
  60. data/core/rbs/unnamed/env_class.rbs +19 -14
  61. data/core/rbs/unnamed/main_class.rbs +123 -0
  62. data/core/rbs/unnamed/random.rbs +11 -118
  63. data/core/regexp.rbs +258 -214
  64. data/core/ruby.rbs +53 -0
  65. data/core/ruby_vm.rbs +38 -34
  66. data/core/rubygems/config_file.rbs +5 -5
  67. data/core/rubygems/errors.rbs +4 -71
  68. data/core/rubygems/requirement.rbs +5 -5
  69. data/core/rubygems/rubygems.rbs +16 -82
  70. data/core/rubygems/version.rbs +2 -3
  71. data/core/set.rbs +490 -360
  72. data/core/signal.rbs +26 -16
  73. data/core/string.rbs +3234 -1285
  74. data/core/struct.rbs +27 -26
  75. data/core/symbol.rbs +41 -34
  76. data/core/thread.rbs +135 -67
  77. data/core/time.rbs +81 -50
  78. data/core/trace_point.rbs +41 -35
  79. data/core/true_class.rbs +2 -2
  80. data/core/unbound_method.rbs +24 -16
  81. data/core/warning.rbs +7 -7
  82. data/docs/aliases.md +79 -0
  83. data/docs/collection.md +3 -3
  84. data/docs/config.md +171 -0
  85. data/docs/encoding.md +56 -0
  86. data/docs/gem.md +0 -1
  87. data/docs/inline.md +576 -0
  88. data/docs/sigs.md +3 -3
  89. data/docs/syntax.md +46 -16
  90. data/docs/type_fingerprint.md +21 -0
  91. data/exe/rbs +1 -1
  92. data/ext/rbs_extension/ast_translation.c +544 -116
  93. data/ext/rbs_extension/ast_translation.h +3 -0
  94. data/ext/rbs_extension/class_constants.c +16 -2
  95. data/ext/rbs_extension/class_constants.h +8 -0
  96. data/ext/rbs_extension/extconf.rb +5 -1
  97. data/ext/rbs_extension/legacy_location.c +33 -56
  98. data/ext/rbs_extension/legacy_location.h +37 -0
  99. data/ext/rbs_extension/main.c +44 -35
  100. data/include/rbs/ast.h +448 -173
  101. data/include/rbs/defines.h +27 -0
  102. data/include/rbs/lexer.h +30 -11
  103. data/include/rbs/location.h +25 -44
  104. data/include/rbs/parser.h +6 -6
  105. data/include/rbs/string.h +0 -2
  106. data/include/rbs/util/rbs_allocator.h +34 -13
  107. data/include/rbs/util/rbs_assert.h +12 -1
  108. data/include/rbs/util/rbs_constant_pool.h +0 -3
  109. data/include/rbs/util/rbs_encoding.h +2 -0
  110. data/include/rbs/util/rbs_unescape.h +2 -1
  111. data/include/rbs.h +8 -0
  112. data/lib/rbs/ast/annotation.rb +1 -1
  113. data/lib/rbs/ast/comment.rb +1 -1
  114. data/lib/rbs/ast/declarations.rb +10 -10
  115. data/lib/rbs/ast/members.rb +14 -14
  116. data/lib/rbs/ast/ruby/annotations.rb +293 -3
  117. data/lib/rbs/ast/ruby/comment_block.rb +24 -0
  118. data/lib/rbs/ast/ruby/declarations.rb +198 -3
  119. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
  120. data/lib/rbs/ast/ruby/members.rb +532 -22
  121. data/lib/rbs/ast/type_param.rb +24 -4
  122. data/lib/rbs/buffer.rb +20 -15
  123. data/lib/rbs/cli/diff.rb +16 -15
  124. data/lib/rbs/cli/validate.rb +38 -106
  125. data/lib/rbs/cli.rb +52 -19
  126. data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
  127. data/lib/rbs/collection/sources/git.rb +1 -0
  128. data/lib/rbs/definition.rb +1 -1
  129. data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
  130. data/lib/rbs/definition_builder/method_builder.rb +20 -0
  131. data/lib/rbs/definition_builder.rb +147 -25
  132. data/lib/rbs/diff.rb +7 -1
  133. data/lib/rbs/environment.rb +227 -74
  134. data/lib/rbs/environment_loader.rb +0 -6
  135. data/lib/rbs/errors.rb +27 -18
  136. data/lib/rbs/inline_parser.rb +342 -6
  137. data/lib/rbs/location_aux.rb +1 -1
  138. data/lib/rbs/locator.rb +5 -1
  139. data/lib/rbs/method_type.rb +5 -3
  140. data/lib/rbs/parser_aux.rb +20 -7
  141. data/lib/rbs/prototype/helpers.rb +57 -0
  142. data/lib/rbs/prototype/rb.rb +3 -28
  143. data/lib/rbs/prototype/rbi.rb +3 -20
  144. data/lib/rbs/prototype/runtime.rb +8 -0
  145. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  146. data/lib/rbs/resolver/type_name_resolver.rb +116 -38
  147. data/lib/rbs/subtractor.rb +3 -1
  148. data/lib/rbs/test/type_check.rb +19 -2
  149. data/lib/rbs/type_name.rb +1 -1
  150. data/lib/rbs/types.rb +88 -78
  151. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  152. data/lib/rbs/validator.rb +2 -2
  153. data/lib/rbs/version.rb +1 -1
  154. data/lib/rbs.rb +1 -2
  155. data/lib/rdoc/discover.rb +1 -1
  156. data/lib/rdoc_plugin/parser.rb +1 -1
  157. data/rbs.gemspec +4 -3
  158. data/rust/.gitignore +1 -0
  159. data/rust/Cargo.lock +378 -0
  160. data/rust/Cargo.toml +7 -0
  161. data/rust/ruby-rbs/Cargo.toml +22 -0
  162. data/rust/ruby-rbs/build.rs +764 -0
  163. data/rust/ruby-rbs/examples/locations.rs +60 -0
  164. data/rust/ruby-rbs/src/lib.rs +1 -0
  165. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  166. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  167. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  168. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  169. data/rust/ruby-rbs-sys/build.rs +204 -0
  170. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  171. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  172. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  173. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  174. data/schema/typeParam.json +17 -1
  175. data/sig/ast/ruby/annotations.rbs +315 -4
  176. data/sig/ast/ruby/comment_block.rbs +8 -0
  177. data/sig/ast/ruby/declarations.rbs +102 -4
  178. data/sig/ast/ruby/members.rbs +108 -2
  179. data/sig/cli/diff.rbs +5 -11
  180. data/sig/cli/validate.rbs +12 -8
  181. data/sig/cli.rbs +18 -18
  182. data/sig/definition.rbs +6 -1
  183. data/sig/definition_builder.rbs +2 -0
  184. data/sig/environment.rbs +70 -12
  185. data/sig/errors.rbs +13 -14
  186. data/sig/inline_parser.rbs +39 -2
  187. data/sig/locator.rbs +0 -2
  188. data/sig/manifest.yaml +0 -1
  189. data/sig/method_builder.rbs +3 -1
  190. data/sig/parser.rbs +31 -13
  191. data/sig/prototype/helpers.rbs +2 -0
  192. data/sig/resolver/type_name_resolver.rbs +35 -7
  193. data/sig/source.rbs +3 -3
  194. data/sig/type_param.rbs +13 -8
  195. data/sig/types.rbs +6 -7
  196. data/sig/unit_test/spy.rbs +0 -8
  197. data/sig/unit_test/type_assertions.rbs +11 -0
  198. data/src/ast.c +410 -153
  199. data/src/lexer.c +1392 -1313
  200. data/src/lexer.re +3 -0
  201. data/src/lexstate.c +58 -37
  202. data/src/location.c +8 -48
  203. data/src/parser.c +977 -516
  204. data/src/string.c +0 -48
  205. data/src/util/rbs_allocator.c +89 -71
  206. data/src/util/rbs_assert.c +1 -1
  207. data/src/util/rbs_buffer.c +2 -2
  208. data/src/util/rbs_constant_pool.c +10 -14
  209. data/src/util/rbs_encoding.c +4 -8
  210. data/src/util/rbs_unescape.c +56 -20
  211. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  212. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  213. data/stdlib/cgi/0/core.rbs +9 -393
  214. data/stdlib/cgi/0/manifest.yaml +1 -0
  215. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  216. data/stdlib/coverage/0/coverage.rbs +7 -4
  217. data/stdlib/date/0/date.rbs +92 -79
  218. data/stdlib/date/0/date_time.rbs +25 -24
  219. data/stdlib/delegate/0/delegator.rbs +10 -7
  220. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  221. data/stdlib/digest/0/digest.rbs +110 -0
  222. data/stdlib/erb/0/erb.rbs +748 -347
  223. data/stdlib/etc/0/etc.rbs +55 -50
  224. data/stdlib/fileutils/0/fileutils.rbs +158 -139
  225. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  226. data/stdlib/io-console/0/io-console.rbs +2 -2
  227. data/stdlib/json/0/json.rbs +217 -136
  228. data/stdlib/monitor/0/monitor.rbs +3 -3
  229. data/stdlib/net-http/0/net-http.rbs +162 -134
  230. data/stdlib/objspace/0/objspace.rbs +17 -34
  231. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  232. data/stdlib/open3/0/open3.rbs +469 -10
  233. data/stdlib/openssl/0/openssl.rbs +475 -357
  234. data/stdlib/optparse/0/optparse.rbs +26 -17
  235. data/stdlib/pathname/0/pathname.rbs +11 -1381
  236. data/stdlib/pp/0/pp.rbs +9 -8
  237. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  238. data/stdlib/pstore/0/pstore.rbs +35 -30
  239. data/stdlib/psych/0/psych.rbs +65 -12
  240. data/stdlib/psych/0/store.rbs +2 -4
  241. data/stdlib/pty/0/pty.rbs +9 -6
  242. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  243. data/stdlib/rdoc/0/code_object.rbs +2 -1
  244. data/stdlib/rdoc/0/parser.rbs +1 -1
  245. data/stdlib/rdoc/0/rdoc.rbs +1 -1
  246. data/stdlib/rdoc/0/store.rbs +1 -1
  247. data/stdlib/resolv/0/resolv.rbs +25 -68
  248. data/stdlib/ripper/0/ripper.rbs +22 -19
  249. data/stdlib/securerandom/0/manifest.yaml +2 -0
  250. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  251. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  252. data/stdlib/singleton/0/singleton.rbs +3 -0
  253. data/stdlib/socket/0/addrinfo.rbs +7 -7
  254. data/stdlib/socket/0/basic_socket.rbs +3 -3
  255. data/stdlib/socket/0/ip_socket.rbs +10 -8
  256. data/stdlib/socket/0/socket.rbs +23 -10
  257. data/stdlib/socket/0/tcp_server.rbs +1 -1
  258. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  259. data/stdlib/socket/0/udp_socket.rbs +1 -1
  260. data/stdlib/socket/0/unix_server.rbs +1 -1
  261. data/stdlib/stringio/0/stringio.rbs +1177 -85
  262. data/stdlib/strscan/0/string_scanner.rbs +27 -25
  263. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  264. data/stdlib/time/0/time.rbs +8 -6
  265. data/stdlib/timeout/0/timeout.rbs +63 -7
  266. data/stdlib/tsort/0/cyclic.rbs +3 -0
  267. data/stdlib/tsort/0/tsort.rbs +7 -6
  268. data/stdlib/uri/0/common.rbs +42 -20
  269. data/stdlib/uri/0/file.rbs +3 -3
  270. data/stdlib/uri/0/generic.rbs +26 -18
  271. data/stdlib/uri/0/http.rbs +2 -2
  272. data/stdlib/uri/0/ldap.rbs +2 -2
  273. data/stdlib/uri/0/mailto.rbs +3 -3
  274. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  275. data/stdlib/zlib/0/deflate.rbs +4 -3
  276. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  277. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  278. data/stdlib/zlib/0/inflate.rbs +1 -1
  279. data/stdlib/zlib/0/need_dict.rbs +1 -1
  280. data/stdlib/zlib/0/zstream.rbs +1 -0
  281. metadata +50 -6
data/core/io/buffer.rbs CHANGED
@@ -64,9 +64,9 @@ class IO
64
64
  #
65
65
  # File.write('test.txt', 'test data')
66
66
  # # => 9
67
- # buffer = IO::Buffer.map(File.open('test.txt'))
67
+ # buffer = IO::Buffer.map(File.open('test.txt'), nil, 0, IO::Buffer::READONLY)
68
68
  # # =>
69
- # # #<IO::Buffer 0x00007f3f0768c000+9 MAPPED IMMUTABLE>
69
+ # # #<IO::Buffer 0x00007f3f0768c000+9 EXTERNAL MAPPED FILE SHARED READONLY>
70
70
  # # ...
71
71
  # buffer.get_string(5, 2) # read 2 bytes, starting from offset 5
72
72
  # # => "da"
@@ -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
@@ -113,7 +113,7 @@ class IO
113
113
  # buffer.get_string(0, 1)
114
114
  # # => "t"
115
115
  # string
116
- # # => "best"
116
+ # # => "test"
117
117
  #
118
118
  # buffer.resize(100)
119
119
  # # in `resize': Cannot resize external buffer! (IO::Buffer::AccessError)
@@ -131,18 +131,25 @@ class IO
131
131
  # - IO::Buffer.map(file, [size, [offset, [flags]]]) -> io_buffer
132
132
  # -->
133
133
  # Create an IO::Buffer for reading from `file` by memory-mapping the file.
134
- # `file_io` should be a `File` instance, opened for reading.
134
+ # `file` should be a `File` instance, opened for reading or reading and writing.
135
+ #
136
+ # Optional `size` and `offset` of mapping can be specified. Trying to map an
137
+ # empty file or specify `size` of 0 will raise an error. Valid values for
138
+ # `offset` are system-dependent.
135
139
  #
136
- # Optional `size` and `offset` of mapping can be specified.
140
+ # By default, the buffer is writable and expects the file to be writable. It is
141
+ # also shared, so several processes can use the same mapping.
137
142
  #
138
- # By default, the buffer would be immutable (read only); to create a writable
139
- # mapping, you need to open a file in read-write mode, and explicitly pass
140
- # `flags` argument without IO::Buffer::IMMUTABLE.
143
+ # You can pass IO::Buffer::READONLY in `flags` argument to make a read-only
144
+ # buffer; this allows to work with files opened only for reading. Specifying
145
+ # IO::Buffer::PRIVATE in `flags` creates a private mapping, which will not
146
+ # impact other processes or the underlying file. It also allows updating a
147
+ # buffer created from a read-only file.
141
148
  #
142
149
  # File.write('test.txt', 'test')
143
150
  #
144
151
  # buffer = IO::Buffer.map(File.open('test.txt'), nil, 0, IO::Buffer::READONLY)
145
- # # => #<IO::Buffer 0x00000001014a0000+4 MAPPED READONLY>
152
+ # # => #<IO::Buffer 0x00000001014a0000+4 EXTERNAL MAPPED FILE SHARED READONLY>
146
153
  #
147
154
  # buffer.readonly? # => true
148
155
  #
@@ -150,7 +157,7 @@ class IO
150
157
  # # => "test"
151
158
  #
152
159
  # buffer.set_string('b', 0)
153
- # # `set_string': Buffer is not writable! (IO::Buffer::AccessError)
160
+ # # 'IO::Buffer#set_string': Buffer is not writable! (IO::Buffer::AccessError)
154
161
  #
155
162
  # # create read/write mapping: length 4 bytes, offset 0, flags 0
156
163
  # buffer = IO::Buffer.map(File.open('test.txt', 'r+'), 4, 0)
@@ -349,7 +356,7 @@ class IO
349
356
  # - get_string([offset, [length, [encoding]]]) -> string
350
357
  # -->
351
358
  # Read a chunk or all of the buffer into a string, in the specified `encoding`.
352
- # If no encoding is provided `Encoding::BINARY` is used.
359
+ # If no encoding is provided <code>Encoding::BINARY</code> is used.
353
360
  #
354
361
  # buffer = IO::Buffer.for('test')
355
362
  # buffer.get_string
@@ -368,28 +375,32 @@ class IO
368
375
  # Read from buffer a value of `type` at `offset`. `buffer_type` should be one of
369
376
  # symbols:
370
377
  #
371
- # * `:U8`: unsigned integer, 1 byte
372
- # * `:S8`: signed integer, 1 byte
373
- # * `:u16`: unsigned integer, 2 bytes, little-endian
374
- # * `:U16`: unsigned integer, 2 bytes, big-endian
375
- # * `:s16`: signed integer, 2 bytes, little-endian
376
- # * `:S16`: signed integer, 2 bytes, big-endian
377
- # * `:u32`: unsigned integer, 4 bytes, little-endian
378
- # * `:U32`: unsigned integer, 4 bytes, big-endian
379
- # * `:s32`: signed integer, 4 bytes, little-endian
380
- # * `:S32`: signed integer, 4 bytes, big-endian
381
- # * `:u64`: unsigned integer, 8 bytes, little-endian
382
- # * `:U64`: unsigned integer, 8 bytes, big-endian
383
- # * `:s64`: signed integer, 8 bytes, little-endian
384
- # * `:S64`: signed integer, 8 bytes, big-endian
385
- # * `:f32`: float, 4 bytes, little-endian
386
- # * `:F32`: float, 4 bytes, big-endian
387
- # * `:f64`: double, 8 bytes, little-endian
388
- # * `: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
389
400
  #
390
401
  # A buffer type refers specifically to the type of binary buffer that is stored
391
- # in the buffer. For example, a `:u32` buffer type is a 32-bit unsigned integer
392
- # 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.
393
404
  #
394
405
  # string = [1.5].pack('f')
395
406
  # # => "\x00\x00\xC0?"
@@ -546,7 +557,7 @@ class IO
546
557
  # -->
547
558
  # Read at least `length` bytes from the `io` starting at the specified `from`
548
559
  # position, into the buffer starting at `offset`. If an error occurs, return
549
- # `-errno`.
560
+ # <code>-errno</code>.
550
561
  #
551
562
  # If `length` is not given or `nil`, it defaults to the size of the buffer minus
552
563
  # the offset, i.e. the entire buffer.
@@ -579,7 +590,7 @@ class IO
579
590
  # -->
580
591
  # Write at least `length` bytes from the buffer starting at `offset`, into the
581
592
  # `io` starting at the specified `from` position. If an error occurs, return
582
- # `-errno`.
593
+ # <code>-errno</code>.
583
594
  #
584
595
  # If `length` is not given or `nil`, it defaults to the size of the buffer minus
585
596
  # the offset, i.e. the entire buffer.
@@ -596,7 +607,7 @@ class IO
596
607
  # IO::Buffer.for('1234567').pwrite(out, 2, 3, 1)
597
608
  #
598
609
  # This leads to `234` (3 bytes, starting from position 1) being written into
599
- # `output.txt`, starting from file position 2.
610
+ # <code>output.txt</code>, starting from file position 2.
600
611
  #
601
612
  def pwrite: (untyped, untyped, untyped) -> untyped
602
613
 
@@ -605,7 +616,7 @@ class IO
605
616
  # - read(io, [length, [offset]]) -> read length or -errno
606
617
  # -->
607
618
  # Read at least `length` bytes from the `io`, into the buffer starting at
608
- # `offset`. If an error occurs, return `-errno`.
619
+ # `offset`. If an error occurs, return <code>-errno</code>.
609
620
  #
610
621
  # If `length` is not given or `nil`, it defaults to the size of the buffer minus
611
622
  # the offset, i.e. the entire buffer.
@@ -745,8 +756,8 @@ class IO
745
756
  # minus the specified offset. If the length is negative, it will raise an
746
757
  # ArgumentError.
747
758
  #
748
- # Raises RuntimeError if the `offset+length` is out of the current buffer's
749
- # bounds.
759
+ # Raises RuntimeError if the <code>offset+length</code> is out of the current
760
+ # buffer's bounds.
750
761
  #
751
762
  # string = 'test'
752
763
  # buffer = IO::Buffer.for(string).dup
@@ -830,7 +841,7 @@ class IO
830
841
  # - write(io, [length, [offset]]) -> written length or -errno
831
842
  # -->
832
843
  # Write at least `length` bytes from the buffer starting at `offset`, into the
833
- # `io`. If an error occurs, return `-errno`.
844
+ # `io`. If an error occurs, return <code>-errno</code>.
834
845
  #
835
846
  # If `length` is not given or `nil`, it defaults to the size of the buffer minus
836
847
  # the offset, i.e. the entire buffer.
@@ -843,7 +854,7 @@ class IO
843
854
  # out = File.open('output.txt', 'wb')
844
855
  # IO::Buffer.for('1234567').write(out, 3)
845
856
  #
846
- # This leads to `123` being written into `output.txt`
857
+ # This leads to `123` being written into <code>output.txt</code>
847
858
  #
848
859
  def write: (untyped, untyped) -> untyped
849
860
 
data/core/io/wait.rbs CHANGED
@@ -1,42 +1,24 @@
1
1
  %a{annotate:rdoc:skip}
2
2
  class IO
3
3
  # <!--
4
- # rdoc-file=ext/io/wait/wait.c
5
- # - io.nread -> int
6
- # -->
7
- # Returns number of bytes that can be read without blocking. Returns zero if no
8
- # information available.
9
- #
10
- # You must require 'io/wait' to use this method.
11
- #
12
- def nread: () -> Integer
13
-
14
- # <!--
15
- # rdoc-file=ext/io/wait/wait.c
16
- # - io.ready? -> truthy or falsy
17
- # -->
18
- # Returns a truthy value if input available without blocking, or a falsy value.
19
- #
20
- # You must require 'io/wait' to use this method.
21
- #
22
- def ready?: () -> boolish
23
-
24
- # <!--
25
- # rdoc-file=ext/io/wait/wait.c
4
+ # rdoc-file=io.c
26
5
  # - io.wait(events, timeout) -> event mask, false or nil
27
- # - io.wait(timeout = nil, mode = :read) -> self, true, or false
6
+ # - io.wait(*event_symbols[, timeout]) -> self, true, or false
28
7
  # -->
29
8
  # Waits until the IO becomes ready for the specified events and returns the
30
9
  # subset of events that become ready, or a falsy value when times out.
31
10
  #
32
- # The events can be a bit mask of `IO::READABLE`, `IO::WRITABLE` or
33
- # `IO::PRIORITY`.
34
- #
35
- # Returns a truthy value immediately when buffered data is available.
11
+ # The events can be a bit mask of <code>IO::READABLE</code>,
12
+ # <code>IO::WRITABLE</code> or <code>IO::PRIORITY</code>.
36
13
  #
37
- # Optional parameter `mode` is one of `:read`, `:write`, or `:read_write`.
14
+ # Returns an event mask (truthy value) immediately when buffered data is
15
+ # available.
38
16
  #
39
- # You must require 'io/wait' to use this method.
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.
40
22
  #
41
23
  def wait: (Integer events, ?Time::_Timeout timeout) -> (Integer | false | nil)
42
24
  | (?Time::_Timeout? timeout, *wait_mode mode) -> (self | true | false)
@@ -44,7 +26,7 @@ class IO
44
26
  type wait_mode = :read | :r | :readable | :write | :w | :writable | :read_write | :rw | :readable_writable
45
27
 
46
28
  # <!--
47
- # rdoc-file=ext/io/wait/wait.c
29
+ # rdoc-file=io.c
48
30
  # - io.wait_readable -> truthy or falsy
49
31
  # - io.wait_readable(timeout) -> truthy or falsy
50
32
  # -->
@@ -52,19 +34,15 @@ class IO
52
34
  # times out. Returns a truthy value immediately when buffered data is
53
35
  # available.
54
36
  #
55
- # You must require 'io/wait' to use this method.
56
- #
57
37
  def wait_readable: (?Time::_Timeout? timeout) -> boolish
58
38
 
59
39
  # <!--
60
- # rdoc-file=ext/io/wait/wait.c
40
+ # rdoc-file=io.c
61
41
  # - io.wait_writable -> truthy or falsy
62
42
  # - io.wait_writable(timeout) -> truthy or falsy
63
43
  # -->
64
44
  # Waits until IO is writable and returns a truthy value or a falsy value when
65
45
  # times out.
66
46
  #
67
- # You must require 'io/wait' to use this method.
68
- #
69
47
  def wait_writable: (?Time::_Timeout? timeout) -> boolish
70
48
  end