rbs 3.0.0.dev.2 → 3.0.0.dev.3

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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +2 -1
  3. data/.github/workflows/ruby.yml +4 -0
  4. data/Gemfile.lock +11 -11
  5. data/Rakefile +2 -2
  6. data/Steepfile +1 -1
  7. data/core/array.rbs +573 -423
  8. data/core/basic_object.rbs +11 -39
  9. data/core/binding.rbs +1 -1
  10. data/core/builtin.rbs +8 -0
  11. data/core/class.rbs +37 -0
  12. data/core/comparable.rbs +7 -18
  13. data/core/complex.rbs +2 -2
  14. data/core/data.rbs +419 -0
  15. data/core/dir.rbs +52 -104
  16. data/core/encoding.rbs +22 -181
  17. data/core/enumerable.rbs +212 -175
  18. data/core/enumerator/product.rbs +96 -0
  19. data/core/enumerator.rbs +57 -8
  20. data/core/errors.rbs +8 -2
  21. data/core/exception.rbs +41 -0
  22. data/core/fiber.rbs +95 -12
  23. data/core/file.rbs +840 -275
  24. data/core/file_test.rbs +34 -19
  25. data/core/float.rbs +40 -96
  26. data/core/gc.rbs +15 -3
  27. data/core/hash.rbs +113 -175
  28. data/core/integer.rbs +85 -145
  29. data/core/io/buffer.rbs +187 -60
  30. data/core/io/wait.rbs +28 -16
  31. data/core/io.rbs +1859 -1389
  32. data/core/kernel.rbs +525 -961
  33. data/core/match_data.rbs +306 -142
  34. data/core/math.rbs +506 -234
  35. data/core/method.rbs +0 -24
  36. data/core/module.rbs +110 -17
  37. data/core/nil_class.rbs +2 -0
  38. data/core/numeric.rbs +76 -144
  39. data/core/object.rbs +88 -212
  40. data/core/proc.rbs +17 -5
  41. data/core/process.rbs +22 -5
  42. data/core/ractor.rbs +1 -1
  43. data/core/random.rbs +20 -3
  44. data/core/range.rbs +91 -89
  45. data/core/rational.rbs +2 -3
  46. data/core/rbs/unnamed/argf.rbs +177 -120
  47. data/core/rbs/unnamed/env_class.rbs +89 -163
  48. data/core/rbs/unnamed/random.rbs +36 -12
  49. data/core/refinement.rbs +8 -0
  50. data/core/regexp.rbs +462 -272
  51. data/core/ruby_vm.rbs +210 -0
  52. data/{stdlib/set/0 → core}/set.rbs +43 -47
  53. data/core/string.rbs +1403 -1332
  54. data/core/string_io.rbs +191 -107
  55. data/core/struct.rbs +67 -63
  56. data/core/symbol.rbs +187 -201
  57. data/core/thread.rbs +40 -35
  58. data/core/time.rbs +902 -826
  59. data/core/trace_point.rbs +55 -6
  60. data/core/unbound_method.rbs +48 -24
  61. data/docs/collection.md +4 -0
  62. data/docs/syntax.md +55 -0
  63. data/ext/rbs_extension/parser.c +5 -6
  64. data/lib/rbs/cli.rb +6 -1
  65. data/lib/rbs/collection/cleaner.rb +8 -1
  66. data/lib/rbs/collection/config/lockfile.rb +3 -1
  67. data/lib/rbs/collection/config/lockfile_generator.rb +16 -14
  68. data/lib/rbs/collection/config.rb +1 -1
  69. data/lib/rbs/collection/sources/git.rb +9 -2
  70. data/lib/rbs/collection/sources/local.rb +79 -0
  71. data/lib/rbs/collection/sources.rb +8 -1
  72. data/lib/rbs/environment.rb +6 -5
  73. data/lib/rbs/environment_loader.rb +3 -2
  74. data/lib/rbs/errors.rb +18 -0
  75. data/lib/rbs/locator.rb +26 -7
  76. data/lib/rbs/sorter.rb +2 -2
  77. data/lib/rbs/version.rb +1 -1
  78. data/sig/collection/sources.rbs +32 -3
  79. data/sig/environment.rbs +2 -3
  80. data/sig/locator.rbs +14 -2
  81. data/sig/shims/{abstract_syntax_tree.rbs → _abstract_syntax_tree.rbs} +0 -0
  82. data/stdlib/bigdecimal/0/big_decimal.rbs +16 -13
  83. data/stdlib/cgi/0/core.rbs +16 -0
  84. data/stdlib/coverage/0/coverage.rbs +50 -8
  85. data/stdlib/csv/0/csv.rbs +1 -1
  86. data/stdlib/date/0/date.rbs +856 -726
  87. data/stdlib/date/0/date_time.rbs +83 -210
  88. data/stdlib/erb/0/erb.rbs +13 -36
  89. data/stdlib/etc/0/etc.rbs +127 -20
  90. data/stdlib/fileutils/0/fileutils.rbs +1290 -381
  91. data/stdlib/logger/0/logger.rbs +466 -316
  92. data/stdlib/net-http/0/net-http.rbs +2211 -534
  93. data/stdlib/nkf/0/nkf.rbs +5 -5
  94. data/stdlib/objspace/0/objspace.rbs +31 -14
  95. data/stdlib/openssl/0/openssl.rbs +11 -7
  96. data/stdlib/optparse/0/optparse.rbs +20 -17
  97. data/stdlib/pathname/0/pathname.rbs +21 -4
  98. data/stdlib/pstore/0/pstore.rbs +378 -154
  99. data/stdlib/pty/0/pty.rbs +24 -8
  100. data/stdlib/ripper/0/ripper.rbs +1650 -0
  101. data/stdlib/socket/0/addrinfo.rbs +9 -15
  102. data/stdlib/socket/0/socket.rbs +36 -3
  103. data/stdlib/strscan/0/string_scanner.rbs +7 -5
  104. data/stdlib/tempfile/0/tempfile.rbs +104 -44
  105. data/stdlib/time/0/time.rbs +2 -2
  106. data/stdlib/uri/0/file.rbs +5 -0
  107. data/stdlib/uri/0/generic.rbs +2 -2
  108. data/stdlib/yaml/0/yaml.rbs +2 -2
  109. data/stdlib/zlib/0/zlib.rbs +1 -1
  110. metadata +8 -6
  111. data/core/deprecated.rbs +0 -9
  112. data/sig/shims/ripper.rbs +0 -8
data/core/file_test.rbs CHANGED
@@ -6,34 +6,41 @@
6
6
  module FileTest
7
7
  # <!--
8
8
  # rdoc-file=file.c
9
- # - File.blockdev?(file_name) -> true or false
9
+ # - File.blockdev?(filepath) -> true or false
10
10
  # -->
11
- # Returns `true` if the named file is a block device.
11
+ # Returns `true` if `filepath` points to a block device, `false` otherwise:
12
12
  #
13
- # *file_name* can be an IO object.
13
+ # File.blockdev?('/dev/sda1') # => true
14
+ # File.blockdev?(File.new('t.tmp')) # => false
14
15
  #
15
16
  def self?.blockdev?: (String | IO file_name) -> bool
16
17
 
17
18
  # <!--
18
19
  # rdoc-file=file.c
19
- # - File.chardev?(file_name) -> true or false
20
+ # - File.chardev?(filepath) -> true or false
20
21
  # -->
21
- # Returns `true` if the named file is a character device.
22
+ # Returns `true` if `filepath` points to a character device, `false` otherwise.
22
23
  #
23
- # *file_name* can be an IO object.
24
+ # File.chardev?($stdin) # => true
25
+ # File.chardev?('t.txt') # => false
24
26
  #
25
27
  def self?.chardev?: (String | IO file_name) -> bool
26
28
 
27
29
  # <!--
28
30
  # rdoc-file=file.c
29
- # - File.directory?(file_name) -> true or false
31
+ # - File.directory?(path) -> true or false
30
32
  # -->
31
- # Returns `true` if the named file is a directory, or a symlink that points at a
32
- # directory, and `false` otherwise.
33
+ # With string `object` given, returns `true` if `path` is a string path leading
34
+ # to a directory, or to a symbolic link to a directory; `false` otherwise:
33
35
  #
34
- # *file_name* can be an IO object.
36
+ # File.directory?('.') # => true
37
+ # File.directory?('foo') # => false
38
+ # File.symlink('.', 'dirlink') # => 0
39
+ # File.directory?('dirlink') # => true
40
+ # File.symlink('t,txt', 'filelink') # => 0
41
+ # File.directory?('filelink') # => false
35
42
  #
36
- # File.directory?(".")
43
+ # Argument `path` can be an IO object.
37
44
  #
38
45
  def self?.directory?: (String | IO file_name) -> bool
39
46
 
@@ -145,11 +152,13 @@ module FileTest
145
152
 
146
153
  # <!--
147
154
  # rdoc-file=file.c
148
- # - File.pipe?(file_name) -> true or false
155
+ # - File.pipe?(filepath) -> true or false
149
156
  # -->
150
- # Returns `true` if the named file is a pipe.
157
+ # Returns `true` if `filepath` points to a pipe, `false` otherwise:
151
158
  #
152
- # *file_name* can be an IO object.
159
+ # File.mkfifo('tmp/fifo')
160
+ # File.pipe?('tmp/fifo') # => true
161
+ # File.pipe?('t.txt') # => false
153
162
  #
154
163
  def self?.pipe?: (String | IO file_name) -> bool
155
164
 
@@ -220,11 +229,13 @@ module FileTest
220
229
 
221
230
  # <!--
222
231
  # rdoc-file=file.c
223
- # - File.socket?(file_name) -> true or false
232
+ # - File.socket?(filepath) -> true or false
224
233
  # -->
225
- # Returns `true` if the named file is a socket.
234
+ # Returns `true` if `filepath` points to a socket, `false` otherwise:
226
235
  #
227
- # *file_name* can be an IO object.
236
+ # require 'socket'
237
+ # File.socket?(Socket.new(:INET, :STREAM)) # => true
238
+ # File.socket?(File.new('t.txt')) # => false
228
239
  #
229
240
  def self?.socket?: (String | IO file_name) -> bool
230
241
 
@@ -240,9 +251,13 @@ module FileTest
240
251
 
241
252
  # <!--
242
253
  # rdoc-file=file.c
243
- # - File.symlink?(file_name) -> true or false
254
+ # - File.symlink?(filepath) -> true or false
244
255
  # -->
245
- # Returns `true` if the named file is a symbolic link.
256
+ # Returns `true` if `filepath` points to a symbolic link, `false` otherwise:
257
+ #
258
+ # symlink = File.symlink('t.txt', 'symlink')
259
+ # File.symlink?('symlink') # => true
260
+ # File.symlink?('t.txt') # => false
246
261
  #
247
262
  def self?.symlink?: (String file_name) -> bool
248
263
 
data/core/float.rbs CHANGED
@@ -13,127 +13,71 @@
13
13
  #
14
14
  # You can create a Float object explicitly with:
15
15
  #
16
- # * A [floating-point
17
- # literal](doc/syntax/literals_rdoc.html#label-Float+Literals).
16
+ # * A [floating-point literal](rdoc-ref:syntax/literals.rdoc@Float+Literals).
18
17
  #
19
18
  #
20
19
  # You can convert certain objects to Floats with:
21
20
  #
22
- # * Method [Float](Kernel.html#method-i-Float).
21
+ # * Method #Float.
23
22
  #
24
23
  #
25
24
  # ## What's Here
26
25
  #
27
26
  # First, what's elsewhere. Class Float:
28
27
  #
29
- # * Inherits from [class
30
- # Numeric](Numeric.html#class-Numeric-label-What-27s+Here).
28
+ # * Inherits from [class Numeric](rdoc-ref:Numeric@What-27s+Here).
31
29
  #
32
30
  #
33
31
  # Here, class Float provides methods for:
34
32
  #
35
- # * [Querying](#class-Float-label-Querying)
36
- # * [Comparing](#class-Float-label-Comparing)
37
- # * [Converting](#class-Float-label-Converting)
33
+ # * [Querying](rdoc-ref:Float@Querying)
34
+ # * [Comparing](rdoc-ref:Float@Comparing)
35
+ # * [Converting](rdoc-ref:Float@Converting)
38
36
  #
39
37
  #
40
38
  # ### Querying
41
39
  #
42
- # #finite?
43
- # : Returns whether `self` is finite.
44
- #
45
- # #hash
46
- # : Returns the integer hash code for `self`.
47
- #
48
- # #infinite?
49
- # : Returns whether `self` is infinite.
50
- #
51
- # #nan?
52
- # : Returns whether `self` is a NaN (not-a-number).
53
- #
40
+ # * #finite?: Returns whether `self` is finite.
41
+ # * #hash: Returns the integer hash code for `self`.
42
+ # * #infinite?: Returns whether `self` is infinite.
43
+ # * #nan?: Returns whether `self` is a NaN (not-a-number).
54
44
  #
55
45
  #
56
46
  # ### Comparing
57
47
  #
58
- # [<](#method-i-3C)
59
- # : Returns whether `self` is less than the given value.
60
- #
61
- # [<=](#method-i-3C-3D)
62
- # : Returns whether `self` is less than or equal to the given value.
63
- #
64
- # [<=>](#method-i-3C-3D-3E)
65
- # : Returns a number indicating whether `self` is less than, equal to, or
66
- # greater than the given value.
67
- #
68
- # [==](#method-i-3D-3D) (aliased as #=== and #eql>)
69
- # : Returns whether `self` is equal to the given value.
70
- #
71
- # [>](#method-i-3E)
72
- # : Returns whether `self` is greater than the given value.
73
- #
74
- # [>=](#method-i-3E-3D)
75
- # : Returns whether `self` is greater than or equal to the given value.
76
- #
48
+ # * #<: Returns whether `self` is less than the given value.
49
+ # * #<=: Returns whether `self` is less than or equal to the given value.
50
+ # * #<=>: Returns a number indicating whether `self` is less than, equal to,
51
+ # or greater than the given value.
52
+ # * #== (aliased as #=== and #eql?): Returns whether `self` is equal to the
53
+ # given value.
54
+ # * #>: Returns whether `self` is greater than the given value.
55
+ # * #>=: Returns whether `self` is greater than or equal to the given value.
77
56
  #
78
57
  #
79
58
  # ### Converting
80
59
  #
81
- # #% (aliased as #modulo)
82
- # : Returns `self` modulo the given value.
83
- #
84
- # #*
85
- # : Returns the product of `self` and the given value.
86
- #
87
- # [**](#method-i-2A-2A)
88
- # : Returns the value of `self` raised to the power of the given value.
89
- #
90
- # #+
91
- # : Returns the sum of `self` and the given value.
92
- #
93
- # #-
94
- # : Returns the difference of `self` and the given value.
95
- #
96
- # [/](#method-i-2F)
97
- # : Returns the quotient of `self` and the given value.
98
- #
99
- # #ceil
100
- # : Returns the smallest number greater than or equal to `self`.
101
- #
102
- # #coerce
103
- # : Returns a 2-element array containing the given value converted to a
104
- # Float and `self`
105
- #
106
- # #divmod
107
- # : Returns a 2-element array containing the quotient and remainder
108
- # results of dividing `self` by the given value.
109
- #
110
- # #fdiv
111
- # : Returns the Float result of dividing `self` by the given value.
112
- #
113
- # #floor
114
- # : Returns the greatest number smaller than or equal to `self`.
115
- #
116
- # #next_float
117
- # : Returns the next-larger representable Float.
118
- #
119
- # #prev_float
120
- # : Returns the next-smaller representable Float.
121
- #
122
- # #quo
123
- # : Returns the quotient from dividing `self` by the given value.
124
- #
125
- # #round
126
- # : Returns `self` rounded to the nearest value, to a given precision.
127
- #
128
- # #to_i (aliased as #to_int)
129
- # : Returns `self` truncated to an Integer.
130
- #
131
- # #to_s (aliased as #inspect)
132
- # : Returns a string containing the place-value representation of `self`
133
- # in the given radix.
134
- #
135
- # #truncate
136
- # : Returns `self` truncated to a given precision.
60
+ # * #% (aliased as #modulo): Returns `self` modulo the given value.
61
+ # * #*: Returns the product of `self` and the given value.
62
+ # * #**: Returns the value of `self` raised to the power of the given value.
63
+ # * #+: Returns the sum of `self` and the given value.
64
+ # * #-: Returns the difference of `self` and the given value.
65
+ # * #/: Returns the quotient of `self` and the given value.
66
+ # * #ceil: Returns the smallest number greater than or equal to `self`.
67
+ # * #coerce: Returns a 2-element array containing the given value converted to
68
+ # a Float and `self`
69
+ # * #divmod: Returns a 2-element array containing the quotient and remainder
70
+ # results of dividing `self` by the given value.
71
+ # * #fdiv: Returns the Float result of dividing `self` by the given value.
72
+ # * #floor: Returns the greatest number smaller than or equal to `self`.
73
+ # * #next_float: Returns the next-larger representable Float.
74
+ # * #prev_float: Returns the next-smaller representable Float.
75
+ # * #quo: Returns the quotient from dividing `self` by the given value.
76
+ # * #round: Returns `self` rounded to the nearest value, to a given precision.
77
+ # * #to_i (aliased as #to_int): Returns `self` truncated to an Integer.
78
+ # * #to_s (aliased as #inspect): Returns a string containing the place-value
79
+ # representation of `self` in the given radix.
80
+ # * #truncate: Returns `self` truncated to a given precision.
137
81
  #
138
82
  class Float < Numeric
139
83
  public
@@ -546,7 +490,7 @@ class Float < Numeric
546
490
  # rdoc-file=numeric.c
547
491
  # - finite? -> true or false
548
492
  # -->
549
- # Returns `true` if `self` is not `Infinity`, `-Infinity`, or `Nan`, `false`
493
+ # Returns `true` if `self` is not `Infinity`, `-Infinity`, or `NaN`, `false`
550
494
  # otherwise:
551
495
  #
552
496
  # f = 2.0 # => 2.0
data/core/gc.rbs CHANGED
@@ -82,6 +82,8 @@ module GC
82
82
  # count
83
83
  # : The total number of garbage collections ran since application start (count
84
84
  # includes both minor and major garbage collections)
85
+ # time
86
+ # : The total time spent in garbage collections (in milliseconds)
85
87
  # heap_allocated_pages
86
88
  # : The total number of `:heap_eden_pages` + `:heap_tomb_pages`
87
89
  # heap_sorted_length
@@ -120,6 +122,12 @@ module GC
120
122
  # : The total number of minor garbage collections run since process start
121
123
  # major_gc_count
122
124
  # : The total number of major garbage collections run since process start
125
+ # compact_count
126
+ # : The total number of compactions run since process start
127
+ # read_barrier_faults
128
+ # : The total number of times the read barrier was triggered during compaction
129
+ # total_moved_objects
130
+ # : The total number of objects compaction has moved
123
131
  # remembered_wb_unprotected_objects
124
132
  # : The total number of objects without write barriers
125
133
  # remembered_wb_unprotected_objects_limit
@@ -180,7 +188,7 @@ module GC
180
188
  def self.total_time: () -> Integer
181
189
 
182
190
  # <!--
183
- # rdoc-file=gc.rb
191
+ # rdoc-file=gc.c
184
192
  # - GC.compact
185
193
  # -->
186
194
  # This function compacts objects together in Ruby's heap. It eliminates unused
@@ -192,6 +200,10 @@ module GC
192
200
  # This method is implementation specific and not expected to be implemented in
193
201
  # any implementation besides MRI.
194
202
  #
203
+ # To test whether GC compaction is supported, use the idiom:
204
+ #
205
+ # GC.respond_to?(:compact)
206
+ #
195
207
  def self.compact: () -> ::Hash[:considered | :moved, Hash[Symbol | Integer, Integer]]
196
208
 
197
209
  # <!--
@@ -204,7 +216,7 @@ module GC
204
216
  # moved are replaced with T_MOVED objects. No object should have a reference to
205
217
  # a T_MOVED object after compaction.
206
218
  #
207
- # This function doubles the heap to ensure room to move all objects, compacts
219
+ # This function expands the heap to ensure room to move all objects, compacts
208
220
  # the heap to make sure everything moves, updates all references, then performs
209
221
  # a full GC. If any object contains a reference to a T_MOVED object, that
210
222
  # object should be pushed on the mark stack, and will make a SEGV.
@@ -231,7 +243,7 @@ module GC
231
243
 
232
244
  # <!--
233
245
  # rdoc-file=gc.rb
234
- # - GC.latest_gc_info -> {:gc_by=>:newobj}
246
+ # - GC.latest_gc_info -> hash
235
247
  # - GC.latest_gc_info(hash) -> hash
236
248
  # - GC.latest_gc_info(:major_by) -> :malloc
237
249
  # -->