rbs 2.5.1 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|