rbs 4.0.0.dev.5 → 4.0.1.dev.1

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 (194) hide show
  1. checksums.yaml +4 -4
  2. data/.clang-format +1 -0
  3. data/.github/workflows/c-check.yml +8 -4
  4. data/.github/workflows/comments.yml +3 -1
  5. data/.github/workflows/dependabot.yml +1 -1
  6. data/.github/workflows/ruby.yml +10 -0
  7. data/.github/workflows/rust.yml +95 -0
  8. data/CHANGELOG.md +323 -0
  9. data/Rakefile +12 -29
  10. data/Steepfile +1 -0
  11. data/config.yml +393 -37
  12. data/core/array.rbs +218 -188
  13. data/core/basic_object.rbs +9 -8
  14. data/core/class.rbs +6 -5
  15. data/core/comparable.rbs +45 -31
  16. data/core/complex.rbs +52 -40
  17. data/core/dir.rbs +57 -45
  18. data/core/encoding.rbs +5 -5
  19. data/core/enumerable.rbs +96 -91
  20. data/core/enumerator.rbs +4 -3
  21. data/core/errno.rbs +3 -2
  22. data/core/errors.rbs +31 -29
  23. data/core/exception.rbs +12 -12
  24. data/core/fiber.rbs +36 -36
  25. data/core/file.rbs +186 -113
  26. data/core/file_test.rbs +2 -2
  27. data/core/float.rbs +41 -32
  28. data/core/gc.rbs +78 -70
  29. data/core/hash.rbs +70 -60
  30. data/core/integer.rbs +32 -28
  31. data/core/io/buffer.rbs +36 -36
  32. data/core/io/wait.rbs +7 -7
  33. data/core/io.rbs +120 -135
  34. data/core/kernel.rbs +189 -139
  35. data/core/marshal.rbs +3 -3
  36. data/core/match_data.rbs +14 -12
  37. data/core/math.rbs +69 -67
  38. data/core/method.rbs +6 -6
  39. data/core/module.rbs +146 -85
  40. data/core/nil_class.rbs +4 -3
  41. data/core/numeric.rbs +35 -32
  42. data/core/object.rbs +6 -8
  43. data/core/object_space.rbs +11 -10
  44. data/core/pathname.rbs +131 -81
  45. data/core/proc.rbs +65 -33
  46. data/core/process.rbs +219 -201
  47. data/core/ractor.rbs +15 -11
  48. data/core/random.rbs +4 -3
  49. data/core/range.rbs +52 -47
  50. data/core/rational.rbs +5 -5
  51. data/core/rbs/unnamed/argf.rbs +58 -51
  52. data/core/rbs/unnamed/env_class.rbs +18 -13
  53. data/core/rbs/unnamed/main_class.rbs +123 -0
  54. data/core/rbs/unnamed/random.rbs +7 -5
  55. data/core/regexp.rbs +236 -197
  56. data/core/ruby.rbs +1 -1
  57. data/core/ruby_vm.rbs +32 -30
  58. data/core/rubygems/config_file.rbs +5 -5
  59. data/core/rubygems/errors.rbs +1 -1
  60. data/core/rubygems/requirement.rbs +5 -5
  61. data/core/rubygems/rubygems.rbs +5 -3
  62. data/core/set.rbs +17 -16
  63. data/core/signal.rbs +2 -2
  64. data/core/string.rbs +311 -292
  65. data/core/struct.rbs +26 -25
  66. data/core/symbol.rbs +25 -24
  67. data/core/thread.rbs +40 -34
  68. data/core/time.rbs +47 -42
  69. data/core/trace_point.rbs +34 -31
  70. data/core/true_class.rbs +2 -2
  71. data/core/unbound_method.rbs +10 -10
  72. data/core/warning.rbs +7 -7
  73. data/docs/collection.md +1 -1
  74. data/docs/config.md +171 -0
  75. data/docs/inline.md +110 -4
  76. data/docs/syntax.md +13 -12
  77. data/ext/rbs_extension/ast_translation.c +489 -135
  78. data/ext/rbs_extension/class_constants.c +8 -0
  79. data/ext/rbs_extension/class_constants.h +4 -0
  80. data/ext/rbs_extension/legacy_location.c +28 -51
  81. data/ext/rbs_extension/legacy_location.h +37 -0
  82. data/ext/rbs_extension/main.c +12 -20
  83. data/include/rbs/ast.h +423 -195
  84. data/include/rbs/lexer.h +2 -2
  85. data/include/rbs/location.h +25 -44
  86. data/include/rbs/parser.h +2 -2
  87. data/include/rbs/util/rbs_constant_pool.h +0 -3
  88. data/include/rbs.h +8 -0
  89. data/lib/rbs/ast/ruby/annotations.rb +157 -4
  90. data/lib/rbs/ast/ruby/members.rb +374 -22
  91. data/lib/rbs/cli/validate.rb +5 -60
  92. data/lib/rbs/collection/config/lockfile_generator.rb +6 -2
  93. data/lib/rbs/definition_builder.rb +60 -27
  94. data/lib/rbs/errors.rb +0 -11
  95. data/lib/rbs/inline_parser.rb +1 -1
  96. data/lib/rbs/parser_aux.rb +20 -7
  97. data/lib/rbs/prototype/helpers.rb +57 -0
  98. data/lib/rbs/prototype/rb.rb +1 -26
  99. data/lib/rbs/prototype/rbi.rb +1 -20
  100. data/lib/rbs/test/type_check.rb +3 -0
  101. data/lib/rbs/types.rb +62 -52
  102. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  103. data/lib/rbs/version.rb +1 -1
  104. data/lib/rbs.rb +0 -1
  105. data/rbs.gemspec +1 -1
  106. data/rust/.gitignore +1 -0
  107. data/rust/Cargo.lock +378 -0
  108. data/rust/Cargo.toml +7 -0
  109. data/rust/ruby-rbs/Cargo.toml +22 -0
  110. data/rust/ruby-rbs/build.rs +764 -0
  111. data/rust/ruby-rbs/examples/locations.rs +60 -0
  112. data/rust/ruby-rbs/src/lib.rs +1 -0
  113. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  114. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  115. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  116. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  117. data/rust/ruby-rbs-sys/build.rs +204 -0
  118. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  119. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  120. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  121. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  122. data/sig/ast/ruby/annotations.rbs +191 -4
  123. data/sig/ast/ruby/members.rbs +21 -1
  124. data/sig/cli/validate.rbs +1 -6
  125. data/sig/definition_builder.rbs +2 -0
  126. data/sig/errors.rbs +0 -8
  127. data/sig/method_types.rbs +1 -1
  128. data/sig/parser.rbs +17 -13
  129. data/sig/prototype/helpers.rbs +2 -0
  130. data/sig/types.rbs +10 -11
  131. data/sig/unit_test/spy.rbs +0 -8
  132. data/sig/unit_test/type_assertions.rbs +11 -0
  133. data/src/ast.c +339 -161
  134. data/src/lexstate.c +1 -1
  135. data/src/location.c +7 -47
  136. data/src/parser.c +674 -480
  137. data/src/util/rbs_constant_pool.c +0 -4
  138. data/stdlib/bigdecimal/0/big_decimal.rbs +16 -16
  139. data/stdlib/cgi-escape/0/escape.rbs +4 -4
  140. data/stdlib/coverage/0/coverage.rbs +4 -3
  141. data/stdlib/date/0/date.rbs +33 -28
  142. data/stdlib/date/0/date_time.rbs +24 -23
  143. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  144. data/stdlib/erb/0/erb.rbs +64 -53
  145. data/stdlib/etc/0/etc.rbs +55 -50
  146. data/stdlib/fileutils/0/fileutils.rbs +138 -125
  147. data/stdlib/forwardable/0/forwardable.rbs +10 -10
  148. data/stdlib/io-console/0/io-console.rbs +2 -2
  149. data/stdlib/json/0/json.rbs +135 -108
  150. data/stdlib/monitor/0/monitor.rbs +3 -3
  151. data/stdlib/net-http/0/net-http.rbs +159 -134
  152. data/stdlib/objspace/0/objspace.rbs +8 -7
  153. data/stdlib/open-uri/0/open-uri.rbs +8 -8
  154. data/stdlib/open3/0/open3.rbs +36 -35
  155. data/stdlib/openssl/0/openssl.rbs +144 -129
  156. data/stdlib/optparse/0/optparse.rbs +18 -14
  157. data/stdlib/pathname/0/pathname.rbs +2 -2
  158. data/stdlib/pp/0/pp.rbs +9 -8
  159. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  160. data/stdlib/pstore/0/pstore.rbs +35 -30
  161. data/stdlib/psych/0/psych.rbs +61 -8
  162. data/stdlib/psych/0/store.rbs +2 -4
  163. data/stdlib/pty/0/pty.rbs +9 -6
  164. data/stdlib/random-formatter/0/random-formatter.rbs +2 -2
  165. data/stdlib/ripper/0/ripper.rbs +20 -17
  166. data/stdlib/securerandom/0/securerandom.rbs +1 -1
  167. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  168. data/stdlib/socket/0/addrinfo.rbs +7 -7
  169. data/stdlib/socket/0/basic_socket.rbs +3 -3
  170. data/stdlib/socket/0/ip_socket.rbs +10 -8
  171. data/stdlib/socket/0/socket.rbs +10 -9
  172. data/stdlib/socket/0/tcp_server.rbs +1 -1
  173. data/stdlib/socket/0/tcp_socket.rbs +1 -1
  174. data/stdlib/socket/0/udp_socket.rbs +1 -1
  175. data/stdlib/socket/0/unix_server.rbs +1 -1
  176. data/stdlib/stringio/0/stringio.rbs +55 -54
  177. data/stdlib/strscan/0/string_scanner.rbs +46 -44
  178. data/stdlib/tempfile/0/tempfile.rbs +24 -20
  179. data/stdlib/time/0/time.rbs +7 -5
  180. data/stdlib/tsort/0/tsort.rbs +7 -6
  181. data/stdlib/uri/0/common.rbs +26 -18
  182. data/stdlib/uri/0/file.rbs +2 -2
  183. data/stdlib/uri/0/generic.rbs +2 -2
  184. data/stdlib/uri/0/http.rbs +2 -2
  185. data/stdlib/uri/0/ldap.rbs +2 -2
  186. data/stdlib/uri/0/mailto.rbs +3 -3
  187. data/stdlib/uri/0/rfc2396_parser.rbs +6 -5
  188. data/stdlib/zlib/0/deflate.rbs +4 -3
  189. data/stdlib/zlib/0/gzip_reader.rbs +4 -4
  190. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  191. data/stdlib/zlib/0/inflate.rbs +1 -1
  192. data/stdlib/zlib/0/need_dict.rbs +1 -1
  193. metadata +23 -5
  194. data/.github/workflows/valgrind.yml +0 -42
@@ -107,15 +107,16 @@
107
107
  #
108
108
  # OptionParser comes with a few ready-to-use kinds of type coercion. They are:
109
109
  #
110
- # * Date -- Anything accepted by `Date.parse` (need to require
111
- # `optparse/date`)
112
- # * DateTime -- Anything accepted by `DateTime.parse` (need to require
113
- # `optparse/date`)
114
- # * Time -- Anything accepted by `Time.httpdate` or `Time.parse` (need to
115
- # require `optparse/time`)
116
- # * URI -- Anything accepted by `URI.parse` (need to require `optparse/uri`)
117
- # * Shellwords -- Anything accepted by `Shellwords.shellwords` (need to
118
- # require `optparse/shellwords`)
110
+ # * Date -- Anything accepted by <code>Date.parse</code> (need to require
111
+ # <code>optparse/date</code>)
112
+ # * DateTime -- Anything accepted by <code>DateTime.parse</code> (need to
113
+ # require <code>optparse/date</code>)
114
+ # * Time -- Anything accepted by <code>Time.httpdate</code> or
115
+ # <code>Time.parse</code> (need to require <code>optparse/time</code>)
116
+ # * URI -- Anything accepted by <code>URI.parse</code> (need to require
117
+ # <code>optparse/uri</code>)
118
+ # * Shellwords -- Anything accepted by <code>Shellwords.shellwords</code>
119
+ # (need to require <code>optparse/shellwords</code>)
119
120
  # * String -- Any non-empty string
120
121
  # * Integer -- Any integer. Will convert octal. (e.g. 124, -3, 040)
121
122
  # * Float -- Any float. (e.g. 10, 3.14, -100E+13)
@@ -760,8 +761,8 @@ class OptionParser
760
761
  # -->
761
762
  # Parses command line arguments `argv` in order. When a block is given, each
762
763
  # non-option argument is yielded. When optional `into` keyword argument is
763
- # provided, the parsed option values are stored there via `[]=` method (so it
764
- # can be Hash, or OpenStruct, or other similar object).
764
+ # provided, the parsed option values are stored there via <code>[]=</code>
765
+ # method (so it can be Hash, or OpenStruct, or other similar object).
765
766
  #
766
767
  # Returns the rest of `argv` left unparsed.
767
768
  #
@@ -784,7 +785,8 @@ class OptionParser
784
785
  # Parses command line arguments `argv` in order when environment variable
785
786
  # POSIXLY_CORRECT is set, and in permutation mode otherwise. When optional
786
787
  # `into` keyword argument is provided, the parsed option values are stored there
787
- # via `[]=` method (so it can be Hash, or OpenStruct, or other similar object).
788
+ # via <code>[]=</code> method (so it can be Hash, or OpenStruct, or other
789
+ # similar object).
788
790
  #
789
791
  def parse: (*String argv, ?into: _Intoable) -> Array[String]
790
792
  | (Array[String] argv, ?into: _Intoable) -> Array[String]
@@ -804,8 +806,8 @@ class OptionParser
804
806
  # -->
805
807
  # Parses command line arguments `argv` in permutation mode and returns list of
806
808
  # non-option arguments. When optional `into` keyword argument is provided, the
807
- # parsed option values are stored there via `[]=` method (so it can be Hash, or
808
- # OpenStruct, or other similar object).
809
+ # parsed option values are stored there via <code>[]=</code> method (so it can
810
+ # be Hash, or OpenStruct, or other similar object).
809
811
  #
810
812
  def permute: (*String argv, ?into: _Intoable) -> Array[String]
811
813
  | (Array[String] argv, ?into: _Intoable) -> Array[String]
@@ -876,10 +878,12 @@ class OptionParser
876
878
  #
877
879
  def separator: (String string) -> void
878
880
 
881
+ # <!-- rdoc-file=lib/optparse.rb -->
879
882
  # Heading banner preceding summary.
880
883
  #
881
884
  alias set_banner banner=
882
885
 
886
+ # <!-- rdoc-file=lib/optparse.rb -->
883
887
  # Program name to be emitted in error message and default banner, defaults to
884
888
  # $0.
885
889
  #
@@ -14,8 +14,8 @@ class Pathname
14
14
  # Since it is implemented by the standard library module Find, Find.prune can be
15
15
  # used to control the traversal.
16
16
  #
17
- # If `self` is `.`, yielded pathnames begin with a filename in the current
18
- # directory, not `./`.
17
+ # If `self` is <code>.</code>, yielded pathnames begin with a filename in the
18
+ # current directory, not <code>./</code>.
19
19
  #
20
20
  # See Find.find
21
21
  #
data/stdlib/pp/0/pp.rbs CHANGED
@@ -31,18 +31,19 @@
31
31
  # pp(obj1, obj2, ...) #=> [obj1, obj2, ...]
32
32
  # pp() #=> nil
33
33
  #
34
- # Output `obj(s)` to `$>` in pretty printed format.
34
+ # Output <code>obj(s)</code> to <code>$></code> in pretty printed format.
35
35
  #
36
- # It returns `obj(s)`.
36
+ # It returns <code>obj(s)</code>.
37
37
  #
38
38
  # ## Output Customization
39
39
  #
40
40
  # To define a customized pretty printing function for your classes, redefine
41
- # method `#pretty_print(pp)` in the class. Note that `require 'pp'` is needed
42
- # before redefining `#pretty_print(pp)`.
41
+ # method <code>#pretty_print(pp)</code> in the class. Note that <code>require
42
+ # 'pp'</code> is needed before redefining <code>#pretty_print(pp)</code>.
43
43
  #
44
- # `#pretty_print` takes the `pp` argument, which is an instance of the PP class.
45
- # The method uses #text, #breakable, #nest, #group and #pp to print the object.
44
+ # <code>#pretty_print</code> takes the `pp` argument, which is an instance of
45
+ # the PP class. The method uses #text, #breakable, #nest, #group and #pp to
46
+ # print the object.
46
47
  #
47
48
  # ## Pretty-Print JSON
48
49
  #
@@ -237,8 +238,8 @@ class PP < PrettyPrint
237
238
  # -->
238
239
  # Outputs `obj` to `out` in pretty printed format of `width` columns in width.
239
240
  #
240
- # If `out` is omitted, `$>` is assumed. If `width` is omitted, the width of
241
- # `out` is assumed (see width_for).
241
+ # If `out` is omitted, <code>$></code> is assumed. If `width` is omitted, the
242
+ # width of `out` is assumed (see width_for).
242
243
  #
243
244
  # PP.pp returns `out`.
244
245
  #
@@ -196,8 +196,8 @@ class PrettyPrint
196
196
  #
197
197
  # If `sep` is not specified, " " is used.
198
198
  #
199
- # If `width` is not specified, `sep.length` is used. You will have to specify
200
- # this when `sep` is a multibyte character, for example.
199
+ # If `width` is not specified, <code>sep.length</code> is used. You will have to
200
+ # specify this when `sep` is a multibyte character, for example.
201
201
  #
202
202
  def fill_breakable: (?String sep, ?Integer width) -> void
203
203
 
@@ -210,8 +210,8 @@ class PrettyPrint
210
210
  #
211
211
  # If `sep` is not specified, " " is used.
212
212
  #
213
- # If `width` is not specified, `sep.length` is used. You will have to specify
214
- # this when `sep` is a multibyte character, for example.
213
+ # If `width` is not specified, <code>sep.length</code> is used. You will have to
214
+ # specify this when `sep` is a multibyte character, for example.
215
215
  #
216
216
  def breakable: (?String sep, ?Integer width) -> void
217
217
 
@@ -225,9 +225,9 @@ class PrettyPrint
225
225
  # If `indent` is specified, the method call is regarded as nested by
226
226
  # nest(indent) { ... }.
227
227
  #
228
- # If `open_obj` is specified, `text open_obj, open_width` is called before
229
- # grouping. If `close_obj` is specified, `text close_obj, close_width` is called
230
- # after grouping.
228
+ # If `open_obj` is specified, <code>text open_obj, open_width</code> is called
229
+ # before grouping. If `close_obj` is specified, <code>text close_obj,
230
+ # close_width</code> is called after grouping.
231
231
  #
232
232
  def group: (?::Integer indent, ?::String open_obj, ?::String close_obj, ?Integer open_width, ?Integer close_width) { () -> untyped } -> Integer
233
233
 
@@ -299,7 +299,7 @@
299
299
  # end
300
300
  # end
301
301
  #
302
- class PStore
302
+ class PStore[unchecked out K = untyped, unchecked out V = untyped]
303
303
  # <!--
304
304
  # rdoc-file=lib/pstore.rb
305
305
  # - [](key)
@@ -320,7 +320,7 @@ class PStore
320
320
  #
321
321
  # Raises an exception if called outside a transaction block.
322
322
  #
323
- def []: (untyped name) -> untyped
323
+ def []: (K name) -> V?
324
324
 
325
325
  # <!--
326
326
  # rdoc-file=lib/pstore.rb
@@ -338,7 +338,7 @@ class PStore
338
338
  #
339
339
  # Raises an exception if called outside a transaction block.
340
340
  #
341
- def []=: (untyped name, untyped value) -> untyped
341
+ def []=: (K name, V value) -> V
342
342
 
343
343
  # <!--
344
344
  # rdoc-file=lib/pstore.rb
@@ -349,7 +349,7 @@ class PStore
349
349
  #
350
350
  # Raises an exception if called outside a transaction block.
351
351
  #
352
- def abort: () -> untyped
352
+ def abort: () -> void
353
353
 
354
354
  # <!--
355
355
  # rdoc-file=lib/pstore.rb
@@ -360,7 +360,7 @@ class PStore
360
360
  #
361
361
  # Raises an exception if called outside a transaction block.
362
362
  #
363
- def commit: () -> nil
363
+ def commit: () -> void
364
364
 
365
365
  # <!--
366
366
  # rdoc-file=lib/pstore.rb
@@ -379,7 +379,7 @@ class PStore
379
379
  #
380
380
  # Raises an exception if called outside a transaction block.
381
381
  #
382
- def delete: (untyped name) -> untyped
382
+ def delete: (K name) -> V?
383
383
 
384
384
  # <!--
385
385
  # rdoc-file=lib/pstore.rb
@@ -400,7 +400,7 @@ class PStore
400
400
  #
401
401
  # Raises an exception if called outside a transaction block.
402
402
  #
403
- def fetch: (untyped name, ?untyped default) -> untyped
403
+ def fetch: (K name, ?V default) -> V
404
404
 
405
405
  # <!--
406
406
  # rdoc-file=lib/pstore.rb
@@ -410,21 +410,25 @@ class PStore
410
410
  #
411
411
  # store.path # => "flat.store"
412
412
  #
413
- def path: () -> untyped
413
+ def path: () -> String
414
414
 
415
415
  # <!--
416
416
  # rdoc-file=lib/pstore.rb
417
417
  # - root?(key)
418
418
  # -->
419
419
  #
420
- def root?: (untyped name) -> bool
420
+ def key?: (K name) -> bool
421
+
422
+ alias root? key?
421
423
 
422
424
  # <!--
423
425
  # rdoc-file=lib/pstore.rb
424
426
  # - roots()
425
427
  # -->
426
428
  #
427
- def roots: () -> Array[untyped]
429
+ def keys: () -> Array[K]
430
+
431
+ alias roots keys
428
432
 
429
433
  # <!--
430
434
  # rdoc-file=lib/pstore.rb
@@ -441,7 +445,7 @@ class PStore
441
445
  #
442
446
  # Raises an exception if called within a transaction block.
443
447
  #
444
- def transaction: (?untyped read_only) -> untyped
448
+ def transaction: [U] (?bool read_only) { (self) -> U } -> U
445
449
 
446
450
  # <!-- rdoc-file=lib/pstore.rb -->
447
451
  # Whether PStore should do its best to prevent file corruptions, even when an
@@ -458,7 +462,7 @@ class PStore
458
462
  # raises no unexpected I/O error; if such an error occurs during a write to
459
463
  # the store, the file may become corrupted.
460
464
  #
461
- def ultra_safe: () -> untyped
465
+ def ultra_safe: () -> bool
462
466
 
463
467
  # <!-- rdoc-file=lib/pstore.rb -->
464
468
  # Whether PStore should do its best to prevent file corruptions, even when an
@@ -475,7 +479,7 @@ class PStore
475
479
  # raises no unexpected I/O error; if such an error occurs during a write to
476
480
  # the store, the file may become corrupted.
477
481
  #
478
- def ultra_safe=: (untyped) -> untyped
482
+ def ultra_safe=: (bool) -> bool
479
483
 
480
484
  private
481
485
 
@@ -486,14 +490,14 @@ class PStore
486
490
  # - empty_marshal_checksum()
487
491
  # -->
488
492
  #
489
- def empty_marshal_checksum: () -> untyped
493
+ def empty_marshal_checksum: () -> String
490
494
 
491
495
  # <!--
492
496
  # rdoc-file=lib/pstore.rb
493
497
  # - empty_marshal_data()
494
498
  # -->
495
499
  #
496
- def empty_marshal_data: () -> untyped
500
+ def empty_marshal_data: () -> String
497
501
 
498
502
  # <!--
499
503
  # rdoc-file=lib/pstore.rb
@@ -501,7 +505,7 @@ class PStore
501
505
  # -->
502
506
  # Raises PStore::Error if the calling code is not in a PStore#transaction.
503
507
  #
504
- def in_transaction: () -> untyped
508
+ def in_transaction: () -> void
505
509
 
506
510
  # <!--
507
511
  # rdoc-file=lib/pstore.rb
@@ -510,7 +514,7 @@ class PStore
510
514
  # Raises PStore::Error if the calling code is not in a PStore#transaction or if
511
515
  # the code is in a read-only PStore#transaction.
512
516
  #
513
- def in_transaction_wr: () -> untyped
517
+ def in_transaction_wr: () -> void
514
518
 
515
519
  # <!--
516
520
  # rdoc-file=lib/pstore.rb
@@ -531,7 +535,7 @@ class PStore
531
535
  #
532
536
  # store = PStore.new(path, true)
533
537
  #
534
- def initialize: (untyped file, ?boolish thread_safe) -> untyped
538
+ def initialize: (path file, ?boolish thread_safe) -> void
535
539
 
536
540
  def load: (untyped content) -> untyped
537
541
 
@@ -543,7 +547,8 @@ class PStore
543
547
  # be returned. If `read_only` is false, a 3-tuple will be returned: the
544
548
  # unmarshalled Hash, a checksum of the data, and the size of the data.
545
549
  #
546
- def load_data: (untyped file, untyped read_only) -> untyped
550
+ def load_data: (path file, true read_only) -> Hash[untyped, untyped]
551
+ | (path file, false read_only) -> [Hash[untyped, untyped], String, Integer]
547
552
 
548
553
  # <!--
549
554
  # rdoc-file=lib/pstore.rb
@@ -564,7 +569,7 @@ class PStore
564
569
  #
565
570
  # All exceptions are propagated.
566
571
  #
567
- def open_and_lock_file: (untyped filename, untyped read_only) -> untyped
572
+ def open_and_lock_file: (string filename, bool read_only) -> File?
568
573
 
569
574
  # <!--
570
575
  # rdoc-file=lib/pstore.rb
@@ -578,26 +583,26 @@ class PStore
578
583
  # - save_data_with_atomic_file_rename_strategy(data, file)
579
584
  # -->
580
585
  #
581
- def save_data_with_atomic_file_rename_strategy: (untyped data, untyped file) -> untyped
586
+ def save_data_with_atomic_file_rename_strategy: (string data, File file) -> void
582
587
 
583
588
  # <!--
584
589
  # rdoc-file=lib/pstore.rb
585
590
  # - save_data_with_fast_strategy(data, file)
586
591
  # -->
587
592
  #
588
- def save_data_with_fast_strategy: (untyped data, untyped file) -> untyped
589
- end
593
+ def save_data_with_fast_strategy: (string data, File file) -> void
590
594
 
591
- PStore::EMPTY_MARSHAL_CHECKSUM: String
595
+ EMPTY_MARSHAL_CHECKSUM: String
592
596
 
593
- PStore::EMPTY_MARSHAL_DATA: String
597
+ EMPTY_MARSHAL_DATA: String
594
598
 
595
- PStore::EMPTY_STRING: String
599
+ EMPTY_STRING: String
596
600
 
597
- PStore::RDWR_ACCESS: Hash[untyped, untyped]
601
+ RDWR_ACCESS: { mode: Integer, encoding: Encoding }
598
602
 
599
- PStore::RD_ACCESS: Hash[untyped, untyped]
603
+ RD_ACCESS: { mode: Integer, encoding: Encoding }
600
604
 
601
- PStore::VERSION: String
605
+ VERSION: String
602
606
 
603
- PStore::WR_ACCESS: Hash[untyped, untyped]
607
+ WR_ACCESS: { mode: Integer, encoding: Encoding }
608
+ end
@@ -214,29 +214,30 @@ module Psych
214
214
  #
215
215
  # Currently supported options are:
216
216
  #
217
- # `:indentation`
217
+ # <code>:indentation</code>
218
218
  # : Number of space characters used to indent. Acceptable value should be in
219
- # `0..9` range, otherwise option is ignored.
219
+ # <code>0..9</code> range, otherwise option is ignored.
220
220
  #
221
221
  # Default: `2`.
222
222
  #
223
- # `:line_width`
224
- # : Max character to wrap line at. For unlimited line width use `-1`.
223
+ # <code>:line_width</code>
224
+ # : Max character to wrap line at. For unlimited line width use
225
+ # <code>-1</code>.
225
226
  #
226
227
  # Default: `0` (meaning "wrap at 81").
227
228
  #
228
- # `:canonical`
229
+ # <code>:canonical</code>
229
230
  # : Write "canonical" YAML form (very verbose, yet strictly formal).
230
231
  #
231
232
  # Default: `false`.
232
233
  #
233
- # `:header`
234
- # : Write `%YAML [version]` at the beginning of document.
234
+ # <code>:header</code>
235
+ # : Write <code>%YAML [version]</code> at the beginning of document.
235
236
  #
236
237
  # Default: `false`.
237
238
  #
238
239
  #
239
- # `:stringify_names`
240
+ # <code>:stringify_names</code>
240
241
  # : Dump symbol keys in Hash objects as string.
241
242
  #
242
243
  # Default: `false`.
@@ -399,4 +400,56 @@ module Psych
399
400
  #
400
401
  %a{annotate:rdoc:copy:Psych.unsafe_load}
401
402
  def self.unsafe_load: (String yaml, ?filename: String | _ToStr | _ToS?, ?fallback: untyped, ?symbolize_names: bool, ?freeze: bool, ?strict_integer: bool) -> untyped
403
+
404
+ # <!--
405
+ # rdoc-file=ext/psych/lib/psych.rb
406
+ # - safe_load_file(filename, **kwargs)
407
+ # -->
408
+ # Safely loads the document contained in `filename`. Returns the yaml contained
409
+ # in `filename` as a Ruby object, or if the file is empty, it returns the
410
+ # specified `fallback` return value, which defaults to `nil`. See safe_load for
411
+ # options.
412
+ #
413
+ %a{annotate:rdoc:copy:Psych.safe_load_file}
414
+ def self.safe_load_file: (path, ?permitted_classes: Array[Class], ?permitted_symbols: Array[Symbol], ?aliases: bool, ?fallback: untyped, ?symbolize_names: bool, ?freeze: bool) -> untyped
415
+
416
+ # <!--
417
+ # rdoc-file=ext/psych/lib/psych.rb
418
+ # - unsafe_load_file(filename, **kwargs)
419
+ # -->
420
+ # Load the document contained in `filename`. Returns the yaml contained in
421
+ # `filename` as a Ruby object, or if the file is empty, it returns the specified
422
+ # `fallback` return value, which defaults to `false`.
423
+ #
424
+ # NOTE: This method *should not* be used to parse untrusted documents, such as
425
+ # YAML documents that are supplied via user input. Instead, please use the
426
+ # safe_load_file method.
427
+ #
428
+ %a{annotate:rdoc:copy:Psych.unsafe_load_file}
429
+ def self.unsafe_load_file: (path, ?fallback: untyped, ?symbolize_names: bool, ?freeze: bool) -> untyped
430
+
431
+ class Exception < ::RuntimeError
432
+ end
433
+
434
+ class SyntaxError < ::Psych::Exception
435
+ attr_reader file: String?
436
+ attr_reader line: Integer?
437
+ attr_reader column: Integer?
438
+ attr_reader offset: Integer?
439
+ attr_reader problem: String?
440
+ attr_reader context: String?
441
+
442
+ # <!--
443
+ # rdoc-file=ext/psych/lib/psych/syntax_error.rb
444
+ # - new(file, line, col, offset, problem, context)
445
+ # -->
446
+ #
447
+ def initialize: (?String? file, ?Integer? line, ?Integer? column, ?Integer? offset, ?String? problem, ?String? context) -> void
448
+ end
449
+
450
+ class BadAlias < ::Psych::Exception
451
+ end
452
+
453
+ class DisallowedClass < ::Psych::Exception
454
+ end
402
455
  end
@@ -30,7 +30,7 @@
30
30
  # greeting:
31
31
  # hello: world
32
32
  #
33
- class Psych::Store < ::PStore
33
+ class Psych::Store < ::PStore[string, untyped]
34
34
  # <!--
35
35
  # rdoc-file=lib/yaml/store.rb
36
36
  # - initialize( file_name, yaml_opts = {} )
@@ -45,8 +45,6 @@ class Psych::Store < ::PStore
45
45
  # Options passed in through `yaml_opts` will be used when converting the store
46
46
  # to YAML via Hash#to_yaml().
47
47
  #
48
- def initialize: (*untyped o) -> void
49
-
50
48
  def dump: (untyped table) -> String
51
49
 
52
50
  def empty_marshal_checksum: () -> String
@@ -55,5 +53,5 @@ class Psych::Store < ::PStore
55
53
 
56
54
  def load: (String) -> untyped
57
55
 
58
- def marshal_dump_supports_canonical_option?: () -> ::FalseClass
56
+ def marshal_dump_supports_canonical_option?: () -> bool
59
57
  end
data/stdlib/pty/0/pty.rbs CHANGED
@@ -103,7 +103,8 @@ module PTY
103
103
  #
104
104
  # ### Return values
105
105
  #
106
- # In the non-block form this returns an array of size three, `[r, w, pid]`.
106
+ # In the non-block form this returns an array of size three, <code>[r, w,
107
+ # pid]</code>.
107
108
  #
108
109
  # In the block form these same values will be yielded to the block:
109
110
  #
@@ -136,8 +137,8 @@ module PTY
136
137
  # -->
137
138
  # Allocates a pty (pseudo-terminal).
138
139
  #
139
- # In the block form, yields an array of two elements (`master_io, slave_file`)
140
- # and the value of the block is returned from `open`.
140
+ # In the block form, yields an array of two elements (<code>master_io,
141
+ # slave_file</code>) and the value of the block is returned from `open`.
141
142
  #
142
143
  # The IO and File are both closed after the block completes if they haven't been
143
144
  # already closed.
@@ -148,7 +149,8 @@ module PTY
148
149
  # p slave.path #=> "/dev/pts/1"
149
150
  # }
150
151
  #
151
- # In the non-block form, returns a two element array, `[master_io, slave_file]`.
152
+ # In the non-block form, returns a two element array, <code>[master_io,
153
+ # slave_file]</code>.
152
154
  #
153
155
  # master, slave = PTY.open
154
156
  # # do something with master for IO, or the slave file
@@ -160,7 +162,7 @@ module PTY
160
162
  #
161
163
  # `slave_file`
162
164
  # : the slave of the pty, as a File. The path to the terminal device is
163
- # available via `slave_file.path`
165
+ # available via <code>slave_file.path</code>
164
166
  #
165
167
  #
166
168
  # IO#raw! is usable to disable newline conversions:
@@ -208,7 +210,8 @@ module PTY
208
210
  #
209
211
  # ### Return values
210
212
  #
211
- # In the non-block form this returns an array of size three, `[r, w, pid]`.
213
+ # In the non-block form this returns an array of size three, <code>[r, w,
214
+ # pid]</code>.
212
215
  #
213
216
  # In the block form these same values will be yielded to the block:
214
217
  #
@@ -180,8 +180,8 @@ module RBS
180
180
  # create UUIDs that are time-ordered with sub-millisecond precision, up to 12
181
181
  # bits of additional timestamp may added with `extra_timestamp_bits`. The extra
182
182
  # timestamp precision comes at the expense of random bits. Setting
183
- # `extra_timestamp_bits: 12` provides ~244ns of precision, but only 62 random
184
- # bits (7.75 random bytes).
183
+ # <code>extra_timestamp_bits: 12</code> provides ~244ns of precision, but only
184
+ # 62 random bits (7.75 random bytes).
185
185
  #
186
186
  # prng = Random.new
187
187
  # Array.new(4) { prng.uuid_v7(extra_timestamp_bits: 12) }
@@ -31,23 +31,26 @@
31
31
  # nil,
32
32
  # nil]]]]
33
33
  #
34
- # You can see in the example above, the expression starts with `:program`.
34
+ # You can see in the example above, the expression starts with
35
+ # <code>:program</code>.
35
36
  #
36
- # From here, a method definition at `:def`, followed by the method's identifier
37
- # `:@ident`. After the method's identifier comes the parentheses `:paren` and
38
- # the method parameters under `:params`.
37
+ # From here, a method definition at <code>:def</code>, followed by the method's
38
+ # identifier <code>:@ident</code>. After the method's identifier comes the
39
+ # parentheses <code>:paren</code> and the method parameters under
40
+ # <code>:params</code>.
39
41
  #
40
- # Next is the method body, starting at `:bodystmt` (`stmt` meaning statement),
41
- # which contains the full definition of the method.
42
+ # Next is the method body, starting at <code>:bodystmt</code> (`stmt` meaning
43
+ # statement), which contains the full definition of the method.
42
44
  #
43
45
  # In our case, we're simply returning a String, so next we have the
44
- # `:string_literal` expression.
46
+ # <code>:string_literal</code> expression.
45
47
  #
46
- # Within our `:string_literal` you'll notice two `@tstring_content`, this is the
47
- # literal part for `Hello, ` and `!`. Between the two `@tstring_content`
48
- # statements is a `:string_embexpr`, where *embexpr* is an embedded expression.
49
- # Our expression consists of a local variable, or `var_ref`, with the identifier
50
- # (`@ident`) of `world`.
48
+ # Within our <code>:string_literal</code> you'll notice two
49
+ # <code>@tstring_content</code>, this is the literal part for <code>Hello,
50
+ # </code> and <code>!</code>. Between the two <code>@tstring_content</code>
51
+ # statements is a <code>:string_embexpr</code>, where *embexpr* is an embedded
52
+ # expression. Our expression consists of a local variable, or `var_ref`, with
53
+ # the identifier (<code>@ident</code>) of `world`.
51
54
  #
52
55
  # ## Resources
53
56
  #
@@ -189,7 +192,7 @@ class Ripper
189
192
  # - state()
190
193
  # -->
191
194
  # The scanner's state of the current token. This value is the bitwise OR of zero
192
- # or more of the `Ripper::EXPR_*` constants.
195
+ # or more of the <code>Ripper::EXPR_*</code> constants.
193
196
  #
194
197
  def state: () -> Ripper::Lexer::State
195
198
 
@@ -972,10 +975,10 @@ class Ripper
972
975
  # - lex(src, filename = '-', lineno = 1, **kw)
973
976
  # -->
974
977
  # Tokenizes the Ruby program and returns an array of an array, which is
975
- # formatted like `[[lineno, column], type, token, state]`. The `filename`
976
- # argument is mostly ignored. By default, this method does not handle syntax
977
- # errors in `src`, use the `raise_errors` keyword to raise a SyntaxError for an
978
- # error in `src`.
978
+ # formatted like <code>[[lineno, column], type, token, state]</code>. The
979
+ # `filename` argument is mostly ignored. By default, this method does not handle
980
+ # syntax errors in `src`, use the `raise_errors` keyword to raise a SyntaxError
981
+ # for an error in `src`.
979
982
  #
980
983
  # require 'ripper'
981
984
  # require 'pp'
@@ -29,7 +29,7 @@
29
29
  # * uuid
30
30
  #
31
31
  # These methods are usable as class methods of SecureRandom such as
32
- # `SecureRandom.hex`.
32
+ # <code>SecureRandom.hex</code>.
33
33
  #
34
34
  # If a secure random number generator is not available, `NotImplementedError` is
35
35
  # raised.
@@ -4,8 +4,8 @@
4
4
  # This module manipulates strings according to the word parsing rules of the
5
5
  # UNIX Bourne shell.
6
6
  #
7
- # The `shellwords()` function was originally a port of shellwords.pl, but
8
- # modified to conform to [the Shell & Utilities volume of the IEEE Std
7
+ # The <code>shellwords()</code> function was originally a port of shellwords.pl,
8
+ # but modified to conform to [the Shell & Utilities volume of the IEEE Std
9
9
  # 1003.1-2008, 2016
10
10
  # Edition](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.ht
11
11
  # ml)
@@ -634,13 +634,13 @@ class Addrinfo
634
634
  # sockaddr as generated by Socket.sockaddr_in or Socket.unpack_sockaddr_un.
635
635
  #
636
636
  # sockaddr examples:
637
- # * `["AF_INET", 46102, "localhost.localdomain", "127.0.0.1"]`
638
- # * `["AF_INET6", 42304, "ip6-localhost", "::1"]`
639
- # * `["AF_UNIX", "/tmp/sock"]`
640
- # * `Socket.sockaddr_in("smtp", "2001:DB8::1")`
641
- # * `Socket.sockaddr_in(80, "172.18.22.42")`
642
- # * `Socket.sockaddr_in(80, "www.ruby-lang.org")`
643
- # * `Socket.sockaddr_un("/tmp/sock")`
637
+ # * <code>["AF_INET", 46102, "localhost.localdomain", "127.0.0.1"]</code>
638
+ # * <code>["AF_INET6", 42304, "ip6-localhost", "::1"]</code>
639
+ # * <code>["AF_UNIX", "/tmp/sock"]</code>
640
+ # * <code>Socket.sockaddr_in("smtp", "2001:DB8::1")</code>
641
+ # * <code>Socket.sockaddr_in(80, "172.18.22.42")</code>
642
+ # * <code>Socket.sockaddr_in(80, "www.ruby-lang.org")</code>
643
+ # * <code>Socket.sockaddr_un("/tmp/sock")</code>
644
644
  #
645
645
  # In an AF_INET/AF_INET6 sockaddr array, the 4th element, numeric IP address, is
646
646
  # used to construct socket address in the Addrinfo instance. If the 3rd element,