rbs 4.0.0.dev.4 → 4.1.0.pre.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 +1 -0
- data/.github/dependabot.yml +16 -14
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +21 -11
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/jruby.yml +67 -0
- data/.github/workflows/milestone.yml +83 -0
- data/.github/workflows/ruby.yml +63 -24
- data/.github/workflows/rust.yml +184 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +5 -2
- data/.github/workflows/wasm.yml +53 -0
- data/.github/workflows/windows.yml +8 -2
- data/.gitignore +11 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +357 -0
- data/README.md +4 -4
- data/Rakefile +365 -33
- data/Steepfile +8 -0
- data/config.yml +450 -24
- data/core/array.rbs +443 -363
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +9 -8
- data/core/class.rbs +11 -8
- 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 +288 -196
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator/product.rbs +5 -5
- data/core/enumerator.rbs +91 -28
- 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 +260 -1151
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -92
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1151 -829
- data/core/integer.rbs +156 -195
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +216 -150
- data/core/kernel.rbs +239 -163
- 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 +302 -150
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +77 -63
- data/core/object.rbs +9 -11
- data/core/object_space/weak_key_map.rbs +7 -7
- 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 +181 -79
- data/core/rational.rbs +60 -89
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +63 -56
- 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 +78 -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 +493 -363
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +43 -42
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +141 -73
- 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/CONTRIBUTING.md +2 -1
- 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 +634 -0
- data/docs/rbs_by_example.md +20 -20
- data/docs/rust.md +96 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +48 -18
- data/docs/type_fingerprint.md +21 -0
- data/docs/wasm_serialization.md +80 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +1441 -671
- data/ext/rbs_extension/ast_translation.h +7 -0
- data/ext/rbs_extension/class_constants.c +18 -2
- data/ext/rbs_extension/class_constants.h +9 -0
- data/ext/rbs_extension/extconf.rb +6 -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 +183 -39
- data/include/rbs/ast.h +597 -297
- data/include/rbs/defines.h +40 -0
- data/include/rbs/lexer.h +31 -11
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +6 -6
- data/include/rbs/serialize.h +39 -0
- 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/annotate/rdoc_annotator.rb +27 -31
- 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 +335 -3
- data/lib/rbs/ast/ruby/comment_block.rb +30 -4
- data/lib/rbs/ast/ruby/declarations.rb +209 -4
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +1 -1
- data/lib/rbs/ast/ruby/members.rb +571 -22
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +66 -24
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -106
- data/lib/rbs/cli.rb +55 -24
- data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
- data/lib/rbs/collection/sources/git.rb +7 -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 +32 -6
- data/lib/rbs/definition_builder.rb +147 -25
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +235 -75
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -18
- data/lib/rbs/inline_parser.rb +377 -15
- 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/namespace.rb +47 -11
- 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 +10 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +120 -44
- data/lib/rbs/rewriter.rb +70 -0
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +25 -3
- data/lib/rbs/type_name.rb +34 -14
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/type_assertions.rb +44 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/wasm/deserializer.rb +213 -0
- data/lib/rbs/wasm/location.rb +61 -0
- data/lib/rbs/wasm/parser.rb +137 -0
- data/lib/rbs/wasm/runtime.rb +217 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs.rb +13 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +24 -6
- data/schema/typeParam.json +17 -1
- data/sig/annotate/rdoc_annotater.rbs +12 -9
- data/sig/ast/ruby/annotations.rbs +364 -4
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +128 -2
- data/sig/buffer.rbs +19 -1
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/collection/config/lockfile_generator.rbs +2 -0
- 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 +41 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -2
- data/sig/method_builder.rbs +3 -1
- data/sig/namespace.rbs +20 -0
- data/sig/parser.rbs +41 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +36 -10
- data/sig/rewriter.rbs +45 -0
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +15 -0
- data/sig/types.rbs +6 -7
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +15 -0
- data/sig/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/src/ast.c +443 -162
- data/src/lexer.c +1415 -1313
- data/src/lexer.re +4 -0
- data/src/lexstate.c +63 -37
- data/src/location.c +7 -47
- data/src/parser.c +1032 -521
- data/src/serialize.c +958 -0
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -74
- 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/abbrev/0/array.rbs +1 -1
- 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/csv/0/csv.rbs +5 -5
- 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 +111 -1
- data/stdlib/erb/0/erb.rbs +748 -347
- data/stdlib/etc/0/etc.rbs +73 -54
- data/stdlib/fileutils/0/fileutils.rbs +179 -160
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +223 -142
- 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 +482 -364
- 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 +26 -69
- 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 +3 -3
- 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 +1209 -95
- data/stdlib/strscan/0/string_scanner.rbs +101 -80
- 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 +4 -1
- data/stdlib/tsort/0/interfaces.rbs +8 -8
- data/stdlib/tsort/0/tsort.rbs +16 -15
- 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 +8 -8
- 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
- data/wasm/README.md +59 -0
- data/wasm/rbs_wasm.c +411 -0
- metadata +56 -8
- data/.vscode/extensions.json +0 -5
- data/.vscode/settings.json +0 -19
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`.
|
|
@@ -156,11 +158,14 @@
|
|
|
156
158
|
class Numeric
|
|
157
159
|
include Comparable
|
|
158
160
|
|
|
161
|
+
# The direction you can round
|
|
162
|
+
type round_mode = :up | :down | :even | 'up' | 'down' | 'even' | string | nil
|
|
163
|
+
|
|
159
164
|
# <!--
|
|
160
165
|
# rdoc-file=numeric.c
|
|
161
166
|
# - self % other -> real_numeric
|
|
162
167
|
# -->
|
|
163
|
-
# Returns `self` modulo `other` as a real
|
|
168
|
+
# Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
|
|
164
169
|
#
|
|
165
170
|
# Of the Core and Standard Library classes, only Rational uses this
|
|
166
171
|
# implementation.
|
|
@@ -201,7 +206,7 @@ class Numeric
|
|
|
201
206
|
# -->
|
|
202
207
|
# Returns `self`.
|
|
203
208
|
#
|
|
204
|
-
def +@: () ->
|
|
209
|
+
def +@: () -> self
|
|
205
210
|
|
|
206
211
|
# Performs subtraction: the class of the resulting object depends on the class
|
|
207
212
|
# of `numeric`.
|
|
@@ -212,15 +217,23 @@ class Numeric
|
|
|
212
217
|
# rdoc-file=numeric.c
|
|
213
218
|
# - -self -> numeric
|
|
214
219
|
# -->
|
|
215
|
-
#
|
|
220
|
+
# Returns `self`, negated.
|
|
216
221
|
#
|
|
217
|
-
def -@: () ->
|
|
222
|
+
def -@: () -> self
|
|
218
223
|
|
|
219
224
|
# <!--
|
|
220
225
|
# rdoc-file=numeric.c
|
|
221
226
|
# - self <=> other -> zero or nil
|
|
222
227
|
# -->
|
|
223
|
-
#
|
|
228
|
+
# Compares `self` and `other`.
|
|
229
|
+
#
|
|
230
|
+
# Returns:
|
|
231
|
+
#
|
|
232
|
+
# * Zero, if `self` is the same as `other`.
|
|
233
|
+
# * `nil`, otherwise.
|
|
234
|
+
#
|
|
235
|
+
# Class Numeric includes module Comparable, each of whose methods uses
|
|
236
|
+
# Numeric#<=> for comparison.
|
|
224
237
|
#
|
|
225
238
|
# No subclass in the Ruby Core or Standard Library uses this implementation.
|
|
226
239
|
#
|
|
@@ -244,12 +257,12 @@ class Numeric
|
|
|
244
257
|
# -->
|
|
245
258
|
# Returns the square of `self`.
|
|
246
259
|
#
|
|
247
|
-
def abs2: () ->
|
|
260
|
+
def abs2: () -> self
|
|
248
261
|
|
|
249
262
|
# <!-- rdoc-file=complex.c -->
|
|
250
263
|
# Returns zero if `self` is positive, Math::PI otherwise.
|
|
251
264
|
#
|
|
252
|
-
def angle: () ->
|
|
265
|
+
def angle: () -> (0 | Float)
|
|
253
266
|
|
|
254
267
|
# <!--
|
|
255
268
|
# rdoc-file=complex.c
|
|
@@ -267,7 +280,7 @@ class Numeric
|
|
|
267
280
|
# as specified by the given `ndigits`, which must be an [integer-convertible
|
|
268
281
|
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
|
269
282
|
#
|
|
270
|
-
# Equivalent to
|
|
283
|
+
# Equivalent to <code>self.to_f.ceil(ndigits)</code>.
|
|
271
284
|
#
|
|
272
285
|
# Related: #floor, Float#ceil.
|
|
273
286
|
#
|
|
@@ -310,18 +323,18 @@ class Numeric
|
|
|
310
323
|
|
|
311
324
|
# <!--
|
|
312
325
|
# rdoc-file=numeric.rb
|
|
313
|
-
# - conj
|
|
326
|
+
# - conj -> self
|
|
314
327
|
# -->
|
|
328
|
+
# Returns `self`.
|
|
315
329
|
#
|
|
316
|
-
def
|
|
330
|
+
def conjugate: () -> self
|
|
317
331
|
|
|
318
332
|
# <!--
|
|
319
333
|
# rdoc-file=numeric.rb
|
|
320
|
-
# - conj
|
|
334
|
+
# - conj()
|
|
321
335
|
# -->
|
|
322
|
-
# Returns `self`.
|
|
323
336
|
#
|
|
324
|
-
|
|
337
|
+
alias conj conjugate
|
|
325
338
|
|
|
326
339
|
# <!--
|
|
327
340
|
# rdoc-file=rational.c
|
|
@@ -335,9 +348,9 @@ class Numeric
|
|
|
335
348
|
# rdoc-file=numeric.c
|
|
336
349
|
# - div(other) -> integer
|
|
337
350
|
# -->
|
|
338
|
-
# Returns the quotient
|
|
339
|
-
#
|
|
340
|
-
#
|
|
351
|
+
# Returns the quotient <code>self/other</code> as an integer (via `floor`),
|
|
352
|
+
# using method <code>/</code> as defined in the subclass of Numeric. (Numeric
|
|
353
|
+
# itself does not define <code>/</code>.)
|
|
341
354
|
#
|
|
342
355
|
# Of the Core and Standard Library classes, Only Float and Rational use this
|
|
343
356
|
# implementation.
|
|
@@ -348,7 +361,7 @@ class Numeric
|
|
|
348
361
|
# rdoc-file=numeric.c
|
|
349
362
|
# - divmod(other) -> array
|
|
350
363
|
# -->
|
|
351
|
-
# Returns a 2-element array
|
|
364
|
+
# Returns a 2-element array <code>[q, r]</code>, where
|
|
352
365
|
#
|
|
353
366
|
# q = (self/other).floor # Quotient
|
|
354
367
|
# r = self % other # Remainder
|
|
@@ -389,8 +402,8 @@ class Numeric
|
|
|
389
402
|
# 1.eql?(Rational(1, 1)) # => false
|
|
390
403
|
# 1.eql?(Complex(1, 0)) # => false
|
|
391
404
|
#
|
|
392
|
-
# Method
|
|
393
|
-
# while
|
|
405
|
+
# Method <code>eql?</code> is different from <code>==</code> in that
|
|
406
|
+
# <code>eql?</code> requires matching types, while <code>==</code> does not.
|
|
394
407
|
#
|
|
395
408
|
def eql?: (untyped) -> bool
|
|
396
409
|
|
|
@@ -398,8 +411,9 @@ class Numeric
|
|
|
398
411
|
# rdoc-file=numeric.c
|
|
399
412
|
# - fdiv(other) -> float
|
|
400
413
|
# -->
|
|
401
|
-
# Returns the quotient
|
|
402
|
-
#
|
|
414
|
+
# Returns the quotient <code>self/other</code> as a float, using method
|
|
415
|
+
# <code>/</code> as defined in the subclass of Numeric. (Numeric itself does not
|
|
416
|
+
# define <code>/</code>.)
|
|
403
417
|
#
|
|
404
418
|
# Of the Core and Standard Library classes, only BigDecimal uses this
|
|
405
419
|
# implementation.
|
|
@@ -422,7 +436,7 @@ class Numeric
|
|
|
422
436
|
# specified by the given `ndigits`, which must be an [integer-convertible
|
|
423
437
|
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
|
424
438
|
#
|
|
425
|
-
# Equivalent to
|
|
439
|
+
# Equivalent to <code>self.to_f.floor(ndigits)</code>.
|
|
426
440
|
#
|
|
427
441
|
# Related: #ceil, Float#floor.
|
|
428
442
|
#
|
|
@@ -433,7 +447,7 @@ class Numeric
|
|
|
433
447
|
# rdoc-file=numeric.c
|
|
434
448
|
# - i -> complex
|
|
435
449
|
# -->
|
|
436
|
-
# Returns
|
|
450
|
+
# Returns <code>Complex(0, self)</code>:
|
|
437
451
|
#
|
|
438
452
|
# 2.i # => (0+2i)
|
|
439
453
|
# -2.i # => (0-2i)
|
|
@@ -445,25 +459,25 @@ class Numeric
|
|
|
445
459
|
|
|
446
460
|
# <!--
|
|
447
461
|
# rdoc-file=numeric.rb
|
|
448
|
-
# - imag
|
|
462
|
+
# - imag -> 0
|
|
449
463
|
# -->
|
|
464
|
+
# Returns zero.
|
|
450
465
|
#
|
|
451
|
-
def
|
|
466
|
+
def imaginary: () -> 0
|
|
452
467
|
|
|
453
468
|
# <!--
|
|
454
469
|
# rdoc-file=numeric.rb
|
|
455
|
-
# - imag
|
|
470
|
+
# - imag()
|
|
456
471
|
# -->
|
|
457
|
-
# Returns zero.
|
|
458
472
|
#
|
|
459
|
-
|
|
473
|
+
alias imag imaginary
|
|
460
474
|
|
|
461
475
|
# <!--
|
|
462
476
|
# rdoc-file=numeric.rb
|
|
463
477
|
# - infinite? -> -1, 1, or nil
|
|
464
478
|
# -->
|
|
465
|
-
# Returns `nil`, -1, or 1 depending on whether `self` is finite,
|
|
466
|
-
#
|
|
479
|
+
# Returns `nil`, -1, or 1 depending on whether `self` is finite,
|
|
480
|
+
# <code>-Infinity</code>, or <code>+Infinity</code>.
|
|
467
481
|
#
|
|
468
482
|
def infinite?: () -> Integer?
|
|
469
483
|
|
|
@@ -488,7 +502,7 @@ class Numeric
|
|
|
488
502
|
alias magnitude abs
|
|
489
503
|
|
|
490
504
|
# <!-- rdoc-file=numeric.c -->
|
|
491
|
-
# Returns `self` modulo `other` as a real
|
|
505
|
+
# Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
|
|
492
506
|
#
|
|
493
507
|
# Of the Core and Standard Library classes, only Rational uses this
|
|
494
508
|
# implementation.
|
|
@@ -530,17 +544,17 @@ class Numeric
|
|
|
530
544
|
# rdoc-file=numeric.c
|
|
531
545
|
# - nonzero? -> self or nil
|
|
532
546
|
# -->
|
|
533
|
-
# Returns
|
|
534
|
-
#
|
|
547
|
+
# Returns `self` if `self` is not a zero value, `nil` otherwise; uses method
|
|
548
|
+
# <code>zero?</code> for the evaluation.
|
|
535
549
|
#
|
|
536
|
-
#
|
|
550
|
+
# The returned `self` allows the method to be chained:
|
|
537
551
|
#
|
|
538
|
-
#
|
|
539
|
-
#
|
|
540
|
-
#
|
|
552
|
+
# a = %w[z Bb bB bb BB a aA Aa AA A]
|
|
553
|
+
# a.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b }
|
|
554
|
+
# # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
|
|
541
555
|
#
|
|
542
|
-
#
|
|
543
|
-
#
|
|
556
|
+
# Of the Core and Standard Library classes, Integer, Float, Rational, and
|
|
557
|
+
# Complex use this implementation.
|
|
544
558
|
#
|
|
545
559
|
# Related: #zero?
|
|
546
560
|
#
|
|
@@ -563,7 +577,7 @@ class Numeric
|
|
|
563
577
|
# rdoc-file=complex.c
|
|
564
578
|
# - polar -> array
|
|
565
579
|
# -->
|
|
566
|
-
# Returns array
|
|
580
|
+
# Returns array <code>[self.abs, self.arg]</code>.
|
|
567
581
|
#
|
|
568
582
|
def polar: () -> [ Numeric, Numeric ]
|
|
569
583
|
|
|
@@ -590,7 +604,7 @@ class Numeric
|
|
|
590
604
|
# -->
|
|
591
605
|
# Returns `self`.
|
|
592
606
|
#
|
|
593
|
-
def real: () ->
|
|
607
|
+
def real: () -> self
|
|
594
608
|
|
|
595
609
|
# <!--
|
|
596
610
|
# rdoc-file=numeric.rb
|
|
@@ -598,10 +612,10 @@ class Numeric
|
|
|
598
612
|
# -->
|
|
599
613
|
# Returns `true` if `self` is a real number (i.e. not Complex).
|
|
600
614
|
#
|
|
601
|
-
def real?: () ->
|
|
615
|
+
def real?: () -> true
|
|
602
616
|
|
|
603
617
|
# <!-- rdoc-file=complex.c -->
|
|
604
|
-
# Returns array
|
|
618
|
+
# Returns array <code>[self, 0]</code>.
|
|
605
619
|
#
|
|
606
620
|
def rect: () -> [ Numeric, Numeric ]
|
|
607
621
|
|
|
@@ -609,7 +623,7 @@ class Numeric
|
|
|
609
623
|
# rdoc-file=complex.c
|
|
610
624
|
# - rect -> array
|
|
611
625
|
# -->
|
|
612
|
-
# Returns array
|
|
626
|
+
# Returns array <code>[self, 0]</code>.
|
|
613
627
|
#
|
|
614
628
|
alias rectangular rect
|
|
615
629
|
|
|
@@ -745,13 +759,13 @@ class Numeric
|
|
|
745
759
|
# If all the arguments are integers, the loop operates using an integer counter.
|
|
746
760
|
#
|
|
747
761
|
# If any of the arguments are floating point numbers, all are converted to
|
|
748
|
-
# floats, and the loop is executed
|
|
749
|
-
# where
|
|
762
|
+
# floats, and the loop is executed <em>floor(n + n*Float::EPSILON) + 1</em>
|
|
763
|
+
# times, where <em>n = (limit - self)/step</em>.
|
|
750
764
|
#
|
|
751
765
|
def step: (?Numeric limit, ?Numeric step) { (Numeric) -> void } -> self
|
|
752
|
-
| (?Numeric limit, ?Numeric step) -> Enumerator
|
|
766
|
+
| (?Numeric limit, ?Numeric step) -> Enumerator::ArithmeticSequence
|
|
753
767
|
| (?by: Numeric, ?to: Numeric) { (Numeric) -> void } -> self
|
|
754
|
-
| (?by: Numeric, ?to: Numeric) -> Enumerator
|
|
768
|
+
| (?by: Numeric, ?to: Numeric) -> Enumerator::ArithmeticSequence
|
|
755
769
|
|
|
756
770
|
# <!--
|
|
757
771
|
# rdoc-file=complex.c
|
|
@@ -765,8 +779,8 @@ class Numeric
|
|
|
765
779
|
# rdoc-file=numeric.c
|
|
766
780
|
# - to_int -> integer
|
|
767
781
|
# -->
|
|
768
|
-
# Returns `self` as an integer; converts using method `to_i` in the
|
|
769
|
-
#
|
|
782
|
+
# Returns `self` as an integer; converts using method `to_i` in the subclass of
|
|
783
|
+
# Numeric. (Numeric itself does not define `to_i`.)
|
|
770
784
|
#
|
|
771
785
|
# Of the Core and Standard Library classes, only Rational and Complex use this
|
|
772
786
|
# 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
|
|
@@ -57,7 +57,7 @@ module ObjectSpace
|
|
|
57
57
|
# attributes always, but the values that aren't needed anymore wouldn't be
|
|
58
58
|
# sitting in the cache forever.
|
|
59
59
|
#
|
|
60
|
-
class WeakKeyMap[
|
|
60
|
+
class WeakKeyMap[K, V]
|
|
61
61
|
# <!--
|
|
62
62
|
# rdoc-file=weakmap.c
|
|
63
63
|
# - map[key] -> value
|
|
@@ -66,7 +66,7 @@ module ObjectSpace
|
|
|
66
66
|
#
|
|
67
67
|
# If `key` is not found, returns `nil`.
|
|
68
68
|
#
|
|
69
|
-
def []: (
|
|
69
|
+
def []: (K) -> V?
|
|
70
70
|
|
|
71
71
|
# <!--
|
|
72
72
|
# rdoc-file=weakmap.c
|
|
@@ -80,7 +80,7 @@ module ObjectSpace
|
|
|
80
80
|
# If the given `key` exists, replaces its value with the given `value`; the
|
|
81
81
|
# ordering is not affected
|
|
82
82
|
#
|
|
83
|
-
def []=: (
|
|
83
|
+
def []=: (K, V?) -> V?
|
|
84
84
|
|
|
85
85
|
# <!--
|
|
86
86
|
# rdoc-file=weakmap.c
|
|
@@ -119,8 +119,8 @@ module ObjectSpace
|
|
|
119
119
|
# m = ObjectSpace::WeakKeyMap.new
|
|
120
120
|
# m.delete("nosuch") { |key| "Key #{key} not found" } # => "Key nosuch not found"
|
|
121
121
|
#
|
|
122
|
-
def delete: (
|
|
123
|
-
| [T] (
|
|
122
|
+
def delete: (K) -> V?
|
|
123
|
+
| [T] (K) { (K) -> T } -> (V | T)
|
|
124
124
|
|
|
125
125
|
# <!--
|
|
126
126
|
# rdoc-file=weakmap.c
|
|
@@ -141,7 +141,7 @@ module ObjectSpace
|
|
|
141
141
|
# copy = cache.getkey({amount: 1, currency: 'USD'})
|
|
142
142
|
# copy.object_id == value.object_id #=> true
|
|
143
143
|
#
|
|
144
|
-
def getkey: (untyped) ->
|
|
144
|
+
def getkey: (untyped) -> K?
|
|
145
145
|
|
|
146
146
|
# <!--
|
|
147
147
|
# rdoc-file=weakmap.c
|
|
@@ -161,6 +161,6 @@ module ObjectSpace
|
|
|
161
161
|
# -->
|
|
162
162
|
# Returns `true` if `key` is a key in `self`, otherwise `false`.
|
|
163
163
|
#
|
|
164
|
-
def key?: (
|
|
164
|
+
def key?: (K) -> bool
|
|
165
165
|
end
|
|
166
166
|
end
|
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
|