rbs 4.0.0.dev.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 +18 -11
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/ruby.yml +27 -34
- data/.github/workflows/rust.yml +95 -0
- data/.github/workflows/typecheck.yml +2 -2
- data/.github/workflows/windows.yml +2 -2
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +323 -0
- data/README.md +1 -1
- data/Rakefile +43 -33
- data/Steepfile +1 -0
- data/config.yml +426 -24
- data/core/array.rbs +307 -227
- 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 +55 -34
- data/core/complex.rbs +104 -78
- data/core/dir.rbs +61 -49
- data/core/encoding.rbs +12 -15
- data/core/enumerable.rbs +179 -87
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator.rbs +65 -2
- data/core/errno.rbs +11 -2
- data/core/errors.rbs +58 -29
- data/core/exception.rbs +13 -13
- data/core/fiber.rbs +74 -54
- data/core/file.rbs +280 -177
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -92
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1045 -739
- data/core/integer.rbs +135 -137
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +192 -144
- data/core/kernel.rbs +216 -155
- data/core/marshal.rbs +4 -4
- data/core/match_data.rbs +15 -13
- data/core/math.rbs +107 -66
- data/core/method.rbs +69 -33
- data/core/module.rbs +244 -106
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +74 -63
- data/core/object.rbs +9 -11
- data/core/object_space.rbs +30 -23
- data/core/pathname.rbs +1322 -0
- data/core/proc.rbs +95 -58
- data/core/process.rbs +222 -202
- data/core/ractor.rbs +371 -515
- data/core/random.rbs +21 -3
- data/core/range.rbs +159 -57
- data/core/rational.rbs +60 -89
- data/core/rbs/unnamed/argf.rbs +60 -53
- data/core/rbs/unnamed/env_class.rbs +19 -14
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +11 -118
- data/core/regexp.rbs +258 -214
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +38 -34
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +4 -71
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +16 -82
- data/core/rubygems/version.rbs +2 -3
- data/core/set.rbs +490 -360
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +27 -26
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +135 -67
- data/core/time.rbs +81 -50
- data/core/trace_point.rbs +41 -35
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +24 -16
- data/core/warning.rbs +7 -7
- data/docs/aliases.md +79 -0
- data/docs/collection.md +3 -3
- data/docs/config.md +171 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +0 -1
- data/docs/inline.md +576 -0
- data/docs/sigs.md +3 -3
- 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 +544 -116
- data/ext/rbs_extension/ast_translation.h +3 -0
- data/ext/rbs_extension/class_constants.c +16 -2
- data/ext/rbs_extension/class_constants.h +8 -0
- data/ext/rbs_extension/extconf.rb +5 -1
- data/ext/rbs_extension/legacy_location.c +33 -56
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +44 -35
- data/include/rbs/ast.h +448 -173
- data/include/rbs/defines.h +27 -0
- data/include/rbs/lexer.h +30 -11
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +6 -6
- data/include/rbs/string.h +0 -2
- data/include/rbs/util/rbs_allocator.h +34 -13
- data/include/rbs/util/rbs_assert.h +12 -1
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- data/include/rbs/util/rbs_encoding.h +2 -0
- data/include/rbs/util/rbs_unescape.h +2 -1
- 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 +293 -3
- data/lib/rbs/ast/ruby/comment_block.rb +24 -0
- data/lib/rbs/ast/ruby/declarations.rb +198 -3
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/members.rb +532 -22
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +20 -15
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -106
- data/lib/rbs/cli.rb +52 -19
- data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
- data/lib/rbs/collection/sources/git.rb +1 -0
- data/lib/rbs/definition.rb +1 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
- data/lib/rbs/definition_builder/method_builder.rb +20 -0
- data/lib/rbs/definition_builder.rb +147 -25
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +227 -74
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -18
- data/lib/rbs/inline_parser.rb +342 -6
- data/lib/rbs/location_aux.rb +1 -1
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/parser_aux.rb +20 -7
- 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 +8 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +116 -38
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +19 -2
- data/lib/rbs/type_name.rb +1 -1
- data/lib/rbs/types.rb +88 -78
- 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 +1 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +4 -3
- 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/ast/ruby/annotations.rbs +315 -4
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +108 -2
- 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 -1
- data/sig/definition_builder.rbs +2 -0
- data/sig/environment.rbs +70 -12
- data/sig/errors.rbs +13 -14
- data/sig/inline_parser.rbs +39 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -1
- data/sig/method_builder.rbs +3 -1
- data/sig/parser.rbs +31 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +35 -7
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- 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 +410 -153
- data/src/lexer.c +1392 -1313
- data/src/lexer.re +3 -0
- data/src/lexstate.c +58 -37
- data/src/location.c +8 -48
- data/src/parser.c +977 -516
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -71
- data/src/util/rbs_assert.c +1 -1
- data/src/util/rbs_buffer.c +2 -2
- data/src/util/rbs_constant_pool.c +10 -14
- data/src/util/rbs_encoding.c +4 -8
- data/src/util/rbs_unescape.c +56 -20
- data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
- 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 +7 -4
- data/stdlib/date/0/date.rbs +92 -79
- data/stdlib/date/0/date_time.rbs +25 -24
- data/stdlib/delegate/0/delegator.rbs +10 -7
- 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 +748 -347
- data/stdlib/etc/0/etc.rbs +55 -50
- data/stdlib/fileutils/0/fileutils.rbs +158 -139
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +217 -136
- data/stdlib/monitor/0/monitor.rbs +3 -3
- data/stdlib/net-http/0/net-http.rbs +162 -134
- data/stdlib/objspace/0/objspace.rbs +17 -34
- data/stdlib/open-uri/0/open-uri.rbs +48 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +475 -357
- data/stdlib/optparse/0/optparse.rbs +26 -17
- data/stdlib/pathname/0/pathname.rbs +11 -1381
- 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 +65 -12
- 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/rdoc.rbs +1 -1
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +25 -68
- data/stdlib/ripper/0/ripper.rbs +22 -19
- 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/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/addrinfo.rbs +7 -7
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +23 -10
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +11 -3
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +1177 -85
- data/stdlib/strscan/0/string_scanner.rbs +27 -25
- data/stdlib/tempfile/0/tempfile.rbs +25 -21
- data/stdlib/time/0/time.rbs +8 -6
- data/stdlib/timeout/0/timeout.rbs +63 -7
- data/stdlib/tsort/0/cyclic.rbs +3 -0
- data/stdlib/tsort/0/tsort.rbs +7 -6
- data/stdlib/uri/0/common.rbs +42 -20
- data/stdlib/uri/0/file.rbs +3 -3
- data/stdlib/uri/0/generic.rbs +26 -18
- 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 +12 -12
- 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
- data/stdlib/zlib/0/zstream.rbs +1 -0
- metadata +50 -6
data/core/nil_class.rbs
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
# * #to_s
|
|
20
20
|
#
|
|
21
21
|
# While `nil` doesn't have an explicitly defined #to_hash method, it can be used
|
|
22
|
-
# in
|
|
22
|
+
# in <code>**</code> unpacking, not adding any keyword arguments.
|
|
23
23
|
#
|
|
24
24
|
# Another method provides inspection:
|
|
25
25
|
#
|
|
@@ -97,7 +97,7 @@ class NilClass
|
|
|
97
97
|
# rdoc-file=object.c
|
|
98
98
|
# - inspect -> 'nil'
|
|
99
99
|
# -->
|
|
100
|
-
# Returns string
|
|
100
|
+
# Returns string <code>'nil'</code>:
|
|
101
101
|
#
|
|
102
102
|
# nil.inspect # => "nil"
|
|
103
103
|
#
|
|
@@ -107,12 +107,13 @@ class NilClass
|
|
|
107
107
|
# rdoc-file=object.c
|
|
108
108
|
# - nil.nil? -> true
|
|
109
109
|
# -->
|
|
110
|
-
# Returns `true`. For all other objects, method
|
|
110
|
+
# Returns `true`. For all other objects, method <code>nil?</code> returns
|
|
111
|
+
# `false`.
|
|
111
112
|
#
|
|
112
113
|
def nil?: () -> true
|
|
113
114
|
|
|
114
115
|
# <!--
|
|
115
|
-
# rdoc-file=
|
|
116
|
+
# rdoc-file=nilclass.rb
|
|
116
117
|
# - rationalize(eps = nil) -> (0/1)
|
|
117
118
|
# -->
|
|
118
119
|
# Returns zero as a Rational:
|
|
@@ -134,7 +135,7 @@ class NilClass
|
|
|
134
135
|
def to_a: () -> []
|
|
135
136
|
|
|
136
137
|
# <!--
|
|
137
|
-
# rdoc-file=
|
|
138
|
+
# rdoc-file=nilclass.rb
|
|
138
139
|
# - to_c -> (0+0i)
|
|
139
140
|
# -->
|
|
140
141
|
# Returns zero as a Complex:
|
|
@@ -174,7 +175,7 @@ class NilClass
|
|
|
174
175
|
def to_i: () -> 0
|
|
175
176
|
|
|
176
177
|
# <!--
|
|
177
|
-
# rdoc-file=
|
|
178
|
+
# rdoc-file=nilclass.rb
|
|
178
179
|
# - to_r -> (0/1)
|
|
179
180
|
# -->
|
|
180
181
|
# Returns zero as a Rational:
|
data/core/numeric.rbs
CHANGED
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
# two-member Array containing an object that has been coerced into an instance
|
|
24
24
|
# of the new class and `self` (see #coerce).
|
|
25
25
|
#
|
|
26
|
-
# Inheriting classes should also implement arithmetic operator methods
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
# classes.
|
|
26
|
+
# Inheriting classes should also implement arithmetic operator methods
|
|
27
|
+
# (<code>+</code>, <code>-</code>, <code>*</code> and <code>/</code>) and the
|
|
28
|
+
# <code><=></code> operator (see Comparable). These methods may rely on `coerce`
|
|
29
|
+
# to ensure interoperability with instances of other numeric classes.
|
|
30
30
|
#
|
|
31
31
|
# class Tally < Numeric
|
|
32
32
|
# def initialize(string)
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
#
|
|
89
89
|
# * #finite?: Returns true unless `self` is infinite or not a number.
|
|
90
90
|
# * #infinite?: Returns -1, `nil` or +1, depending on whether `self` is
|
|
91
|
-
#
|
|
91
|
+
# <code>-Infinity<tt>, finite, or <tt>+Infinity</code>.
|
|
92
92
|
# * #integer?: Returns whether `self` is an integer.
|
|
93
93
|
# * #negative?: Returns whether `self` is negative.
|
|
94
94
|
# * #nonzero?: Returns whether `self` is not zero.
|
|
@@ -119,27 +119,29 @@
|
|
|
119
119
|
# Math::PI otherwise.
|
|
120
120
|
# * #ceil: Returns the smallest number greater than or equal to `self`, to a
|
|
121
121
|
# given precision.
|
|
122
|
-
# * #coerce: Returns array
|
|
123
|
-
# value.
|
|
122
|
+
# * #coerce: Returns array <code>[coerced_self, coerced_other]</code> for the
|
|
123
|
+
# given other value.
|
|
124
124
|
# * #conj (aliased as #conjugate): Returns the complex conjugate of `self`.
|
|
125
125
|
# * #denominator: Returns the denominator (always positive) of the Rational
|
|
126
126
|
# representation of `self`.
|
|
127
127
|
# * #div: Returns the value of `self` divided by the given value and converted
|
|
128
128
|
# to an integer.
|
|
129
|
-
# * #divmod: Returns array
|
|
130
|
-
# `self` the given divisor.
|
|
129
|
+
# * #divmod: Returns array <code>[quotient, modulus]</code> resulting from
|
|
130
|
+
# dividing `self` the given divisor.
|
|
131
131
|
# * #fdiv: Returns the Float result of dividing `self` by the given divisor.
|
|
132
132
|
# * #floor: Returns the largest number less than or equal to `self`, to a
|
|
133
133
|
# given precision.
|
|
134
|
-
# * #i: Returns the Complex object
|
|
134
|
+
# * #i: Returns the Complex object <code>Complex(0, self)</code>. the given
|
|
135
|
+
# value.
|
|
135
136
|
# * #imaginary (aliased as #imag): Returns the imaginary part of the `self`.
|
|
136
137
|
# * #numerator: Returns the numerator of the Rational representation of
|
|
137
138
|
# `self`; has the same sign as `self`.
|
|
138
|
-
# * #polar: Returns the array
|
|
139
|
+
# * #polar: Returns the array <code>[self.abs, self.arg]</code>.
|
|
139
140
|
# * #quo: Returns the value of `self` divided by the given value.
|
|
140
141
|
# * #real: Returns the real part of `self`.
|
|
141
|
-
# * #rect (aliased as #rectangular): Returns the array
|
|
142
|
-
# * #remainder: Returns
|
|
142
|
+
# * #rect (aliased as #rectangular): Returns the array <code>[self, 0]</code>.
|
|
143
|
+
# * #remainder: Returns <code>self-arg*(self/arg).truncate</code> for the
|
|
144
|
+
# given `arg`.
|
|
143
145
|
# * #round: Returns the value of `self` rounded to the nearest value for the
|
|
144
146
|
# given a precision.
|
|
145
147
|
# * #to_c: Returns the Complex representation of `self`.
|
|
@@ -160,7 +162,7 @@ class Numeric
|
|
|
160
162
|
# rdoc-file=numeric.c
|
|
161
163
|
# - self % other -> real_numeric
|
|
162
164
|
# -->
|
|
163
|
-
# Returns `self` modulo `other` as a real
|
|
165
|
+
# Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
|
|
164
166
|
#
|
|
165
167
|
# Of the Core and Standard Library classes, only Rational uses this
|
|
166
168
|
# implementation.
|
|
@@ -201,7 +203,7 @@ class Numeric
|
|
|
201
203
|
# -->
|
|
202
204
|
# Returns `self`.
|
|
203
205
|
#
|
|
204
|
-
def +@: () ->
|
|
206
|
+
def +@: () -> self
|
|
205
207
|
|
|
206
208
|
# Performs subtraction: the class of the resulting object depends on the class
|
|
207
209
|
# of `numeric`.
|
|
@@ -212,15 +214,23 @@ class Numeric
|
|
|
212
214
|
# rdoc-file=numeric.c
|
|
213
215
|
# - -self -> numeric
|
|
214
216
|
# -->
|
|
215
|
-
#
|
|
217
|
+
# Returns `self`, negated.
|
|
216
218
|
#
|
|
217
|
-
def -@: () ->
|
|
219
|
+
def -@: () -> self
|
|
218
220
|
|
|
219
221
|
# <!--
|
|
220
222
|
# rdoc-file=numeric.c
|
|
221
223
|
# - self <=> other -> zero or nil
|
|
222
224
|
# -->
|
|
223
|
-
#
|
|
225
|
+
# Compares `self` and `other`.
|
|
226
|
+
#
|
|
227
|
+
# Returns:
|
|
228
|
+
#
|
|
229
|
+
# * Zero, if `self` is the same as `other`.
|
|
230
|
+
# * `nil`, otherwise.
|
|
231
|
+
#
|
|
232
|
+
# Class Numeric includes module Comparable, each of whose methods uses
|
|
233
|
+
# Numeric#<=> for comparison.
|
|
224
234
|
#
|
|
225
235
|
# No subclass in the Ruby Core or Standard Library uses this implementation.
|
|
226
236
|
#
|
|
@@ -244,12 +254,12 @@ class Numeric
|
|
|
244
254
|
# -->
|
|
245
255
|
# Returns the square of `self`.
|
|
246
256
|
#
|
|
247
|
-
def abs2: () ->
|
|
257
|
+
def abs2: () -> self
|
|
248
258
|
|
|
249
259
|
# <!-- rdoc-file=complex.c -->
|
|
250
260
|
# Returns zero if `self` is positive, Math::PI otherwise.
|
|
251
261
|
#
|
|
252
|
-
def angle: () ->
|
|
262
|
+
def angle: () -> (0 | Float)
|
|
253
263
|
|
|
254
264
|
# <!--
|
|
255
265
|
# rdoc-file=complex.c
|
|
@@ -267,7 +277,7 @@ class Numeric
|
|
|
267
277
|
# as specified by the given `ndigits`, which must be an [integer-convertible
|
|
268
278
|
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
|
269
279
|
#
|
|
270
|
-
# Equivalent to
|
|
280
|
+
# Equivalent to <code>self.to_f.ceil(ndigits)</code>.
|
|
271
281
|
#
|
|
272
282
|
# Related: #floor, Float#ceil.
|
|
273
283
|
#
|
|
@@ -310,18 +320,18 @@ class Numeric
|
|
|
310
320
|
|
|
311
321
|
# <!--
|
|
312
322
|
# rdoc-file=numeric.rb
|
|
313
|
-
# - conj
|
|
323
|
+
# - conj -> self
|
|
314
324
|
# -->
|
|
325
|
+
# Returns `self`.
|
|
315
326
|
#
|
|
316
|
-
def
|
|
327
|
+
def conjugate: () -> self
|
|
317
328
|
|
|
318
329
|
# <!--
|
|
319
330
|
# rdoc-file=numeric.rb
|
|
320
|
-
# - conj
|
|
331
|
+
# - conj()
|
|
321
332
|
# -->
|
|
322
|
-
# Returns `self`.
|
|
323
333
|
#
|
|
324
|
-
|
|
334
|
+
alias conj conjugate
|
|
325
335
|
|
|
326
336
|
# <!--
|
|
327
337
|
# rdoc-file=rational.c
|
|
@@ -335,9 +345,9 @@ class Numeric
|
|
|
335
345
|
# rdoc-file=numeric.c
|
|
336
346
|
# - div(other) -> integer
|
|
337
347
|
# -->
|
|
338
|
-
# Returns the quotient
|
|
339
|
-
#
|
|
340
|
-
#
|
|
348
|
+
# Returns the quotient <code>self/other</code> as an integer (via `floor`),
|
|
349
|
+
# using method <code>/</code> as defined in the subclass of Numeric. (Numeric
|
|
350
|
+
# itself does not define <code>/</code>.)
|
|
341
351
|
#
|
|
342
352
|
# Of the Core and Standard Library classes, Only Float and Rational use this
|
|
343
353
|
# implementation.
|
|
@@ -348,7 +358,7 @@ class Numeric
|
|
|
348
358
|
# rdoc-file=numeric.c
|
|
349
359
|
# - divmod(other) -> array
|
|
350
360
|
# -->
|
|
351
|
-
# Returns a 2-element array
|
|
361
|
+
# Returns a 2-element array <code>[q, r]</code>, where
|
|
352
362
|
#
|
|
353
363
|
# q = (self/other).floor # Quotient
|
|
354
364
|
# r = self % other # Remainder
|
|
@@ -389,8 +399,8 @@ class Numeric
|
|
|
389
399
|
# 1.eql?(Rational(1, 1)) # => false
|
|
390
400
|
# 1.eql?(Complex(1, 0)) # => false
|
|
391
401
|
#
|
|
392
|
-
# Method
|
|
393
|
-
# while
|
|
402
|
+
# Method <code>eql?</code> is different from <code>==</code> in that
|
|
403
|
+
# <code>eql?</code> requires matching types, while <code>==</code> does not.
|
|
394
404
|
#
|
|
395
405
|
def eql?: (untyped) -> bool
|
|
396
406
|
|
|
@@ -398,8 +408,9 @@ class Numeric
|
|
|
398
408
|
# rdoc-file=numeric.c
|
|
399
409
|
# - fdiv(other) -> float
|
|
400
410
|
# -->
|
|
401
|
-
# Returns the quotient
|
|
402
|
-
#
|
|
411
|
+
# Returns the quotient <code>self/other</code> as a float, using method
|
|
412
|
+
# <code>/</code> as defined in the subclass of Numeric. (Numeric itself does not
|
|
413
|
+
# define <code>/</code>.)
|
|
403
414
|
#
|
|
404
415
|
# Of the Core and Standard Library classes, only BigDecimal uses this
|
|
405
416
|
# implementation.
|
|
@@ -422,7 +433,7 @@ class Numeric
|
|
|
422
433
|
# specified by the given `ndigits`, which must be an [integer-convertible
|
|
423
434
|
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
|
424
435
|
#
|
|
425
|
-
# Equivalent to
|
|
436
|
+
# Equivalent to <code>self.to_f.floor(ndigits)</code>.
|
|
426
437
|
#
|
|
427
438
|
# Related: #ceil, Float#floor.
|
|
428
439
|
#
|
|
@@ -433,7 +444,7 @@ class Numeric
|
|
|
433
444
|
# rdoc-file=numeric.c
|
|
434
445
|
# - i -> complex
|
|
435
446
|
# -->
|
|
436
|
-
# Returns
|
|
447
|
+
# Returns <code>Complex(0, self)</code>:
|
|
437
448
|
#
|
|
438
449
|
# 2.i # => (0+2i)
|
|
439
450
|
# -2.i # => (0-2i)
|
|
@@ -445,25 +456,25 @@ class Numeric
|
|
|
445
456
|
|
|
446
457
|
# <!--
|
|
447
458
|
# rdoc-file=numeric.rb
|
|
448
|
-
# - imag
|
|
459
|
+
# - imag -> 0
|
|
449
460
|
# -->
|
|
461
|
+
# Returns zero.
|
|
450
462
|
#
|
|
451
|
-
def
|
|
463
|
+
def imaginary: () -> 0
|
|
452
464
|
|
|
453
465
|
# <!--
|
|
454
466
|
# rdoc-file=numeric.rb
|
|
455
|
-
# - imag
|
|
467
|
+
# - imag()
|
|
456
468
|
# -->
|
|
457
|
-
# Returns zero.
|
|
458
469
|
#
|
|
459
|
-
|
|
470
|
+
alias imag imaginary
|
|
460
471
|
|
|
461
472
|
# <!--
|
|
462
473
|
# rdoc-file=numeric.rb
|
|
463
474
|
# - infinite? -> -1, 1, or nil
|
|
464
475
|
# -->
|
|
465
|
-
# Returns `nil`, -1, or 1 depending on whether `self` is finite,
|
|
466
|
-
#
|
|
476
|
+
# Returns `nil`, -1, or 1 depending on whether `self` is finite,
|
|
477
|
+
# <code>-Infinity</code>, or <code>+Infinity</code>.
|
|
467
478
|
#
|
|
468
479
|
def infinite?: () -> Integer?
|
|
469
480
|
|
|
@@ -488,7 +499,7 @@ class Numeric
|
|
|
488
499
|
alias magnitude abs
|
|
489
500
|
|
|
490
501
|
# <!-- rdoc-file=numeric.c -->
|
|
491
|
-
# Returns `self` modulo `other` as a real
|
|
502
|
+
# Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
|
|
492
503
|
#
|
|
493
504
|
# Of the Core and Standard Library classes, only Rational uses this
|
|
494
505
|
# implementation.
|
|
@@ -530,17 +541,17 @@ class Numeric
|
|
|
530
541
|
# rdoc-file=numeric.c
|
|
531
542
|
# - nonzero? -> self or nil
|
|
532
543
|
# -->
|
|
533
|
-
# Returns
|
|
534
|
-
#
|
|
544
|
+
# Returns `self` if `self` is not a zero value, `nil` otherwise; uses method
|
|
545
|
+
# <code>zero?</code> for the evaluation.
|
|
535
546
|
#
|
|
536
|
-
#
|
|
547
|
+
# The returned `self` allows the method to be chained:
|
|
537
548
|
#
|
|
538
|
-
#
|
|
539
|
-
#
|
|
540
|
-
#
|
|
549
|
+
# a = %w[z Bb bB bb BB a aA Aa AA A]
|
|
550
|
+
# a.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b }
|
|
551
|
+
# # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
|
|
541
552
|
#
|
|
542
|
-
#
|
|
543
|
-
#
|
|
553
|
+
# Of the Core and Standard Library classes, Integer, Float, Rational, and
|
|
554
|
+
# Complex use this implementation.
|
|
544
555
|
#
|
|
545
556
|
# Related: #zero?
|
|
546
557
|
#
|
|
@@ -563,7 +574,7 @@ class Numeric
|
|
|
563
574
|
# rdoc-file=complex.c
|
|
564
575
|
# - polar -> array
|
|
565
576
|
# -->
|
|
566
|
-
# Returns array
|
|
577
|
+
# Returns array <code>[self.abs, self.arg]</code>.
|
|
567
578
|
#
|
|
568
579
|
def polar: () -> [ Numeric, Numeric ]
|
|
569
580
|
|
|
@@ -590,7 +601,7 @@ class Numeric
|
|
|
590
601
|
# -->
|
|
591
602
|
# Returns `self`.
|
|
592
603
|
#
|
|
593
|
-
def real: () ->
|
|
604
|
+
def real: () -> self
|
|
594
605
|
|
|
595
606
|
# <!--
|
|
596
607
|
# rdoc-file=numeric.rb
|
|
@@ -598,10 +609,10 @@ class Numeric
|
|
|
598
609
|
# -->
|
|
599
610
|
# Returns `true` if `self` is a real number (i.e. not Complex).
|
|
600
611
|
#
|
|
601
|
-
def real?: () ->
|
|
612
|
+
def real?: () -> true
|
|
602
613
|
|
|
603
614
|
# <!-- rdoc-file=complex.c -->
|
|
604
|
-
# Returns array
|
|
615
|
+
# Returns array <code>[self, 0]</code>.
|
|
605
616
|
#
|
|
606
617
|
def rect: () -> [ Numeric, Numeric ]
|
|
607
618
|
|
|
@@ -609,7 +620,7 @@ class Numeric
|
|
|
609
620
|
# rdoc-file=complex.c
|
|
610
621
|
# - rect -> array
|
|
611
622
|
# -->
|
|
612
|
-
# Returns array
|
|
623
|
+
# Returns array <code>[self, 0]</code>.
|
|
613
624
|
#
|
|
614
625
|
alias rectangular rect
|
|
615
626
|
|
|
@@ -745,13 +756,13 @@ class Numeric
|
|
|
745
756
|
# If all the arguments are integers, the loop operates using an integer counter.
|
|
746
757
|
#
|
|
747
758
|
# If any of the arguments are floating point numbers, all are converted to
|
|
748
|
-
# floats, and the loop is executed
|
|
749
|
-
# where
|
|
759
|
+
# floats, and the loop is executed <em>floor(n + n*Float::EPSILON) + 1</em>
|
|
760
|
+
# times, where <em>n = (limit - self)/step</em>.
|
|
750
761
|
#
|
|
751
762
|
def step: (?Numeric limit, ?Numeric step) { (Numeric) -> void } -> self
|
|
752
|
-
| (?Numeric limit, ?Numeric step) -> Enumerator
|
|
763
|
+
| (?Numeric limit, ?Numeric step) -> Enumerator::ArithmeticSequence
|
|
753
764
|
| (?by: Numeric, ?to: Numeric) { (Numeric) -> void } -> self
|
|
754
|
-
| (?by: Numeric, ?to: Numeric) -> Enumerator
|
|
765
|
+
| (?by: Numeric, ?to: Numeric) -> Enumerator::ArithmeticSequence
|
|
755
766
|
|
|
756
767
|
# <!--
|
|
757
768
|
# rdoc-file=complex.c
|
|
@@ -765,8 +776,8 @@ class Numeric
|
|
|
765
776
|
# rdoc-file=numeric.c
|
|
766
777
|
# - to_int -> integer
|
|
767
778
|
# -->
|
|
768
|
-
# Returns `self` as an integer; converts using method `to_i` in the
|
|
769
|
-
#
|
|
779
|
+
# Returns `self` as an integer; converts using method `to_i` in the subclass of
|
|
780
|
+
# Numeric. (Numeric itself does not define `to_i`.)
|
|
770
781
|
#
|
|
771
782
|
# Of the Core and Standard Library classes, only Rational and Complex use this
|
|
772
783
|
# implementation.
|
data/core/object.rbs
CHANGED
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
# will find the top-level File class.
|
|
13
13
|
#
|
|
14
14
|
# In the descriptions of Object's methods, the parameter *symbol* refers to a
|
|
15
|
-
# symbol, which is either a quoted string or a Symbol (such as
|
|
15
|
+
# symbol, which is either a quoted string or a Symbol (such as
|
|
16
|
+
# <code>:name</code>).
|
|
16
17
|
#
|
|
17
18
|
# ## What's Here
|
|
18
19
|
#
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
# * #!~: Returns `true` if `self` does not match the given object, otherwise
|
|
33
34
|
# `false`.
|
|
34
35
|
# * #<=>: Returns 0 if `self` and the given object `object` are the same
|
|
35
|
-
# object, or if
|
|
36
|
+
# object, or if <code>self == object</code>; otherwise returns `nil`.
|
|
36
37
|
# * #===: Implements case equality, effectively the same as calling #==.
|
|
37
38
|
# * #eql?: Implements hash equality, effectively the same as calling #==.
|
|
38
39
|
# * #kind_of? (aliased as #is_a?): Returns whether given argument is an
|
|
@@ -40,23 +41,24 @@
|
|
|
40
41
|
# * #instance_of?: Returns whether `self` is an instance of the given class.
|
|
41
42
|
# * #instance_variable_defined?: Returns whether the given instance variable
|
|
42
43
|
# is defined in `self`.
|
|
43
|
-
# * #method: Returns the Method object for the given method in `self`.
|
|
44
|
+
# * #method: Returns the `Method` object for the given method in `self`.
|
|
44
45
|
# * #methods: Returns an array of symbol names of public and protected methods
|
|
45
46
|
# in `self`.
|
|
46
|
-
# * #nil?: Returns `false`. (Only `nil` responds `true` to method
|
|
47
|
+
# * #nil?: Returns `false`. (Only `nil` responds `true` to method
|
|
48
|
+
# <code>nil?</code>.)
|
|
47
49
|
# * #object_id: Returns an integer corresponding to `self` that is unique for
|
|
48
50
|
# the current process
|
|
49
51
|
# * #private_methods: Returns an array of the symbol names of the private
|
|
50
52
|
# methods in `self`.
|
|
51
53
|
# * #protected_methods: Returns an array of the symbol names of the protected
|
|
52
54
|
# methods in `self`.
|
|
53
|
-
# * #public_method: Returns the Method object for the given public method in
|
|
55
|
+
# * #public_method: Returns the `Method` object for the given public method in
|
|
54
56
|
# `self`.
|
|
55
57
|
# * #public_methods: Returns an array of the symbol names of the public
|
|
56
58
|
# methods in `self`.
|
|
57
59
|
# * #respond_to?: Returns whether `self` responds to the given method.
|
|
58
60
|
# * #singleton_class: Returns the singleton class of `self`.
|
|
59
|
-
# * #singleton_method: Returns the Method object for the given singleton
|
|
61
|
+
# * #singleton_method: Returns the `Method` object for the given singleton
|
|
60
62
|
# method in `self`.
|
|
61
63
|
# * #singleton_methods: Returns an array of the symbol names of the singleton
|
|
62
64
|
# methods in `self`.
|
|
@@ -85,7 +87,7 @@
|
|
|
85
87
|
# frozen state.
|
|
86
88
|
# * #define_singleton_method: Defines a singleton method in `self` for the
|
|
87
89
|
# given symbol method-name and block or proc.
|
|
88
|
-
# * #display: Prints `self` to the given IO stream or
|
|
90
|
+
# * #display: Prints `self` to the given IO stream or <code>$stdout</code>.
|
|
89
91
|
# * #dup: Returns a shallow unfrozen copy of `self`.
|
|
90
92
|
# * #enum_for (aliased as #to_enum): Returns an Enumerator for `self` using
|
|
91
93
|
# the using the given method, arguments, and block.
|
|
@@ -104,7 +106,3 @@
|
|
|
104
106
|
class Object < BasicObject
|
|
105
107
|
include Kernel
|
|
106
108
|
end
|
|
107
|
-
|
|
108
|
-
# A previous incarnation of `interned` for backward-compatibility (see #1499)
|
|
109
|
-
%a{deprecated: Use `interned` instead}
|
|
110
|
-
type Object::name = interned
|
data/core/object_space.rbs
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
#
|
|
6
6
|
# ObjectSpace also provides support for object finalizers, procs that will be
|
|
7
7
|
# called after a specific object was destroyed by garbage collection. See the
|
|
8
|
-
# documentation for
|
|
9
|
-
# how to use this method correctly.
|
|
8
|
+
# documentation for <code>ObjectSpace.define_finalizer</code> for important
|
|
9
|
+
# information on how to use this method correctly.
|
|
10
10
|
#
|
|
11
11
|
# a = "A"
|
|
12
12
|
# b = "B"
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
# a = nil
|
|
18
18
|
# b = nil
|
|
19
19
|
#
|
|
20
|
-
#
|
|
20
|
+
# <em>produces:</em>
|
|
21
21
|
#
|
|
22
22
|
# Finalizer two on 537763470
|
|
23
23
|
# Finalizer one on 537763480
|
|
@@ -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
|
# <!--
|
|
@@ -49,9 +50,9 @@ module ObjectSpace
|
|
|
49
50
|
# The contents of the returned hash are implementation specific. It may be
|
|
50
51
|
# changed in future.
|
|
51
52
|
#
|
|
52
|
-
# The keys starting with
|
|
53
|
-
# the number of arrays.
|
|
54
|
-
#
|
|
53
|
+
# The keys starting with <code>:T_</code> means live objects. For example,
|
|
54
|
+
# <code>:T_ARRAY</code> is the number of arrays. <code>:FREE</code> means object
|
|
55
|
+
# slots which is not used now. <code>:TOTAL</code> means sum of above.
|
|
55
56
|
#
|
|
56
57
|
# If the optional argument `result_hash` is given, it is overwritten and
|
|
57
58
|
# returned. This is intended to avoid probe effect.
|
|
@@ -73,7 +74,7 @@ module ObjectSpace
|
|
|
73
74
|
# object ID of the *obj* will be passed as an argument to *aProc*. If *aProc* is
|
|
74
75
|
# a lambda or method, make sure it can be called with a single argument.
|
|
75
76
|
#
|
|
76
|
-
# The return value is an array
|
|
77
|
+
# The return value is an array <code>[0, aProc]</code>.
|
|
77
78
|
#
|
|
78
79
|
# The two recommended patterns are to either create the finaliser proc in a
|
|
79
80
|
# non-instance method where it can safely capture the needed state, or to use a
|
|
@@ -136,28 +137,34 @@ 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
|
+
# <em>produces:</em>
|
|
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 <code>Ractor.new</code> has been called for
|
|
159
|
+
# the first time. See https://bugs.ruby-lang.org/issues/19387 for more
|
|
160
|
+
# information.
|
|
161
|
+
#
|
|
162
|
+
# a = 12345678987654321 # shareable
|
|
163
|
+
# b = [].freeze # shareable
|
|
164
|
+
# c = {} # not shareable
|
|
165
|
+
# ObjectSpace.each_object {|x| x } # yields a, b, and c
|
|
166
|
+
# Ractor.new {} # enter multi-Ractor mode
|
|
167
|
+
# ObjectSpace.each_object {|x| x } # does not yield c
|
|
161
168
|
#
|
|
162
169
|
def self.each_object: (?Module `module`) -> Enumerator[untyped, Integer]
|
|
163
170
|
| (?Module `module`) { (untyped obj) -> void } -> Integer
|