rbs 2.5.1 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +1 -1
  3. data/.github/workflows/ruby.yml +3 -3
  4. data/CHANGELOG.md +44 -0
  5. data/Gemfile.lock +5 -5
  6. data/Rakefile +6 -38
  7. data/Steepfile +6 -2
  8. data/core/constants.rbs +1 -1
  9. data/core/env.rbs +1 -1323
  10. data/core/global_variables.rbs +1 -1
  11. data/core/hash.rbs +3 -3
  12. data/core/kernel.rbs +2 -2
  13. data/core/random.rbs +5 -220
  14. data/core/rational.rbs +3 -3
  15. data/core/rbs/unnamed/argf.rbs +965 -0
  16. data/core/rbs/unnamed/env_class.rbs +1325 -0
  17. data/core/rbs/unnamed/random.rbs +270 -0
  18. data/core/regexp.rbs +2 -3
  19. data/docs/CONTRIBUTING.md +2 -2
  20. data/ext/rbs_extension/lexer.c +1343 -1353
  21. data/ext/rbs_extension/lexer.re +2 -2
  22. data/ext/rbs_extension/rbs_extension.h +1 -1
  23. data/ext/rbs_extension/unescape.c +17 -10
  24. data/lib/rbs/ast/members.rb +6 -3
  25. data/lib/rbs/cli.rb +2 -0
  26. data/lib/rbs/factory.rb +2 -0
  27. data/lib/rbs/prototype/helpers.rb +1 -5
  28. data/lib/rbs/prototype/rb.rb +105 -56
  29. data/lib/rbs/prototype/rbi.rb +65 -30
  30. data/lib/rbs/prototype/runtime.rb +4 -3
  31. data/lib/rbs/test/setup_helper.rb +6 -1
  32. data/lib/rbs/version.rb +1 -1
  33. data/schema/members.json +4 -1
  34. data/sig/collection/config.rbs +3 -0
  35. data/sig/factory.rbs +5 -0
  36. data/sig/prototype/helpers.rbs +23 -0
  37. data/sig/prototype/rb.rbs +84 -0
  38. data/sig/prototype/rbi.rbs +73 -0
  39. data/sig/shims/abstract_syntax_tree.rbs +25 -0
  40. data/sig/shims/enumerable.rbs +5 -0
  41. data/sig/shims/pp.rbs +3 -0
  42. data/sig/shims/ripper.rbs +8 -0
  43. data/stdlib/cgi/0/manifest.yaml +2 -0
  44. data/stdlib/date/0/time.rbs +26 -0
  45. data/stdlib/etc/0/etc.rbs +745 -0
  46. data/stdlib/minitest/0/kernel.rbs +42 -0
  47. data/stdlib/minitest/0/manifest.yaml +2 -0
  48. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +49 -0
  49. data/stdlib/minitest/0/minitest/assertion.rbs +16 -0
  50. data/stdlib/minitest/0/minitest/assertions.rbs +545 -0
  51. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +16 -0
  52. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  53. data/stdlib/minitest/0/minitest/benchmark.rbs +258 -0
  54. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  55. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  56. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  57. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  58. data/stdlib/minitest/0/minitest/mock.rbs +60 -0
  59. data/stdlib/minitest/0/minitest/parallel/executor.rbs +42 -0
  60. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +6 -0
  61. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  62. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  63. data/stdlib/minitest/0/minitest/pride_io.rbs +54 -0
  64. data/stdlib/minitest/0/minitest/pride_lol.rbs +17 -0
  65. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  66. data/stdlib/minitest/0/minitest/reportable.rbs +51 -0
  67. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  68. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  69. data/stdlib/minitest/0/minitest/runnable.rbs +131 -0
  70. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  71. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  72. data/stdlib/minitest/0/minitest/spec/dsl.rbs +125 -0
  73. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  74. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +76 -0
  75. data/stdlib/minitest/0/minitest/summary_reporter.rbs +25 -0
  76. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  77. data/stdlib/minitest/0/minitest/test.rbs +76 -0
  78. data/stdlib/minitest/0/minitest/unexpected_error.rbs +10 -0
  79. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  80. data/stdlib/minitest/0/minitest/unit.rbs +5 -0
  81. data/stdlib/minitest/0/minitest.rbs +966 -0
  82. data/stdlib/rubygems/0/errors.rbs +113 -0
  83. metadata +54 -4
  84. data/lib/rbs/char_scanner.rb +0 -20
@@ -0,0 +1,270 @@
1
+ module RBS
2
+ module Unnamed
3
+ %a{annotate:rdoc:copy:Random::Base}
4
+ class Random_Base
5
+ include Random_Formatter
6
+ extend Random_Formatter
7
+
8
+ # <!--
9
+ # rdoc-file=random.c
10
+ # - Random.new(seed = Random.new_seed) -> prng
11
+ # -->
12
+ # Creates a new PRNG using `seed` to set the initial state. If `seed` is
13
+ # omitted, the generator is initialized with Random.new_seed.
14
+ #
15
+ # See Random.srand for more information on the use of seed values.
16
+ #
17
+ %a{annotate:rdoc:copy:Random.new}
18
+ def initialize: (?Integer seed) -> void
19
+
20
+ # <!--
21
+ # rdoc-file=random.c
22
+ # - prng.rand -> float
23
+ # - prng.rand(max) -> number
24
+ # - prng.rand(range) -> number
25
+ # -->
26
+ # When `max` is an Integer, `rand` returns a random integer greater than or
27
+ # equal to zero and less than `max`. Unlike Kernel.rand, when `max` is a
28
+ # negative integer or zero, `rand` raises an ArgumentError.
29
+ #
30
+ # prng = Random.new
31
+ # prng.rand(100) # => 42
32
+ #
33
+ # When `max` is a Float, `rand` returns a random floating point number between
34
+ # 0.0 and `max`, including 0.0 and excluding `max`.
35
+ #
36
+ # prng.rand(1.5) # => 1.4600282860034115
37
+ #
38
+ # When `range` is a Range, `rand` returns a random number where
39
+ # `range.member?(number) == true`.
40
+ #
41
+ # prng.rand(5..9) # => one of [5, 6, 7, 8, 9]
42
+ # prng.rand(5...9) # => one of [5, 6, 7, 8]
43
+ # prng.rand(5.0..9.0) # => between 5.0 and 9.0, including 9.0
44
+ # prng.rand(5.0...9.0) # => between 5.0 and 9.0, excluding 9.0
45
+ #
46
+ # Both the beginning and ending values of the range must respond to subtract
47
+ # (`-`) and add (`+`)methods, or rand will raise an ArgumentError.
48
+ #
49
+ %a{annotate:rdoc:copy:Random#rand}
50
+ def rand: () -> Float
51
+ | (Integer | ::Range[Integer] max) -> Integer
52
+ | (Float | ::Range[Float] max) -> Float
53
+
54
+ # <!--
55
+ # rdoc-file=random.c
56
+ # - prng.bytes(size) -> string
57
+ # -->
58
+ # Returns a random binary string containing `size` bytes.
59
+ #
60
+ # random_string = Random.new.bytes(10) # => "\xD7:R\xAB?\x83\xCE\xFAkO"
61
+ # random_string.size # => 10
62
+ #
63
+ %a{annotate:rdoc:copy:Random#bytes}
64
+ def bytes: (Integer size) -> String
65
+
66
+ # <!--
67
+ # rdoc-file=random.c
68
+ # - prng.seed -> integer
69
+ # -->
70
+ # Returns the seed value used to initialize the generator. This may be used to
71
+ # initialize another generator with the same state at a later time, causing it
72
+ # to produce the same sequence of numbers.
73
+ #
74
+ # prng1 = Random.new(1234)
75
+ # prng1.seed #=> 1234
76
+ # prng1.rand(100) #=> 47
77
+ #
78
+ # prng2 = Random.new(prng1.seed)
79
+ # prng2.rand(100) #=> 47
80
+ #
81
+ %a{annotate:rdoc:copy:Random#seed}
82
+ def seed: () -> Integer
83
+ end
84
+
85
+ # <!-- rdoc-file=lib/random/formatter.rb -->
86
+ # ## Random number formatter.
87
+ #
88
+ # Formats generated random numbers in many manners.
89
+ #
90
+ # ### Examples
91
+ #
92
+ # Generate random hexadecimal strings:
93
+ #
94
+ # require 'random/formatter'
95
+ #
96
+ # prng.hex(10) #=> "52750b30ffbc7de3b362"
97
+ # prng.hex(10) #=> "92b15d6c8dc4beb5f559"
98
+ # prng.hex(13) #=> "39b290146bea6ce975c37cfc23"
99
+ #
100
+ # Generate random base64 strings:
101
+ #
102
+ # prng.base64(10) #=> "EcmTPZwWRAozdA=="
103
+ # prng.base64(10) #=> "KO1nIU+p9DKxGg=="
104
+ # prng.base64(12) #=> "7kJSM/MzBJI+75j8"
105
+ #
106
+ # Generate random binary strings:
107
+ #
108
+ # prng.random_bytes(10) #=> "\016\t{\370g\310pbr\301"
109
+ # prng.random_bytes(10) #=> "\323U\030TO\234\357\020\a\337"
110
+ #
111
+ # Generate alphanumeric strings:
112
+ #
113
+ # prng.alphanumeric(10) #=> "S8baxMJnPl"
114
+ # prng.alphanumeric(10) #=> "aOxAg8BAJe"
115
+ #
116
+ # Generate UUIDs:
117
+ #
118
+ # prng.uuid #=> "2d931510-d99f-494a-8c67-87feb05e1594"
119
+ # prng.uuid #=> "bad85eb9-0713-4da7-8d36-07a8e4b00eab"
120
+ #
121
+ # <!-- rdoc-file=random.c -->
122
+ # Generate a random number in the given range as Random does
123
+ #
124
+ # prng.random_number #=> 0.5816771641321361
125
+ # prng.random_number(1000) #=> 485
126
+ # prng.random_number(1..6) #=> 3
127
+ # prng.rand #=> 0.5816771641321361
128
+ # prng.rand(1000) #=> 485
129
+ # prng.rand(1..6) #=> 3
130
+ #
131
+ %a{annotate:rdoc:copy:Random::Formatter}
132
+ module Random_Formatter
133
+ # <!--
134
+ # rdoc-file=lib/random/formatter.rb
135
+ # - base64(n=nil)
136
+ # -->
137
+ # Random::Formatter#base64 generates a random base64 string.
138
+ #
139
+ # The argument *n* specifies the length, in bytes, of the random number to be
140
+ # generated. The length of the result string is about 4/3 of *n*.
141
+ #
142
+ # If *n* is not specified or is nil, 16 is assumed. It may be larger in the
143
+ # future.
144
+ #
145
+ # The result may contain A-Z, a-z, 0-9, "+", "/" and "=".
146
+ #
147
+ # require 'random/formatter'
148
+ #
149
+ # prng.base64 #=> "/2BuBuLf3+WfSKyQbRcc/A=="
150
+ # prng.base64 #=> "6BbW0pxO0YENxn38HMUbcQ=="
151
+ #
152
+ # See RFC 3548 for the definition of base64.
153
+ #
154
+ %a{annotate:rdoc:copy:Random::Formatter#base64}
155
+ def base64: (?Integer? n) -> String
156
+
157
+ # <!--
158
+ # rdoc-file=lib/random/formatter.rb
159
+ # - hex(n=nil)
160
+ # -->
161
+ # Random::Formatter#hex generates a random hexadecimal string.
162
+ #
163
+ # The argument *n* specifies the length, in bytes, of the random number to be
164
+ # generated. The length of the resulting hexadecimal string is twice of *n*.
165
+ #
166
+ # If *n* is not specified or is nil, 16 is assumed. It may be larger in the
167
+ # future.
168
+ #
169
+ # The result may contain 0-9 and a-f.
170
+ #
171
+ # require 'random/formatter'
172
+ #
173
+ # prng.hex #=> "eb693ec8252cd630102fd0d0fb7c3485"
174
+ # prng.hex #=> "91dc3bfb4de5b11d029d376634589b61"
175
+ #
176
+ %a{annotate:rdoc:copy:Random::Formatter#hex}
177
+ def hex: (?Integer? n) -> String
178
+
179
+ # <!-- rdoc-file=random.c -->
180
+ # Generates formatted random number from raw random bytes. See Random#rand.
181
+ #
182
+ %a{annotate:rdoc:copy:Random::Formatter#rand}
183
+ def rand: () -> Float
184
+ | (?Float? n) -> Float
185
+ | (?Integer? n) -> Integer
186
+ | (?Numeric? n) -> Numeric
187
+ | (?::Range[Float]? n) -> Float
188
+ | (?::Range[Integer]? n) -> Integer
189
+ | (?::Range[Numeric]? n) -> Numeric
190
+
191
+ %a{annotate:rdoc:copy:Random::Formatter#random_byte}
192
+ def random_bytes: (?Integer? n) -> String
193
+
194
+ # <!--
195
+ # rdoc-file=random.c
196
+ # - prng.random_number -> float
197
+ # - prng.random_number(max) -> number
198
+ # - prng.random_number(range) -> number
199
+ # - prng.rand -> float
200
+ # - prng.rand(max) -> number
201
+ # - prng.rand(range) -> number
202
+ # -->
203
+ # Generates formatted random number from raw random bytes. See Random#rand.
204
+ #
205
+ %a{annotate:rdoc:copy:Random::Formatter#random_number}
206
+ def random_number: () -> Float
207
+ | (?Float? n) -> Float
208
+ | (?Integer? n) -> Integer
209
+ | (?Numeric? n) -> Numeric
210
+ | (?::Range[Float]? n) -> Float
211
+ | (?::Range[Integer]? n) -> Integer
212
+ | (?::Range[Numeric]? n) -> Numeric
213
+
214
+ # <!--
215
+ # rdoc-file=lib/random/formatter.rb
216
+ # - urlsafe_base64(n=nil, padding=false)
217
+ # -->
218
+ # Random::Formatter#urlsafe_base64 generates a random URL-safe base64 string.
219
+ #
220
+ # The argument *n* specifies the length, in bytes, of the random number to be
221
+ # generated. The length of the result string is about 4/3 of *n*.
222
+ #
223
+ # If *n* is not specified or is nil, 16 is assumed. It may be larger in the
224
+ # future.
225
+ #
226
+ # The boolean argument *padding* specifies the padding. If it is false or nil,
227
+ # padding is not generated. Otherwise padding is generated. By default, padding
228
+ # is not generated because "=" may be used as a URL delimiter.
229
+ #
230
+ # The result may contain A-Z, a-z, 0-9, "-" and "_". "=" is also used if
231
+ # *padding* is true.
232
+ #
233
+ # require 'random/formatter'
234
+ #
235
+ # prng.urlsafe_base64 #=> "b4GOKm4pOYU_-BOXcrUGDg"
236
+ # prng.urlsafe_base64 #=> "UZLdOkzop70Ddx-IJR0ABg"
237
+ #
238
+ # prng.urlsafe_base64(nil, true) #=> "i0XQ-7gglIsHGV2_BNPrdQ=="
239
+ # prng.urlsafe_base64(nil, true) #=> "-M8rLhr7JEpJlqFGUMmOxg=="
240
+ #
241
+ # See RFC 3548 for the definition of URL-safe base64.
242
+ #
243
+ %a{annotate:rdoc:copy:Random::Formatter#urlsafe_base64}
244
+ def urlsafe_base64: (?Integer? n, ?boolish padding) -> String
245
+
246
+ # <!--
247
+ # rdoc-file=lib/random/formatter.rb
248
+ # - uuid()
249
+ # -->
250
+ # Random::Formatter#uuid generates a random v4 UUID (Universally Unique
251
+ # IDentifier).
252
+ #
253
+ # require 'random/formatter'
254
+ #
255
+ # prng.uuid #=> "2d931510-d99f-494a-8c67-87feb05e1594"
256
+ # prng.uuid #=> "bad85eb9-0713-4da7-8d36-07a8e4b00eab"
257
+ # prng.uuid #=> "62936e70-1815-439b-bf89-8492855a7e6b"
258
+ #
259
+ # The version 4 UUID is purely random (except the version). It doesn't contain
260
+ # meaningful information such as MAC addresses, timestamps, etc.
261
+ #
262
+ # The result contains 122 random bits (15.25 random bytes).
263
+ #
264
+ # See RFC 4122 for details of UUID.
265
+ #
266
+ %a{annotate:rdoc:copy:Random::Formatter#uuid}
267
+ def uuid: () -> String
268
+ end
269
+ end
270
+ end
data/core/regexp.rbs CHANGED
@@ -760,7 +760,7 @@ class Regexp
760
760
  # r3 = Regexp.new(r2) #=> /cat/i
761
761
  # r4 = Regexp.new('dog', Regexp::EXTENDED | Regexp::IGNORECASE) #=> /dog/ix
762
762
  #
763
- def initialize: (String string, ?untyped options, ?String kcode) -> Object
763
+ def initialize: (String string, ?Integer | nil | false options, ?String kcode) -> Object
764
764
  | (Regexp regexp) -> void
765
765
 
766
766
  # <!--
@@ -769,8 +769,7 @@ class Regexp
769
769
  # -->
770
770
  # Alias for Regexp.new
771
771
  #
772
- def self.compile: (String string, ?untyped options, ?String kcode) -> Regexp
773
- | (Regexp regexp) -> Regexp
772
+ alias self.compile self.new
774
773
 
775
774
  # <!--
776
775
  # rdoc-file=re.c
data/docs/CONTRIBUTING.md CHANGED
@@ -32,7 +32,7 @@ You will typically follow the steps as follows:
32
32
 
33
33
  1. Run `rbs prototype runtime` to generate list of methods.
34
34
  2. Run `rbs annotate` to import RDoc comments.
35
- 3. Run `rbs generate:stdlib_test[LIB]` to generate a test case.
35
+ 3. Run `rake generate:stdlib_test[LIB]` to generate a test case.
36
36
  4. Write the type definitions and tests.
37
37
 
38
38
  See the next *Useful Tools* section and the guides above for writing and testing RBS files.
@@ -51,7 +51,7 @@ See the next *Useful Tools* section and the guides above for writing and testing
51
51
  * Print RDoc documents in the format you can copy-and-paste to RBS.
52
52
  * `bin/sort core/string.rbs`
53
53
  * Sort declarations members in RBS files.
54
- * `rbs validate -r LIB`
54
+ * `rbs -r LIB validate`
55
55
  Validate the syntax and some of the semantics.
56
56
  * `rake generate:stdlib_test[String]`
57
57
  Scaffold the stdlib test.