rbs 3.10.4 → 4.0.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/dependabot.yml +14 -14
- data/.github/workflows/bundle-update.yml +60 -0
- data/.github/workflows/c-check.yml +7 -5
- data/.github/workflows/comments.yml +2 -2
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/ruby.yml +16 -26
- data/.github/workflows/rust.yml +95 -0
- data/.github/workflows/typecheck.yml +1 -1
- data/.github/workflows/windows.yml +2 -2
- data/.rubocop.yml +2 -2
- data/.vscode/extensions.json +5 -0
- data/.vscode/settings.json +19 -0
- data/CHANGELOG.md +202 -2
- data/Rakefile +9 -23
- data/Steepfile +2 -0
- data/config.yml +457 -13
- data/core/array.rbs +218 -188
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +2 -2
- data/core/class.rbs +6 -5
- data/core/comparable.rbs +45 -31
- data/core/complex.rbs +66 -55
- data/core/dir.rbs +57 -45
- data/core/encoding.rbs +6 -6
- data/core/enumerable.rbs +105 -91
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator.rbs +24 -3
- data/core/errno.rbs +3 -2
- data/core/errors.rbs +31 -29
- data/core/exception.rbs +12 -12
- data/core/fiber.rbs +47 -36
- data/core/file.rbs +242 -169
- data/core/file_test.rbs +2 -2
- data/core/float.rbs +42 -68
- data/core/gc.rbs +78 -70
- data/core/hash.rbs +70 -60
- data/core/integer.rbs +32 -75
- data/core/io/buffer.rbs +36 -36
- data/core/io/wait.rbs +7 -7
- data/core/io.rbs +192 -146
- data/core/kernel.rbs +198 -147
- data/core/marshal.rbs +3 -3
- data/core/match_data.rbs +14 -12
- data/core/math.rbs +69 -67
- data/core/method.rbs +6 -8
- data/core/module.rbs +148 -88
- data/core/nil_class.rbs +4 -3
- data/core/numeric.rbs +53 -50
- data/core/object.rbs +6 -8
- data/core/object_space.rbs +11 -10
- data/core/pathname.rbs +131 -81
- data/core/proc.rbs +65 -34
- data/core/process.rbs +221 -201
- data/core/ractor.rbs +15 -11
- data/core/random.rbs +21 -3
- data/core/range.rbs +152 -49
- data/core/rational.rbs +5 -56
- data/core/rbs/unnamed/argf.rbs +58 -51
- data/core/rbs/unnamed/env_class.rbs +18 -13
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +7 -116
- data/core/regexp.rbs +236 -197
- data/core/ruby.rbs +1 -1
- data/core/ruby_vm.rbs +32 -30
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +1 -1
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +5 -3
- data/core/set.rbs +17 -16
- data/core/signal.rbs +2 -2
- data/core/string.rbs +318 -298
- data/core/struct.rbs +26 -25
- data/core/symbol.rbs +25 -24
- data/core/thread.rbs +40 -41
- data/core/time.rbs +47 -42
- data/core/trace_point.rbs +34 -31
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +10 -10
- data/core/warning.rbs +7 -7
- data/docs/collection.md +1 -1
- data/docs/config.md +171 -0
- data/docs/inline.md +576 -0
- data/docs/syntax.md +46 -16
- data/docs/type_fingerprint.md +21 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +595 -98
- data/ext/rbs_extension/class_constants.c +30 -0
- data/ext/rbs_extension/class_constants.h +15 -0
- data/ext/rbs_extension/legacy_location.c +30 -53
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +125 -24
- data/include/rbs/ast.h +485 -150
- data/include/rbs/lexer.h +11 -4
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +20 -2
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- data/include/rbs.h +8 -0
- data/lib/rbs/ast/annotation.rb +1 -1
- data/lib/rbs/ast/comment.rb +1 -1
- data/lib/rbs/ast/declarations.rb +10 -10
- data/lib/rbs/ast/members.rb +14 -14
- data/lib/rbs/ast/ruby/annotations.rb +409 -0
- data/lib/rbs/ast/ruby/comment_block.rb +245 -0
- data/lib/rbs/ast/ruby/declarations.rb +281 -0
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/lib/rbs/ast/ruby/members.rb +723 -0
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +105 -20
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +62 -125
- data/lib/rbs/cli.rb +55 -23
- data/lib/rbs/collection/config/lockfile_generator.rb +8 -4
- data/lib/rbs/collection/sources/git.rb +1 -0
- data/lib/rbs/collection.rb +0 -1
- data/lib/rbs/definition.rb +6 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +119 -63
- data/lib/rbs/definition_builder/method_builder.rb +65 -30
- data/lib/rbs/definition_builder.rb +177 -20
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment/class_entry.rb +69 -0
- data/lib/rbs/environment/module_entry.rb +66 -0
- data/lib/rbs/environment.rb +338 -155
- data/lib/rbs/environment_loader.rb +2 -2
- data/lib/rbs/errors.rb +30 -20
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +542 -0
- data/lib/rbs/location_aux.rb +36 -4
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/namespace.rb +0 -7
- data/lib/rbs/parser_aux.rb +31 -8
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +3 -28
- data/lib/rbs/prototype/rbi.rb +3 -20
- data/lib/rbs/prototype/runtime.rb +10 -2
- data/lib/rbs/resolver/type_name_resolver.rb +0 -8
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/subtractor.rb +4 -3
- data/lib/rbs/test/type_check.rb +5 -2
- data/lib/rbs/type_name.rb +1 -8
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/convertibles.rb +1 -0
- data/lib/rbs/unit_test/type_assertions.rb +35 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +12 -1
- data/rbs.gemspec +3 -2
- data/rust/.gitignore +1 -0
- data/rust/Cargo.lock +378 -0
- data/rust/Cargo.toml +7 -0
- data/rust/ruby-rbs/Cargo.toml +22 -0
- data/rust/ruby-rbs/build.rs +764 -0
- data/rust/ruby-rbs/examples/locations.rs +60 -0
- data/rust/ruby-rbs/src/lib.rs +1 -0
- data/rust/ruby-rbs/src/node/mod.rs +742 -0
- data/rust/ruby-rbs/tests/sanity.rs +47 -0
- data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
- data/rust/ruby-rbs-sys/Cargo.toml +23 -0
- data/rust/ruby-rbs-sys/build.rs +204 -0
- data/rust/ruby-rbs-sys/src/lib.rs +50 -0
- data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
- data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
- data/rust/ruby-rbs-sys/wrapper.h +1 -0
- data/schema/typeParam.json +17 -1
- data/sig/ancestor_builder.rbs +1 -1
- data/sig/ast/ruby/annotations.rbs +421 -0
- data/sig/ast/ruby/comment_block.rbs +127 -0
- data/sig/ast/ruby/declarations.rbs +158 -0
- data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
- data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
- data/sig/ast/ruby/members.rbs +178 -0
- data/sig/buffer.rbs +63 -5
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/definition.rbs +6 -0
- data/sig/definition_builder.rbs +3 -1
- data/sig/environment/class_entry.rbs +50 -0
- data/sig/environment/module_entry.rbs +50 -0
- data/sig/environment.rbs +37 -81
- data/sig/errors.rbs +26 -20
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +124 -0
- data/sig/location.rbs +32 -7
- data/sig/locator.rbs +0 -2
- data/sig/method_builder.rbs +9 -4
- data/sig/namespace.rbs +0 -5
- data/sig/parser.rbs +47 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +0 -3
- data/sig/source.rbs +48 -0
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +0 -5
- data/sig/types.rbs +6 -7
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +11 -0
- data/src/ast.c +491 -143
- data/src/lexer.c +1552 -1314
- data/src/lexer.re +7 -0
- data/src/lexstate.c +8 -1
- data/src/location.c +8 -48
- data/src/parser.c +1107 -409
- data/src/util/rbs_constant_pool.c +0 -4
- data/stdlib/bigdecimal/0/big_decimal.rbs +16 -16
- data/stdlib/cgi-escape/0/escape.rbs +4 -4
- data/stdlib/coverage/0/coverage.rbs +4 -3
- data/stdlib/date/0/date.rbs +33 -28
- data/stdlib/date/0/date_time.rbs +24 -23
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/digest/0/digest.rbs +110 -0
- data/stdlib/erb/0/erb.rbs +64 -53
- data/stdlib/etc/0/etc.rbs +55 -50
- data/stdlib/fileutils/0/fileutils.rbs +140 -126
- data/stdlib/forwardable/0/forwardable.rbs +10 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +158 -131
- data/stdlib/monitor/0/monitor.rbs +3 -3
- data/stdlib/net-http/0/net-http.rbs +159 -134
- data/stdlib/objspace/0/objspace.rbs +8 -30
- data/stdlib/open-uri/0/open-uri.rbs +8 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +144 -129
- data/stdlib/optparse/0/optparse.rbs +23 -14
- data/stdlib/pathname/0/pathname.rbs +2 -2
- data/stdlib/pp/0/pp.rbs +9 -8
- data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
- data/stdlib/pstore/0/pstore.rbs +35 -30
- data/stdlib/psych/0/psych.rbs +62 -9
- data/stdlib/psych/0/store.rbs +2 -4
- data/stdlib/pty/0/pty.rbs +9 -6
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +2 -1
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/ripper/0/ripper.rbs +20 -17
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -20
- data/stdlib/shellwords/0/shellwords.rbs +2 -2
- data/stdlib/socket/0/addrinfo.rbs +9 -9
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +10 -9
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +1 -1
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +55 -54
- data/stdlib/strscan/0/string_scanner.rbs +46 -44
- data/stdlib/tempfile/0/tempfile.rbs +24 -20
- data/stdlib/time/0/time.rbs +7 -5
- data/stdlib/tsort/0/tsort.rbs +7 -6
- data/stdlib/uri/0/common.rbs +31 -18
- data/stdlib/uri/0/file.rbs +2 -2
- data/stdlib/uri/0/generic.rbs +9 -2
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/ldap.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +3 -3
- data/stdlib/uri/0/rfc2396_parser.rbs +6 -5
- data/stdlib/zlib/0/deflate.rbs +4 -3
- data/stdlib/zlib/0/gzip_reader.rbs +6 -6
- data/stdlib/zlib/0/gzip_writer.rbs +14 -12
- data/stdlib/zlib/0/inflate.rbs +1 -1
- data/stdlib/zlib/0/need_dict.rbs +1 -1
- metadata +66 -3
data/core/rbs/unnamed/random.rbs
CHANGED
|
@@ -38,7 +38,7 @@ module RBS
|
|
|
38
38
|
# rand(1.5) # => 0
|
|
39
39
|
#
|
|
40
40
|
# When `range` is a Range, `rand` returns a random number where
|
|
41
|
-
#
|
|
41
|
+
# <code>range.member?(number) == true</code>.
|
|
42
42
|
#
|
|
43
43
|
# prng.rand(5..9) # => one of [5, 6, 7, 8, 9]
|
|
44
44
|
# prng.rand(5...9) # => one of [5, 6, 7, 8]
|
|
@@ -46,7 +46,8 @@ module RBS
|
|
|
46
46
|
# prng.rand(5.0...9.0) # => between 5.0 and 9.0, excluding 9.0
|
|
47
47
|
#
|
|
48
48
|
# Both the beginning and ending values of the range must respond to subtract
|
|
49
|
-
# (
|
|
49
|
+
# (<code>-</code>) and add (<code>+</code>)methods, or rand will raise an
|
|
50
|
+
# ArgumentError.
|
|
50
51
|
#
|
|
51
52
|
%a{annotate:rdoc:copy:Random#rand}
|
|
52
53
|
def rand: (?0) -> Float
|
|
@@ -87,9 +88,10 @@ module RBS
|
|
|
87
88
|
# <!-- rdoc-file=lib/random/formatter.rb -->
|
|
88
89
|
# ## Random number formatter.
|
|
89
90
|
#
|
|
90
|
-
# Formats generated random numbers in many manners. When
|
|
91
|
-
# required, several methods are added to
|
|
92
|
-
#
|
|
91
|
+
# Formats generated random numbers in many manners. When
|
|
92
|
+
# <code>'random/formatter'</code> is required, several methods are added to
|
|
93
|
+
# empty core module <code>Random::Formatter</code>, making them available as
|
|
94
|
+
# Random's instance and module methods.
|
|
93
95
|
#
|
|
94
96
|
# Standard library SecureRandom is also extended with the module, and the
|
|
95
97
|
# methods described below are available as a module methods in it.
|
|
@@ -148,56 +150,6 @@ module RBS
|
|
|
148
150
|
#
|
|
149
151
|
%a{annotate:rdoc:copy:Random::Formatter}
|
|
150
152
|
module Random_Formatter
|
|
151
|
-
# <!--
|
|
152
|
-
# rdoc-file=lib/random/formatter.rb
|
|
153
|
-
# - base64(n=nil)
|
|
154
|
-
# -->
|
|
155
|
-
# Generate a random base64 string.
|
|
156
|
-
#
|
|
157
|
-
# The argument *n* specifies the length, in bytes, of the random number to be
|
|
158
|
-
# generated. The length of the result string is about 4/3 of *n*.
|
|
159
|
-
#
|
|
160
|
-
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
|
161
|
-
# future.
|
|
162
|
-
#
|
|
163
|
-
# The result may contain A-Z, a-z, 0-9, "+", "/" and "=".
|
|
164
|
-
#
|
|
165
|
-
# require 'random/formatter'
|
|
166
|
-
#
|
|
167
|
-
# Random.base64 #=> "/2BuBuLf3+WfSKyQbRcc/A=="
|
|
168
|
-
# # or
|
|
169
|
-
# prng = Random.new
|
|
170
|
-
# prng.base64 #=> "6BbW0pxO0YENxn38HMUbcQ=="
|
|
171
|
-
#
|
|
172
|
-
# See RFC 3548 for the definition of base64.
|
|
173
|
-
#
|
|
174
|
-
%a{annotate:rdoc:copy:Random::Formatter#base64}
|
|
175
|
-
def base64: (?Integer? n) -> String
|
|
176
|
-
|
|
177
|
-
# <!--
|
|
178
|
-
# rdoc-file=lib/random/formatter.rb
|
|
179
|
-
# - hex(n=nil)
|
|
180
|
-
# -->
|
|
181
|
-
# Generate a random hexadecimal string.
|
|
182
|
-
#
|
|
183
|
-
# The argument *n* specifies the length, in bytes, of the random number to be
|
|
184
|
-
# generated. The length of the resulting hexadecimal string is twice of *n*.
|
|
185
|
-
#
|
|
186
|
-
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
|
187
|
-
# future.
|
|
188
|
-
#
|
|
189
|
-
# The result may contain 0-9 and a-f.
|
|
190
|
-
#
|
|
191
|
-
# require 'random/formatter'
|
|
192
|
-
#
|
|
193
|
-
# Random.hex #=> "eb693ec8252cd630102fd0d0fb7c3485"
|
|
194
|
-
# # or
|
|
195
|
-
# prng = Random.new
|
|
196
|
-
# prng.hex #=> "91dc3bfb4de5b11d029d376634589b61"
|
|
197
|
-
#
|
|
198
|
-
%a{annotate:rdoc:copy:Random::Formatter#hex}
|
|
199
|
-
def hex: (?Integer? n) -> String
|
|
200
|
-
|
|
201
153
|
# <!-- rdoc-file=random.c -->
|
|
202
154
|
# Generates formatted random number from raw random bytes. See Random#rand.
|
|
203
155
|
#
|
|
@@ -210,9 +162,6 @@ module RBS
|
|
|
210
162
|
| (::Range[Integer] n) -> Integer
|
|
211
163
|
| (::Range[Numeric] n) -> Numeric
|
|
212
164
|
|
|
213
|
-
%a{annotate:rdoc:copy:Random::Formatter#random_byte}
|
|
214
|
-
def random_bytes: (?Integer? n) -> String
|
|
215
|
-
|
|
216
165
|
# <!--
|
|
217
166
|
# rdoc-file=random.c
|
|
218
167
|
# - prng.random_number -> float
|
|
@@ -232,64 +181,6 @@ module RBS
|
|
|
232
181
|
| (?::Range[Float]? n) -> Float
|
|
233
182
|
| (?::Range[Integer]? n) -> Integer
|
|
234
183
|
| (?::Range[Numeric]? n) -> Numeric
|
|
235
|
-
|
|
236
|
-
# <!--
|
|
237
|
-
# rdoc-file=lib/random/formatter.rb
|
|
238
|
-
# - urlsafe_base64(n=nil, padding=false)
|
|
239
|
-
# -->
|
|
240
|
-
# Generate a random URL-safe base64 string.
|
|
241
|
-
#
|
|
242
|
-
# The argument *n* specifies the length, in bytes, of the random number to be
|
|
243
|
-
# generated. The length of the result string is about 4/3 of *n*.
|
|
244
|
-
#
|
|
245
|
-
# If *n* is not specified or is nil, 16 is assumed. It may be larger in the
|
|
246
|
-
# future.
|
|
247
|
-
#
|
|
248
|
-
# The boolean argument *padding* specifies the padding. If it is false or nil,
|
|
249
|
-
# padding is not generated. Otherwise padding is generated. By default, padding
|
|
250
|
-
# is not generated because "=" may be used as a URL delimiter.
|
|
251
|
-
#
|
|
252
|
-
# The result may contain A-Z, a-z, 0-9, "-" and "_". "=" is also used if
|
|
253
|
-
# *padding* is true.
|
|
254
|
-
#
|
|
255
|
-
# require 'random/formatter'
|
|
256
|
-
#
|
|
257
|
-
# Random.urlsafe_base64 #=> "b4GOKm4pOYU_-BOXcrUGDg"
|
|
258
|
-
# # or
|
|
259
|
-
# prng = Random.new
|
|
260
|
-
# prng.urlsafe_base64 #=> "UZLdOkzop70Ddx-IJR0ABg"
|
|
261
|
-
#
|
|
262
|
-
# prng.urlsafe_base64(nil, true) #=> "i0XQ-7gglIsHGV2_BNPrdQ=="
|
|
263
|
-
# prng.urlsafe_base64(nil, true) #=> "-M8rLhr7JEpJlqFGUMmOxg=="
|
|
264
|
-
#
|
|
265
|
-
# See RFC 3548 for the definition of URL-safe base64.
|
|
266
|
-
#
|
|
267
|
-
%a{annotate:rdoc:copy:Random::Formatter#urlsafe_base64}
|
|
268
|
-
def urlsafe_base64: (?Integer? n, ?boolish padding) -> String
|
|
269
|
-
|
|
270
|
-
# <!--
|
|
271
|
-
# rdoc-file=lib/random/formatter.rb
|
|
272
|
-
# - uuid()
|
|
273
|
-
# -->
|
|
274
|
-
# Generate a random v4 UUID (Universally Unique IDentifier).
|
|
275
|
-
#
|
|
276
|
-
# require 'random/formatter'
|
|
277
|
-
#
|
|
278
|
-
# Random.uuid #=> "2d931510-d99f-494a-8c67-87feb05e1594"
|
|
279
|
-
# Random.uuid #=> "bad85eb9-0713-4da7-8d36-07a8e4b00eab"
|
|
280
|
-
# # or
|
|
281
|
-
# prng = Random.new
|
|
282
|
-
# prng.uuid #=> "62936e70-1815-439b-bf89-8492855a7e6b"
|
|
283
|
-
#
|
|
284
|
-
# The version 4 UUID is purely random (except the version). It doesn't contain
|
|
285
|
-
# meaningful information such as MAC addresses, timestamps, etc.
|
|
286
|
-
#
|
|
287
|
-
# The result contains 122 random bits (15.25 random bytes).
|
|
288
|
-
#
|
|
289
|
-
# See [RFC9562](https://www.rfc-editor.org/rfc/rfc9562) for details of UUIDv4.
|
|
290
|
-
#
|
|
291
|
-
%a{annotate:rdoc:copy:Random::Formatter#uuid}
|
|
292
|
-
def uuid: () -> String
|
|
293
184
|
end
|
|
294
185
|
end
|
|
295
186
|
end
|