rbs 2.5.1 → 2.6.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.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +1 -1
- data/.github/workflows/ruby.yml +3 -3
- data/CHANGELOG.md +44 -0
- data/Gemfile.lock +5 -5
- data/Rakefile +6 -38
- data/Steepfile +6 -2
- data/core/constants.rbs +1 -1
- data/core/env.rbs +1 -1323
- data/core/global_variables.rbs +1 -1
- data/core/hash.rbs +3 -3
- data/core/kernel.rbs +2 -2
- data/core/random.rbs +5 -220
- data/core/rational.rbs +3 -3
- data/core/rbs/unnamed/argf.rbs +965 -0
- data/core/rbs/unnamed/env_class.rbs +1325 -0
- data/core/rbs/unnamed/random.rbs +270 -0
- data/core/regexp.rbs +2 -3
- data/docs/CONTRIBUTING.md +2 -2
- data/ext/rbs_extension/lexer.c +1343 -1353
- data/ext/rbs_extension/lexer.re +2 -2
- data/ext/rbs_extension/rbs_extension.h +1 -1
- data/ext/rbs_extension/unescape.c +17 -10
- data/lib/rbs/ast/members.rb +6 -3
- data/lib/rbs/cli.rb +2 -0
- data/lib/rbs/factory.rb +2 -0
- data/lib/rbs/prototype/helpers.rb +1 -5
- data/lib/rbs/prototype/rb.rb +105 -56
- data/lib/rbs/prototype/rbi.rb +65 -30
- data/lib/rbs/prototype/runtime.rb +4 -3
- data/lib/rbs/test/setup_helper.rb +6 -1
- data/lib/rbs/version.rb +1 -1
- data/schema/members.json +4 -1
- data/sig/collection/config.rbs +3 -0
- data/sig/factory.rbs +5 -0
- data/sig/prototype/helpers.rbs +23 -0
- data/sig/prototype/rb.rbs +84 -0
- data/sig/prototype/rbi.rbs +73 -0
- data/sig/shims/abstract_syntax_tree.rbs +25 -0
- data/sig/shims/enumerable.rbs +5 -0
- data/sig/shims/pp.rbs +3 -0
- data/sig/shims/ripper.rbs +8 -0
- data/stdlib/cgi/0/manifest.yaml +2 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/etc/0/etc.rbs +745 -0
- data/stdlib/minitest/0/kernel.rbs +42 -0
- data/stdlib/minitest/0/manifest.yaml +2 -0
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +49 -0
- data/stdlib/minitest/0/minitest/assertion.rbs +16 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +545 -0
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +16 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
- data/stdlib/minitest/0/minitest/benchmark.rbs +258 -0
- data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
- data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
- data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
- data/stdlib/minitest/0/minitest/guard.rbs +64 -0
- data/stdlib/minitest/0/minitest/mock.rbs +60 -0
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +42 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +6 -0
- data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
- data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
- data/stdlib/minitest/0/minitest/pride_io.rbs +54 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +17 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
- data/stdlib/minitest/0/minitest/reportable.rbs +51 -0
- data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/result.rbs +28 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +131 -0
- data/stdlib/minitest/0/minitest/skip.rbs +6 -0
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +125 -0
- data/stdlib/minitest/0/minitest/spec.rbs +11 -0
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +76 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +25 -0
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
- data/stdlib/minitest/0/minitest/test.rbs +76 -0
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +10 -0
- data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
- data/stdlib/minitest/0/minitest/unit.rbs +5 -0
- data/stdlib/minitest/0/minitest.rbs +966 -0
- data/stdlib/rubygems/0/errors.rbs +113 -0
- metadata +54 -4
- data/lib/rbs/char_scanner.rb +0 -20
data/core/global_variables.rbs
CHANGED
data/core/hash.rbs
CHANGED
@@ -978,7 +978,7 @@ class Hash[unchecked out K, unchecked out V] < Object
|
|
978
978
|
# h.dig(:hello, :world) # => h
|
979
979
|
# h.dig(:hello, :world, :foo, :bar, 2) # => :c
|
980
980
|
#
|
981
|
-
def dig: (*untyped) -> untyped
|
981
|
+
def dig: (K, *untyped) -> untyped
|
982
982
|
|
983
983
|
# <!-- rdoc-file=hash.c -->
|
984
984
|
# Hash#each is an alias for Hash#each_pair.
|
@@ -1543,8 +1543,8 @@ class Hash[unchecked out K, unchecked out V] < Object
|
|
1543
1543
|
# h1 = e.each {|key, value| key.start_with?('b') }
|
1544
1544
|
# h1 # => {:foo=>0}
|
1545
1545
|
#
|
1546
|
-
def reject: () -> ::Enumerator[[ K, V ],
|
1547
|
-
| () { (K, V) -> boolish } ->
|
1546
|
+
def reject: () -> ::Enumerator[[ K, V ], ::Hash[K, V]]
|
1547
|
+
| () { (K, V) -> boolish } -> ::Hash[K, V]
|
1548
1548
|
|
1549
1549
|
# <!--
|
1550
1550
|
# rdoc-file=hash.c
|
data/core/kernel.rbs
CHANGED
@@ -871,8 +871,8 @@ module Kernel : BasicObject
|
|
871
871
|
# raise ArgumentError, "No parameters", caller
|
872
872
|
#
|
873
873
|
def self?.fail: () -> bot
|
874
|
-
| (String
|
875
|
-
| (_Exception
|
874
|
+
| (String message, ?cause: Exception?) -> bot
|
875
|
+
| (_Exception exception, ?untyped message, ?::Array[String] backtrace, ?cause: Exception?) -> bot
|
876
876
|
|
877
877
|
# <!--
|
878
878
|
# rdoc-file=eval.c
|
data/core/random.rbs
CHANGED
@@ -20,9 +20,7 @@
|
|
20
20
|
# of 2**19937-1. As this algorithm is *not* for cryptographical use, you must
|
21
21
|
# use SecureRandom for security purpose, instead of this PRNG.
|
22
22
|
#
|
23
|
-
class Random <
|
24
|
-
include Random::Formatter
|
25
|
-
|
23
|
+
class Random < RBS::Unnamed::Random_Base
|
26
24
|
# <!--
|
27
25
|
# rdoc-file=random.c
|
28
26
|
# - prng1 == prng2 -> true or false
|
@@ -49,78 +47,6 @@ class Random < Object
|
|
49
47
|
#
|
50
48
|
def ==: (untyped arg0) -> bool
|
51
49
|
|
52
|
-
# <!--
|
53
|
-
# rdoc-file=random.c
|
54
|
-
# - prng.bytes(size) -> string
|
55
|
-
# -->
|
56
|
-
# Returns a random binary string containing `size` bytes.
|
57
|
-
#
|
58
|
-
# random_string = Random.new.bytes(10) # => "\xD7:R\xAB?\x83\xCE\xFAkO"
|
59
|
-
# random_string.size # => 10
|
60
|
-
#
|
61
|
-
def bytes: (Integer size) -> String
|
62
|
-
|
63
|
-
# <!--
|
64
|
-
# rdoc-file=random.c
|
65
|
-
# - Random.new(seed = Random.new_seed) -> prng
|
66
|
-
# -->
|
67
|
-
# Creates a new PRNG using `seed` to set the initial state. If `seed` is
|
68
|
-
# omitted, the generator is initialized with Random.new_seed.
|
69
|
-
#
|
70
|
-
# See Random.srand for more information on the use of seed values.
|
71
|
-
#
|
72
|
-
def initialize: (?Integer seed) -> void
|
73
|
-
|
74
|
-
# <!--
|
75
|
-
# rdoc-file=random.c
|
76
|
-
# - prng.rand -> float
|
77
|
-
# - prng.rand(max) -> number
|
78
|
-
# - prng.rand(range) -> number
|
79
|
-
# -->
|
80
|
-
# When `max` is an Integer, `rand` returns a random integer greater than or
|
81
|
-
# equal to zero and less than `max`. Unlike Kernel.rand, when `max` is a
|
82
|
-
# negative integer or zero, `rand` raises an ArgumentError.
|
83
|
-
#
|
84
|
-
# prng = Random.new
|
85
|
-
# prng.rand(100) # => 42
|
86
|
-
#
|
87
|
-
# When `max` is a Float, `rand` returns a random floating point number between
|
88
|
-
# 0.0 and `max`, including 0.0 and excluding `max`.
|
89
|
-
#
|
90
|
-
# prng.rand(1.5) # => 1.4600282860034115
|
91
|
-
#
|
92
|
-
# When `range` is a Range, `rand` returns a random number where
|
93
|
-
# `range.member?(number) == true`.
|
94
|
-
#
|
95
|
-
# prng.rand(5..9) # => one of [5, 6, 7, 8, 9]
|
96
|
-
# prng.rand(5...9) # => one of [5, 6, 7, 8]
|
97
|
-
# prng.rand(5.0..9.0) # => between 5.0 and 9.0, including 9.0
|
98
|
-
# prng.rand(5.0...9.0) # => between 5.0 and 9.0, excluding 9.0
|
99
|
-
#
|
100
|
-
# Both the beginning and ending values of the range must respond to subtract
|
101
|
-
# (`-`) and add (`+`)methods, or rand will raise an ArgumentError.
|
102
|
-
#
|
103
|
-
def rand: () -> Float
|
104
|
-
| (Integer | ::Range[Integer] max) -> Integer
|
105
|
-
| (Float | ::Range[Float] max) -> Float
|
106
|
-
|
107
|
-
# <!--
|
108
|
-
# rdoc-file=random.c
|
109
|
-
# - prng.seed -> integer
|
110
|
-
# -->
|
111
|
-
# Returns the seed value used to initialize the generator. This may be used to
|
112
|
-
# initialize another generator with the same state at a later time, causing it
|
113
|
-
# to produce the same sequence of numbers.
|
114
|
-
#
|
115
|
-
# prng1 = Random.new(1234)
|
116
|
-
# prng1.seed #=> 1234
|
117
|
-
# prng1.rand(100) #=> 47
|
118
|
-
#
|
119
|
-
# prng2 = Random.new(prng1.seed)
|
120
|
-
# prng2.rand(100) #=> 47
|
121
|
-
#
|
122
|
-
def seed: () -> Integer
|
123
|
-
|
124
50
|
# <!--
|
125
51
|
# rdoc-file=random.c
|
126
52
|
# - Random.new_seed -> integer
|
@@ -173,6 +99,9 @@ end
|
|
173
99
|
|
174
100
|
Random::DEFAULT: Random
|
175
101
|
|
102
|
+
class Random::Base < RBS::Unnamed::Random_Base
|
103
|
+
end
|
104
|
+
|
176
105
|
# <!-- rdoc-file=lib/random/formatter.rb -->
|
177
106
|
# ## Random number formatter.
|
178
107
|
#
|
@@ -220,149 +149,5 @@ Random::DEFAULT: Random
|
|
220
149
|
# prng.rand(1..6) #=> 3
|
221
150
|
#
|
222
151
|
module Random::Formatter
|
223
|
-
|
224
|
-
# rdoc-file=lib/random/formatter.rb
|
225
|
-
# - base64(n=nil)
|
226
|
-
# -->
|
227
|
-
# Random::Formatter#base64 generates a random base64 string.
|
228
|
-
#
|
229
|
-
# The argument *n* specifies the length, in bytes, of the random number to be
|
230
|
-
# generated. The length of the result string is about 4/3 of *n*.
|
231
|
-
#
|
232
|
-
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
233
|
-
# future.
|
234
|
-
#
|
235
|
-
# The result may contain A-Z, a-z, 0-9, "+", "/" and "=".
|
236
|
-
#
|
237
|
-
# require 'random/formatter'
|
238
|
-
#
|
239
|
-
# prng.base64 #=> "/2BuBuLf3+WfSKyQbRcc/A=="
|
240
|
-
# prng.base64 #=> "6BbW0pxO0YENxn38HMUbcQ=="
|
241
|
-
#
|
242
|
-
# See RFC 3548 for the definition of base64.
|
243
|
-
#
|
244
|
-
def base64: (?Integer? n) -> String
|
245
|
-
|
246
|
-
# <!--
|
247
|
-
# rdoc-file=lib/random/formatter.rb
|
248
|
-
# - hex(n=nil)
|
249
|
-
# -->
|
250
|
-
# Random::Formatter#hex generates a random hexadecimal string.
|
251
|
-
#
|
252
|
-
# The argument *n* specifies the length, in bytes, of the random number to be
|
253
|
-
# generated. The length of the resulting hexadecimal string is twice of *n*.
|
254
|
-
#
|
255
|
-
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
256
|
-
# future.
|
257
|
-
#
|
258
|
-
# The result may contain 0-9 and a-f.
|
259
|
-
#
|
260
|
-
# require 'random/formatter'
|
261
|
-
#
|
262
|
-
# prng.hex #=> "eb693ec8252cd630102fd0d0fb7c3485"
|
263
|
-
# prng.hex #=> "91dc3bfb4de5b11d029d376634589b61"
|
264
|
-
#
|
265
|
-
def hex: (?Integer? n) -> String
|
266
|
-
|
267
|
-
# <!-- rdoc-file=random.c -->
|
268
|
-
# Generates formatted random number from raw random bytes. See Random#rand.
|
269
|
-
#
|
270
|
-
def rand: () -> Float
|
271
|
-
| (?Float? n) -> Float
|
272
|
-
| (?Integer? n) -> Integer
|
273
|
-
| (?Numeric? n) -> Numeric
|
274
|
-
| (?::Range[Float]? n) -> Float
|
275
|
-
| (?::Range[Integer]? n) -> Integer
|
276
|
-
| (?::Range[Numeric]? n) -> Numeric
|
277
|
-
|
278
|
-
# <!--
|
279
|
-
# rdoc-file=lib/random/formatter.rb
|
280
|
-
# - random_bytes(n=nil)
|
281
|
-
# -->
|
282
|
-
# Random::Formatter#random_bytes generates a random binary string.
|
283
|
-
#
|
284
|
-
# The argument *n* specifies the length of the result string.
|
285
|
-
#
|
286
|
-
# If *n* is not specified or is nil, 16 is assumed. It may be larger in future.
|
287
|
-
#
|
288
|
-
# The result may contain any byte: "x00" - "xff".
|
289
|
-
#
|
290
|
-
# require 'random/formatter'
|
291
|
-
#
|
292
|
-
# prng.random_bytes #=> "\xD8\\\xE0\xF4\r\xB2\xFC*WM\xFF\x83\x18\xF45\xB6"
|
293
|
-
# prng.random_bytes #=> "m\xDC\xFC/\a\x00Uf\xB2\xB2P\xBD\xFF6S\x97"
|
294
|
-
#
|
295
|
-
def random_bytes: (?Integer? n) -> String
|
296
|
-
|
297
|
-
# <!--
|
298
|
-
# rdoc-file=random.c
|
299
|
-
# - prng.random_number -> float
|
300
|
-
# - prng.random_number(max) -> number
|
301
|
-
# - prng.random_number(range) -> number
|
302
|
-
# - prng.rand -> float
|
303
|
-
# - prng.rand(max) -> number
|
304
|
-
# - prng.rand(range) -> number
|
305
|
-
# -->
|
306
|
-
# Generates formatted random number from raw random bytes. See Random#rand.
|
307
|
-
#
|
308
|
-
def random_number: () -> Float
|
309
|
-
| (?Float? n) -> Float
|
310
|
-
| (?Integer? n) -> Integer
|
311
|
-
| (?Numeric? n) -> Numeric
|
312
|
-
| (?::Range[Float]? n) -> Float
|
313
|
-
| (?::Range[Integer]? n) -> Integer
|
314
|
-
| (?::Range[Numeric]? n) -> Numeric
|
315
|
-
|
316
|
-
# <!--
|
317
|
-
# rdoc-file=lib/random/formatter.rb
|
318
|
-
# - urlsafe_base64(n=nil, padding=false)
|
319
|
-
# -->
|
320
|
-
# Random::Formatter#urlsafe_base64 generates a random URL-safe base64 string.
|
321
|
-
#
|
322
|
-
# The argument *n* specifies the length, in bytes, of the random number to be
|
323
|
-
# generated. The length of the result string is about 4/3 of *n*.
|
324
|
-
#
|
325
|
-
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
326
|
-
# future.
|
327
|
-
#
|
328
|
-
# The boolean argument *padding* specifies the padding. If it is false or nil,
|
329
|
-
# padding is not generated. Otherwise padding is generated. By default, padding
|
330
|
-
# is not generated because "=" may be used as a URL delimiter.
|
331
|
-
#
|
332
|
-
# The result may contain A-Z, a-z, 0-9, "-" and "_". "=" is also used if
|
333
|
-
# *padding* is true.
|
334
|
-
#
|
335
|
-
# require 'random/formatter'
|
336
|
-
#
|
337
|
-
# prng.urlsafe_base64 #=> "b4GOKm4pOYU_-BOXcrUGDg"
|
338
|
-
# prng.urlsafe_base64 #=> "UZLdOkzop70Ddx-IJR0ABg"
|
339
|
-
#
|
340
|
-
# prng.urlsafe_base64(nil, true) #=> "i0XQ-7gglIsHGV2_BNPrdQ=="
|
341
|
-
# prng.urlsafe_base64(nil, true) #=> "-M8rLhr7JEpJlqFGUMmOxg=="
|
342
|
-
#
|
343
|
-
# See RFC 3548 for the definition of URL-safe base64.
|
344
|
-
#
|
345
|
-
def urlsafe_base64: (?Integer? n, ?boolish padding) -> String
|
346
|
-
|
347
|
-
# <!--
|
348
|
-
# rdoc-file=lib/random/formatter.rb
|
349
|
-
# - uuid()
|
350
|
-
# -->
|
351
|
-
# Random::Formatter#uuid generates a random v4 UUID (Universally Unique
|
352
|
-
# IDentifier).
|
353
|
-
#
|
354
|
-
# require 'random/formatter'
|
355
|
-
#
|
356
|
-
# prng.uuid #=> "2d931510-d99f-494a-8c67-87feb05e1594"
|
357
|
-
# prng.uuid #=> "bad85eb9-0713-4da7-8d36-07a8e4b00eab"
|
358
|
-
# prng.uuid #=> "62936e70-1815-439b-bf89-8492855a7e6b"
|
359
|
-
#
|
360
|
-
# The version 4 UUID is purely random (except the version). It doesn't contain
|
361
|
-
# meaningful information such as MAC addresses, timestamps, etc.
|
362
|
-
#
|
363
|
-
# The result contains 122 random bits (15.25 random bytes).
|
364
|
-
#
|
365
|
-
# See RFC 4122 for details of UUID.
|
366
|
-
#
|
367
|
-
def uuid: () -> String
|
152
|
+
include RBS::Unnamed::Random_Formatter
|
368
153
|
end
|
data/core/rational.rbs
CHANGED
@@ -68,9 +68,9 @@ class Rational < Numeric
|
|
68
68
|
# Rational(9, 8) * 4 #=> (9/2)
|
69
69
|
# Rational(20, 9) * 9.8 #=> 21.77777777777778
|
70
70
|
#
|
71
|
-
def *: (
|
72
|
-
| (
|
73
|
-
| (
|
71
|
+
def *: (Integer) -> Rational
|
72
|
+
| (Rational) -> Rational
|
73
|
+
| [T < Numeric](T) -> T
|
74
74
|
|
75
75
|
# <!--
|
76
76
|
# rdoc-file=rational.c
|