rbs 4.1.0.pre.1 → 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/.github/workflows/c-check.yml +3 -0
- data/.github/workflows/dependabot.yml +1 -1
- data/.github/workflows/jruby.yml +67 -0
- data/.github/workflows/milestone.yml +4 -1
- data/.github/workflows/ruby.yml +12 -0
- data/.github/workflows/rust.yml +3 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +3 -0
- data/.github/workflows/wasm.yml +53 -0
- data/.github/workflows/windows.yml +6 -0
- data/.gitignore +7 -0
- data/README.md +3 -3
- data/Rakefile +116 -1
- data/Steepfile +7 -0
- data/core/array.rbs +144 -144
- data/core/builtin.rbs +6 -6
- data/core/enumerable.rbs +109 -109
- data/core/enumerator/product.rbs +5 -5
- data/core/enumerator.rbs +28 -28
- data/core/file.rbs +24 -1018
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/hash.rbs +117 -101
- data/core/integer.rbs +21 -58
- data/core/io.rbs +25 -7
- data/core/module.rbs +88 -74
- data/core/numeric.rbs +3 -0
- data/core/object_space/weak_key_map.rbs +7 -7
- data/core/range.rbs +23 -23
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +3 -3
- data/core/set.rbs +3 -3
- data/core/struct.rbs +16 -16
- data/core/thread.rbs +6 -6
- data/docs/CONTRIBUTING.md +2 -1
- data/docs/inline.md +36 -6
- data/docs/rbs_by_example.md +20 -20
- data/docs/syntax.md +2 -2
- data/docs/wasm_serialization.md +80 -0
- data/ext/rbs_extension/ast_translation.c +1294 -973
- data/ext/rbs_extension/ast_translation.h +4 -0
- data/ext/rbs_extension/main.c +139 -4
- data/include/rbs/ast.h +9 -1
- data/include/rbs/serialize.h +39 -0
- data/lib/rbs/ast/ruby/comment_block.rb +6 -4
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +1 -1
- data/lib/rbs/ast/ruby/members.rb +12 -1
- data/lib/rbs/buffer.rb +48 -11
- data/lib/rbs/collection/sources/git.rb +6 -0
- data/lib/rbs/definition_builder/method_builder.rb +12 -6
- data/lib/rbs/environment.rb +4 -3
- data/lib/rbs/inline_parser.rb +5 -3
- data/lib/rbs/namespace.rb +47 -11
- data/lib/rbs/prototype/runtime.rb +2 -0
- data/lib/rbs/resolver/type_name_resolver.rb +12 -14
- data/lib/rbs/type_name.rb +33 -13
- data/lib/rbs/unit_test/type_assertions.rb +9 -0
- 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/rbs.gemspec +19 -2
- data/sig/ast/ruby/members.rbs +6 -1
- data/sig/buffer.rbs +19 -1
- data/sig/namespace.rbs +20 -0
- data/sig/parser.rbs +10 -0
- data/sig/resolver/type_name_resolver.rbs +2 -4
- data/sig/typename.rbs +15 -0
- data/sig/unit_test/type_assertions.rbs +4 -0
- data/sig/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/src/ast.c +78 -78
- data/src/lexstate.c +5 -1
- data/src/serialize.c +958 -0
- data/src/util/rbs_allocator.c +1 -4
- data/stdlib/abbrev/0/array.rbs +1 -1
- data/stdlib/csv/0/csv.rbs +5 -5
- data/stdlib/digest/0/digest.rbs +1 -1
- data/stdlib/etc/0/etc.rbs +18 -4
- data/stdlib/fileutils/0/fileutils.rbs +21 -21
- data/stdlib/json/0/json.rbs +6 -6
- data/stdlib/openssl/0/openssl.rbs +5 -5
- data/stdlib/resolv/0/resolv.rbs +1 -1
- data/stdlib/shellwords/0/shellwords.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +32 -10
- data/stdlib/strscan/0/string_scanner.rbs +74 -55
- data/stdlib/tsort/0/cyclic.rbs +1 -1
- data/stdlib/tsort/0/interfaces.rbs +8 -8
- data/stdlib/tsort/0/tsort.rbs +9 -9
- data/stdlib/zlib/0/gzip_reader.rbs +2 -2
- data/wasm/README.md +59 -0
- data/wasm/rbs_wasm.c +411 -0
- metadata +21 -5
- data/.vscode/extensions.json +0 -5
- data/.vscode/settings.json +0 -19
data/core/builtin.rbs
CHANGED
|
@@ -170,20 +170,20 @@ interface _Inspect
|
|
|
170
170
|
def inspect: () -> String
|
|
171
171
|
end
|
|
172
172
|
|
|
173
|
-
interface _Each[out
|
|
174
|
-
def each: () { (
|
|
173
|
+
interface _Each[out T, out R = void]
|
|
174
|
+
def each: () { (T) -> void } -> R
|
|
175
175
|
end
|
|
176
176
|
|
|
177
|
-
interface _EachEntry[out
|
|
178
|
-
def each_entry: () { (
|
|
177
|
+
interface _EachEntry[out T]
|
|
178
|
+
def each_entry: () { (T) -> void } -> self
|
|
179
179
|
end
|
|
180
180
|
|
|
181
181
|
interface _Reader
|
|
182
|
-
def read: (?int? length, ?string outbuf) -> String?
|
|
182
|
+
def read: (?int? length, ?string? outbuf) -> String?
|
|
183
183
|
end
|
|
184
184
|
|
|
185
185
|
interface _ReaderPartial
|
|
186
|
-
def readpartial: (int maxlen, ?string outbuf) -> String
|
|
186
|
+
def readpartial: (int maxlen, ?string? outbuf) -> String
|
|
187
187
|
end
|
|
188
188
|
|
|
189
189
|
interface _Writer
|
data/core/enumerable.rbs
CHANGED
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
# Enumerator#size. For example, File#size returns the number of bytes in the
|
|
272
272
|
# file, not the number of lines.
|
|
273
273
|
#
|
|
274
|
-
module Enumerable[unchecked out
|
|
274
|
+
module Enumerable[unchecked out E] : _Each[E]
|
|
275
275
|
%a{private}
|
|
276
276
|
interface _Pattern
|
|
277
277
|
def ===: (untyped) -> bool
|
|
@@ -320,7 +320,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
320
320
|
#
|
|
321
321
|
def all?: () -> bool
|
|
322
322
|
| (_Pattern) -> bool
|
|
323
|
-
| () { (
|
|
323
|
+
| () { (E) -> boolish } -> bool
|
|
324
324
|
|
|
325
325
|
# <!--
|
|
326
326
|
# rdoc-file=enum.c
|
|
@@ -364,7 +364,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
364
364
|
#
|
|
365
365
|
def any?: () -> bool
|
|
366
366
|
| (_Pattern) -> bool
|
|
367
|
-
| () { (
|
|
367
|
+
| () { (E) -> boolish } -> bool
|
|
368
368
|
|
|
369
369
|
# <!--
|
|
370
370
|
# rdoc-file=enum.c
|
|
@@ -381,8 +381,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
381
381
|
#
|
|
382
382
|
# With no block given, returns an Enumerator.
|
|
383
383
|
#
|
|
384
|
-
def collect: [U] () { (
|
|
385
|
-
| () -> ::Enumerator[
|
|
384
|
+
def collect: [U] () { (E arg0) -> U } -> ::Array[U]
|
|
385
|
+
| () -> ::Enumerator[E, ::Array[untyped]]
|
|
386
386
|
|
|
387
387
|
# <!-- rdoc-file=enum.c -->
|
|
388
388
|
# Returns an array of flattened objects returned by the block.
|
|
@@ -399,8 +399,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
399
399
|
#
|
|
400
400
|
# Alias: #collect_concat.
|
|
401
401
|
#
|
|
402
|
-
def collect_concat: [U] () { (
|
|
403
|
-
| () -> ::Enumerator[
|
|
402
|
+
def collect_concat: [U] () { (E) -> (::Array[U] | U) } -> ::Array[U]
|
|
403
|
+
| () -> ::Enumerator[E, ::Array[untyped]]
|
|
404
404
|
|
|
405
405
|
# <!--
|
|
406
406
|
# rdoc-file=enum.c
|
|
@@ -411,7 +411,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
411
411
|
# a = [nil, 0, nil, 'a', false, nil, false, nil, 'a', nil, 0, nil]
|
|
412
412
|
# a.compact # => [0, "a", false, false, "a", 0]
|
|
413
413
|
#
|
|
414
|
-
def compact: () -> Array[
|
|
414
|
+
def compact: () -> Array[E]
|
|
415
415
|
|
|
416
416
|
# <!--
|
|
417
417
|
# rdoc-file=enum.c
|
|
@@ -439,8 +439,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
439
439
|
# {foo: 0, bar: 1, baz: 2}.count {|key, value| value < 2} # => 2
|
|
440
440
|
#
|
|
441
441
|
def count: () -> Integer
|
|
442
|
-
| (
|
|
443
|
-
| () { (
|
|
442
|
+
| (E) -> Integer
|
|
443
|
+
| () { (E) -> boolish } -> Integer
|
|
444
444
|
|
|
445
445
|
# <!--
|
|
446
446
|
# rdoc-file=enum.c
|
|
@@ -467,8 +467,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
467
467
|
#
|
|
468
468
|
# When no block is given, returns an Enumerator.
|
|
469
469
|
#
|
|
470
|
-
def cycle: (?Integer n) { (
|
|
471
|
-
| (?Integer n) -> ::Enumerator[
|
|
470
|
+
def cycle: (?Integer n) { (E arg0) -> untyped } -> NilClass
|
|
471
|
+
| (?Integer n) -> ::Enumerator[E, NilClass]
|
|
472
472
|
|
|
473
473
|
# <!-- rdoc-file=enum.c -->
|
|
474
474
|
# Returns the first element for which the block returns a truthy value.
|
|
@@ -488,8 +488,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
488
488
|
#
|
|
489
489
|
# With no block given, returns an Enumerator.
|
|
490
490
|
#
|
|
491
|
-
def detect: (?Proc ifnone) { (
|
|
492
|
-
| (?Proc ifnone) -> ::Enumerator[
|
|
491
|
+
def detect: (?Proc ifnone) { (E) -> boolish } -> E?
|
|
492
|
+
| (?Proc ifnone) -> ::Enumerator[E, E?]
|
|
493
493
|
|
|
494
494
|
# <!--
|
|
495
495
|
# rdoc-file=enum.c
|
|
@@ -508,7 +508,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
508
508
|
# h = {foo: 0, bar: 1, baz: 2, bat: 3}
|
|
509
509
|
# h.drop(2) # => [[:baz, 2], [:bat, 3]]
|
|
510
510
|
#
|
|
511
|
-
def drop: (Integer n) -> ::Array[
|
|
511
|
+
def drop: (Integer n) -> ::Array[E]
|
|
512
512
|
|
|
513
513
|
# <!--
|
|
514
514
|
# rdoc-file=enum.c
|
|
@@ -536,8 +536,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
536
536
|
# p $!.result #=> [3, 4]
|
|
537
537
|
# end
|
|
538
538
|
#
|
|
539
|
-
def drop_while: () { (
|
|
540
|
-
| () -> ::Enumerator[
|
|
539
|
+
def drop_while: () { (E) -> boolish } -> ::Array[E]
|
|
540
|
+
| () -> ::Enumerator[E, ::Array[E]]
|
|
541
541
|
|
|
542
542
|
# <!--
|
|
543
543
|
# rdoc-file=enum.c
|
|
@@ -558,8 +558,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
558
558
|
#
|
|
559
559
|
# With no block given, returns an Enumerator.
|
|
560
560
|
#
|
|
561
|
-
def each_cons: (Integer n) { (::Array[
|
|
562
|
-
| (Integer n) -> ::Enumerator[::Array[
|
|
561
|
+
def each_cons: (Integer n) { (::Array[E]) -> void } -> self
|
|
562
|
+
| (Integer n) -> ::Enumerator[::Array[E], self]
|
|
563
563
|
|
|
564
564
|
# <!--
|
|
565
565
|
# rdoc-file=enum.c
|
|
@@ -586,8 +586,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
586
586
|
#
|
|
587
587
|
# With no block given, returns an Enumerator.
|
|
588
588
|
#
|
|
589
|
-
def each_with_index: () { (
|
|
590
|
-
| () -> ::Enumerator[[
|
|
589
|
+
def each_with_index: () { (E, Integer index) -> untyped } -> self
|
|
590
|
+
| () -> ::Enumerator[[ E, Integer ], self]
|
|
591
591
|
|
|
592
592
|
# <!--
|
|
593
593
|
# rdoc-file=enum.c
|
|
@@ -605,18 +605,18 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
605
605
|
#
|
|
606
606
|
# With no block given, returns an Enumerator.
|
|
607
607
|
#
|
|
608
|
-
def each_with_object: [U] (U obj) { (
|
|
609
|
-
| [U] (U obj) -> ::Enumerator[[
|
|
608
|
+
def each_with_object: [U] (U obj) { (E, U obj) -> untyped } -> U
|
|
609
|
+
| [U] (U obj) -> ::Enumerator[[ E, U ], U]
|
|
610
610
|
|
|
611
611
|
# <!-- rdoc-file=enum.c -->
|
|
612
612
|
# Returns an array containing the items in `self`:
|
|
613
613
|
#
|
|
614
614
|
# (0..4).to_a # => [0, 1, 2, 3, 4]
|
|
615
615
|
#
|
|
616
|
-
def entries: () -> ::Array[
|
|
616
|
+
def entries: () -> ::Array[E]
|
|
617
617
|
|
|
618
618
|
def enum_for: (Symbol method, *untyped, **untyped) ?{ (?) -> Integer } -> Enumerator[untyped, untyped]
|
|
619
|
-
| () ?{ () -> Integer } -> Enumerator[
|
|
619
|
+
| () ?{ () -> Integer } -> Enumerator[E, self]
|
|
620
620
|
|
|
621
621
|
%a{annotate:rdoc:skip}
|
|
622
622
|
alias to_enum enum_for
|
|
@@ -639,8 +639,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
639
639
|
#
|
|
640
640
|
# Related: #reject.
|
|
641
641
|
#
|
|
642
|
-
def find_all: () { (
|
|
643
|
-
| () -> ::Enumerator[
|
|
642
|
+
def find_all: () { (E) -> boolish } -> ::Array[E]
|
|
643
|
+
| () -> ::Enumerator[E, ::Array[E]]
|
|
644
644
|
|
|
645
645
|
# <!-- rdoc-file=enum.c -->
|
|
646
646
|
# Returns an array containing elements selected by the block.
|
|
@@ -697,8 +697,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
697
697
|
# With no argument and no block given, returns an Enumerator.
|
|
698
698
|
#
|
|
699
699
|
def find_index: (untyped value) -> Integer?
|
|
700
|
-
| () { (
|
|
701
|
-
| () -> ::Enumerator[
|
|
700
|
+
| () { (E) -> boolish } -> Integer?
|
|
701
|
+
| () -> ::Enumerator[E, Integer?]
|
|
702
702
|
|
|
703
703
|
# <!--
|
|
704
704
|
# rdoc-file=enum.c
|
|
@@ -723,8 +723,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
723
723
|
# {foo: 1, bar: 1, baz: 2}.first(2) # => [[:foo, 1], [:bar, 1]]
|
|
724
724
|
# [].first(2) # => []
|
|
725
725
|
#
|
|
726
|
-
def first: () ->
|
|
727
|
-
| (_ToInt n) -> ::Array[
|
|
726
|
+
def first: () -> E?
|
|
727
|
+
| (_ToInt n) -> ::Array[E]
|
|
728
728
|
|
|
729
729
|
# <!--
|
|
730
730
|
# rdoc-file=enum.c
|
|
@@ -750,8 +750,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
750
750
|
#
|
|
751
751
|
# Related: #grep_v.
|
|
752
752
|
#
|
|
753
|
-
def grep: (untyped arg0) -> ::Array[
|
|
754
|
-
| [U] (untyped arg0) { (
|
|
753
|
+
def grep: (untyped arg0) -> ::Array[E]
|
|
754
|
+
| [U] (untyped arg0) { (E arg0) -> U } -> ::Array[U]
|
|
755
755
|
|
|
756
756
|
# <!--
|
|
757
757
|
# rdoc-file=enum.c
|
|
@@ -777,8 +777,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
777
777
|
#
|
|
778
778
|
# Related: #grep.
|
|
779
779
|
#
|
|
780
|
-
def grep_v: (untyped) -> ::Array[
|
|
781
|
-
| [U] (untyped) { (
|
|
780
|
+
def grep_v: (untyped) -> ::Array[E]
|
|
781
|
+
| [U] (untyped) { (E) -> U } -> ::Array[U]
|
|
782
782
|
|
|
783
783
|
# <!--
|
|
784
784
|
# rdoc-file=enum.c
|
|
@@ -801,8 +801,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
801
801
|
#
|
|
802
802
|
# With no block given, returns an Enumerator.
|
|
803
803
|
#
|
|
804
|
-
def group_by: [U] () { (
|
|
805
|
-
| () -> ::Enumerator[
|
|
804
|
+
def group_by: [U] () { (E arg0) -> U } -> ::Hash[U, ::Array[E]]
|
|
805
|
+
| () -> ::Enumerator[E, ::Array[E]]
|
|
806
806
|
|
|
807
807
|
# <!-- rdoc-file=enum.c -->
|
|
808
808
|
# Returns whether for any element <code>object == element</code>:
|
|
@@ -972,8 +972,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
972
972
|
#
|
|
973
973
|
def inject: (untyped init, Symbol method) -> untyped
|
|
974
974
|
| (Symbol method) -> untyped
|
|
975
|
-
| [A] (A initial) { (A,
|
|
976
|
-
| () { (
|
|
975
|
+
| [A] (A initial) { (A, E) -> A } -> A
|
|
976
|
+
| () { (E, E) -> E } -> E
|
|
977
977
|
|
|
978
978
|
# <!--
|
|
979
979
|
# rdoc-file=enum.c
|
|
@@ -1030,10 +1030,10 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1030
1030
|
#
|
|
1031
1031
|
# Related: #min, #minmax, #max_by.
|
|
1032
1032
|
#
|
|
1033
|
-
def max: () ->
|
|
1034
|
-
| () { (
|
|
1035
|
-
| (Integer arg0) -> ::Array[
|
|
1036
|
-
| (Integer arg0) { (
|
|
1033
|
+
def max: () -> E?
|
|
1034
|
+
| () { (E arg0, E arg1) -> Integer } -> E?
|
|
1035
|
+
| (Integer arg0) -> ::Array[E]
|
|
1036
|
+
| (Integer arg0) { (E arg0, E arg1) -> Integer } -> ::Array[E]
|
|
1037
1037
|
|
|
1038
1038
|
# <!--
|
|
1039
1039
|
# rdoc-file=enum.c
|
|
@@ -1068,10 +1068,10 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1068
1068
|
#
|
|
1069
1069
|
# Related: #max, #minmax, #min_by.
|
|
1070
1070
|
#
|
|
1071
|
-
def max_by: () -> ::Enumerator[
|
|
1072
|
-
| () { (
|
|
1073
|
-
| (Integer arg0) -> ::Enumerator[
|
|
1074
|
-
| (Integer arg0) { (
|
|
1071
|
+
def max_by: () -> ::Enumerator[E, E?]
|
|
1072
|
+
| () { (E arg0) -> (Comparable | ::Array[untyped]) } -> E?
|
|
1073
|
+
| (Integer arg0) -> ::Enumerator[E, ::Array[E]]
|
|
1074
|
+
| (Integer arg0) { (E arg0) -> (Comparable | ::Array[untyped]) } -> ::Array[E]
|
|
1075
1075
|
|
|
1076
1076
|
# <!--
|
|
1077
1077
|
# rdoc-file=enum.c
|
|
@@ -1128,10 +1128,10 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1128
1128
|
#
|
|
1129
1129
|
# Related: #min_by, #minmax, #max.
|
|
1130
1130
|
#
|
|
1131
|
-
def min: () ->
|
|
1132
|
-
| () { (
|
|
1133
|
-
| (Integer arg0) -> ::Array[
|
|
1134
|
-
| (Integer arg0) { (
|
|
1131
|
+
def min: () -> E?
|
|
1132
|
+
| () { (E arg0, E arg1) -> Integer } -> E?
|
|
1133
|
+
| (Integer arg0) -> ::Array[E]
|
|
1134
|
+
| (Integer arg0) { (E arg0, E arg1) -> Integer } -> ::Array[E]
|
|
1135
1135
|
|
|
1136
1136
|
# <!--
|
|
1137
1137
|
# rdoc-file=enum.c
|
|
@@ -1166,10 +1166,10 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1166
1166
|
#
|
|
1167
1167
|
# Related: #min, #minmax, #max_by.
|
|
1168
1168
|
#
|
|
1169
|
-
def min_by: () -> ::Enumerator[
|
|
1170
|
-
| () { (
|
|
1171
|
-
| (Integer arg0) -> ::Enumerator[
|
|
1172
|
-
| (Integer arg0) { (
|
|
1169
|
+
def min_by: () -> ::Enumerator[E, E?]
|
|
1170
|
+
| () { (E arg0) -> (Comparable | ::Array[untyped]) } -> E?
|
|
1171
|
+
| (Integer arg0) -> ::Enumerator[E, ::Array[E]]
|
|
1172
|
+
| (Integer arg0) { (E arg0) -> (Comparable | ::Array[untyped]) } -> ::Array[E]
|
|
1173
1173
|
|
|
1174
1174
|
# <!--
|
|
1175
1175
|
# rdoc-file=enum.c
|
|
@@ -1200,8 +1200,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1200
1200
|
#
|
|
1201
1201
|
# Related: #min, #max, #minmax_by.
|
|
1202
1202
|
#
|
|
1203
|
-
def minmax: () -> [
|
|
1204
|
-
| () { (
|
|
1203
|
+
def minmax: () -> [ E?, E? ]
|
|
1204
|
+
| () { (E arg0, E arg1) -> Integer } -> [ E?, E? ]
|
|
1205
1205
|
|
|
1206
1206
|
# <!--
|
|
1207
1207
|
# rdoc-file=enum.c
|
|
@@ -1224,8 +1224,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1224
1224
|
#
|
|
1225
1225
|
# Related: #max_by, #minmax, #min_by.
|
|
1226
1226
|
#
|
|
1227
|
-
def minmax_by: () -> [
|
|
1228
|
-
| () { (
|
|
1227
|
+
def minmax_by: () -> [ E?, E? ]
|
|
1228
|
+
| () { (E arg0) -> (Comparable | ::Array[untyped]) } -> [ E?, E? ]
|
|
1229
1229
|
|
|
1230
1230
|
# <!--
|
|
1231
1231
|
# rdoc-file=enum.c
|
|
@@ -1266,7 +1266,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1266
1266
|
#
|
|
1267
1267
|
def none?: () -> bool
|
|
1268
1268
|
| (_Pattern) -> bool
|
|
1269
|
-
| () { (
|
|
1269
|
+
| () { (E) -> boolish } -> bool
|
|
1270
1270
|
|
|
1271
1271
|
# <!--
|
|
1272
1272
|
# rdoc-file=enum.c
|
|
@@ -1310,7 +1310,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1310
1310
|
#
|
|
1311
1311
|
def one?: () -> bool
|
|
1312
1312
|
| (_Pattern) -> bool
|
|
1313
|
-
| () { (
|
|
1313
|
+
| () { (E) -> boolish } -> bool
|
|
1314
1314
|
|
|
1315
1315
|
# <!--
|
|
1316
1316
|
# rdoc-file=enum.c
|
|
@@ -1339,8 +1339,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1339
1339
|
#
|
|
1340
1340
|
# Related: Enumerable#group_by.
|
|
1341
1341
|
#
|
|
1342
|
-
def partition: () { (
|
|
1343
|
-
| () -> ::Enumerator[
|
|
1342
|
+
def partition: () { (E) -> boolish } -> [ ::Array[E], ::Array[E] ]
|
|
1343
|
+
| () -> ::Enumerator[E, [ ::Array[E], ::Array[E] ]]
|
|
1344
1344
|
|
|
1345
1345
|
# <!--
|
|
1346
1346
|
# rdoc-file=enum.c
|
|
@@ -1359,8 +1359,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1359
1359
|
#
|
|
1360
1360
|
# Related: #select.
|
|
1361
1361
|
#
|
|
1362
|
-
def reject: () { (
|
|
1363
|
-
| () -> ::Enumerator[
|
|
1362
|
+
def reject: () { (E) -> boolish } -> ::Array[E]
|
|
1363
|
+
| () -> ::Enumerator[E, ::Array[E]]
|
|
1364
1364
|
|
|
1365
1365
|
# <!--
|
|
1366
1366
|
# rdoc-file=enum.c
|
|
@@ -1386,8 +1386,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1386
1386
|
#
|
|
1387
1387
|
# With no block given, returns an Enumerator.
|
|
1388
1388
|
#
|
|
1389
|
-
def reverse_each: () { (
|
|
1390
|
-
| () -> ::Enumerator[
|
|
1389
|
+
def reverse_each: () { (E arg0) -> untyped } -> void
|
|
1390
|
+
| () -> ::Enumerator[E]
|
|
1391
1391
|
|
|
1392
1392
|
# <!--
|
|
1393
1393
|
# rdoc-file=enum.c
|
|
@@ -1420,8 +1420,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1420
1420
|
# See also #sort_by. It implements a Schwartzian transform which is useful when
|
|
1421
1421
|
# key computation or comparison is expensive.
|
|
1422
1422
|
#
|
|
1423
|
-
def sort: () -> ::Array[
|
|
1424
|
-
| () { (
|
|
1423
|
+
def sort: () -> ::Array[E]
|
|
1424
|
+
| () { (E arg0, E arg1) -> Integer } -> ::Array[E]
|
|
1425
1425
|
|
|
1426
1426
|
# <!--
|
|
1427
1427
|
# rdoc-file=enum.c
|
|
@@ -1501,8 +1501,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1501
1501
|
#
|
|
1502
1502
|
# ary.sort_by { ... }.reverse!
|
|
1503
1503
|
#
|
|
1504
|
-
def sort_by: () { (
|
|
1505
|
-
| () -> ::Enumerator[
|
|
1504
|
+
def sort_by: () { (E arg0) -> (Comparable | ::Array[untyped]) } -> ::Array[E]
|
|
1505
|
+
| () -> ::Enumerator[E, ::Array[E]]
|
|
1506
1506
|
|
|
1507
1507
|
# <!--
|
|
1508
1508
|
# rdoc-file=enum.c
|
|
@@ -1517,7 +1517,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1517
1517
|
# h = {foo: 0, bar: 1, baz: 2, bat: 3}
|
|
1518
1518
|
# h.take(2) # => [[:foo, 0], [:bar, 1]]
|
|
1519
1519
|
#
|
|
1520
|
-
def take: (Integer n) -> ::Array[
|
|
1520
|
+
def take: (Integer n) -> ::Array[E]
|
|
1521
1521
|
|
|
1522
1522
|
# <!--
|
|
1523
1523
|
# rdoc-file=enum.c
|
|
@@ -1534,8 +1534,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1534
1534
|
#
|
|
1535
1535
|
# With no block given, returns an Enumerator.
|
|
1536
1536
|
#
|
|
1537
|
-
def take_while: () { (
|
|
1538
|
-
| () -> ::Enumerator[
|
|
1537
|
+
def take_while: () { (E) -> boolish } -> ::Array[E]
|
|
1538
|
+
| () -> ::Enumerator[E, ::Array[E]]
|
|
1539
1539
|
|
|
1540
1540
|
# <!--
|
|
1541
1541
|
# rdoc-file=enum.c
|
|
@@ -1557,7 +1557,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1557
1557
|
# block is not passed.
|
|
1558
1558
|
#
|
|
1559
1559
|
def to_h: () -> ::Hash[untyped, untyped]
|
|
1560
|
-
| [T, U] () { (
|
|
1560
|
+
| [T, U] () { (E) -> [ T, U ] } -> ::Hash[T, U]
|
|
1561
1561
|
|
|
1562
1562
|
# <!--
|
|
1563
1563
|
# rdoc-file=enum.c
|
|
@@ -1578,8 +1578,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1578
1578
|
#
|
|
1579
1579
|
# With no block given, returns an Enumerator.
|
|
1580
1580
|
#
|
|
1581
|
-
def each_slice: (Integer n) { (::Array[
|
|
1582
|
-
| (Integer n) -> ::Enumerator[::Array[
|
|
1581
|
+
def each_slice: (Integer n) { (::Array[E]) -> void } -> self
|
|
1582
|
+
| (Integer n) -> ::Enumerator[::Array[E], self]
|
|
1583
1583
|
|
|
1584
1584
|
interface _NotFound[T]
|
|
1585
1585
|
def call: () -> T
|
|
@@ -1607,10 +1607,10 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1607
1607
|
#
|
|
1608
1608
|
# With no block given, returns an Enumerator.
|
|
1609
1609
|
#
|
|
1610
|
-
def find: () { (
|
|
1611
|
-
| () -> ::Enumerator[
|
|
1612
|
-
| [T] (_NotFound[T] ifnone) { (
|
|
1613
|
-
| [T] (_NotFound[T] ifnone) -> ::Enumerator[
|
|
1610
|
+
def find: () { (E) -> boolish } -> E?
|
|
1611
|
+
| () -> ::Enumerator[E, E?]
|
|
1612
|
+
| [T] (_NotFound[T] ifnone) { (E) -> boolish } -> (E | T)
|
|
1613
|
+
| [T] (_NotFound[T] ifnone) -> ::Enumerator[E, E | T]
|
|
1614
1614
|
|
|
1615
1615
|
# <!--
|
|
1616
1616
|
# rdoc-file=enum.c
|
|
@@ -1631,8 +1631,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1631
1631
|
#
|
|
1632
1632
|
# Alias: #collect_concat.
|
|
1633
1633
|
#
|
|
1634
|
-
def flat_map: [U] () { (
|
|
1635
|
-
| () -> ::Enumerator[
|
|
1634
|
+
def flat_map: [U] () { (E) -> (Array[U] | U) } -> Array[U]
|
|
1635
|
+
| () -> ::Enumerator[E, Array[untyped]]
|
|
1636
1636
|
|
|
1637
1637
|
# <!-- rdoc-file=enum.c -->
|
|
1638
1638
|
# Returns an array of objects returned by the block.
|
|
@@ -1645,8 +1645,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1645
1645
|
#
|
|
1646
1646
|
# With no block given, returns an Enumerator.
|
|
1647
1647
|
#
|
|
1648
|
-
def map: [U] () { (
|
|
1649
|
-
| () -> ::Enumerator[
|
|
1648
|
+
def map: [U] () { (E arg0) -> U } -> ::Array[U]
|
|
1649
|
+
| () -> ::Enumerator[E, ::Array[untyped]]
|
|
1650
1650
|
|
|
1651
1651
|
# <!--
|
|
1652
1652
|
# rdoc-file=enum.c
|
|
@@ -1821,7 +1821,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1821
1821
|
#
|
|
1822
1822
|
# (0..4).to_a # => [0, 1, 2, 3, 4]
|
|
1823
1823
|
#
|
|
1824
|
-
def to_a: () -> ::Array[
|
|
1824
|
+
def to_a: () -> ::Array[E]
|
|
1825
1825
|
|
|
1826
1826
|
# <!--
|
|
1827
1827
|
# rdoc-file=enumerator.c
|
|
@@ -1851,7 +1851,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1851
1851
|
# # show pythagorean triples less than 100
|
|
1852
1852
|
# p pythagorean_triples.take_while { |*, z| z < 100 }.force
|
|
1853
1853
|
#
|
|
1854
|
-
def lazy: () -> Enumerator::Lazy[
|
|
1854
|
+
def lazy: () -> Enumerator::Lazy[E]
|
|
1855
1855
|
|
|
1856
1856
|
# <!--
|
|
1857
1857
|
# rdoc-file=enum.c
|
|
@@ -1872,8 +1872,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1872
1872
|
# a = %w[a b c d e e d c b a a b c d e]
|
|
1873
1873
|
# a.uniq {|c| c < 'c' } # => ["a", "c"]
|
|
1874
1874
|
#
|
|
1875
|
-
def uniq: () -> ::Array[
|
|
1876
|
-
| () { (
|
|
1875
|
+
def uniq: () -> ::Array[E]
|
|
1876
|
+
| () { (E item) -> untyped } -> ::Array[E]
|
|
1877
1877
|
|
|
1878
1878
|
# <!--
|
|
1879
1879
|
# rdoc-file=enum.c
|
|
@@ -1904,10 +1904,10 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1904
1904
|
# h.sum {|key, value| value.odd? ? value : 0 } # => 9
|
|
1905
1905
|
# ('a'..'f').sum('x') {|c| c < 'd' ? c : '' } # => "xabc"
|
|
1906
1906
|
#
|
|
1907
|
-
def sum: () -> (
|
|
1908
|
-
| [T] () { (
|
|
1909
|
-
| [T] (?T arg0) -> (
|
|
1910
|
-
| [U] (?U arg0) { (
|
|
1907
|
+
def sum: () -> (E | Integer)
|
|
1908
|
+
| [T] () { (E arg0) -> T } -> (Integer | T)
|
|
1909
|
+
| [T] (?T arg0) -> (E | T)
|
|
1910
|
+
| [U] (?U arg0) { (E arg0) -> U } -> U
|
|
1911
1911
|
|
|
1912
1912
|
# <!--
|
|
1913
1913
|
# rdoc-file=enum.c
|
|
@@ -1924,8 +1924,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1924
1924
|
#
|
|
1925
1925
|
# When no block given, returns an Enumerator.
|
|
1926
1926
|
#
|
|
1927
|
-
def filter_map: [U] () { (
|
|
1928
|
-
| () -> ::Enumerator[
|
|
1927
|
+
def filter_map: [U] () { (E elem) -> (nil | false | U) } -> ::Array[U]
|
|
1928
|
+
| () -> ::Enumerator[E, ::Array[untyped]]
|
|
1929
1929
|
|
|
1930
1930
|
# <!--
|
|
1931
1931
|
# rdoc-file=enumerator.c
|
|
@@ -1937,7 +1937,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1937
1937
|
# e = (1..3).chain([4, 5])
|
|
1938
1938
|
# e.to_a #=> [1, 2, 3, 4, 5]
|
|
1939
1939
|
#
|
|
1940
|
-
def chain: [Elem2] (*_Each[Elem2] enumerables) -> ::Enumerator::Chain[
|
|
1940
|
+
def chain: [Elem2] (*_Each[Elem2] enumerables) -> ::Enumerator::Chain[E | Elem2]
|
|
1941
1941
|
|
|
1942
1942
|
# <!--
|
|
1943
1943
|
# rdoc-file=enum.c
|
|
@@ -1983,7 +1983,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
1983
1983
|
# {foo: 'a', bar: 'b'}.tally(h) # => {[:foo, "a"]=>2, [:bar, "b"]=>2, [:foo, "c"]=>1, [:bar, "d"]=>1}
|
|
1984
1984
|
# {foo: 'c', bar: 'd'}.tally(h) # => {[:foo, "a"]=>2, [:bar, "b"]=>2, [:foo, "c"]=>2, [:bar, "d"]=>2}
|
|
1985
1985
|
#
|
|
1986
|
-
def tally: (?Hash[
|
|
1986
|
+
def tally: (?Hash[E, Integer] hash) -> ::Hash[E, Integer]
|
|
1987
1987
|
|
|
1988
1988
|
# <!--
|
|
1989
1989
|
# rdoc-file=enum.c
|
|
@@ -2021,8 +2021,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
2021
2021
|
#
|
|
2022
2022
|
# With no block given, returns an Enumerator.
|
|
2023
2023
|
#
|
|
2024
|
-
def each_entry: () -> ::Enumerator[
|
|
2025
|
-
| () { (
|
|
2024
|
+
def each_entry: () -> ::Enumerator[E, self]
|
|
2025
|
+
| () { (E arg0) -> untyped } -> self
|
|
2026
2026
|
|
|
2027
2027
|
# <!--
|
|
2028
2028
|
# rdoc-file=enum.c
|
|
@@ -2088,9 +2088,9 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
2088
2088
|
# [:a2, :b2, :c2]
|
|
2089
2089
|
# [:a3, :b3, :c3]
|
|
2090
2090
|
#
|
|
2091
|
-
def zip: [Elem2] (_Each[Elem2] enum) -> Array[[
|
|
2091
|
+
def zip: [Elem2] (_Each[Elem2] enum) -> Array[[ E, Elem2? ]]
|
|
2092
2092
|
| (_Each[untyped], *_Each[untyped]) -> Array[Array[untyped]]
|
|
2093
|
-
| [Elem2] (_Each[Elem2]) { ([
|
|
2093
|
+
| [Elem2] (_Each[Elem2]) { ([ E, Elem2? ]) -> void } -> nil
|
|
2094
2094
|
| (_Each[untyped], *_Each[untyped]) { (Array[untyped]) -> void } -> nil
|
|
2095
2095
|
|
|
2096
2096
|
# <!--
|
|
@@ -2197,8 +2197,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
2197
2197
|
# pp lines
|
|
2198
2198
|
# }
|
|
2199
2199
|
#
|
|
2200
|
-
def chunk: [U] () { (
|
|
2201
|
-
| () -> ::Enumerator[
|
|
2200
|
+
def chunk: [U] () { (E elt) -> U } -> ::Enumerator[[ U, ::Array[E] ]]
|
|
2201
|
+
| () -> ::Enumerator[E, ::Enumerator[[ untyped, ::Array[E] ]]]
|
|
2202
2202
|
|
|
2203
2203
|
# <!--
|
|
2204
2204
|
# rdoc-file=enum.c
|
|
@@ -2247,7 +2247,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
2247
2247
|
# Enumerable#slice_when does the same, except splitting when the block returns
|
|
2248
2248
|
# `true` instead of `false`.
|
|
2249
2249
|
#
|
|
2250
|
-
def chunk_while: () { (
|
|
2250
|
+
def chunk_while: () { (E elt_before, E elt_after) -> boolish } -> ::Enumerator[::Array[E]]
|
|
2251
2251
|
|
|
2252
2252
|
# <!--
|
|
2253
2253
|
# rdoc-file=enum.c
|
|
@@ -2309,7 +2309,7 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
2309
2309
|
# Enumerable#chunk_while does the same, except splitting when the block returns
|
|
2310
2310
|
# `false` instead of `true`.
|
|
2311
2311
|
#
|
|
2312
|
-
def slice_when: () { (
|
|
2312
|
+
def slice_when: () { (E elt_before, E elt_after) -> boolish } -> ::Enumerator[::Array[E]]
|
|
2313
2313
|
|
|
2314
2314
|
# <!--
|
|
2315
2315
|
# rdoc-file=enum.c
|
|
@@ -2344,8 +2344,8 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
2344
2344
|
# p e.map {|ll| ll[0...-1].map {|l| l.sub(/\\\n\z/, "") }.join + ll.last }
|
|
2345
2345
|
# #=>["foo\n", "barbaz\n", "\n", "qux\n"]
|
|
2346
2346
|
#
|
|
2347
|
-
def slice_after: (untyped pattern) -> ::Enumerator[::Array[
|
|
2348
|
-
| () { (
|
|
2347
|
+
def slice_after: (untyped pattern) -> ::Enumerator[::Array[E]]
|
|
2348
|
+
| () { (E elt) -> boolish } -> ::Enumerator[::Array[E]]
|
|
2349
2349
|
|
|
2350
2350
|
# <!--
|
|
2351
2351
|
# rdoc-file=enum.c
|
|
@@ -2501,6 +2501,6 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
|
2501
2501
|
# }
|
|
2502
2502
|
# }
|
|
2503
2503
|
#
|
|
2504
|
-
def slice_before: (untyped pattern) -> ::Enumerator[::Array[
|
|
2505
|
-
| () { (
|
|
2504
|
+
def slice_before: (untyped pattern) -> ::Enumerator[::Array[E]]
|
|
2505
|
+
| () { (E elt) -> boolish } -> ::Enumerator[::Array[E]]
|
|
2506
2506
|
end
|
data/core/enumerator/product.rbs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
%a{annotate:rdoc:skip}
|
|
2
|
-
class Enumerator[unchecked out
|
|
2
|
+
class Enumerator[unchecked out E, out R = void]
|
|
3
3
|
# <!-- rdoc-file=enumerator.c -->
|
|
4
4
|
# Enumerator::Product generates a Cartesian product of any number of enumerable
|
|
5
5
|
# objects. Iterating over the product of enumerable objects is roughly
|
|
@@ -30,7 +30,7 @@ class Enumerator[unchecked out Elem, out Return = void]
|
|
|
30
30
|
#
|
|
31
31
|
# This type of objects can be created by Enumerator.product.
|
|
32
32
|
#
|
|
33
|
-
class Product[unchecked out
|
|
33
|
+
class Product[unchecked out E] < Enumerator[Array[E], Product[E]]
|
|
34
34
|
# <!--
|
|
35
35
|
# rdoc-file=enumerator.c
|
|
36
36
|
# - Enumerator::Product.new(*enums) -> enum
|
|
@@ -42,7 +42,7 @@ class Enumerator[unchecked out Elem, out Return = void]
|
|
|
42
42
|
# e.to_a #=> [[1, 4], [1, 5], [2, 4], [2, 5], [3, 4], [3, 5]]
|
|
43
43
|
# e.size #=> 6
|
|
44
44
|
#
|
|
45
|
-
def initialize: (*_EachEntry[
|
|
45
|
+
def initialize: (*_EachEntry[E]) -> void
|
|
46
46
|
|
|
47
47
|
# <!--
|
|
48
48
|
# rdoc-file=enumerator.c
|
|
@@ -55,7 +55,7 @@ class Enumerator[unchecked out Elem, out Return = void]
|
|
|
55
55
|
#
|
|
56
56
|
# If no block is given, returns an enumerator. Otherwise, returns self.
|
|
57
57
|
#
|
|
58
|
-
def each: () { (Array[
|
|
58
|
+
def each: () { (Array[E]) -> void } -> self
|
|
59
59
|
|
|
60
60
|
# <!--
|
|
61
61
|
# rdoc-file=enumerator.c
|
|
@@ -87,6 +87,6 @@ class Enumerator[unchecked out Elem, out Return = void]
|
|
|
87
87
|
|
|
88
88
|
private
|
|
89
89
|
|
|
90
|
-
def initialize_copy: (Product[
|
|
90
|
+
def initialize_copy: (Product[E]) -> void
|
|
91
91
|
end
|
|
92
92
|
end
|