rbs 3.9.4 → 3.10.2
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/.clang-format +74 -0
- data/.clangd +2 -0
- data/.github/workflows/c-check.yml +54 -0
- data/.github/workflows/comments.yml +2 -2
- data/.github/workflows/ruby.yml +33 -19
- data/.github/workflows/typecheck.yml +1 -1
- data/.github/workflows/windows.yml +1 -1
- data/.gitignore +4 -0
- data/CHANGELOG.md +81 -0
- data/README.md +38 -1
- data/Rakefile +152 -23
- data/config.yml +190 -62
- data/core/array.rbs +96 -46
- data/core/comparable.rbs +13 -6
- data/core/complex.rbs +40 -25
- data/core/dir.rbs +4 -4
- data/core/encoding.rbs +6 -9
- data/core/enumerable.rbs +90 -3
- data/core/enumerator.rbs +43 -1
- data/core/errno.rbs +8 -0
- data/core/errors.rbs +28 -1
- data/core/exception.rbs +2 -2
- data/core/fiber.rbs +29 -20
- data/core/file.rbs +49 -19
- data/core/file_test.rbs +1 -1
- data/core/float.rbs +224 -33
- data/core/gc.rbs +417 -281
- data/core/hash.rbs +1023 -727
- data/core/integer.rbs +104 -63
- data/core/io/buffer.rbs +21 -10
- data/core/io/wait.rbs +11 -33
- data/core/io.rbs +14 -12
- data/core/kernel.rbs +61 -51
- data/core/marshal.rbs +1 -1
- data/core/match_data.rbs +1 -1
- data/core/math.rbs +42 -3
- data/core/method.rbs +63 -25
- data/core/module.rbs +101 -23
- data/core/nil_class.rbs +3 -3
- data/core/numeric.rbs +25 -17
- data/core/object.rbs +3 -3
- data/core/object_space.rbs +21 -15
- data/core/pathname.rbs +1272 -0
- data/core/proc.rbs +30 -24
- data/core/process.rbs +2 -2
- data/core/ractor.rbs +361 -509
- data/core/range.rbs +7 -8
- data/core/rational.rbs +56 -34
- data/core/rbs/unnamed/argf.rbs +2 -2
- data/core/rbs/unnamed/env_class.rbs +1 -1
- data/core/rbs/unnamed/random.rbs +4 -2
- data/core/regexp.rbs +25 -20
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +6 -4
- data/core/rubygems/errors.rbs +3 -70
- data/core/rubygems/rubygems.rbs +11 -79
- data/core/rubygems/version.rbs +2 -3
- data/core/set.rbs +488 -359
- data/core/signal.rbs +24 -14
- data/core/string.rbs +3164 -1235
- data/core/struct.rbs +1 -1
- data/core/symbol.rbs +17 -11
- data/core/thread.rbs +95 -33
- data/core/time.rbs +35 -9
- data/core/trace_point.rbs +7 -4
- data/core/unbound_method.rbs +14 -6
- data/docs/aliases.md +79 -0
- data/docs/collection.md +2 -2
- data/docs/encoding.md +56 -0
- data/docs/gem.md +0 -1
- data/docs/sigs.md +3 -3
- data/ext/rbs_extension/ast_translation.c +1016 -0
- data/ext/rbs_extension/ast_translation.h +37 -0
- data/ext/rbs_extension/class_constants.c +155 -0
- data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +7 -1
- data/ext/rbs_extension/compat.h +10 -0
- data/ext/rbs_extension/extconf.rb +25 -1
- data/ext/rbs_extension/legacy_location.c +317 -0
- data/ext/rbs_extension/legacy_location.h +45 -0
- data/ext/rbs_extension/main.c +367 -23
- data/ext/rbs_extension/rbs_extension.h +6 -21
- data/ext/rbs_extension/rbs_string_bridging.c +9 -0
- data/ext/rbs_extension/rbs_string_bridging.h +24 -0
- data/include/rbs/ast.h +687 -0
- data/include/rbs/defines.h +86 -0
- data/include/rbs/lexer.h +199 -0
- data/include/rbs/location.h +59 -0
- data/include/rbs/parser.h +135 -0
- data/include/rbs/string.h +47 -0
- data/include/rbs/util/rbs_allocator.h +59 -0
- data/include/rbs/util/rbs_assert.h +20 -0
- data/include/rbs/util/rbs_buffer.h +83 -0
- data/include/rbs/util/rbs_constant_pool.h +6 -67
- data/include/rbs/util/rbs_encoding.h +282 -0
- data/include/rbs/util/rbs_unescape.h +24 -0
- data/include/rbs.h +1 -2
- data/lib/rbs/annotate/formatter.rb +3 -13
- data/lib/rbs/annotate/rdoc_annotator.rb +3 -1
- data/lib/rbs/annotate/rdoc_source.rb +1 -1
- data/lib/rbs/cli/validate.rb +2 -2
- data/lib/rbs/cli.rb +1 -1
- data/lib/rbs/collection/config/lockfile_generator.rb +8 -0
- data/lib/rbs/collection.rb +1 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +5 -5
- data/lib/rbs/environment.rb +64 -59
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +1 -1
- data/lib/rbs/parser_aux.rb +5 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +124 -38
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +14 -0
- data/lib/rbs/types.rb +3 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +1 -1
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +3 -3
- data/sig/annotate/formatter.rbs +2 -2
- data/sig/annotate/rdoc_annotater.rbs +1 -1
- data/sig/environment.rbs +57 -6
- data/sig/manifest.yaml +0 -1
- data/sig/parser.rbs +20 -0
- data/sig/resolver/type_name_resolver.rbs +38 -7
- data/sig/types.rbs +4 -1
- data/src/ast.c +1256 -0
- data/src/lexer.c +2956 -0
- data/src/lexer.re +147 -0
- data/src/lexstate.c +205 -0
- data/src/location.c +71 -0
- data/src/parser.c +3507 -0
- data/src/string.c +41 -0
- data/src/util/rbs_allocator.c +165 -0
- data/src/util/rbs_assert.c +19 -0
- data/src/util/rbs_buffer.c +54 -0
- data/src/util/rbs_constant_pool.c +18 -88
- data/src/util/rbs_encoding.c +21308 -0
- data/src/util/rbs_unescape.c +167 -0
- data/stdlib/bigdecimal/0/big_decimal.rbs +100 -82
- data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
- data/stdlib/cgi/0/core.rbs +9 -393
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +3 -1
- data/stdlib/date/0/date.rbs +67 -59
- data/stdlib/date/0/date_time.rbs +1 -1
- data/stdlib/delegate/0/delegator.rbs +10 -7
- data/stdlib/erb/0/erb.rbs +737 -347
- data/stdlib/fileutils/0/fileutils.rbs +18 -13
- data/stdlib/forwardable/0/forwardable.rbs +3 -0
- data/stdlib/json/0/json.rbs +68 -48
- data/stdlib/net-http/0/net-http.rbs +3 -0
- data/stdlib/objspace/0/objspace.rbs +9 -4
- data/stdlib/open-uri/0/open-uri.rbs +40 -0
- data/stdlib/openssl/0/openssl.rbs +331 -228
- data/stdlib/optparse/0/optparse.rbs +3 -3
- data/stdlib/pathname/0/pathname.rbs +9 -1379
- data/stdlib/psych/0/psych.rbs +3 -3
- data/stdlib/rdoc/0/code_object.rbs +2 -2
- data/stdlib/rdoc/0/comment.rbs +2 -0
- data/stdlib/rdoc/0/options.rbs +76 -0
- data/stdlib/rdoc/0/rdoc.rbs +7 -5
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +25 -68
- data/stdlib/ripper/0/ripper.rbs +5 -2
- data/stdlib/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/socket.rbs +13 -1
- data/stdlib/socket/0/tcp_socket.rbs +10 -2
- data/stdlib/stringio/0/stringio.rbs +1176 -85
- data/stdlib/strscan/0/string_scanner.rbs +31 -31
- data/stdlib/tempfile/0/tempfile.rbs +3 -3
- data/stdlib/time/0/time.rbs +1 -1
- data/stdlib/timeout/0/timeout.rbs +63 -7
- data/stdlib/tsort/0/cyclic.rbs +3 -0
- data/stdlib/uri/0/common.rbs +11 -2
- data/stdlib/uri/0/file.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +17 -16
- data/stdlib/uri/0/rfc2396_parser.rbs +6 -7
- data/stdlib/zlib/0/zstream.rbs +1 -0
- metadata +44 -18
- data/ext/rbs_extension/lexer.c +0 -2728
- data/ext/rbs_extension/lexer.h +0 -179
- data/ext/rbs_extension/lexer.re +0 -147
- data/ext/rbs_extension/lexstate.c +0 -175
- data/ext/rbs_extension/location.c +0 -325
- data/ext/rbs_extension/location.h +0 -85
- data/ext/rbs_extension/parser.c +0 -2982
- data/ext/rbs_extension/parser.h +0 -18
- data/ext/rbs_extension/parserstate.c +0 -411
- data/ext/rbs_extension/parserstate.h +0 -163
- data/ext/rbs_extension/unescape.c +0 -32
- data/include/rbs/ruby_objs.h +0 -72
- data/src/constants.c +0 -153
- data/src/ruby_objs.c +0 -799
data/core/nil_class.rbs
CHANGED
|
@@ -112,7 +112,7 @@ class NilClass
|
|
|
112
112
|
def nil?: () -> true
|
|
113
113
|
|
|
114
114
|
# <!--
|
|
115
|
-
# rdoc-file=
|
|
115
|
+
# rdoc-file=nilclass.rb
|
|
116
116
|
# - rationalize(eps = nil) -> (0/1)
|
|
117
117
|
# -->
|
|
118
118
|
# Returns zero as a Rational:
|
|
@@ -134,7 +134,7 @@ class NilClass
|
|
|
134
134
|
def to_a: () -> []
|
|
135
135
|
|
|
136
136
|
# <!--
|
|
137
|
-
# rdoc-file=
|
|
137
|
+
# rdoc-file=nilclass.rb
|
|
138
138
|
# - to_c -> (0+0i)
|
|
139
139
|
# -->
|
|
140
140
|
# Returns zero as a Complex:
|
|
@@ -174,7 +174,7 @@ class NilClass
|
|
|
174
174
|
def to_i: () -> 0
|
|
175
175
|
|
|
176
176
|
# <!--
|
|
177
|
-
# rdoc-file=
|
|
177
|
+
# rdoc-file=nilclass.rb
|
|
178
178
|
# - to_r -> (0/1)
|
|
179
179
|
# -->
|
|
180
180
|
# Returns zero as a Rational:
|
data/core/numeric.rbs
CHANGED
|
@@ -160,7 +160,7 @@ class Numeric
|
|
|
160
160
|
# rdoc-file=numeric.c
|
|
161
161
|
# - self % other -> real_numeric
|
|
162
162
|
# -->
|
|
163
|
-
# Returns `self` modulo `other` as a real
|
|
163
|
+
# Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
|
|
164
164
|
#
|
|
165
165
|
# Of the Core and Standard Library classes, only Rational uses this
|
|
166
166
|
# implementation.
|
|
@@ -212,7 +212,7 @@ class Numeric
|
|
|
212
212
|
# rdoc-file=numeric.c
|
|
213
213
|
# - -self -> numeric
|
|
214
214
|
# -->
|
|
215
|
-
#
|
|
215
|
+
# Returns `self`, negated.
|
|
216
216
|
#
|
|
217
217
|
def -@: () -> Numeric
|
|
218
218
|
|
|
@@ -220,7 +220,15 @@ class Numeric
|
|
|
220
220
|
# rdoc-file=numeric.c
|
|
221
221
|
# - self <=> other -> zero or nil
|
|
222
222
|
# -->
|
|
223
|
-
#
|
|
223
|
+
# Compares `self` and `other`.
|
|
224
|
+
#
|
|
225
|
+
# Returns:
|
|
226
|
+
#
|
|
227
|
+
# * Zero, if `self` is the same as `other`.
|
|
228
|
+
# * `nil`, otherwise.
|
|
229
|
+
#
|
|
230
|
+
# Class Numeric includes module Comparable, each of whose methods uses
|
|
231
|
+
# Numeric#<=> for comparison.
|
|
224
232
|
#
|
|
225
233
|
# No subclass in the Ruby Core or Standard Library uses this implementation.
|
|
226
234
|
#
|
|
@@ -336,7 +344,7 @@ class Numeric
|
|
|
336
344
|
# - div(other) -> integer
|
|
337
345
|
# -->
|
|
338
346
|
# Returns the quotient `self/other` as an integer (via `floor`), using method
|
|
339
|
-
# `/` in the
|
|
347
|
+
# `/` as defined in the subclass of Numeric. (Numeric itself does not define
|
|
340
348
|
# `/`.)
|
|
341
349
|
#
|
|
342
350
|
# Of the Core and Standard Library classes, Only Float and Rational use this
|
|
@@ -398,8 +406,8 @@ class Numeric
|
|
|
398
406
|
# rdoc-file=numeric.c
|
|
399
407
|
# - fdiv(other) -> float
|
|
400
408
|
# -->
|
|
401
|
-
# Returns the quotient `self/other` as a float, using method `/`
|
|
402
|
-
#
|
|
409
|
+
# Returns the quotient `self/other` as a float, using method `/` as defined in
|
|
410
|
+
# the subclass of Numeric. (Numeric itself does not define `/`.)
|
|
403
411
|
#
|
|
404
412
|
# Of the Core and Standard Library classes, only BigDecimal uses this
|
|
405
413
|
# implementation.
|
|
@@ -488,7 +496,7 @@ class Numeric
|
|
|
488
496
|
alias magnitude abs
|
|
489
497
|
|
|
490
498
|
# <!-- rdoc-file=numeric.c -->
|
|
491
|
-
# Returns `self` modulo `other` as a real
|
|
499
|
+
# Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
|
|
492
500
|
#
|
|
493
501
|
# Of the Core and Standard Library classes, only Rational uses this
|
|
494
502
|
# implementation.
|
|
@@ -530,17 +538,17 @@ class Numeric
|
|
|
530
538
|
# rdoc-file=numeric.c
|
|
531
539
|
# - nonzero? -> self or nil
|
|
532
540
|
# -->
|
|
533
|
-
# Returns
|
|
534
|
-
#
|
|
541
|
+
# Returns `self` if `self` is not a zero value, `nil` otherwise; uses method
|
|
542
|
+
# `zero?` for the evaluation.
|
|
535
543
|
#
|
|
536
|
-
#
|
|
544
|
+
# The returned `self` allows the method to be chained:
|
|
537
545
|
#
|
|
538
|
-
#
|
|
539
|
-
#
|
|
540
|
-
#
|
|
546
|
+
# a = %w[z Bb bB bb BB a aA Aa AA A]
|
|
547
|
+
# a.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b }
|
|
548
|
+
# # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
|
|
541
549
|
#
|
|
542
|
-
#
|
|
543
|
-
#
|
|
550
|
+
# Of the Core and Standard Library classes, Integer, Float, Rational, and
|
|
551
|
+
# Complex use this implementation.
|
|
544
552
|
#
|
|
545
553
|
# Related: #zero?
|
|
546
554
|
#
|
|
@@ -765,8 +773,8 @@ class Numeric
|
|
|
765
773
|
# rdoc-file=numeric.c
|
|
766
774
|
# - to_int -> integer
|
|
767
775
|
# -->
|
|
768
|
-
# Returns `self` as an integer; converts using method `to_i` in the
|
|
769
|
-
#
|
|
776
|
+
# Returns `self` as an integer; converts using method `to_i` in the subclass of
|
|
777
|
+
# Numeric. (Numeric itself does not define `to_i`.)
|
|
770
778
|
#
|
|
771
779
|
# Of the Core and Standard Library classes, only Rational and Complex use this
|
|
772
780
|
# implementation.
|
data/core/object.rbs
CHANGED
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
# * #instance_of?: Returns whether `self` is an instance of the given class.
|
|
41
41
|
# * #instance_variable_defined?: Returns whether the given instance variable
|
|
42
42
|
# is defined in `self`.
|
|
43
|
-
# * #method: Returns the Method object for the given method in `self`.
|
|
43
|
+
# * #method: Returns the `Method` object for the given method in `self`.
|
|
44
44
|
# * #methods: Returns an array of symbol names of public and protected methods
|
|
45
45
|
# in `self`.
|
|
46
46
|
# * #nil?: Returns `false`. (Only `nil` responds `true` to method `nil?`.)
|
|
@@ -50,13 +50,13 @@
|
|
|
50
50
|
# methods in `self`.
|
|
51
51
|
# * #protected_methods: Returns an array of the symbol names of the protected
|
|
52
52
|
# methods in `self`.
|
|
53
|
-
# * #public_method: Returns the Method object for the given public method in
|
|
53
|
+
# * #public_method: Returns the `Method` object for the given public method in
|
|
54
54
|
# `self`.
|
|
55
55
|
# * #public_methods: Returns an array of the symbol names of the public
|
|
56
56
|
# methods in `self`.
|
|
57
57
|
# * #respond_to?: Returns whether `self` responds to the given method.
|
|
58
58
|
# * #singleton_class: Returns the singleton class of `self`.
|
|
59
|
-
# * #singleton_method: Returns the Method object for the given singleton
|
|
59
|
+
# * #singleton_method: Returns the `Method` object for the given singleton
|
|
60
60
|
# method in `self`.
|
|
61
61
|
# * #singleton_methods: Returns an array of the symbol names of the singleton
|
|
62
62
|
# methods in `self`.
|
data/core/object_space.rbs
CHANGED
|
@@ -29,6 +29,7 @@ module ObjectSpace
|
|
|
29
29
|
# - _id2ref(p1)
|
|
30
30
|
# -->
|
|
31
31
|
#
|
|
32
|
+
%a{deprecated}
|
|
32
33
|
def self._id2ref: (Integer id) -> untyped
|
|
33
34
|
|
|
34
35
|
# <!--
|
|
@@ -136,28 +137,33 @@ module ObjectSpace
|
|
|
136
137
|
# Calls the block once for each living, nonimmediate object in this Ruby
|
|
137
138
|
# process. If *module* is specified, calls the block for only those classes or
|
|
138
139
|
# modules that match (or are a subclass of) *module*. Returns the number of
|
|
139
|
-
# objects found. Immediate objects (`Fixnum`s, `Symbol`s `true`,
|
|
140
|
-
# `nil`) are never returned.
|
|
141
|
-
# numbers we defined and several constants defined in the Math module.
|
|
140
|
+
# objects found. Immediate objects (such as `Fixnum`s, static `Symbol`s `true`,
|
|
141
|
+
# `false` and `nil`) are never returned.
|
|
142
142
|
#
|
|
143
143
|
# If no block is given, an enumerator is returned instead.
|
|
144
144
|
#
|
|
145
|
-
#
|
|
146
|
-
#
|
|
147
|
-
#
|
|
148
|
-
# count = ObjectSpace.each_object(Numeric) {|x| p x }
|
|
145
|
+
# Job = Class.new
|
|
146
|
+
# jobs = [Job.new, Job.new]
|
|
147
|
+
# count = ObjectSpace.each_object(Job) {|x| p x }
|
|
149
148
|
# puts "Total count: #{count}"
|
|
150
149
|
#
|
|
151
150
|
# *produces:*
|
|
152
151
|
#
|
|
153
|
-
#
|
|
154
|
-
#
|
|
155
|
-
#
|
|
156
|
-
#
|
|
157
|
-
#
|
|
158
|
-
#
|
|
159
|
-
#
|
|
160
|
-
#
|
|
152
|
+
# #<Job:0x000000011d6cbbf0>
|
|
153
|
+
# #<Job:0x000000011d6cbc68>
|
|
154
|
+
# Total count: 2
|
|
155
|
+
#
|
|
156
|
+
# Due to a current Ractor implementation issue, this method does not yield
|
|
157
|
+
# Ractor-unshareable objects when the process is in multi-Ractor mode.
|
|
158
|
+
# Multi-ractor mode is enabled when `Ractor.new` has been called for the first
|
|
159
|
+
# time. See https://bugs.ruby-lang.org/issues/19387 for more information.
|
|
160
|
+
#
|
|
161
|
+
# a = 12345678987654321 # shareable
|
|
162
|
+
# b = [].freeze # shareable
|
|
163
|
+
# c = {} # not shareable
|
|
164
|
+
# ObjectSpace.each_object {|x| x } # yields a, b, and c
|
|
165
|
+
# Ractor.new {} # enter multi-Ractor mode
|
|
166
|
+
# ObjectSpace.each_object {|x| x } # does not yield c
|
|
161
167
|
#
|
|
162
168
|
def self.each_object: (?Module `module`) -> Enumerator[untyped, Integer]
|
|
163
169
|
| (?Module `module`) { (untyped obj) -> void } -> Integer
|