rbs 3.7.0 → 3.8.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- 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+.
|