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/array.rbs CHANGED
@@ -546,8 +546,8 @@
546
546
  # given block.
547
547
  #
548
548
  %a{annotate:rdoc:source:from=array.c}
549
- class Array[unchecked out Elem] < Object
550
- include Enumerable[Elem]
549
+ class Array[unchecked out E] < Object
550
+ include Enumerable[E]
551
551
 
552
552
  # <!--
553
553
  # rdoc-file=array.c
@@ -604,9 +604,9 @@ class Array[unchecked out Elem] < Object
604
604
  # Array](rdoc-ref:Array@Methods+for+Creating+an+Array).
605
605
  #
606
606
  def initialize: () -> void
607
- | (::Array[Elem] ary) -> void
608
- | (int size, ?Elem val) -> void
609
- | (int size) { (::Integer index) -> Elem } -> void
607
+ | (::Array[E] ary) -> void
608
+ | (int size, ?E val) -> void
609
+ | (int size) { (::Integer index) -> E } -> void
610
610
 
611
611
  # <!--
612
612
  # rdoc-file=array.c
@@ -664,7 +664,7 @@ class Array[unchecked out Elem] < Object
664
664
  #
665
665
  # Related: see [Methods for Combining](rdoc-ref:Array@Methods+for+Combining).
666
666
  #
667
- def &: (::Array[untyped] | _ToAry[untyped]) -> ::Array[Elem]
667
+ def &: (::Array[untyped] | _ToAry[untyped]) -> ::Array[E]
668
668
 
669
669
  # <!--
670
670
  # rdoc-file=array.c
@@ -683,7 +683,7 @@ class Array[unchecked out Elem] < Object
683
683
  # [0, [0, 1], {foo: 0}] * ', ' # => "0, 0, 1, {foo: 0}"
684
684
  #
685
685
  def *: (string str) -> ::String
686
- | (int int) -> ::Array[Elem]
686
+ | (int int) -> ::Array[E]
687
687
 
688
688
  # <!--
689
689
  # rdoc-file=array.c
@@ -697,7 +697,7 @@ class Array[unchecked out Elem] < Object
697
697
  #
698
698
  # Related: see [Methods for Combining](rdoc-ref:Array@Methods+for+Combining).
699
699
  #
700
- def +: [U] (_ToAry[U]) -> ::Array[Elem | U]
700
+ def +: [U] (_ToAry[U]) -> ::Array[E | U]
701
701
 
702
702
  # <!--
703
703
  # rdoc-file=array.c
@@ -715,7 +715,7 @@ class Array[unchecked out Elem] < Object
715
715
  #
716
716
  # Related: see [Methods for Combining](rdoc-ref:Array@Methods+for+Combining).
717
717
  #
718
- def -: (_ToAry[untyped]) -> ::Array[Elem]
718
+ def -: (_ToAry[untyped]) -> ::Array[E]
719
719
 
720
720
  # <!--
721
721
  # rdoc-file=array.c
@@ -731,7 +731,7 @@ class Array[unchecked out Elem] < Object
731
731
  #
732
732
  # Related: see [Methods for Assigning](rdoc-ref:Array@Methods+for+Assigning).
733
733
  #
734
- def <<: (Elem) -> self
734
+ def <<: (E) -> self
735
735
 
736
736
  # <!--
737
737
  # rdoc-file=array.c
@@ -918,9 +918,9 @@ class Array[unchecked out Elem] < Object
918
918
  #
919
919
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
920
920
  #
921
- def []: %a{implicitly-returns-nil} (int index) -> Elem
922
- | (int start, int length) -> ::Array[Elem]?
923
- | (::Range[::Integer?] range) -> ::Array[Elem]?
921
+ def []: %a{implicitly-returns-nil} (int index) -> E
922
+ | (int start, int length) -> ::Array[E]?
923
+ | (::Range[::Integer?] range) -> ::Array[E]?
924
924
 
925
925
  # <!--
926
926
  # rdoc-file=array.c
@@ -1068,12 +1068,12 @@ class Array[unchecked out Elem] < Object
1068
1068
  #
1069
1069
  # Related: see [Methods for Assigning](rdoc-ref:Array@Methods+for+Assigning).
1070
1070
  #
1071
- def []=: (int index, Elem obj) -> Elem
1072
- | (int start, int length, Elem obj) -> Elem
1073
- | (int start, int length, ::Array[Elem]) -> ::Array[Elem]
1071
+ def []=: (int index, E obj) -> E
1072
+ | (int start, int length, E obj) -> E
1073
+ | (int start, int length, ::Array[E]) -> ::Array[E]
1074
1074
  | (int start, int length, nil) -> nil
1075
- | (::Range[::Integer?], Elem obj) -> Elem
1076
- | (::Range[::Integer?], ::Array[Elem]) -> ::Array[Elem]
1075
+ | (::Range[::Integer?], E obj) -> E
1076
+ | (::Range[::Integer?], ::Array[E]) -> ::Array[E]
1077
1077
  | (::Range[::Integer?], nil) -> nil
1078
1078
 
1079
1079
  # <!--
@@ -1114,8 +1114,8 @@ class Array[unchecked out Elem] < Object
1114
1114
  # Related: see [Methods for Querying](rdoc-ref:Array@Methods+for+Querying).
1115
1115
  #
1116
1116
  def all?: () -> bool
1117
- | (_Pattern[Elem] pattern) -> bool
1118
- | () { (Elem obj) -> boolish } -> bool
1117
+ | (_Pattern[E] pattern) -> bool
1118
+ | () { (E obj) -> boolish } -> bool
1119
1119
 
1120
1120
  # <!--
1121
1121
  # rdoc-file=array.c
@@ -1211,7 +1211,7 @@ class Array[unchecked out Elem] < Object
1211
1211
  # Related: Array#[]; see also [Methods for
1212
1212
  # Fetching](rdoc-ref:Array@Methods+for+Fetching).
1213
1213
  #
1214
- def at: %a{implicitly-returns-nil} (int index) -> Elem
1214
+ def at: %a{implicitly-returns-nil} (int index) -> E
1215
1215
 
1216
1216
  # <!--
1217
1217
  # rdoc-file=array.c
@@ -1225,9 +1225,9 @@ class Array[unchecked out Elem] < Object
1225
1225
  #
1226
1226
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
1227
1227
  #
1228
- def bsearch: () -> ::Enumerator[Elem, Elem?]
1229
- | () { (Elem) -> (true | false) } -> Elem?
1230
- | () { (Elem) -> ::Integer } -> Elem?
1228
+ def bsearch: () -> ::Enumerator[E, E?]
1229
+ | () { (E) -> (true | false) } -> E?
1230
+ | () { (E) -> ::Integer } -> E?
1231
1231
 
1232
1232
  # <!--
1233
1233
  # rdoc-file=array.c
@@ -1241,8 +1241,8 @@ class Array[unchecked out Elem] < Object
1241
1241
  #
1242
1242
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
1243
1243
  #
1244
- def bsearch_index: () { (Elem) -> (true | false) } -> ::Integer?
1245
- | () { (Elem) -> ::Integer } -> ::Integer?
1244
+ def bsearch_index: () { (E) -> (true | false) } -> ::Integer?
1245
+ | () { (E) -> ::Integer } -> ::Integer?
1246
1246
 
1247
1247
  # <!--
1248
1248
  # rdoc-file=array.c
@@ -1276,8 +1276,8 @@ class Array[unchecked out Elem] < Object
1276
1276
  # Related: #collect!; see also [Methods for
1277
1277
  # Converting](rdoc-ref:Array@Methods+for+Converting).
1278
1278
  #
1279
- def collect: [U] () { (Elem item) -> U } -> ::Array[U]
1280
- | () -> ::Enumerator[Elem, ::Array[untyped]]
1279
+ def collect: [U] () { (E item) -> U } -> ::Array[U]
1280
+ | () -> ::Enumerator[E, ::Array[untyped]]
1281
1281
 
1282
1282
  # <!--
1283
1283
  # rdoc-file=array.c
@@ -1297,8 +1297,8 @@ class Array[unchecked out Elem] < Object
1297
1297
  # Related: #collect; see also [Methods for
1298
1298
  # Converting](rdoc-ref:Array@Methods+for+Converting).
1299
1299
  #
1300
- def collect!: () { (Elem item) -> Elem } -> self
1301
- | () -> ::Enumerator[Elem, self]
1300
+ def collect!: () { (E item) -> E } -> self
1301
+ | () -> ::Enumerator[E, self]
1302
1302
 
1303
1303
  # <!--
1304
1304
  # rdoc-file=array.c
@@ -1342,8 +1342,8 @@ class Array[unchecked out Elem] < Object
1342
1342
  # Related: Array#permutation; see also [Methods for
1343
1343
  # Iterating](rdoc-ref:Array@Methods+for+Iterating).
1344
1344
  #
1345
- def combination: (int n) { (::Array[Elem]) -> void } -> self
1346
- | (int n) -> ::Enumerator[::Array[Elem], self]
1345
+ def combination: (int n) { (::Array[E]) -> void } -> self
1346
+ | (int n) -> ::Enumerator[::Array[E], self]
1347
1347
 
1348
1348
  # <!--
1349
1349
  # rdoc-file=array.c
@@ -1358,7 +1358,7 @@ class Array[unchecked out Elem] < Object
1358
1358
  # Related: Array#compact!; see also [Methods for
1359
1359
  # Deleting](rdoc-ref:Array@Methods+for+Deleting).
1360
1360
  #
1361
- def compact: () -> ::Array[Elem]
1361
+ def compact: () -> ::Array[E]
1362
1362
 
1363
1363
  # <!--
1364
1364
  # rdoc-file=array.c
@@ -1389,7 +1389,7 @@ class Array[unchecked out Elem] < Object
1389
1389
  #
1390
1390
  # Related: see [Methods for Assigning](rdoc-ref:Array@Methods+for+Assigning).
1391
1391
  #
1392
- def concat: (*::Array[Elem] arrays) -> self
1392
+ def concat: (*::Array[E] arrays) -> self
1393
1393
 
1394
1394
  # <!--
1395
1395
  # rdoc-file=array.c
@@ -1419,8 +1419,8 @@ class Array[unchecked out Elem] < Object
1419
1419
  # Related: see [Methods for Querying](rdoc-ref:Array@Methods+for+Querying).
1420
1420
  #
1421
1421
  def count: () -> ::Integer
1422
- | (Elem obj) -> ::Integer
1423
- | () { (Elem) -> boolish } -> ::Integer
1422
+ | (E obj) -> ::Integer
1423
+ | () { (E) -> boolish } -> ::Integer
1424
1424
 
1425
1425
  # <!--
1426
1426
  # rdoc-file=array.c
@@ -1454,8 +1454,8 @@ class Array[unchecked out Elem] < Object
1454
1454
  #
1455
1455
  # Related: see [Methods for Iterating](rdoc-ref:Array@Methods+for+Iterating).
1456
1456
  #
1457
- def cycle: (?int? n) { (Elem) -> void } -> nil
1458
- | (?int? n) -> ::Enumerator[Elem, nil]
1457
+ def cycle: (?int? n) { (E) -> void } -> nil
1458
+ | (?int? n) -> ::Enumerator[E, nil]
1459
1459
 
1460
1460
  # <!--
1461
1461
  # rdoc-file=array.c
@@ -1499,8 +1499,8 @@ class Array[unchecked out Elem] < Object
1499
1499
  #
1500
1500
  # Related: see [Methods for Deleting](rdoc-ref:Array@Methods+for+Deleting).
1501
1501
  #
1502
- def delete: (Elem obj) -> Elem?
1503
- | [S, T] (S obj) { (S) -> T } -> (Elem | T)
1502
+ def delete: (E obj) -> E?
1503
+ | [S, T] (S obj) { (S) -> T } -> (E | T)
1504
1504
 
1505
1505
  # <!--
1506
1506
  # rdoc-file=array.c
@@ -1530,7 +1530,7 @@ class Array[unchecked out Elem] < Object
1530
1530
  #
1531
1531
  # Related: see [Methods for Deleting](rdoc-ref:Array@Methods+for+Deleting).
1532
1532
  #
1533
- def delete_at: %a{implicitly-returns-nil} (int index) -> Elem
1533
+ def delete_at: %a{implicitly-returns-nil} (int index) -> E
1534
1534
 
1535
1535
  # <!--
1536
1536
  # rdoc-file=array.c
@@ -1547,8 +1547,8 @@ class Array[unchecked out Elem] < Object
1547
1547
  #
1548
1548
  # Related: see [Methods for Deleting](rdoc-ref:Array@Methods+for+Deleting).
1549
1549
  #
1550
- def delete_if: () { (Elem item) -> boolish } -> self
1551
- | () -> ::Enumerator[Elem, self]
1550
+ def delete_if: () { (E item) -> boolish } -> self
1551
+ | () -> ::Enumerator[E, self]
1552
1552
 
1553
1553
  # <!--
1554
1554
  # rdoc-file=array.c
@@ -1568,7 +1568,7 @@ class Array[unchecked out Elem] < Object
1568
1568
  # Related: Array#-; see also [Methods for
1569
1569
  # Combining](rdoc-ref:Array@Methods+for+Combining).
1570
1570
  #
1571
- def difference: (*::Array[untyped] arrays) -> ::Array[Elem]
1571
+ def difference: (*::Array[untyped] arrays) -> ::Array[E]
1572
1572
 
1573
1573
  # <!--
1574
1574
  # rdoc-file=array.c
@@ -1588,7 +1588,7 @@ class Array[unchecked out Elem] < Object
1588
1588
  #
1589
1589
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
1590
1590
  #
1591
- def dig: (int idx) -> Elem?
1591
+ def dig: (int idx) -> E?
1592
1592
  | (int idx, untyped, *untyped) -> untyped
1593
1593
 
1594
1594
  # <!--
@@ -1608,7 +1608,7 @@ class Array[unchecked out Elem] < Object
1608
1608
  #
1609
1609
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
1610
1610
  #
1611
- def drop: (int n) -> ::Array[Elem]
1611
+ def drop: (int n) -> ::Array[E]
1612
1612
 
1613
1613
  # <!--
1614
1614
  # rdoc-file=array.c
@@ -1627,8 +1627,8 @@ class Array[unchecked out Elem] < Object
1627
1627
  #
1628
1628
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
1629
1629
  #
1630
- def drop_while: () { (Elem obj) -> boolish } -> ::Array[Elem]
1631
- | () -> ::Enumerator[Elem, ::Array[Elem]]
1630
+ def drop_while: () { (E obj) -> boolish } -> ::Array[E]
1631
+ | () -> ::Enumerator[E, ::Array[E]]
1632
1632
 
1633
1633
  # <!--
1634
1634
  # rdoc-file=array.c
@@ -1661,8 +1661,8 @@ class Array[unchecked out Elem] < Object
1661
1661
  #
1662
1662
  # Related: see [Methods for Iterating](rdoc-ref:Array@Methods+for+Iterating).
1663
1663
  #
1664
- def each: () -> ::Enumerator[Elem, self]
1665
- | () { (Elem item) -> void } -> self
1664
+ def each: () -> ::Enumerator[E, self]
1665
+ | () { (E item) -> void } -> self
1666
1666
 
1667
1667
  # <!--
1668
1668
  # rdoc-file=array.c
@@ -1769,9 +1769,9 @@ class Array[unchecked out Elem] < Object
1769
1769
  #
1770
1770
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
1771
1771
  #
1772
- def fetch: (int index) -> Elem
1773
- | [T] (int index, T default) -> (Elem | T)
1774
- | [T] (int index) { (int index) -> T } -> (Elem | T)
1772
+ def fetch: (int index) -> E
1773
+ | [T] (int index, T default) -> (E | T)
1774
+ | [T] (int index) { (int index) -> T } -> (E | T)
1775
1775
 
1776
1776
  # <!--
1777
1777
  # rdoc-file=array.rb
@@ -1988,11 +1988,11 @@ class Array[unchecked out Elem] < Object
1988
1988
  #
1989
1989
  # Related: see [Methods for Assigning](rdoc-ref:Array@Methods+for+Assigning).
1990
1990
  #
1991
- def fill: (Elem obj) -> self
1992
- | (Elem obj, int? start, ?int? length) -> self
1993
- | (Elem obj, ::Range[::Integer] range) -> self
1994
- | (?int? start, ?int? length) { (::Integer index) -> Elem } -> self
1995
- | (::Range[::Integer] range) { (::Integer index) -> Elem } -> self
1991
+ def fill: (E obj) -> self
1992
+ | (E obj, int? start, ?int? length) -> self
1993
+ | (E obj, ::Range[::Integer] range) -> self
1994
+ | (?int? start, ?int? length) { (::Integer index) -> E } -> self
1995
+ | (::Range[::Integer] range) { (::Integer index) -> E } -> self
1996
1996
 
1997
1997
  # <!-- rdoc-file=array.c -->
1998
1998
  # With a block given, calls the block with each element of `self`; returns a new
@@ -2007,8 +2007,8 @@ class Array[unchecked out Elem] < Object
2007
2007
  #
2008
2008
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
2009
2009
  #
2010
- def filter: () { (Elem item) -> boolish } -> ::Array[Elem]
2011
- | () -> ::Enumerator[Elem, ::Array[Elem]]
2010
+ def filter: () { (E item) -> boolish } -> ::Array[E]
2011
+ | () -> ::Enumerator[E, ::Array[E]]
2012
2012
 
2013
2013
  # <!-- rdoc-file=array.c -->
2014
2014
  # With a block given, calls the block with each element of `self`; removes from
@@ -2025,8 +2025,8 @@ class Array[unchecked out Elem] < Object
2025
2025
  #
2026
2026
  # Related: see [Methods for Deleting](rdoc-ref:Array@Methods+for+Deleting).
2027
2027
  #
2028
- def filter!: () { (Elem item) -> boolish } -> self?
2029
- | () -> ::Enumerator[Elem, self?]
2028
+ def filter!: () { (E item) -> boolish } -> self?
2029
+ | () -> ::Enumerator[E, self?]
2030
2030
 
2031
2031
  # <!--
2032
2032
  # rdoc-file=array.c
@@ -2047,10 +2047,10 @@ class Array[unchecked out Elem] < Object
2047
2047
  #
2048
2048
  # With no block given, returns an Enumerator.
2049
2049
  #
2050
- def find: () { (Elem) -> boolish } -> Elem?
2051
- | () -> ::Enumerator[Elem, Elem?]
2052
- | [T] (Enumerable::_NotFound[T] ifnone) { (Elem) -> boolish } -> (Elem | T)
2053
- | [T] (Enumerable::_NotFound[T] ifnone) -> ::Enumerator[Elem, Elem | T]
2050
+ def find: () { (E) -> boolish } -> E?
2051
+ | () -> ::Enumerator[E, E?]
2052
+ | [T] (Enumerable::_NotFound[T] ifnone) { (E) -> boolish } -> (E | T)
2053
+ | [T] (Enumerable::_NotFound[T] ifnone) -> ::Enumerator[E, E | T]
2054
2054
 
2055
2055
  # <!--
2056
2056
  # rdoc-file=array.c
@@ -2084,8 +2084,8 @@ class Array[unchecked out Elem] < Object
2084
2084
  # Related: see [Methods for Querying](rdoc-ref:Array@Methods+for+Querying).
2085
2085
  #
2086
2086
  def find_index: (untyped obj) -> ::Integer?
2087
- | () { (Elem item) -> boolish } -> ::Integer?
2088
- | () -> ::Enumerator[Elem, ::Integer?]
2087
+ | () { (E item) -> boolish } -> ::Integer?
2088
+ | () -> ::Enumerator[E, ::Integer?]
2089
2089
 
2090
2090
  # <!--
2091
2091
  # rdoc-file=array.rb
@@ -2113,8 +2113,8 @@ class Array[unchecked out Elem] < Object
2113
2113
  #
2114
2114
  # Related: see [Methods for Querying](rdoc-ref:Array@Methods+for+Querying).
2115
2115
  #
2116
- def first: %a{implicitly-returns-nil} () -> Elem
2117
- | (int n) -> ::Array[Elem]
2116
+ def first: %a{implicitly-returns-nil} () -> E
2117
+ | (int n) -> ::Array[E]
2118
2118
 
2119
2119
  # <!--
2120
2120
  # rdoc-file=array.c
@@ -2278,7 +2278,7 @@ class Array[unchecked out Elem] < Object
2278
2278
  #
2279
2279
  # Related: see [Methods for Assigning](rdoc-ref:Array@Methods+for+Assigning).
2280
2280
  #
2281
- def insert: (int index, *Elem obj) -> self
2281
+ def insert: (int index, *E obj) -> self
2282
2282
 
2283
2283
  # <!--
2284
2284
  # rdoc-file=array.c
@@ -2331,7 +2331,7 @@ class Array[unchecked out Elem] < Object
2331
2331
  #
2332
2332
  # Related: see [Methods for Combining](rdoc-ref:Array@Methods+for+Combining).
2333
2333
  #
2334
- def intersection: (*::Array[untyped] | _ToAry[untyped] other_ary) -> ::Array[Elem]
2334
+ def intersection: (*::Array[untyped] | _ToAry[untyped] other_ary) -> ::Array[E]
2335
2335
 
2336
2336
  # <!--
2337
2337
  # rdoc-file=array.c
@@ -2380,8 +2380,8 @@ class Array[unchecked out Elem] < Object
2380
2380
  #
2381
2381
  # Related: see [Methods for Deleting](rdoc-ref:Array@Methods+for+Deleting).
2382
2382
  #
2383
- def keep_if: () { (Elem item) -> boolish } -> self
2384
- | () -> ::Enumerator[Elem, self]
2383
+ def keep_if: () { (E item) -> boolish } -> self
2384
+ | () -> ::Enumerator[E, self]
2385
2385
 
2386
2386
  # <!--
2387
2387
  # rdoc-file=array.rb
@@ -2408,8 +2408,8 @@ class Array[unchecked out Elem] < Object
2408
2408
  #
2409
2409
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
2410
2410
  #
2411
- def last: %a{implicitly-returns-nil} () -> Elem
2412
- | (int n) -> ::Array[Elem]
2411
+ def last: %a{implicitly-returns-nil} () -> E
2412
+ | (int n) -> ::Array[E]
2413
2413
 
2414
2414
  # <!--
2415
2415
  # rdoc-file=array.c
@@ -2502,10 +2502,10 @@ class Array[unchecked out Elem] < Object
2502
2502
  #
2503
2503
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
2504
2504
  #
2505
- def max: %a{implicitly-returns-nil} () -> Elem
2506
- | %a{implicitly-returns-nil} () { (Elem a, Elem b) -> ::Integer? } -> Elem
2507
- | (int n) -> ::Array[Elem]
2508
- | (int n) { (Elem a, Elem b) -> ::Integer? } -> ::Array[Elem]
2505
+ def max: %a{implicitly-returns-nil} () -> E
2506
+ | %a{implicitly-returns-nil} () { (E a, E b) -> ::Integer? } -> E
2507
+ | (int n) -> ::Array[E]
2508
+ | (int n) { (E a, E b) -> ::Integer? } -> ::Array[E]
2509
2509
 
2510
2510
  # <!--
2511
2511
  # rdoc-file=array.c
@@ -2579,8 +2579,8 @@ class Array[unchecked out Elem] < Object
2579
2579
  #
2580
2580
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
2581
2581
  #
2582
- def minmax: () -> [ Elem?, Elem? ]
2583
- | () { (Elem a, Elem b) -> ::Integer? } -> [ Elem?, Elem? ]
2582
+ def minmax: () -> [ E?, E? ]
2583
+ | () { (E a, E b) -> ::Integer? } -> [ E?, E? ]
2584
2584
 
2585
2585
  # <!--
2586
2586
  # rdoc-file=array.c
@@ -2704,8 +2704,8 @@ class Array[unchecked out Elem] < Object
2704
2704
  #
2705
2705
  # Related: [Methods for Iterating](rdoc-ref:Array@Methods+for+Iterating).
2706
2706
  #
2707
- def permutation: (?int n) -> ::Enumerator[::Array[Elem], ::Array[Elem]]
2708
- | (?int n) { (::Array[Elem] p) -> void } -> ::Array[Elem]
2707
+ def permutation: (?int n) -> ::Enumerator[::Array[E], ::Array[E]]
2708
+ | (?int n) { (::Array[E] p) -> void } -> ::Array[E]
2709
2709
 
2710
2710
  # <!--
2711
2711
  # rdoc-file=array.c
@@ -2736,8 +2736,8 @@ class Array[unchecked out Elem] < Object
2736
2736
  # Related: Array#push; see also [Methods for
2737
2737
  # Deleting](rdoc-ref:Array@Methods+for+Deleting).
2738
2738
  #
2739
- def pop: () -> Elem?
2740
- | (int n) -> ::Array[Elem]
2739
+ def pop: () -> E?
2740
+ | (int n) -> ::Array[E]
2741
2741
 
2742
2742
  # <!-- rdoc-file=array.c -->
2743
2743
  # Prepends the given `objects` to `self`:
@@ -2803,10 +2803,10 @@ class Array[unchecked out Elem] < Object
2803
2803
  #
2804
2804
  # Related: see [Methods for Combining](rdoc-ref:Array@Methods+for+Combining).
2805
2805
  #
2806
- def product: () -> ::Array[[ Elem ]]
2807
- | [X] (::Array[X] other_ary) -> ::Array[[ Elem, X ]]
2808
- | [X, Y] (::Array[X] other_ary1, ::Array[Y] other_ary2) -> ::Array[[ Elem, X, Y ]]
2809
- | [U] (*::Array[U] other_arys) -> ::Array[::Array[Elem | U]]
2806
+ def product: () -> ::Array[[ E ]]
2807
+ | [X] (::Array[X] other_ary) -> ::Array[[ E, X ]]
2808
+ | [X, Y] (::Array[X] other_ary1, ::Array[Y] other_ary2) -> ::Array[[ E, X, Y ]]
2809
+ | [U] (*::Array[U] other_arys) -> ::Array[::Array[E | U]]
2810
2810
 
2811
2811
  # <!--
2812
2812
  # rdoc-file=array.c
@@ -2825,7 +2825,7 @@ class Array[unchecked out Elem] < Object
2825
2825
  #
2826
2826
  # Related: see [Methods for Assigning](rdoc-ref:Array@Methods+for+Assigning).
2827
2827
  #
2828
- def push: (*Elem obj) -> self
2828
+ def push: (*E obj) -> self
2829
2829
 
2830
2830
  # <!--
2831
2831
  # rdoc-file=array.c
@@ -2882,8 +2882,8 @@ class Array[unchecked out Elem] < Object
2882
2882
  #
2883
2883
  # Related: see [Methods for Deleting](rdoc-ref:Array@Methods+for+Deleting).
2884
2884
  #
2885
- def reject!: () { (Elem item) -> boolish } -> self?
2886
- | () -> ::Enumerator[Elem, self?]
2885
+ def reject!: () { (E item) -> boolish } -> self?
2886
+ | () -> ::Enumerator[E, self?]
2887
2887
 
2888
2888
  # <!--
2889
2889
  # rdoc-file=array.c
@@ -2922,8 +2922,8 @@ class Array[unchecked out Elem] < Object
2922
2922
  #
2923
2923
  # Related: see [Methods for Combining](rdoc-ref:Array@Methods+for+Combining).
2924
2924
  #
2925
- def repeated_combination: (int n) { (::Array[Elem] c) -> void } -> self
2926
- | (int n) -> ::Enumerator[::Array[Elem], self]
2925
+ def repeated_combination: (int n) { (::Array[E] c) -> void } -> self
2926
+ | (int n) -> ::Enumerator[::Array[E], self]
2927
2927
 
2928
2928
  # <!--
2929
2929
  # rdoc-file=array.c
@@ -2962,8 +2962,8 @@ class Array[unchecked out Elem] < Object
2962
2962
  #
2963
2963
  # Related: see [Methods for Combining](rdoc-ref:Array@Methods+for+Combining).
2964
2964
  #
2965
- def repeated_permutation: (int n) { (::Array[Elem] p) -> void } -> self
2966
- | (int n) -> ::Enumerator[::Array[Elem], self]
2965
+ def repeated_permutation: (int n) { (::Array[E] p) -> void } -> self
2966
+ | (int n) -> ::Enumerator[::Array[E], self]
2967
2967
 
2968
2968
  # <!-- rdoc-file=array.c -->
2969
2969
  # Replaces the elements of `self` with the elements of `other_array`, which must
@@ -2976,7 +2976,7 @@ class Array[unchecked out Elem] < Object
2976
2976
  #
2977
2977
  # Related: see [Methods for Assigning](rdoc-ref:Array@Methods+for+Assigning).
2978
2978
  #
2979
- def replace: (::Array[Elem]) -> self
2979
+ def replace: (::Array[E]) -> self
2980
2980
 
2981
2981
  # <!--
2982
2982
  # rdoc-file=array.c
@@ -2988,7 +2988,7 @@ class Array[unchecked out Elem] < Object
2988
2988
  #
2989
2989
  # Related: see [Methods for Combining](rdoc-ref:Array@Methods+for+Combining).
2990
2990
  #
2991
- def reverse: () -> ::Array[Elem]
2991
+ def reverse: () -> ::Array[E]
2992
2992
 
2993
2993
  # <!--
2994
2994
  # rdoc-file=array.c
@@ -3002,7 +3002,7 @@ class Array[unchecked out Elem] < Object
3002
3002
  #
3003
3003
  # Related: see [Methods for Assigning](rdoc-ref:Array@Methods+for+Assigning).
3004
3004
  #
3005
- def reverse!: () -> ::Array[Elem]
3005
+ def reverse!: () -> ::Array[E]
3006
3006
 
3007
3007
  # <!--
3008
3008
  # rdoc-file=array.c
@@ -3026,8 +3026,8 @@ class Array[unchecked out Elem] < Object
3026
3026
  #
3027
3027
  # Related: see [Methods for Iterating](rdoc-ref:Array@Methods+for+Iterating).
3028
3028
  #
3029
- def reverse_each: () { (Elem item) -> void } -> self
3030
- | () -> ::Enumerator[Elem, self]
3029
+ def reverse_each: () { (E item) -> void } -> self
3030
+ | () -> ::Enumerator[E, self]
3031
3031
 
3032
3032
  # <!--
3033
3033
  # rdoc-file=array.c
@@ -3049,10 +3049,10 @@ class Array[unchecked out Elem] < Object
3049
3049
  #
3050
3050
  # With no block given, returns an Enumerator.
3051
3051
  #
3052
- def rfind: () { (Elem) -> boolish } -> Elem?
3053
- | () -> ::Enumerator[Elem, Elem?]
3054
- | [T] (Enumerable::_NotFound[T] ifnone) { (Elem) -> boolish } -> (Elem | T)
3055
- | [T] (Enumerable::_NotFound[T] ifnone) -> ::Enumerator[Elem, Elem | T]
3052
+ def rfind: () { (E) -> boolish } -> E?
3053
+ | () -> ::Enumerator[E, E?]
3054
+ | [T] (Enumerable::_NotFound[T] ifnone) { (E) -> boolish } -> (E | T)
3055
+ | [T] (Enumerable::_NotFound[T] ifnone) -> ::Enumerator[E, E | T]
3056
3056
 
3057
3057
  # <!--
3058
3058
  # rdoc-file=array.c
@@ -3084,8 +3084,8 @@ class Array[unchecked out Elem] < Object
3084
3084
  # Related: see [Methods for Querying](rdoc-ref:Array@Methods+for+Querying).
3085
3085
  #
3086
3086
  def rindex: (untyped obj) -> ::Integer?
3087
- | () { (Elem item) -> boolish } -> ::Integer?
3088
- | () -> ::Enumerator[Elem, ::Integer?]
3087
+ | () { (E item) -> boolish } -> ::Integer?
3088
+ | () -> ::Enumerator[E, ::Integer?]
3089
3089
 
3090
3090
  # <!--
3091
3091
  # rdoc-file=array.c
@@ -3120,7 +3120,7 @@ class Array[unchecked out Elem] < Object
3120
3120
  #
3121
3121
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
3122
3122
  #
3123
- def rotate: (?int count) -> ::Array[Elem]
3123
+ def rotate: (?int count) -> ::Array[E]
3124
3124
 
3125
3125
  # <!--
3126
3126
  # rdoc-file=array.c
@@ -3206,8 +3206,8 @@ class Array[unchecked out Elem] < Object
3206
3206
  #
3207
3207
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
3208
3208
  #
3209
- def sample: %a{implicitly-returns-nil} (?random: _Rand rng) -> Elem
3210
- | (int n, ?random: _Rand rng) -> ::Array[Elem]
3209
+ def sample: %a{implicitly-returns-nil} (?random: _Rand rng) -> E
3210
+ | (int n, ?random: _Rand rng) -> ::Array[E]
3211
3211
 
3212
3212
  # <!--
3213
3213
  # rdoc-file=array.c
@@ -3228,8 +3228,8 @@ class Array[unchecked out Elem] < Object
3228
3228
  #
3229
3229
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
3230
3230
  #
3231
- def select: () { (Elem item) -> boolish } -> ::Array[Elem]
3232
- | () -> ::Enumerator[Elem, ::Array[Elem]]
3231
+ def select: () { (E item) -> boolish } -> ::Array[E]
3232
+ | () -> ::Enumerator[E, ::Array[E]]
3233
3233
 
3234
3234
  # <!--
3235
3235
  # rdoc-file=array.c
@@ -3252,8 +3252,8 @@ class Array[unchecked out Elem] < Object
3252
3252
  #
3253
3253
  # Related: see [Methods for Deleting](rdoc-ref:Array@Methods+for+Deleting).
3254
3254
  #
3255
- def select!: () { (Elem item) -> boolish } -> self?
3256
- | () -> ::Enumerator[Elem, self?]
3255
+ def select!: () { (E item) -> boolish } -> self?
3256
+ | () -> ::Enumerator[E, self?]
3257
3257
 
3258
3258
  # <!--
3259
3259
  # rdoc-file=array.c
@@ -3291,8 +3291,8 @@ class Array[unchecked out Elem] < Object
3291
3291
  #
3292
3292
  # Related: see [Methods for Deleting](rdoc-ref:Array@Methods+for+Deleting).
3293
3293
  #
3294
- def shift: %a{implicitly-returns-nil} () -> Elem
3295
- | (int n) -> ::Array[Elem]
3294
+ def shift: %a{implicitly-returns-nil} () -> E
3295
+ | (int n) -> ::Array[E]
3296
3296
 
3297
3297
  # <!--
3298
3298
  # rdoc-file=array.rb
@@ -3316,7 +3316,7 @@ class Array[unchecked out Elem] < Object
3316
3316
  #
3317
3317
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
3318
3318
  #
3319
- def shuffle: (?random: _Rand rng) -> ::Array[Elem]
3319
+ def shuffle: (?random: _Rand rng) -> ::Array[E]
3320
3320
 
3321
3321
  # <!--
3322
3322
  # rdoc-file=array.rb
@@ -3464,9 +3464,9 @@ class Array[unchecked out Elem] < Object
3464
3464
  #
3465
3465
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
3466
3466
  #
3467
- def slice: %a{implicitly-returns-nil} (int index) -> Elem
3468
- | (int start, int length) -> ::Array[Elem]?
3469
- | (::Range[::Integer] range) -> ::Array[Elem]?
3467
+ def slice: %a{implicitly-returns-nil} (int index) -> E
3468
+ | (int start, int length) -> ::Array[E]?
3469
+ | (::Range[::Integer] range) -> ::Array[E]?
3470
3470
 
3471
3471
  # <!--
3472
3472
  # rdoc-file=array.c
@@ -3558,9 +3558,9 @@ class Array[unchecked out Elem] < Object
3558
3558
  #
3559
3559
  # Related: see [Methods for Deleting](rdoc-ref:Array@Methods+for+Deleting).
3560
3560
  #
3561
- def slice!: %a{implicitly-returns-nil} (int index) -> Elem
3562
- | (int start, int length) -> ::Array[Elem]?
3563
- | (::Range[::Integer] range) -> ::Array[Elem]?
3561
+ def slice!: %a{implicitly-returns-nil} (int index) -> E
3562
+ | (int start, int length) -> ::Array[E]?
3563
+ | (::Range[::Integer] range) -> ::Array[E]?
3564
3564
 
3565
3565
  # <!--
3566
3566
  # rdoc-file=array.c
@@ -3595,8 +3595,8 @@ class Array[unchecked out Elem] < Object
3595
3595
  #
3596
3596
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
3597
3597
  #
3598
- def sort: () -> ::Array[Elem]
3599
- | () { (Elem a, Elem b) -> ::Integer } -> ::Array[Elem]
3598
+ def sort: () -> ::Array[E]
3599
+ | () { (E a, E b) -> ::Integer } -> ::Array[E]
3600
3600
 
3601
3601
  # <!--
3602
3602
  # rdoc-file=array.c
@@ -3608,7 +3608,7 @@ class Array[unchecked out Elem] < Object
3608
3608
  # Related: see [Methods for Assigning](rdoc-ref:Array@Methods+for+Assigning).
3609
3609
  #
3610
3610
  def sort!: () -> self
3611
- | () { (Elem a, Elem b) -> ::Integer } -> self
3611
+ | () { (E a, E b) -> ::Integer } -> self
3612
3612
 
3613
3613
  # <!--
3614
3614
  # rdoc-file=array.c
@@ -3631,8 +3631,8 @@ class Array[unchecked out Elem] < Object
3631
3631
  #
3632
3632
  # Related: see [Methods for Assigning](rdoc-ref:Array@Methods+for+Assigning).
3633
3633
  #
3634
- def sort_by!: [U] () { (Elem obj) -> U } -> ::Array[Elem]
3635
- | () -> ::Enumerator[Elem, ::Array[Elem]]
3634
+ def sort_by!: [U] () { (E obj) -> U } -> ::Array[E]
3635
+ | () -> ::Enumerator[E, ::Array[E]]
3636
3636
 
3637
3637
  # <!--
3638
3638
  # rdoc-file=array.c
@@ -3677,7 +3677,7 @@ class Array[unchecked out Elem] < Object
3677
3677
  # as Integer#+.
3678
3678
  #
3679
3679
  def sum: (?untyped init) -> untyped
3680
- | (?untyped init) { (Elem e) -> untyped } -> untyped
3680
+ | (?untyped init) { (E e) -> untyped } -> untyped
3681
3681
 
3682
3682
  # <!--
3683
3683
  # rdoc-file=array.c
@@ -3694,7 +3694,7 @@ class Array[unchecked out Elem] < Object
3694
3694
  #
3695
3695
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
3696
3696
  #
3697
- def take: (int n) -> ::Array[Elem]
3697
+ def take: (int n) -> ::Array[E]
3698
3698
 
3699
3699
  # <!--
3700
3700
  # rdoc-file=array.c
@@ -3716,8 +3716,8 @@ class Array[unchecked out Elem] < Object
3716
3716
  #
3717
3717
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
3718
3718
  #
3719
- def take_while: () { (Elem obj) -> boolish } -> ::Array[Elem]
3720
- | () -> ::Enumerator[Elem, ::Array[Elem]]
3719
+ def take_while: () { (E obj) -> boolish } -> ::Array[E]
3720
+ | () -> ::Enumerator[E, ::Array[E]]
3721
3721
 
3722
3722
  # <!--
3723
3723
  # rdoc-file=array.c
@@ -3735,7 +3735,7 @@ class Array[unchecked out Elem] < Object
3735
3735
  #
3736
3736
  # Related: see [Methods for Converting](rdoc-ref:Array@Methods+for+Converting).
3737
3737
  #
3738
- def to_a: () -> ::Array[Elem]
3738
+ def to_a: () -> ::Array[E]
3739
3739
 
3740
3740
  # <!--
3741
3741
  # rdoc-file=array.c
@@ -3770,7 +3770,7 @@ class Array[unchecked out Elem] < Object
3770
3770
  # Related: see [Methods for Converting](rdoc-ref:Array@Methods+for+Converting).
3771
3771
  #
3772
3772
  def to_h: () -> Hash[untyped, untyped]
3773
- | [T, S] () { (Elem) -> [ T, S ] } -> Hash[T, S]
3773
+ | [T, S] () { (E) -> [ T, S ] } -> Hash[T, S]
3774
3774
 
3775
3775
  # <!-- rdoc-file=array.c -->
3776
3776
  # Returns the new string formed by calling method <code>#inspect</code> on each
@@ -3820,7 +3820,7 @@ class Array[unchecked out Elem] < Object
3820
3820
  #
3821
3821
  # Related: see [Methods for Combining](rdoc-ref:Array@Methods+for+Combining).
3822
3822
  #
3823
- def union: [T] (*::Array[T] other_arys) -> ::Array[T | Elem]
3823
+ def union: [T] (*::Array[T] other_arys) -> ::Array[T | E]
3824
3824
 
3825
3825
  # <!--
3826
3826
  # rdoc-file=array.c
@@ -3846,8 +3846,8 @@ class Array[unchecked out Elem] < Object
3846
3846
  #
3847
3847
  # Related: [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
3848
3848
  #
3849
- def uniq: () -> ::Array[Elem]
3850
- | () { (Elem item) -> untyped } -> ::Array[Elem]
3849
+ def uniq: () -> ::Array[E]
3850
+ | () { (E item) -> untyped } -> ::Array[E]
3851
3851
 
3852
3852
  # <!--
3853
3853
  # rdoc-file=array.c
@@ -3876,7 +3876,7 @@ class Array[unchecked out Elem] < Object
3876
3876
  # Related: see [Methods for Deleting](rdoc-ref:Array@Methods+for+Deleting).
3877
3877
  #
3878
3878
  def uniq!: () -> self?
3879
- | () { (Elem) -> untyped } -> self?
3879
+ | () { (E) -> untyped } -> self?
3880
3880
 
3881
3881
  # <!--
3882
3882
  # rdoc-file=array.c
@@ -3891,7 +3891,7 @@ class Array[unchecked out Elem] < Object
3891
3891
  # Related: Array#shift; see also [Methods for
3892
3892
  # Assigning](rdoc-ref:Array@Methods+for+Assigning).
3893
3893
  #
3894
- def unshift: (*Elem obj) -> self
3894
+ def unshift: (*E obj) -> self
3895
3895
 
3896
3896
  # <!--
3897
3897
  # rdoc-file=array.c
@@ -3999,7 +3999,7 @@ class Array[unchecked out Elem] < Object
3999
3999
  #
4000
4000
  # Related: see [Methods for Fetching](rdoc-ref:Array@Methods+for+Fetching).
4001
4001
  #
4002
- def values_at: (*int | ::Range[::Integer] selector) -> ::Array[Elem?]
4002
+ def values_at: (*int | ::Range[::Integer] selector) -> ::Array[E?]
4003
4003
 
4004
4004
  # <!--
4005
4005
  # rdoc-file=array.c
@@ -4093,9 +4093,9 @@ class Array[unchecked out Elem] < Object
4093
4093
  #
4094
4094
  # Related: see [Methods for Converting](rdoc-ref:Array@Methods+for+Converting).
4095
4095
  #
4096
- def zip: [U] (_Each[U] arg) -> Array[[ Elem, U? ]]
4096
+ def zip: [U] (_Each[U] arg) -> Array[[ E, U? ]]
4097
4097
  | (_Each[untyped] arg, *_Each[untyped] args) -> Array[Array[untyped]]
4098
- | [U] (_Each[U] arg) { ([ Elem, U? ]) -> void } -> nil
4098
+ | [U] (_Each[U] arg) { ([ E, U? ]) -> void } -> nil
4099
4099
  | (_Each[untyped] arg, *_Each[untyped] args) { (Array[untyped]) -> void } -> nil
4100
4100
 
4101
4101
  # <!--
@@ -4111,7 +4111,7 @@ class Array[unchecked out Elem] < Object
4111
4111
  #
4112
4112
  # Related: see [Methods for Combining](rdoc-ref:Array@Methods+for+Combining).
4113
4113
  #
4114
- def |: [T] (::Array[T] other_ary) -> ::Array[Elem | T]
4114
+ def |: [T] (::Array[T] other_ary) -> ::Array[E | T]
4115
4115
 
4116
4116
  private
4117
4117