rbs 3.9.5 → 3.10.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/.clang-format +74 -0
- data/.clangd +2 -0
- data/.github/workflows/c-check.yml +54 -0
- data/.github/workflows/comments.yml +3 -3
- data/.github/workflows/ruby.yml +34 -19
- data/.github/workflows/typecheck.yml +1 -1
- data/.github/workflows/windows.yml +1 -1
- data/.gitignore +4 -0
- data/README.md +38 -1
- data/Rakefile +152 -23
- data/config.yml +190 -62
- data/core/array.rbs +44 -43
- data/core/dir.rbs +2 -2
- data/core/encoding.rbs +3 -2
- data/core/enumerable.rbs +89 -2
- data/core/errno.rbs +8 -0
- data/core/errors.rbs +28 -1
- data/core/exception.rbs +2 -2
- data/core/fiber.rbs +3 -3
- data/core/file.rbs +26 -11
- data/core/float.rbs +1 -1
- data/core/gc.rbs +422 -281
- data/core/hash.rbs +1024 -727
- data/core/io/wait.rbs +11 -33
- data/core/io.rbs +6 -4
- data/core/kernel.rbs +49 -43
- data/core/marshal.rbs +1 -1
- data/core/match_data.rbs +1 -1
- data/core/math.rbs +42 -3
- data/core/method.rbs +14 -6
- data/core/module.rbs +71 -11
- data/core/nil_class.rbs +3 -3
- data/core/numeric.rbs +8 -8
- data/core/object.rbs +3 -3
- data/core/object_space.rbs +13 -0
- data/{stdlib/pathname/0 → core}/pathname.rbs +253 -352
- data/core/proc.rbs +15 -8
- data/core/process.rbs +2 -2
- data/core/ractor.rbs +278 -437
- data/core/range.rbs +6 -7
- data/core/rbs/unnamed/argf.rbs +1 -1
- data/core/rbs/unnamed/env_class.rbs +1 -1
- data/core/rbs/unnamed/random.rbs +4 -2
- data/core/regexp.rbs +22 -17
- data/core/ruby_vm.rbs +6 -4
- data/core/rubygems/errors.rbs +3 -70
- data/core/rubygems/rubygems.rbs +11 -79
- data/core/set.rbs +439 -332
- data/core/string.rbs +2897 -1117
- data/core/struct.rbs +1 -1
- data/core/symbol.rbs +4 -4
- data/core/thread.rbs +83 -20
- data/core/time.rbs +35 -9
- data/core/unbound_method.rbs +14 -6
- data/docs/aliases.md +79 -0
- data/docs/collection.md +2 -2
- data/docs/gem.md +0 -1
- data/docs/sigs.md +3 -3
- data/ext/rbs_extension/ast_translation.c +1016 -0
- data/ext/rbs_extension/ast_translation.h +37 -0
- data/ext/rbs_extension/class_constants.c +157 -0
- data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +7 -1
- data/ext/rbs_extension/compat.h +10 -0
- data/ext/rbs_extension/extconf.rb +25 -1
- data/ext/rbs_extension/legacy_location.c +317 -0
- data/ext/rbs_extension/legacy_location.h +45 -0
- data/ext/rbs_extension/main.c +365 -14
- data/ext/rbs_extension/rbs_extension.h +6 -21
- data/ext/rbs_extension/rbs_string_bridging.c +9 -0
- data/ext/rbs_extension/rbs_string_bridging.h +24 -0
- data/include/rbs/ast.h +687 -0
- data/include/rbs/defines.h +86 -0
- data/include/rbs/lexer.h +199 -0
- data/include/rbs/location.h +59 -0
- data/include/rbs/parser.h +135 -0
- data/include/rbs/string.h +49 -0
- data/include/rbs/util/rbs_allocator.h +59 -0
- data/include/rbs/util/rbs_assert.h +20 -0
- data/include/rbs/util/rbs_buffer.h +83 -0
- data/include/rbs/util/rbs_constant_pool.h +6 -67
- data/include/rbs/util/rbs_encoding.h +282 -0
- data/include/rbs/util/rbs_unescape.h +23 -0
- data/include/rbs.h +1 -2
- data/lib/rbs/annotate/formatter.rb +3 -13
- data/lib/rbs/annotate/rdoc_annotator.rb +3 -1
- data/lib/rbs/annotate/rdoc_source.rb +1 -1
- data/lib/rbs/cli/validate.rb +2 -2
- data/lib/rbs/cli.rb +1 -1
- data/lib/rbs/collection/config/lockfile_generator.rb +1 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +5 -5
- data/lib/rbs/environment.rb +64 -59
- data/lib/rbs/environment_loader.rb +1 -1
- data/lib/rbs/errors.rb +1 -1
- data/lib/rbs/parser_aux.rb +5 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +124 -38
- data/lib/rbs/test/type_check.rb +13 -0
- data/lib/rbs/types.rb +3 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +1 -1
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +3 -3
- data/sig/annotate/formatter.rbs +2 -2
- data/sig/annotate/rdoc_annotater.rbs +1 -1
- data/sig/environment.rbs +57 -6
- data/sig/manifest.yaml +0 -1
- data/sig/parser.rbs +20 -0
- data/sig/resolver/type_name_resolver.rbs +38 -7
- data/sig/types.rbs +4 -1
- data/src/ast.c +1256 -0
- data/src/lexer.c +2956 -0
- data/src/lexer.re +147 -0
- data/src/lexstate.c +205 -0
- data/src/location.c +71 -0
- data/src/parser.c +3495 -0
- data/src/string.c +90 -0
- data/src/util/rbs_allocator.c +152 -0
- data/src/util/rbs_assert.c +21 -0
- data/src/util/rbs_buffer.c +54 -0
- data/src/util/rbs_constant_pool.c +16 -86
- data/src/util/rbs_encoding.c +21308 -0
- data/src/util/rbs_unescape.c +131 -0
- data/stdlib/cgi/0/core.rbs +2 -396
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/cgi-escape/0/escape.rbs +153 -0
- data/stdlib/coverage/0/coverage.rbs +3 -1
- data/stdlib/delegate/0/delegator.rbs +10 -7
- data/stdlib/erb/0/erb.rbs +737 -347
- data/stdlib/fileutils/0/fileutils.rbs +18 -13
- data/stdlib/forwardable/0/forwardable.rbs +3 -0
- data/stdlib/json/0/json.rbs +67 -48
- data/stdlib/net-http/0/net-http.rbs +3 -0
- data/stdlib/objspace/0/objspace.rbs +8 -3
- data/stdlib/open-uri/0/open-uri.rbs +40 -0
- data/stdlib/openssl/0/openssl.rbs +182 -149
- data/stdlib/optparse/0/optparse.rbs +3 -3
- data/stdlib/rdoc/0/code_object.rbs +2 -2
- data/stdlib/rdoc/0/comment.rbs +2 -0
- data/stdlib/rdoc/0/options.rbs +76 -0
- data/stdlib/rdoc/0/rdoc.rbs +7 -5
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +25 -68
- data/stdlib/ripper/0/ripper.rbs +5 -2
- data/stdlib/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/socket.rbs +13 -1
- data/stdlib/socket/0/tcp_socket.rbs +10 -2
- data/stdlib/stringio/0/stringio.rbs +412 -80
- data/stdlib/strscan/0/string_scanner.rbs +31 -31
- data/stdlib/tempfile/0/tempfile.rbs +1 -1
- data/stdlib/tsort/0/cyclic.rbs +3 -0
- data/stdlib/uri/0/common.rbs +11 -2
- data/stdlib/uri/0/file.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +16 -15
- data/stdlib/uri/0/rfc2396_parser.rbs +6 -7
- data/stdlib/zlib/0/zstream.rbs +1 -0
- metadata +41 -18
- data/ext/rbs_extension/lexer.c +0 -2728
- data/ext/rbs_extension/lexer.h +0 -179
- data/ext/rbs_extension/lexer.re +0 -147
- data/ext/rbs_extension/lexstate.c +0 -175
- data/ext/rbs_extension/location.c +0 -325
- data/ext/rbs_extension/location.h +0 -85
- data/ext/rbs_extension/parser.c +0 -2982
- data/ext/rbs_extension/parser.h +0 -18
- data/ext/rbs_extension/parserstate.c +0 -411
- data/ext/rbs_extension/parserstate.h +0 -163
- data/ext/rbs_extension/unescape.c +0 -32
- data/include/rbs/ruby_objs.h +0 -72
- data/src/constants.c +0 -153
- data/src/ruby_objs.c +0 -799
data/core/array.rbs
CHANGED
|
@@ -151,8 +151,8 @@
|
|
|
151
151
|
#
|
|
152
152
|
# ## Example Usage
|
|
153
153
|
#
|
|
154
|
-
# In addition to the methods it mixes in through the Enumerable module,
|
|
155
|
-
#
|
|
154
|
+
# In addition to the methods it mixes in through the Enumerable module, class
|
|
155
|
+
# Array has proprietary methods for accessing, searching and otherwise
|
|
156
156
|
# manipulating arrays.
|
|
157
157
|
#
|
|
158
158
|
# Some of the more common ones are illustrated below.
|
|
@@ -200,9 +200,9 @@
|
|
|
200
200
|
#
|
|
201
201
|
# arr.drop(3) #=> [4, 5, 6]
|
|
202
202
|
#
|
|
203
|
-
# ## Obtaining Information about an
|
|
203
|
+
# ## Obtaining Information about an Array
|
|
204
204
|
#
|
|
205
|
-
#
|
|
205
|
+
# An array keeps track of its own length at all times. To query an array about
|
|
206
206
|
# the number of elements it contains, use #length, #count or #size.
|
|
207
207
|
#
|
|
208
208
|
# browsers = ['Chrome', 'Firefox', 'Safari', 'Opera', 'IE']
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
#
|
|
218
218
|
# browsers.include?('Konqueror') #=> false
|
|
219
219
|
#
|
|
220
|
-
# ## Adding Items to
|
|
220
|
+
# ## Adding Items to an Array
|
|
221
221
|
#
|
|
222
222
|
# Items can be added to the end of an array by using either #push or #<<
|
|
223
223
|
#
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
# arr.insert(3, 'orange', 'pear', 'grapefruit')
|
|
239
239
|
# #=> [0, 1, 2, "orange", "pear", "grapefruit", "apple", 3, 4, 5, 6]
|
|
240
240
|
#
|
|
241
|
-
# ## Removing Items from an
|
|
241
|
+
# ## Removing Items from an Array
|
|
242
242
|
#
|
|
243
243
|
# The method #pop removes the last element in an array and returns it:
|
|
244
244
|
#
|
|
@@ -277,12 +277,12 @@
|
|
|
277
277
|
# arr = [2, 5, 6, 556, 6, 6, 8, 9, 0, 123, 556]
|
|
278
278
|
# arr.uniq #=> [2, 5, 6, 556, 8, 9, 0, 123]
|
|
279
279
|
#
|
|
280
|
-
# ## Iterating over
|
|
280
|
+
# ## Iterating over an Array
|
|
281
281
|
#
|
|
282
|
-
# Like all classes that include the Enumerable module,
|
|
282
|
+
# Like all classes that include the Enumerable module, class Array has an each
|
|
283
283
|
# method, which defines what elements should be iterated over and how. In case
|
|
284
|
-
# of Array
|
|
285
|
-
#
|
|
284
|
+
# of Array#each, all elements in `self` are yielded to the supplied block in
|
|
285
|
+
# sequence.
|
|
286
286
|
#
|
|
287
287
|
# Note that this operation leaves the array unchanged.
|
|
288
288
|
#
|
|
@@ -307,7 +307,7 @@
|
|
|
307
307
|
# arr.map! {|a| a**2} #=> [1, 4, 9, 16, 25]
|
|
308
308
|
# arr #=> [1, 4, 9, 16, 25]
|
|
309
309
|
#
|
|
310
|
-
# ## Selecting Items from an
|
|
310
|
+
# ## Selecting Items from an Array
|
|
311
311
|
#
|
|
312
312
|
# Elements can be selected from an array according to criteria defined in a
|
|
313
313
|
# block. The selection can happen in a destructive or a non-destructive manner.
|
|
@@ -340,13 +340,13 @@
|
|
|
340
340
|
#
|
|
341
341
|
# ## What's Here
|
|
342
342
|
#
|
|
343
|
-
# First, what's elsewhere. Class
|
|
343
|
+
# First, what's elsewhere. Class Array:
|
|
344
344
|
#
|
|
345
345
|
# * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
|
|
346
346
|
# * Includes [module Enumerable](rdoc-ref:Enumerable@What-27s+Here), which
|
|
347
347
|
# provides dozens of additional methods.
|
|
348
348
|
#
|
|
349
|
-
# Here, class
|
|
349
|
+
# Here, class Array provides methods that are useful for:
|
|
350
350
|
#
|
|
351
351
|
# * [Creating an Array](rdoc-ref:Array@Methods+for+Creating+an+Array)
|
|
352
352
|
# * [Querying](rdoc-ref:Array@Methods+for+Querying)
|
|
@@ -359,7 +359,7 @@
|
|
|
359
359
|
# * [Converting](rdoc-ref:Array@Methods+for+Converting)
|
|
360
360
|
# * [And more....](rdoc-ref:Array@Other+Methods)
|
|
361
361
|
#
|
|
362
|
-
# ### Methods for Creating an
|
|
362
|
+
# ### Methods for Creating an Array
|
|
363
363
|
#
|
|
364
364
|
# * ::[]: Returns a new array populated with given objects.
|
|
365
365
|
# * ::new: Returns a new array.
|
|
@@ -524,7 +524,7 @@
|
|
|
524
524
|
# return-value.
|
|
525
525
|
# * #flatten: Returns an array that is a recursive flattening of `self`.
|
|
526
526
|
# * #inspect (aliased as #to_s): Returns a new String containing the elements.
|
|
527
|
-
# * #join: Returns a
|
|
527
|
+
# * #join: Returns a new String containing the elements joined by the field
|
|
528
528
|
# separator.
|
|
529
529
|
# * #to_a: Returns `self` or a new array containing all elements.
|
|
530
530
|
# * #to_ary: Returns `self`.
|
|
@@ -840,9 +840,8 @@ class Array[unchecked out Elem] < Object
|
|
|
840
840
|
#
|
|
841
841
|
# If `index` is out of range, returns `nil`.
|
|
842
842
|
#
|
|
843
|
-
# When two Integer arguments `start` and `length` are given, returns a new
|
|
844
|
-
#
|
|
845
|
-
# `start`:
|
|
843
|
+
# When two Integer arguments `start` and `length` are given, returns a new array
|
|
844
|
+
# of size `length` containing successive elements beginning at offset `start`:
|
|
846
845
|
#
|
|
847
846
|
# a = [:foo, 'bar', 2]
|
|
848
847
|
# a[0, 2] # => [:foo, "bar"]
|
|
@@ -856,7 +855,7 @@ class Array[unchecked out Elem] < Object
|
|
|
856
855
|
# a[1, 3] # => ["bar", 2]
|
|
857
856
|
# a[2, 2] # => [2]
|
|
858
857
|
#
|
|
859
|
-
# If `start == self.size` and `length >= 0`, returns a new empty
|
|
858
|
+
# If `start == self.size` and `length >= 0`, returns a new empty array.
|
|
860
859
|
#
|
|
861
860
|
# If `length` is negative, returns `nil`.
|
|
862
861
|
#
|
|
@@ -867,7 +866,7 @@ class Array[unchecked out Elem] < Object
|
|
|
867
866
|
# a[0..1] # => [:foo, "bar"]
|
|
868
867
|
# a[1..2] # => ["bar", 2]
|
|
869
868
|
#
|
|
870
|
-
# Special case: If `range.start == a.size`, returns a new empty
|
|
869
|
+
# Special case: If `range.start == a.size`, returns a new empty array.
|
|
871
870
|
#
|
|
872
871
|
# If `range.end` is negative, calculates the end index from the end:
|
|
873
872
|
#
|
|
@@ -891,7 +890,7 @@ class Array[unchecked out Elem] < Object
|
|
|
891
890
|
# a[4..-1] # => nil
|
|
892
891
|
#
|
|
893
892
|
# When a single Enumerator::ArithmeticSequence argument `aseq` is given, returns
|
|
894
|
-
# an
|
|
893
|
+
# an array of elements corresponding to the indexes produced by the sequence.
|
|
895
894
|
#
|
|
896
895
|
# a = ['--', 'data1', '--', 'data2', '--', 'data3']
|
|
897
896
|
# a[(1..).step(2)] # => ["data1", "data2", "data3"]
|
|
@@ -976,8 +975,8 @@ class Array[unchecked out Elem] < Object
|
|
|
976
975
|
# a # => [:foo, "bar", "two"]
|
|
977
976
|
#
|
|
978
977
|
# When Integer arguments `start` and `length` are given and `object` is not an
|
|
979
|
-
#
|
|
980
|
-
#
|
|
978
|
+
# array, removes `length - 1` elements beginning at offset `start`, and assigns
|
|
979
|
+
# `object` at offset `start`:
|
|
981
980
|
#
|
|
982
981
|
# a = [:foo, 'bar', 2]
|
|
983
982
|
# a[0, 2] = 'foo' # => "foo"
|
|
@@ -1010,7 +1009,7 @@ class Array[unchecked out Elem] < Object
|
|
|
1010
1009
|
# a[1, 5] = 'foo' # => "foo"
|
|
1011
1010
|
# a # => [:foo, "foo"]
|
|
1012
1011
|
#
|
|
1013
|
-
# When Range argument `range` is given and `object` is not an
|
|
1012
|
+
# When Range argument `range` is given and `object` is not an array, removes
|
|
1014
1013
|
# `length - 1` elements beginning at offset `start`, and assigns `object` at
|
|
1015
1014
|
# offset `start`:
|
|
1016
1015
|
#
|
|
@@ -1274,9 +1273,9 @@ class Array[unchecked out Elem] < Object
|
|
|
1274
1273
|
|
|
1275
1274
|
# <!--
|
|
1276
1275
|
# rdoc-file=array.c
|
|
1277
|
-
# - collect! {|element| ... } ->
|
|
1276
|
+
# - collect! {|element| ... } -> self
|
|
1278
1277
|
# - collect! -> new_enumerator
|
|
1279
|
-
# - map! {|element| ... } ->
|
|
1278
|
+
# - map! {|element| ... } -> self
|
|
1280
1279
|
# - map! -> new_enumerator
|
|
1281
1280
|
# -->
|
|
1282
1281
|
# With a block given, calls the block with each element of `self` and replaces
|
|
@@ -1564,7 +1563,7 @@ class Array[unchecked out Elem] < Object
|
|
|
1564
1563
|
|
|
1565
1564
|
# <!--
|
|
1566
1565
|
# rdoc-file=array.c
|
|
1567
|
-
# -
|
|
1566
|
+
# - dig(index, *identifiers) -> object
|
|
1568
1567
|
# -->
|
|
1569
1568
|
# Finds and returns the object in nested object specified by `index` and
|
|
1570
1569
|
# `identifiers`; the nested objects may be instances of various classes. See
|
|
@@ -1693,7 +1692,7 @@ class Array[unchecked out Elem] < Object
|
|
|
1693
1692
|
|
|
1694
1693
|
# <!--
|
|
1695
1694
|
# rdoc-file=array.c
|
|
1696
|
-
# -
|
|
1695
|
+
# - empty? -> true or false
|
|
1697
1696
|
# -->
|
|
1698
1697
|
# Returns `true` if the count of elements in `self` is zero, `false` otherwise.
|
|
1699
1698
|
#
|
|
@@ -1804,10 +1803,10 @@ class Array[unchecked out Elem] < Object
|
|
|
1804
1803
|
|
|
1805
1804
|
# <!--
|
|
1806
1805
|
# rdoc-file=array.c
|
|
1807
|
-
# - fill(object, start = nil, count = nil) ->
|
|
1808
|
-
# - fill(object, range) ->
|
|
1809
|
-
# - fill(start = nil, count = nil) {|element| ... } ->
|
|
1810
|
-
# - fill(range) {|element| ... } ->
|
|
1806
|
+
# - fill(object, start = nil, count = nil) -> self
|
|
1807
|
+
# - fill(object, range) -> self
|
|
1808
|
+
# - fill(start = nil, count = nil) {|element| ... } -> self
|
|
1809
|
+
# - fill(range) {|element| ... } -> self
|
|
1811
1810
|
# -->
|
|
1812
1811
|
# Replaces selected elements in `self`; may add elements to `self`; always
|
|
1813
1812
|
# returns `self` (never a new array).
|
|
@@ -2300,7 +2299,7 @@ class Array[unchecked out Elem] < Object
|
|
|
2300
2299
|
|
|
2301
2300
|
# <!--
|
|
2302
2301
|
# rdoc-file=array.c
|
|
2303
|
-
# -
|
|
2302
|
+
# - join(separator = $,) -> new_string
|
|
2304
2303
|
# -->
|
|
2305
2304
|
# Returns the new string formed by joining the converted elements of `self`; for
|
|
2306
2305
|
# each element `element`:
|
|
@@ -3115,7 +3114,7 @@ class Array[unchecked out Elem] < Object
|
|
|
3115
3114
|
#
|
|
3116
3115
|
# The order of the result array is unrelated to the order of `self`.
|
|
3117
3116
|
#
|
|
3118
|
-
# Returns a new empty
|
|
3117
|
+
# Returns a new empty array if `self` is empty:
|
|
3119
3118
|
#
|
|
3120
3119
|
# [].sample(4) # => []
|
|
3121
3120
|
#
|
|
@@ -3320,9 +3319,8 @@ class Array[unchecked out Elem] < Object
|
|
|
3320
3319
|
#
|
|
3321
3320
|
# If `index` is out of range, returns `nil`.
|
|
3322
3321
|
#
|
|
3323
|
-
# When two Integer arguments `start` and `length` are given, returns a new
|
|
3324
|
-
#
|
|
3325
|
-
# `start`:
|
|
3322
|
+
# When two Integer arguments `start` and `length` are given, returns a new array
|
|
3323
|
+
# of size `length` containing successive elements beginning at offset `start`:
|
|
3326
3324
|
#
|
|
3327
3325
|
# a = [:foo, 'bar', 2]
|
|
3328
3326
|
# a[0, 2] # => [:foo, "bar"]
|
|
@@ -3336,7 +3334,7 @@ class Array[unchecked out Elem] < Object
|
|
|
3336
3334
|
# a[1, 3] # => ["bar", 2]
|
|
3337
3335
|
# a[2, 2] # => [2]
|
|
3338
3336
|
#
|
|
3339
|
-
# If `start == self.size` and `length >= 0`, returns a new empty
|
|
3337
|
+
# If `start == self.size` and `length >= 0`, returns a new empty array.
|
|
3340
3338
|
#
|
|
3341
3339
|
# If `length` is negative, returns `nil`.
|
|
3342
3340
|
#
|
|
@@ -3347,7 +3345,7 @@ class Array[unchecked out Elem] < Object
|
|
|
3347
3345
|
# a[0..1] # => [:foo, "bar"]
|
|
3348
3346
|
# a[1..2] # => ["bar", 2]
|
|
3349
3347
|
#
|
|
3350
|
-
# Special case: If `range.start == a.size`, returns a new empty
|
|
3348
|
+
# Special case: If `range.start == a.size`, returns a new empty array.
|
|
3351
3349
|
#
|
|
3352
3350
|
# If `range.end` is negative, calculates the end index from the end:
|
|
3353
3351
|
#
|
|
@@ -3371,7 +3369,7 @@ class Array[unchecked out Elem] < Object
|
|
|
3371
3369
|
# a[4..-1] # => nil
|
|
3372
3370
|
#
|
|
3373
3371
|
# When a single Enumerator::ArithmeticSequence argument `aseq` is given, returns
|
|
3374
|
-
# an
|
|
3372
|
+
# an array of elements corresponding to the indexes produced by the sequence.
|
|
3375
3373
|
#
|
|
3376
3374
|
# a = ['--', 'data1', '--', 'data2', '--', 'data3']
|
|
3377
3375
|
# a[(1..).step(2)] # => ["data1", "data2", "data3"]
|
|
@@ -3518,6 +3516,9 @@ class Array[unchecked out Elem] < Object
|
|
|
3518
3516
|
# When the block returns zero, the order for `a` and `b` is indeterminate, and
|
|
3519
3517
|
# may be unstable.
|
|
3520
3518
|
#
|
|
3519
|
+
# See an example in Numeric#nonzero? for the idiom to sort more complex
|
|
3520
|
+
# structure.
|
|
3521
|
+
#
|
|
3521
3522
|
# Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
|
|
3522
3523
|
#
|
|
3523
3524
|
def sort: () -> ::Array[Elem]
|
|
@@ -3647,7 +3648,7 @@ class Array[unchecked out Elem] < Object
|
|
|
3647
3648
|
# rdoc-file=array.c
|
|
3648
3649
|
# - to_a -> self or new_array
|
|
3649
3650
|
# -->
|
|
3650
|
-
# When `self` is an instance of
|
|
3651
|
+
# When `self` is an instance of Array, returns `self`.
|
|
3651
3652
|
#
|
|
3652
3653
|
# Otherwise, returns a new array containing the elements of `self`:
|
|
3653
3654
|
#
|
|
@@ -3663,7 +3664,7 @@ class Array[unchecked out Elem] < Object
|
|
|
3663
3664
|
|
|
3664
3665
|
# <!--
|
|
3665
3666
|
# rdoc-file=array.c
|
|
3666
|
-
# -
|
|
3667
|
+
# - to_ary -> self
|
|
3667
3668
|
# -->
|
|
3668
3669
|
# Returns `self`.
|
|
3669
3670
|
#
|
|
@@ -4008,7 +4009,7 @@ class Array[unchecked out Elem] < Object
|
|
|
4008
4009
|
# [:c3, :b3, :a3]]
|
|
4009
4010
|
#
|
|
4010
4011
|
# For an **object** in **other_arrays** that is not actually an array, forms the
|
|
4011
|
-
#
|
|
4012
|
+
# "other array" as `object.to_ary`, if defined, or as `object.each.to_a`
|
|
4012
4013
|
# otherwise.
|
|
4013
4014
|
#
|
|
4014
4015
|
# Related: see [Methods for Converting](rdoc-ref:Array@Methods+for+Converting).
|
data/core/dir.rbs
CHANGED
|
@@ -477,8 +477,8 @@ class Dir
|
|
|
477
477
|
|
|
478
478
|
# <!--
|
|
479
479
|
# rdoc-file=dir.rb
|
|
480
|
-
# - Dir.glob(
|
|
481
|
-
# - Dir.glob(
|
|
480
|
+
# - Dir.glob(patterns, flags: 0, base: nil, sort: true) -> array
|
|
481
|
+
# - Dir.glob(patterns, flags: 0, base: nil, sort: true) {|entry_name| ... } -> nil
|
|
482
482
|
# -->
|
|
483
483
|
# Forms an array *entry_names* of the entry names selected by the arguments.
|
|
484
484
|
#
|
data/core/encoding.rbs
CHANGED
|
@@ -923,8 +923,9 @@ class Encoding::Converter < Object
|
|
|
923
923
|
# p ec.primitive_convert(src, dst, nil, 1) #=> :destination_buffer_full
|
|
924
924
|
# p ec.last_error #=> nil
|
|
925
925
|
#
|
|
926
|
-
def last_error: () -> Encoding::InvalidByteSequenceError
|
|
927
|
-
|
|
926
|
+
def last_error: () -> ( Encoding::InvalidByteSequenceError
|
|
927
|
+
| Encoding::UndefinedConversionError
|
|
928
|
+
| nil )
|
|
928
929
|
|
|
929
930
|
# <!--
|
|
930
931
|
# rdoc-file=transcode.c
|
data/core/enumerable.rbs
CHANGED
|
@@ -114,8 +114,8 @@
|
|
|
114
114
|
# by the block.
|
|
115
115
|
# * #grep: Returns elements selected by a given object or objects returned by
|
|
116
116
|
# a given block.
|
|
117
|
-
# * #grep_v: Returns elements selected by a given object or objects
|
|
118
|
-
# by a given block.
|
|
117
|
+
# * #grep_v: Returns elements not selected by a given object or objects
|
|
118
|
+
# returned by a given block.
|
|
119
119
|
# * #inject (aliased as #reduce): Returns the object formed by combining all
|
|
120
120
|
# elements.
|
|
121
121
|
# * #sum: Returns the sum of the elements, using method `+`.
|
|
@@ -191,6 +191,82 @@
|
|
|
191
191
|
# usage would not make sense, and so it is not shown. Example: #tally would
|
|
192
192
|
# find exactly one of each Hash entry.
|
|
193
193
|
#
|
|
194
|
+
# ## Extended Methods
|
|
195
|
+
#
|
|
196
|
+
# A Enumerable class may define extended methods. This section describes the
|
|
197
|
+
# standard behavior of extension methods for reference purposes.
|
|
198
|
+
#
|
|
199
|
+
# ### #size
|
|
200
|
+
#
|
|
201
|
+
# Enumerator has a #size method. It uses the size function argument passed to
|
|
202
|
+
# `Enumerator.new`.
|
|
203
|
+
#
|
|
204
|
+
# e = Enumerator.new(-> { 3 }) {|y| p y; y.yield :a; y.yield :b; y.yield :c; :z }
|
|
205
|
+
# p e.size #=> 3
|
|
206
|
+
# p e.next #=> :a
|
|
207
|
+
# p e.next #=> :b
|
|
208
|
+
# p e.next #=> :c
|
|
209
|
+
# begin
|
|
210
|
+
# e.next
|
|
211
|
+
# rescue StopIteration
|
|
212
|
+
# p $!.result #=> :z
|
|
213
|
+
# end
|
|
214
|
+
#
|
|
215
|
+
# The result of the size function should represent the number of iterations
|
|
216
|
+
# (i.e., the number of times Enumerator::Yielder#yield is called). In the above
|
|
217
|
+
# example, the block calls #yield three times, and the size function, +-> { 3
|
|
218
|
+
# }+, returns 3 accordingly. The result of the size function can be an integer,
|
|
219
|
+
# `Float::INFINITY`, or `nil`. An integer means the exact number of times #yield
|
|
220
|
+
# will be called, as shown above. `Float::INFINITY` indicates an infinite number
|
|
221
|
+
# of #yield calls. `nil` means the number of #yield calls is difficult or
|
|
222
|
+
# impossible to determine.
|
|
223
|
+
#
|
|
224
|
+
# Many iteration methods return an Enumerator object with an appropriate size
|
|
225
|
+
# function if no block is given.
|
|
226
|
+
#
|
|
227
|
+
# Examples:
|
|
228
|
+
#
|
|
229
|
+
# ["a", "b", "c"].each.size #=> 3
|
|
230
|
+
# {a: "x", b: "y", c: "z"}.each.size #=> 3
|
|
231
|
+
# (0..20).to_a.permutation.size #=> 51090942171709440000
|
|
232
|
+
# loop.size #=> Float::INFINITY
|
|
233
|
+
# (1..100).drop_while.size #=> nil # size depends on the block's behavior
|
|
234
|
+
# STDIN.each.size #=> nil # cannot be computed without consuming input
|
|
235
|
+
# File.open("/etc/resolv.conf").each.size #=> nil # cannot be computed without reading the file
|
|
236
|
+
#
|
|
237
|
+
# The behavior of #size for Range-based enumerators depends on the #begin
|
|
238
|
+
# element:
|
|
239
|
+
#
|
|
240
|
+
# * If the #begin element is an Integer, the #size method returns an Integer
|
|
241
|
+
# or `Float::INFINITY`.
|
|
242
|
+
# * If the #begin element is an object with a #succ method (other than
|
|
243
|
+
# Integer), #size returns `nil`. (Computing the size would require
|
|
244
|
+
# repeatedly calling #succ, which may be too slow.)
|
|
245
|
+
# * If the #begin element does not have a #succ method, #size raises a
|
|
246
|
+
# TypeError.
|
|
247
|
+
#
|
|
248
|
+
# Examples:
|
|
249
|
+
#
|
|
250
|
+
# (10..42).each.size #=> 33
|
|
251
|
+
# (10..42.9).each.size #=> 33 (the #end element may be a non-integer numeric)
|
|
252
|
+
# (10..).each.size #=> Float::INFINITY
|
|
253
|
+
# ("a".."z").each.size #=> nil
|
|
254
|
+
# ("a"..).each.size #=> nil
|
|
255
|
+
# (1.0..9.0).each.size # raises TypeError (Float does not have #succ)
|
|
256
|
+
# (..10).each.size # raises TypeError (beginless range has nil as its #begin)
|
|
257
|
+
#
|
|
258
|
+
# The Enumerable module itself does not define a #size method. A class that
|
|
259
|
+
# includes Enumerable may define its own #size method. It is recommended that
|
|
260
|
+
# such a #size method be consistent with Enumerator#size.
|
|
261
|
+
#
|
|
262
|
+
# Array and Hash implement #size and return values consistent with
|
|
263
|
+
# Enumerator#size. IO and Dir do not define #size, which is also consistent
|
|
264
|
+
# because the corresponding enumerator's size function returns `nil`.
|
|
265
|
+
#
|
|
266
|
+
# However, it is not strictly required for a class's #size method to match
|
|
267
|
+
# Enumerator#size. For example, File#size returns the number of bytes in the
|
|
268
|
+
# file, not the number of lines.
|
|
269
|
+
#
|
|
194
270
|
module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
195
271
|
# <!--
|
|
196
272
|
# rdoc-file=enum.c
|
|
@@ -438,6 +514,17 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
438
514
|
#
|
|
439
515
|
# With no block given, returns an Enumerator.
|
|
440
516
|
#
|
|
517
|
+
# e = (1..4).drop_while
|
|
518
|
+
# p e #=> #<Enumerator: 1..4:drop_while>
|
|
519
|
+
# i = e.next; p i; e.feed(i < 3) #=> 1
|
|
520
|
+
# i = e.next; p i; e.feed(i < 3) #=> 2
|
|
521
|
+
# i = e.next; p i; e.feed(i < 3) #=> 3
|
|
522
|
+
# begin
|
|
523
|
+
# e.next
|
|
524
|
+
# rescue StopIteration
|
|
525
|
+
# p $!.result #=> [3, 4]
|
|
526
|
+
# end
|
|
527
|
+
#
|
|
441
528
|
def drop_while: () { (Elem) -> boolish } -> ::Array[Elem]
|
|
442
529
|
| () -> ::Enumerator[Elem, ::Array[Elem]]
|
|
443
530
|
|
data/core/errno.rbs
CHANGED
|
@@ -38,6 +38,14 @@
|
|
|
38
38
|
# Errno::ENOENT::Errno # => 2
|
|
39
39
|
# Errno::ENOTCAPABLE::Errno # => 0
|
|
40
40
|
#
|
|
41
|
+
# Each class in Errno can be created with optional messages:
|
|
42
|
+
#
|
|
43
|
+
# Errno::EPIPE.new # => #<Errno::EPIPE: Broken pipe>
|
|
44
|
+
# Errno::EPIPE.new("foo") # => #<Errno::EPIPE: Broken pipe - foo>
|
|
45
|
+
# Errno::EPIPE.new("foo", "here") # => #<Errno::EPIPE: Broken pipe @ here - foo>
|
|
46
|
+
#
|
|
47
|
+
# See SystemCallError.new.
|
|
48
|
+
#
|
|
41
49
|
module Errno
|
|
42
50
|
class NOERROR < SystemCallError
|
|
43
51
|
Errno: 0
|
data/core/errors.rbs
CHANGED
|
@@ -302,9 +302,15 @@ class NameError[T] < StandardError
|
|
|
302
302
|
def receiver: () -> T?
|
|
303
303
|
end
|
|
304
304
|
|
|
305
|
+
# <!-- rdoc-file=error.c -->
|
|
306
|
+
# Raised when matching pattern not found.
|
|
307
|
+
#
|
|
305
308
|
class NoMatchingPatternError < StandardError
|
|
306
309
|
end
|
|
307
310
|
|
|
311
|
+
# <!-- rdoc-file=error.c -->
|
|
312
|
+
# Raised when matching key not found.
|
|
313
|
+
#
|
|
308
314
|
class NoMatchingPatternKeyError[M, K] < NoMatchingPatternError
|
|
309
315
|
# <!--
|
|
310
316
|
# rdoc-file=error.c
|
|
@@ -588,13 +594,34 @@ end
|
|
|
588
594
|
class SystemCallError < StandardError
|
|
589
595
|
# <!--
|
|
590
596
|
# rdoc-file=error.c
|
|
591
|
-
# - SystemCallError.new(msg, errno) -> system_call_error_subclass
|
|
597
|
+
# - SystemCallError.new(msg, errno = nil, func = nil) -> system_call_error_subclass
|
|
592
598
|
# -->
|
|
593
599
|
# If *errno* corresponds to a known system error code, constructs the
|
|
594
600
|
# appropriate Errno class for that error, otherwise constructs a generic
|
|
595
601
|
# SystemCallError object. The error number is subsequently available via the
|
|
596
602
|
# #errno method.
|
|
597
603
|
#
|
|
604
|
+
# If only numeric object is given, it is treated as an Integer *errno*, and
|
|
605
|
+
# *msg* is omitted, otherwise the first argument *msg* is used as the additional
|
|
606
|
+
# error message.
|
|
607
|
+
#
|
|
608
|
+
# SystemCallError.new(Errno::EPIPE::Errno)
|
|
609
|
+
# #=> #<Errno::EPIPE: Broken pipe>
|
|
610
|
+
#
|
|
611
|
+
# SystemCallError.new("foo")
|
|
612
|
+
# #=> #<SystemCallError: unknown error - foo>
|
|
613
|
+
#
|
|
614
|
+
# SystemCallError.new("foo", Errno::EPIPE::Errno)
|
|
615
|
+
# #=> #<Errno::EPIPE: Broken pipe - foo>
|
|
616
|
+
#
|
|
617
|
+
# If *func* is not `nil`, it is appended to the message with "` @ `".
|
|
618
|
+
#
|
|
619
|
+
# SystemCallError.new("foo", Errno::EPIPE::Errno, "here")
|
|
620
|
+
# #=> #<Errno::EPIPE: Broken pipe @ here - foo>
|
|
621
|
+
#
|
|
622
|
+
# A subclass of SystemCallError can also be instantiated via the `new` method of
|
|
623
|
+
# the subclass. See Errno.
|
|
624
|
+
#
|
|
598
625
|
def initialize: (string msg, Integer errno) -> void
|
|
599
626
|
|
|
600
627
|
# <!--
|
data/core/exception.rbs
CHANGED
|
@@ -118,7 +118,7 @@ class Exception
|
|
|
118
118
|
# # String
|
|
119
119
|
# end
|
|
120
120
|
#
|
|
121
|
-
# The value returned by this method
|
|
121
|
+
# The value returned by this method might be adjusted when raising (see
|
|
122
122
|
# Kernel#raise), or during intermediate handling by #set_backtrace.
|
|
123
123
|
#
|
|
124
124
|
# See also #backtrace_locations that provide the same value, as structured
|
|
@@ -447,7 +447,7 @@ class Exception
|
|
|
447
447
|
# * If the value of keyword `order` is `:top` (the default), lists the
|
|
448
448
|
# error message and the innermost backtrace entry first.
|
|
449
449
|
# * If the value of keyword `order` is `:bottom`, lists the error message
|
|
450
|
-
# the
|
|
450
|
+
# the innermost entry last.
|
|
451
451
|
#
|
|
452
452
|
# Example:
|
|
453
453
|
#
|
data/core/fiber.rbs
CHANGED
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
# ## Non-blocking Fibers
|
|
59
59
|
#
|
|
60
60
|
# The concept of *non-blocking fiber* was introduced in Ruby 3.0. A non-blocking
|
|
61
|
-
# fiber, when reaching
|
|
61
|
+
# fiber, when reaching an operation that would normally block the fiber (like
|
|
62
62
|
# `sleep`, or wait for another process or I/O) will yield control to other
|
|
63
63
|
# fibers and allow the *scheduler* to handle blocking and waking up (resuming)
|
|
64
64
|
# this fiber when it can proceed.
|
|
@@ -414,8 +414,8 @@ class Fiber < Object
|
|
|
414
414
|
#
|
|
415
415
|
# See Kernel#raise for more information.
|
|
416
416
|
#
|
|
417
|
-
def raise: (?string msg) -> untyped
|
|
418
|
-
| (_Exception, ?string msg, ?Array[string] | Array[Thread::Backtrace::Location] | nil backtrace) -> untyped
|
|
417
|
+
def raise: (?string msg, ?cause: Exception?) -> untyped
|
|
418
|
+
| (_Exception, ?string msg, ?Array[string] | Array[Thread::Backtrace::Location] | nil backtrace, ?cause: Exception?) -> untyped
|
|
419
419
|
|
|
420
420
|
# <!--
|
|
421
421
|
# rdoc-file=cont.c
|
data/core/file.rbs
CHANGED
|
@@ -1427,8 +1427,25 @@ class File < IO
|
|
|
1427
1427
|
# -->
|
|
1428
1428
|
# Returns the string representation of the path
|
|
1429
1429
|
#
|
|
1430
|
-
#
|
|
1431
|
-
#
|
|
1430
|
+
# File.path(File::NULL) #=> "/dev/null"
|
|
1431
|
+
# File.path(Pathname.new("/tmp")) #=> "/tmp"
|
|
1432
|
+
#
|
|
1433
|
+
# If `path` is not a String:
|
|
1434
|
+
#
|
|
1435
|
+
# 1. If it has the `to_path` method, that method will be called to coerce to a
|
|
1436
|
+
# String.
|
|
1437
|
+
#
|
|
1438
|
+
# 2. Otherwise, or if the coerced result is not a String too, the standard
|
|
1439
|
+
# coersion using `to_str` method will take place on that object. (See also
|
|
1440
|
+
# String.try_convert)
|
|
1441
|
+
#
|
|
1442
|
+
# The coerced string must satisfy the following conditions:
|
|
1443
|
+
#
|
|
1444
|
+
# 1. It must be in an ASCII-compatible encoding; otherwise, an
|
|
1445
|
+
# Encoding::CompatibilityError is raised.
|
|
1446
|
+
#
|
|
1447
|
+
# 2. It must not contain the NUL character (`\0`); otherwise, an ArgumentError
|
|
1448
|
+
# is raised.
|
|
1432
1449
|
#
|
|
1433
1450
|
def self.path: (string | _ToPath path) -> String
|
|
1434
1451
|
|
|
@@ -1822,12 +1839,12 @@ class File < IO
|
|
|
1822
1839
|
# Returns `false` if `File::LOCK_NB` is specified and the operation would have
|
|
1823
1840
|
# blocked;
|
|
1824
1841
|
# otherwise returns `0`.
|
|
1825
|
-
# Constant | Lock |
|
|
1826
|
-
#
|
|
1827
|
-
#
|
|
1828
|
-
#
|
|
1829
|
-
#
|
|
1830
|
-
#
|
|
1842
|
+
# Constant | Lock | Effect
|
|
1843
|
+
# ---------------|------------|-------------------------------------------------------------------------------------------------------
|
|
1844
|
+
# `File::LOCK_EX`| Exclusive | Only one process may hold an exclusive lock for `self` at a time.
|
|
1845
|
+
# `File::LOCK_NB`|Non-blocking|No blocking; may be combined with `File::LOCK_SH` or `File::LOCK_EX` using the bitwise OR operator `|`.
|
|
1846
|
+
# `File::LOCK_SH`| Shared | Multiple processes may each hold a shared lock for `self` at the same time.
|
|
1847
|
+
# `File::LOCK_UN`| Unlock | Remove an existing lock held by this process.
|
|
1831
1848
|
# Example:
|
|
1832
1849
|
# # Update a counter using an exclusive lock.
|
|
1833
1850
|
# # Don't use File::WRONLY because it truncates the file.
|
|
@@ -2429,10 +2446,8 @@ class File::Stat < Object
|
|
|
2429
2446
|
|
|
2430
2447
|
# <!--
|
|
2431
2448
|
# rdoc-file=file.c
|
|
2432
|
-
# - new(
|
|
2449
|
+
# - File::Stat.new(file_name) -> stat
|
|
2433
2450
|
# -->
|
|
2434
|
-
# File::Stat.new(file_name) -> stat
|
|
2435
|
-
#
|
|
2436
2451
|
# Create a File::Stat object for the given file name (raising an exception if
|
|
2437
2452
|
# the file doesn't exist).
|
|
2438
2453
|
#
|
data/core/float.rbs
CHANGED
|
@@ -1094,7 +1094,7 @@ Float::MAX_EXP: Integer
|
|
|
1094
1094
|
# Usually defaults to 2.2250738585072014e-308.
|
|
1095
1095
|
#
|
|
1096
1096
|
# If the platform supports denormalized numbers, there are numbers between zero
|
|
1097
|
-
# and Float::MIN. 0.0.next_float returns the smallest positive floating point
|
|
1097
|
+
# and Float::MIN. `0.0.next_float` returns the smallest positive floating point
|
|
1098
1098
|
# number including denormalized numbers.
|
|
1099
1099
|
#
|
|
1100
1100
|
Float::MIN: Float
|