rbs 3.7.0 → 3.8.0.pre.1
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/workflows/comments.yml +3 -3
- data/.github/workflows/ruby.yml +7 -7
- data/CHANGELOG.md +52 -0
- data/core/array.rbs +1743 -1580
- data/core/basic_object.rbs +38 -35
- data/core/comparable.rbs +1 -1
- data/core/complex.rbs +165 -93
- data/core/data.rbs +1 -1
- data/core/dir.rbs +1 -17
- data/core/encoding.rbs +12 -6
- data/core/enumerable.rbs +270 -266
- data/core/enumerator.rbs +0 -2
- data/core/env.rbs +1 -1
- data/core/errno.rbs +33 -16
- data/core/errors.rbs +2 -2
- data/core/exception.rbs +236 -170
- data/core/fiber.rbs +3 -2
- data/core/file.rbs +32 -74
- data/core/float.rbs +125 -72
- data/core/gc.rbs +138 -40
- data/core/hash.rbs +120 -141
- data/core/integer.rbs +79 -50
- data/core/io/buffer.rbs +49 -43
- data/core/io.rbs +97 -144
- data/core/kernel.rbs +290 -200
- data/core/match_data.rbs +76 -2
- data/core/math.rbs +0 -36
- data/core/module.rbs +28 -23
- data/core/nil_class.rbs +0 -3
- data/core/numeric.rbs +100 -103
- data/core/object.rbs +0 -4
- data/core/object_space/weak_key_map.rbs +3 -4
- data/core/object_space.rbs +3 -3
- data/core/proc.rbs +0 -2
- data/core/process.rbs +109 -57
- data/core/ractor.rbs +37 -4
- data/core/range.rbs +114 -87
- data/core/rational.rbs +0 -2
- data/core/rbs/unnamed/argf.rbs +234 -33
- data/core/rbs/unnamed/env_class.rbs +35 -53
- data/core/rbs/unnamed/random.rbs +1 -2
- data/core/regexp.rbs +4 -52
- data/core/ruby_vm.rbs +88 -9
- data/core/rubygems/config_file.rbs +3 -0
- data/core/rubygems/errors.rbs +0 -5
- data/core/rubygems/platform.rbs +0 -9
- data/core/rubygems/rubygems.rbs +0 -5
- data/core/rubygems/version.rbs +6 -6
- data/core/set.rbs +3 -15
- data/core/string.rbs +130 -136
- data/core/struct.rbs +6 -18
- data/core/symbol.rbs +14 -21
- data/core/thread.rbs +32 -35
- data/core/time.rbs +127 -50
- data/core/trace_point.rbs +16 -0
- data/core/true_class.rbs +0 -1
- data/core/warning.rbs +9 -2
- data/docs/architecture.md +1 -1
- data/docs/syntax.md +1 -1
- data/ext/rbs_extension/location.c +29 -19
- data/ext/rbs_extension/parser.c +267 -292
- data/ext/rbs_extension/parserstate.c +56 -22
- data/lib/rbs/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/rdoc_source.rb +2 -2
- data/lib/rbs/cli/diff.rb +3 -3
- data/lib/rbs/cli/validate.rb +1 -1
- data/lib/rbs/cli.rb +13 -13
- data/lib/rbs/collection/config.rb +3 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +3 -3
- data/lib/rbs/environment_loader.rb +1 -1
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser_aux.rb +2 -2
- data/lib/rbs/prototype/rb.rb +11 -8
- data/lib/rbs/prototype/rbi.rb +9 -5
- data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
- data/lib/rbs/prototype/runtime.rb +4 -5
- data/lib/rbs/type_name.rb +14 -9
- data/lib/rbs/unit_test/type_assertions.rb +2 -2
- data/lib/rbs/validator.rb +3 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +2 -2
- data/rbs.gemspec +4 -0
- data/sig/ancestor_graph.rbs +4 -4
- data/sig/namespace.rbs +2 -3
- data/sig/resolver/constant_resolver.rbs +2 -2
- data/sig/resolver/context.rbs +1 -1
- data/sig/type_alias_regularity.rbs +5 -5
- data/sig/typename.rbs +8 -5
- data/sig/use_map.rbs +1 -1
- data/sig/validator.rbs +2 -2
- data/stdlib/base64/0/base64.rbs +0 -9
- data/stdlib/benchmark/0/benchmark.rbs +11 -2
- data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
- data/stdlib/cgi/0/core.rbs +47 -0
- data/stdlib/coverage/0/coverage.rbs +0 -3
- data/stdlib/csv/0/csv.rbs +18 -58
- data/stdlib/date/0/date.rbs +4 -19
- data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
- data/stdlib/digest/0/digest.rbs +25 -2
- data/stdlib/erb/0/erb.rbs +0 -1
- data/stdlib/etc/0/etc.rbs +51 -34
- data/stdlib/fileutils/0/fileutils.rbs +3 -44
- data/stdlib/io-console/0/io-console.rbs +69 -15
- data/stdlib/ipaddr/0/ipaddr.rbs +8 -4
- data/stdlib/json/0/json.rbs +56 -71
- data/stdlib/logger/0/log_device.rbs +1 -1
- data/stdlib/logger/0/logger.rbs +3 -18
- data/stdlib/net-http/0/net-http.rbs +19 -77
- data/stdlib/nkf/0/nkf.rbs +30 -0
- data/stdlib/objspace/0/objspace.rbs +1 -2
- data/stdlib/observable/0/observable.rbs +1 -1
- data/stdlib/open-uri/0/open-uri.rbs +52 -0
- data/stdlib/open3/0/open3.rbs +0 -8
- data/stdlib/openssl/0/openssl.rbs +136 -69
- data/stdlib/optparse/0/optparse.rbs +58 -18
- data/stdlib/pathname/0/pathname.rbs +2 -8
- data/stdlib/pp/0/pp.rbs +3 -1
- data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
- data/stdlib/pstore/0/pstore.rbs +0 -6
- data/stdlib/psych/0/psych.rbs +15 -4
- data/stdlib/pty/0/pty.rbs +46 -4
- data/stdlib/rdoc/0/code_object.rbs +0 -4
- data/stdlib/rdoc/0/markup.rbs +10 -12
- data/stdlib/rdoc/0/rdoc.rbs +1 -2
- data/stdlib/resolv/0/resolv.rbs +8 -3
- data/stdlib/ripper/0/ripper.rbs +0 -2
- data/stdlib/securerandom/0/securerandom.rbs +0 -2
- data/stdlib/shellwords/0/shellwords.rbs +11 -12
- data/stdlib/singleton/0/singleton.rbs +0 -1
- data/stdlib/socket/0/addrinfo.rbs +0 -1
- data/stdlib/socket/0/basic_socket.rbs +0 -5
- data/stdlib/socket/0/socket.rbs +49 -25
- data/stdlib/socket/0/tcp_server.rbs +0 -3
- data/stdlib/socket/0/tcp_socket.rbs +58 -3
- data/stdlib/socket/0/udp_socket.rbs +0 -1
- data/stdlib/socket/0/unix_server.rbs +0 -3
- data/stdlib/strscan/0/string_scanner.rbs +1265 -422
- data/stdlib/tempfile/0/tempfile.rbs +135 -28
- data/stdlib/time/0/time.rbs +48 -35
- data/stdlib/timeout/0/timeout.rbs +11 -8
- data/stdlib/tmpdir/0/tmpdir.rbs +8 -1
- data/stdlib/tsort/0/tsort.rbs +0 -4
- data/stdlib/uri/0/common.rbs +11 -30
- data/stdlib/uri/0/ftp.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +22 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
- data/stdlib/zlib/0/buf_error.rbs +1 -70
- data/stdlib/zlib/0/data_error.rbs +1 -70
- data/stdlib/zlib/0/deflate.rbs +8 -72
- data/stdlib/zlib/0/error.rbs +1 -70
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
- data/stdlib/zlib/0/gzip_file.rbs +1 -71
- data/stdlib/zlib/0/gzip_reader.rbs +3 -74
- data/stdlib/zlib/0/gzip_writer.rbs +1 -70
- data/stdlib/zlib/0/inflate.rbs +4 -71
- data/stdlib/zlib/0/mem_error.rbs +1 -70
- data/stdlib/zlib/0/need_dict.rbs +1 -70
- data/stdlib/zlib/0/stream_end.rbs +1 -70
- data/stdlib/zlib/0/stream_error.rbs +1 -70
- data/stdlib/zlib/0/version_error.rbs +1 -70
- data/stdlib/zlib/0/zlib.rbs +0 -2
- data/stdlib/zlib/0/zstream.rbs +4 -72
- metadata +4 -6
data/core/numeric.rbs
CHANGED
|
@@ -77,7 +77,6 @@
|
|
|
77
77
|
# * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
|
|
78
78
|
# * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
|
|
79
79
|
#
|
|
80
|
-
#
|
|
81
80
|
# Here, class Numeric provides methods for:
|
|
82
81
|
#
|
|
83
82
|
# * [Querying](rdoc-ref:Numeric@Querying)
|
|
@@ -85,7 +84,6 @@
|
|
|
85
84
|
# * [Converting](rdoc-ref:Numeric@Converting)
|
|
86
85
|
# * [Other](rdoc-ref:Numeric@Other)
|
|
87
86
|
#
|
|
88
|
-
#
|
|
89
87
|
# ### Querying
|
|
90
88
|
#
|
|
91
89
|
# * #finite?: Returns true unless `self` is infinite or not a number.
|
|
@@ -98,7 +96,6 @@
|
|
|
98
96
|
# * #real?: Returns whether `self` is a real value.
|
|
99
97
|
# * #zero?: Returns whether `self` is zero.
|
|
100
98
|
#
|
|
101
|
-
#
|
|
102
99
|
# ### Comparing
|
|
103
100
|
#
|
|
104
101
|
# * #<=>: Returns:
|
|
@@ -108,11 +105,9 @@
|
|
|
108
105
|
# * 1 if `self` is greater than the given value.
|
|
109
106
|
# * `nil` if `self` and the given value are not comparable.
|
|
110
107
|
#
|
|
111
|
-
#
|
|
112
108
|
# * #eql?: Returns whether `self` and the given value have the same value and
|
|
113
109
|
# type.
|
|
114
110
|
#
|
|
115
|
-
#
|
|
116
111
|
# ### Converting
|
|
117
112
|
#
|
|
118
113
|
# * #% (aliased as #modulo): Returns the remainder of `self` divided by the
|
|
@@ -152,7 +147,6 @@
|
|
|
152
147
|
# necessary.
|
|
153
148
|
# * #truncate: Returns `self` truncated (toward zero) to a given precision.
|
|
154
149
|
#
|
|
155
|
-
#
|
|
156
150
|
# ### Other
|
|
157
151
|
#
|
|
158
152
|
# * #clone: Returns `self`; does not allow freezing.
|
|
@@ -202,7 +196,7 @@ class Numeric
|
|
|
202
196
|
def +: (Numeric) -> Numeric
|
|
203
197
|
|
|
204
198
|
# <!--
|
|
205
|
-
# rdoc-file=numeric.
|
|
199
|
+
# rdoc-file=numeric.rb
|
|
206
200
|
# - +self -> self
|
|
207
201
|
# -->
|
|
208
202
|
# Returns `self`.
|
|
@@ -267,13 +261,15 @@ class Numeric
|
|
|
267
261
|
|
|
268
262
|
# <!--
|
|
269
263
|
# rdoc-file=numeric.c
|
|
270
|
-
# - ceil(
|
|
264
|
+
# - ceil(ndigits = 0) -> float or integer
|
|
271
265
|
# -->
|
|
272
|
-
# Returns the smallest
|
|
273
|
-
#
|
|
266
|
+
# Returns the smallest float or integer that is greater than or equal to `self`,
|
|
267
|
+
# as specified by the given `ndigits`, which must be an [integer-convertible
|
|
268
|
+
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
|
274
269
|
#
|
|
275
|
-
#
|
|
276
|
-
#
|
|
270
|
+
# Equivalent to `self.to_f.ceil(ndigits)`.
|
|
271
|
+
#
|
|
272
|
+
# Related: #floor, Float#ceil.
|
|
277
273
|
#
|
|
278
274
|
def ceil: () -> Integer
|
|
279
275
|
| (Integer digits) -> (Integer | Numeric)
|
|
@@ -393,8 +389,8 @@ class Numeric
|
|
|
393
389
|
# 1.eql?(Rational(1, 1)) # => false
|
|
394
390
|
# 1.eql?(Complex(1, 0)) # => false
|
|
395
391
|
#
|
|
396
|
-
# Method `eql?` is different from
|
|
397
|
-
# while
|
|
392
|
+
# Method `eql?` is different from `==` in that `eql?` requires matching types,
|
|
393
|
+
# while `==` does not.
|
|
398
394
|
#
|
|
399
395
|
def eql?: (untyped) -> bool
|
|
400
396
|
|
|
@@ -420,13 +416,15 @@ class Numeric
|
|
|
420
416
|
|
|
421
417
|
# <!--
|
|
422
418
|
# rdoc-file=numeric.c
|
|
423
|
-
# - floor(
|
|
419
|
+
# - floor(ndigits = 0) -> float or integer
|
|
424
420
|
# -->
|
|
425
|
-
# Returns the largest
|
|
426
|
-
#
|
|
421
|
+
# Returns the largest float or integer that is less than or equal to `self`, as
|
|
422
|
+
# specified by the given `ndigits`, which must be an [integer-convertible
|
|
423
|
+
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
|
427
424
|
#
|
|
428
|
-
#
|
|
429
|
-
#
|
|
425
|
+
# Equivalent to `self.to_f.floor(ndigits)`.
|
|
426
|
+
#
|
|
427
|
+
# Related: #ceil, Float#floor.
|
|
430
428
|
#
|
|
431
429
|
def floor: () -> Integer
|
|
432
430
|
| (Integer digits) -> Numeric
|
|
@@ -532,17 +530,19 @@ class Numeric
|
|
|
532
530
|
# rdoc-file=numeric.c
|
|
533
531
|
# - nonzero? -> self or nil
|
|
534
532
|
# -->
|
|
535
|
-
# Returns
|
|
536
|
-
#
|
|
533
|
+
# Returns +self+ if +self+ is not a zero value, +nil+ otherwise;
|
|
534
|
+
# uses method <tt>zero?</tt> for the evaluation.
|
|
535
|
+
#
|
|
536
|
+
# The returned +self+ allows the method to be chained:
|
|
537
537
|
#
|
|
538
|
-
#
|
|
538
|
+
# a = %w[z Bb bB bb BB a aA Aa AA A]
|
|
539
|
+
# a.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b }
|
|
540
|
+
# # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
|
|
539
541
|
#
|
|
540
|
-
#
|
|
541
|
-
#
|
|
542
|
-
# # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
|
|
542
|
+
# Of the Core and Standard Library classes,
|
|
543
|
+
# Integer, Float, Rational, and Complex use this implementation.
|
|
543
544
|
#
|
|
544
|
-
#
|
|
545
|
-
# Complex use this implementation.
|
|
545
|
+
# Related: #zero?
|
|
546
546
|
#
|
|
547
547
|
def nonzero?: () -> self?
|
|
548
548
|
|
|
@@ -670,86 +670,83 @@ class Numeric
|
|
|
670
670
|
# -->
|
|
671
671
|
# Generates a sequence of numbers; with a block given, traverses the sequence.
|
|
672
672
|
#
|
|
673
|
-
#
|
|
674
|
-
#
|
|
675
|
-
#
|
|
676
|
-
#
|
|
677
|
-
#
|
|
678
|
-
#
|
|
679
|
-
#
|
|
680
|
-
#
|
|
681
|
-
#
|
|
682
|
-
#
|
|
683
|
-
#
|
|
684
|
-
#
|
|
685
|
-
#
|
|
686
|
-
#
|
|
687
|
-
#
|
|
688
|
-
#
|
|
689
|
-
#
|
|
690
|
-
#
|
|
691
|
-
#
|
|
692
|
-
#
|
|
693
|
-
#
|
|
694
|
-
#
|
|
695
|
-
#
|
|
696
|
-
#
|
|
697
|
-
#
|
|
698
|
-
#
|
|
699
|
-
#
|
|
700
|
-
#
|
|
701
|
-
#
|
|
702
|
-
#
|
|
703
|
-
#
|
|
704
|
-
#
|
|
705
|
-
#
|
|
706
|
-
#
|
|
707
|
-
#
|
|
708
|
-
#
|
|
709
|
-
#
|
|
710
|
-
#
|
|
711
|
-
#
|
|
712
|
-
#
|
|
713
|
-
#
|
|
714
|
-
#
|
|
715
|
-
#
|
|
716
|
-
#
|
|
717
|
-
#
|
|
718
|
-
#
|
|
719
|
-
#
|
|
720
|
-
#
|
|
721
|
-
#
|
|
722
|
-
#
|
|
723
|
-
#
|
|
724
|
-
#
|
|
725
|
-
#
|
|
726
|
-
#
|
|
727
|
-
#
|
|
728
|
-
#
|
|
729
|
-
#
|
|
730
|
-
#
|
|
731
|
-
#
|
|
732
|
-
#
|
|
733
|
-
#
|
|
734
|
-
#
|
|
735
|
-
#
|
|
736
|
-
#
|
|
737
|
-
#
|
|
738
|
-
#
|
|
739
|
-
#
|
|
740
|
-
#
|
|
741
|
-
#
|
|
742
|
-
# squares # => [16, 25, 36, 49, 64, 81, 100, 121]
|
|
673
|
+
# Of the Core and Standard Library classes, Integer, Float, and Rational use
|
|
674
|
+
# this implementation.
|
|
675
|
+
#
|
|
676
|
+
# A quick example:
|
|
677
|
+
#
|
|
678
|
+
# squares = []
|
|
679
|
+
# 1.step(by: 2, to: 10) {|i| squares.push(i*i) }
|
|
680
|
+
# squares # => [1, 9, 25, 49, 81]
|
|
681
|
+
#
|
|
682
|
+
# The generated sequence:
|
|
683
|
+
#
|
|
684
|
+
# * Begins with `self`.
|
|
685
|
+
# * Continues at intervals of `by` (which may not be zero).
|
|
686
|
+
# * Ends with the last number that is within or equal to `to`; that is, less
|
|
687
|
+
# than or equal to `to` if `by` is positive, greater than or equal to `to`
|
|
688
|
+
# if `by` is negative. If `to` is `nil`, the sequence is of infinite length.
|
|
689
|
+
#
|
|
690
|
+
# If a block is given, calls the block with each number in the sequence; returns
|
|
691
|
+
# `self`. If no block is given, returns an Enumerator::ArithmeticSequence.
|
|
692
|
+
#
|
|
693
|
+
# **Keyword Arguments**
|
|
694
|
+
#
|
|
695
|
+
# With keyword arguments `by` and `to`, their values (or defaults) determine the
|
|
696
|
+
# step and limit:
|
|
697
|
+
#
|
|
698
|
+
# # Both keywords given.
|
|
699
|
+
# squares = []
|
|
700
|
+
# 4.step(by: 2, to: 10) {|i| squares.push(i*i) } # => 4
|
|
701
|
+
# squares # => [16, 36, 64, 100]
|
|
702
|
+
# cubes = []
|
|
703
|
+
# 3.step(by: -1.5, to: -3) {|i| cubes.push(i*i*i) } # => 3
|
|
704
|
+
# cubes # => [27.0, 3.375, 0.0, -3.375, -27.0]
|
|
705
|
+
# squares = []
|
|
706
|
+
# 1.2.step(by: 0.2, to: 2.0) {|f| squares.push(f*f) }
|
|
707
|
+
# squares # => [1.44, 1.9599999999999997, 2.5600000000000005, 3.24, 4.0]
|
|
708
|
+
#
|
|
709
|
+
# squares = []
|
|
710
|
+
# Rational(6/5).step(by: 0.2, to: 2.0) {|r| squares.push(r*r) }
|
|
711
|
+
# squares # => [1.0, 1.44, 1.9599999999999997, 2.5600000000000005, 3.24, 4.0]
|
|
712
|
+
#
|
|
713
|
+
# # Only keyword to given.
|
|
714
|
+
# squares = []
|
|
715
|
+
# 4.step(to: 10) {|i| squares.push(i*i) } # => 4
|
|
716
|
+
# squares # => [16, 25, 36, 49, 64, 81, 100]
|
|
717
|
+
# # Only by given.
|
|
718
|
+
#
|
|
719
|
+
# # Only keyword by given
|
|
720
|
+
# squares = []
|
|
721
|
+
# 4.step(by:2) {|i| squares.push(i*i); break if i > 10 }
|
|
722
|
+
# squares # => [16, 36, 64, 100, 144]
|
|
723
|
+
#
|
|
724
|
+
# # No block given.
|
|
725
|
+
# e = 3.step(by: -1.5, to: -3) # => (3.step(by: -1.5, to: -3))
|
|
726
|
+
# e.class # => Enumerator::ArithmeticSequence
|
|
727
|
+
#
|
|
728
|
+
# **Positional Arguments**
|
|
729
|
+
#
|
|
730
|
+
# With optional positional arguments `to` and `by`, their values (or defaults)
|
|
731
|
+
# determine the step and limit:
|
|
732
|
+
#
|
|
733
|
+
# squares = []
|
|
734
|
+
# 4.step(10, 2) {|i| squares.push(i*i) } # => 4
|
|
735
|
+
# squares # => [16, 36, 64, 100]
|
|
736
|
+
# squares = []
|
|
737
|
+
# 4.step(10) {|i| squares.push(i*i) }
|
|
738
|
+
# squares # => [16, 25, 36, 49, 64, 81, 100]
|
|
739
|
+
# squares = []
|
|
740
|
+
# 4.step {|i| squares.push(i*i); break if i > 10 } # => nil
|
|
741
|
+
# squares # => [16, 25, 36, 49, 64, 81, 100, 121]
|
|
743
742
|
#
|
|
744
743
|
# **Implementation Notes**
|
|
745
744
|
#
|
|
746
|
-
#
|
|
747
|
-
# counter.
|
|
745
|
+
# If all the arguments are integers, the loop operates using an integer counter.
|
|
748
746
|
#
|
|
749
|
-
#
|
|
750
|
-
#
|
|
751
|
-
#
|
|
752
|
-
# where <i>n = (limit - self)/step</i>.
|
|
747
|
+
# If any of the arguments are floating point numbers, all are converted to
|
|
748
|
+
# floats, and the loop is executed *floor(n + n*Float::EPSILON) + 1* times,
|
|
749
|
+
# where *n = (limit - self)/step*.
|
|
753
750
|
#
|
|
754
751
|
def step: (?Numeric limit, ?Numeric step) { (Numeric) -> void } -> self
|
|
755
752
|
| (?Numeric limit, ?Numeric step) -> Enumerator[Numeric, self]
|
data/core/object.rbs
CHANGED
|
@@ -21,14 +21,12 @@
|
|
|
21
21
|
# * Inherits from [class BasicObject](rdoc-ref:BasicObject@What-27s+Here).
|
|
22
22
|
# * Includes [module Kernel](rdoc-ref:Kernel@What-27s+Here).
|
|
23
23
|
#
|
|
24
|
-
#
|
|
25
24
|
# Here, class Object provides methods for:
|
|
26
25
|
#
|
|
27
26
|
# * [Querying](rdoc-ref:Object@Querying)
|
|
28
27
|
# * [Instance Variables](rdoc-ref:Object@Instance+Variables)
|
|
29
28
|
# * [Other](rdoc-ref:Object@Other)
|
|
30
29
|
#
|
|
31
|
-
#
|
|
32
30
|
# ### Querying
|
|
33
31
|
#
|
|
34
32
|
# * #!~: Returns `true` if `self` does not match the given object, otherwise
|
|
@@ -70,7 +68,6 @@
|
|
|
70
68
|
# argument.
|
|
71
69
|
# * #send: Calls the given method in `self` with the given argument.
|
|
72
70
|
#
|
|
73
|
-
#
|
|
74
71
|
# ### Instance Variables
|
|
75
72
|
#
|
|
76
73
|
# * #instance_variable_get: Returns the value of the given instance variable
|
|
@@ -82,7 +79,6 @@
|
|
|
82
79
|
# * #remove_instance_variable: Removes the named instance variable from
|
|
83
80
|
# `self`.
|
|
84
81
|
#
|
|
85
|
-
#
|
|
86
82
|
# ### Other
|
|
87
83
|
#
|
|
88
84
|
# * #clone: Returns a shallow copy of `self`, including singleton class and
|
|
@@ -22,17 +22,16 @@ module ObjectSpace
|
|
|
22
22
|
#
|
|
23
23
|
# val = nil
|
|
24
24
|
# GC.start
|
|
25
|
-
# # There
|
|
25
|
+
# # There are no more references to `val`, yet the pair isn't
|
|
26
26
|
# # garbage-collected.
|
|
27
27
|
# map["name"] #=> 2023-12-07 00:00:00 +0200
|
|
28
28
|
#
|
|
29
29
|
# key = nil
|
|
30
30
|
# GC.start
|
|
31
|
-
# # There
|
|
31
|
+
# # There are no more references to `key`, key and value are
|
|
32
32
|
# # garbage-collected.
|
|
33
33
|
# map["name"] #=> nil
|
|
34
34
|
#
|
|
35
|
-
#
|
|
36
35
|
# (Note that GC.start is used here only for demonstrational purposes and might
|
|
37
36
|
# not always lead to demonstrated results.)
|
|
38
37
|
#
|
|
@@ -55,7 +54,7 @@ module ObjectSpace
|
|
|
55
54
|
# end
|
|
56
55
|
#
|
|
57
56
|
# This will result in `make_value` returning the same object for same set of
|
|
58
|
-
# attributes always, but the values that aren't needed anymore
|
|
57
|
+
# attributes always, but the values that aren't needed anymore wouldn't be
|
|
59
58
|
# sitting in the cache forever.
|
|
60
59
|
#
|
|
61
60
|
class WeakKeyMap[Key, Value]
|
data/core/object_space.rbs
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
# an iterator.
|
|
5
5
|
#
|
|
6
6
|
# ObjectSpace also provides support for object finalizers, procs that will be
|
|
7
|
-
# called
|
|
8
|
-
#
|
|
9
|
-
#
|
|
7
|
+
# called after a specific object was destroyed by garbage collection. See the
|
|
8
|
+
# documentation for `ObjectSpace.define_finalizer` for important information on
|
|
9
|
+
# how to use this method correctly.
|
|
10
10
|
#
|
|
11
11
|
# a = "A"
|
|
12
12
|
# b = "B"
|
data/core/proc.rbs
CHANGED
|
@@ -56,7 +56,6 @@
|
|
|
56
56
|
#
|
|
57
57
|
# lambda2 = ->(x) { x**2 }
|
|
58
58
|
#
|
|
59
|
-
#
|
|
60
59
|
# ## Lambda and non-lambda semantics
|
|
61
60
|
#
|
|
62
61
|
# Procs are coming in two flavors: lambda and non-lambda (regular procs).
|
|
@@ -75,7 +74,6 @@
|
|
|
75
74
|
# filled with `nil`, single Array arguments are deconstructed if the proc
|
|
76
75
|
# has multiple arguments, and there is no error raised on extra arguments.
|
|
77
76
|
#
|
|
78
|
-
#
|
|
79
77
|
# Examples:
|
|
80
78
|
#
|
|
81
79
|
# # +return+ in non-lambda proc, +b+, exits +m2+.
|