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.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/c-check.yml +3 -0
  3. data/.github/workflows/dependabot.yml +1 -1
  4. data/.github/workflows/jruby.yml +67 -0
  5. data/.github/workflows/milestone.yml +4 -1
  6. data/.github/workflows/ruby.yml +12 -0
  7. data/.github/workflows/rust.yml +3 -0
  8. data/.github/workflows/truffleruby.yml +54 -0
  9. data/.github/workflows/typecheck.yml +3 -0
  10. data/.github/workflows/wasm.yml +53 -0
  11. data/.github/workflows/windows.yml +6 -0
  12. data/.gitignore +7 -0
  13. data/README.md +3 -3
  14. data/Rakefile +116 -1
  15. data/Steepfile +7 -0
  16. data/core/array.rbs +144 -144
  17. data/core/builtin.rbs +6 -6
  18. data/core/enumerable.rbs +109 -109
  19. data/core/enumerator/product.rbs +5 -5
  20. data/core/enumerator.rbs +28 -28
  21. data/core/file.rbs +24 -1018
  22. data/core/file_constants.rbs +463 -0
  23. data/core/file_stat.rbs +534 -0
  24. data/core/hash.rbs +117 -101
  25. data/core/integer.rbs +21 -58
  26. data/core/io.rbs +25 -7
  27. data/core/module.rbs +88 -74
  28. data/core/numeric.rbs +3 -0
  29. data/core/object_space/weak_key_map.rbs +7 -7
  30. data/core/range.rbs +23 -23
  31. data/core/rbs/ops.rbs +154 -0
  32. data/core/rbs/unnamed/argf.rbs +3 -3
  33. data/core/set.rbs +3 -3
  34. data/core/struct.rbs +16 -16
  35. data/core/thread.rbs +6 -6
  36. data/docs/CONTRIBUTING.md +2 -1
  37. data/docs/inline.md +36 -6
  38. data/docs/rbs_by_example.md +20 -20
  39. data/docs/syntax.md +2 -2
  40. data/docs/wasm_serialization.md +80 -0
  41. data/ext/rbs_extension/ast_translation.c +1294 -973
  42. data/ext/rbs_extension/ast_translation.h +4 -0
  43. data/ext/rbs_extension/main.c +139 -4
  44. data/include/rbs/ast.h +9 -1
  45. data/include/rbs/serialize.h +39 -0
  46. data/lib/rbs/ast/ruby/comment_block.rb +6 -4
  47. data/lib/rbs/ast/ruby/helpers/location_helper.rb +1 -1
  48. data/lib/rbs/ast/ruby/members.rb +12 -1
  49. data/lib/rbs/buffer.rb +48 -11
  50. data/lib/rbs/collection/sources/git.rb +6 -0
  51. data/lib/rbs/definition_builder/method_builder.rb +12 -6
  52. data/lib/rbs/environment.rb +4 -3
  53. data/lib/rbs/inline_parser.rb +5 -3
  54. data/lib/rbs/namespace.rb +47 -11
  55. data/lib/rbs/prototype/runtime.rb +2 -0
  56. data/lib/rbs/resolver/type_name_resolver.rb +12 -14
  57. data/lib/rbs/type_name.rb +33 -13
  58. data/lib/rbs/unit_test/type_assertions.rb +9 -0
  59. data/lib/rbs/version.rb +1 -1
  60. data/lib/rbs/wasm/deserializer.rb +213 -0
  61. data/lib/rbs/wasm/location.rb +61 -0
  62. data/lib/rbs/wasm/parser.rb +137 -0
  63. data/lib/rbs/wasm/runtime.rb +217 -0
  64. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  65. data/lib/rbs.rb +13 -2
  66. data/rbs.gemspec +19 -2
  67. data/sig/ast/ruby/members.rbs +6 -1
  68. data/sig/buffer.rbs +19 -1
  69. data/sig/namespace.rbs +20 -0
  70. data/sig/parser.rbs +10 -0
  71. data/sig/resolver/type_name_resolver.rbs +2 -4
  72. data/sig/typename.rbs +15 -0
  73. data/sig/unit_test/type_assertions.rbs +4 -0
  74. data/sig/wasm/deserializer.rbs +66 -0
  75. data/sig/wasm/serialization_schema.rbs +13 -0
  76. data/src/ast.c +78 -78
  77. data/src/lexstate.c +5 -1
  78. data/src/serialize.c +958 -0
  79. data/src/util/rbs_allocator.c +1 -4
  80. data/stdlib/abbrev/0/array.rbs +1 -1
  81. data/stdlib/csv/0/csv.rbs +5 -5
  82. data/stdlib/digest/0/digest.rbs +1 -1
  83. data/stdlib/etc/0/etc.rbs +18 -4
  84. data/stdlib/fileutils/0/fileutils.rbs +21 -21
  85. data/stdlib/json/0/json.rbs +6 -6
  86. data/stdlib/openssl/0/openssl.rbs +5 -5
  87. data/stdlib/resolv/0/resolv.rbs +1 -1
  88. data/stdlib/shellwords/0/shellwords.rbs +1 -1
  89. data/stdlib/stringio/0/stringio.rbs +32 -10
  90. data/stdlib/strscan/0/string_scanner.rbs +74 -55
  91. data/stdlib/tsort/0/cyclic.rbs +1 -1
  92. data/stdlib/tsort/0/interfaces.rbs +8 -8
  93. data/stdlib/tsort/0/tsort.rbs +9 -9
  94. data/stdlib/zlib/0/gzip_reader.rbs +2 -2
  95. data/wasm/README.md +59 -0
  96. data/wasm/rbs_wasm.c +411 -0
  97. metadata +21 -5
  98. data/.vscode/extensions.json +0 -5
  99. 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 E, out R = void]
174
- def each: () { (E) -> void } -> R
173
+ interface _Each[out T, out R = void]
174
+ def each: () { (T) -> void } -> R
175
175
  end
176
176
 
177
- interface _EachEntry[out E]
178
- def each_entry: () { (E) -> void } -> self
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 Elem] : _Each[Elem]
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
- | () { (Elem) -> boolish } -> bool
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
- | () { (Elem) -> boolish } -> bool
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] () { (Elem arg0) -> U } -> ::Array[U]
385
- | () -> ::Enumerator[Elem, ::Array[untyped]]
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] () { (Elem) -> (::Array[U] | U) } -> ::Array[U]
403
- | () -> ::Enumerator[Elem, ::Array[untyped]]
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[Elem]
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
- | (Elem) -> Integer
443
- | () { (Elem) -> boolish } -> Integer
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) { (Elem arg0) -> untyped } -> NilClass
471
- | (?Integer n) -> ::Enumerator[Elem, NilClass]
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) { (Elem) -> boolish } -> Elem?
492
- | (?Proc ifnone) -> ::Enumerator[Elem, Elem?]
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[Elem]
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: () { (Elem) -> boolish } -> ::Array[Elem]
540
- | () -> ::Enumerator[Elem, ::Array[Elem]]
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[Elem]) -> void } -> self
562
- | (Integer n) -> ::Enumerator[::Array[Elem], self]
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: () { (Elem, Integer index) -> untyped } -> self
590
- | () -> ::Enumerator[[ Elem, Integer ], self]
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) { (Elem, U obj) -> untyped } -> U
609
- | [U] (U obj) -> ::Enumerator[[ Elem, U ], U]
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[Elem]
616
+ def entries: () -> ::Array[E]
617
617
 
618
618
  def enum_for: (Symbol method, *untyped, **untyped) ?{ (?) -> Integer } -> Enumerator[untyped, untyped]
619
- | () ?{ () -> Integer } -> Enumerator[Elem, self]
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: () { (Elem) -> boolish } -> ::Array[Elem]
643
- | () -> ::Enumerator[Elem, ::Array[Elem]]
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
- | () { (Elem) -> boolish } -> Integer?
701
- | () -> ::Enumerator[Elem, Integer?]
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: () -> Elem?
727
- | (_ToInt n) -> ::Array[Elem]
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[Elem]
754
- | [U] (untyped arg0) { (Elem arg0) -> U } -> ::Array[U]
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[Elem]
781
- | [U] (untyped) { (Elem) -> U } -> ::Array[U]
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] () { (Elem arg0) -> U } -> ::Hash[U, ::Array[Elem]]
805
- | () -> ::Enumerator[Elem, ::Array[Elem]]
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, Elem) -> A } -> A
976
- | () { (Elem, Elem) -> Elem } -> Elem
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: () -> Elem?
1034
- | () { (Elem arg0, Elem arg1) -> Integer } -> Elem?
1035
- | (Integer arg0) -> ::Array[Elem]
1036
- | (Integer arg0) { (Elem arg0, Elem arg1) -> Integer } -> ::Array[Elem]
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[Elem, Elem?]
1072
- | () { (Elem arg0) -> (Comparable | ::Array[untyped]) } -> Elem?
1073
- | (Integer arg0) -> ::Enumerator[Elem, ::Array[Elem]]
1074
- | (Integer arg0) { (Elem arg0) -> (Comparable | ::Array[untyped]) } -> ::Array[Elem]
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: () -> Elem?
1132
- | () { (Elem arg0, Elem arg1) -> Integer } -> Elem?
1133
- | (Integer arg0) -> ::Array[Elem]
1134
- | (Integer arg0) { (Elem arg0, Elem arg1) -> Integer } -> ::Array[Elem]
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[Elem, Elem?]
1170
- | () { (Elem arg0) -> (Comparable | ::Array[untyped]) } -> Elem?
1171
- | (Integer arg0) -> ::Enumerator[Elem, ::Array[Elem]]
1172
- | (Integer arg0) { (Elem arg0) -> (Comparable | ::Array[untyped]) } -> ::Array[Elem]
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: () -> [ Elem?, Elem? ]
1204
- | () { (Elem arg0, Elem arg1) -> Integer } -> [ Elem?, Elem? ]
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: () -> [ Elem?, Elem? ]
1228
- | () { (Elem arg0) -> (Comparable | ::Array[untyped]) } -> [ Elem?, Elem? ]
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
- | () { (Elem) -> boolish } -> bool
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
- | () { (Elem) -> boolish } -> bool
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: () { (Elem) -> boolish } -> [ ::Array[Elem], ::Array[Elem] ]
1343
- | () -> ::Enumerator[Elem, [ ::Array[Elem], ::Array[Elem] ]]
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: () { (Elem) -> boolish } -> ::Array[Elem]
1363
- | () -> ::Enumerator[Elem, ::Array[Elem]]
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: () { (Elem arg0) -> untyped } -> void
1390
- | () -> ::Enumerator[Elem]
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[Elem]
1424
- | () { (Elem arg0, Elem arg1) -> Integer } -> ::Array[Elem]
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: () { (Elem arg0) -> (Comparable | ::Array[untyped]) } -> ::Array[Elem]
1505
- | () -> ::Enumerator[Elem, ::Array[Elem]]
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[Elem]
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: () { (Elem) -> boolish } -> ::Array[Elem]
1538
- | () -> ::Enumerator[Elem, ::Array[Elem]]
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] () { (Elem) -> [ T, U ] } -> ::Hash[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[Elem]) -> void } -> self
1582
- | (Integer n) -> ::Enumerator[::Array[Elem], self]
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: () { (Elem) -> boolish } -> Elem?
1611
- | () -> ::Enumerator[Elem, Elem?]
1612
- | [T] (_NotFound[T] ifnone) { (Elem) -> boolish } -> (Elem | T)
1613
- | [T] (_NotFound[T] ifnone) -> ::Enumerator[Elem, Elem | T]
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] () { (Elem) -> (Array[U] | U) } -> Array[U]
1635
- | () -> ::Enumerator[Elem, Array[untyped]]
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] () { (Elem arg0) -> U } -> ::Array[U]
1649
- | () -> ::Enumerator[Elem, ::Array[untyped]]
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[Elem]
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[Elem]
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[Elem]
1876
- | () { (Elem item) -> untyped } -> ::Array[Elem]
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: () -> (Elem | Integer)
1908
- | [T] () { (Elem arg0) -> T } -> (Integer | T)
1909
- | [T] (?T arg0) -> (Elem | T)
1910
- | [U] (?U arg0) { (Elem arg0) -> U } -> U
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] () { (Elem elem) -> (nil | false | U) } -> ::Array[U]
1928
- | () -> ::Enumerator[Elem, ::Array[untyped]]
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[Elem | Elem2]
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[Elem, Integer] hash) -> ::Hash[Elem, Integer]
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[Elem, self]
2025
- | () { (Elem arg0) -> untyped } -> self
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[[ Elem, Elem2? ]]
2091
+ def zip: [Elem2] (_Each[Elem2] enum) -> Array[[ E, Elem2? ]]
2092
2092
  | (_Each[untyped], *_Each[untyped]) -> Array[Array[untyped]]
2093
- | [Elem2] (_Each[Elem2]) { ([ Elem, Elem2? ]) -> void } -> nil
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] () { (Elem elt) -> U } -> ::Enumerator[[ U, ::Array[Elem] ]]
2201
- | () -> ::Enumerator[Elem, ::Enumerator[[ untyped, ::Array[Elem] ]]]
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: () { (Elem elt_before, Elem elt_after) -> boolish } -> ::Enumerator[::Array[Elem]]
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: () { (Elem elt_before, Elem elt_after) -> boolish } -> ::Enumerator[::Array[Elem]]
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[Elem]]
2348
- | () { (Elem elt) -> boolish } -> ::Enumerator[::Array[Elem]]
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[Elem]]
2505
- | () { (Elem elt) -> boolish } -> ::Enumerator[::Array[Elem]]
2504
+ def slice_before: (untyped pattern) -> ::Enumerator[::Array[E]]
2505
+ | () { (E elt) -> boolish } -> ::Enumerator[::Array[E]]
2506
2506
  end
@@ -1,5 +1,5 @@
1
1
  %a{annotate:rdoc:skip}
2
- class Enumerator[unchecked out Elem, out Return = void]
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 Elem] < Enumerator[Array[Elem], Product[Elem]]
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[Elem]) -> void
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[Elem]) -> void } -> self
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[Elem]) -> void
90
+ def initialize_copy: (Product[E]) -> void
91
91
  end
92
92
  end