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/enumerator.rbs CHANGED
@@ -125,14 +125,14 @@
125
125
  # puts ext_each(o.to_enum) {|*x| puts x; [:b, *x] }
126
126
  # # => [], [:b], [1], [:b, 1], [1, 2], [:b, 1, 2], 3
127
127
  #
128
- class Enumerator[unchecked out Elem, out Return = void] < Object
129
- include Enumerable[Elem]
128
+ class Enumerator[unchecked out E, out R = void] < Object
129
+ include Enumerable[E]
130
130
 
131
131
  # A convenience interface for `each` with optional block
132
132
  #
133
- interface _Each[out E, out R]
134
- def each: () { (E) -> void } -> R
135
- | () -> Enumerator[E, R]
133
+ interface _Each[out T, out R]
134
+ def each: () { (T) -> void } -> R
135
+ | () -> Enumerator[T, R]
136
136
  end
137
137
 
138
138
  # <!--
@@ -211,7 +211,7 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
211
211
  # When a block is given, calls the block with each N-element array generated and
212
212
  # returns `nil`.
213
213
  #
214
- def self.product: [Elem] (*_EachEntry[Elem]) -> Product[Elem]
214
+ def self.product: [E] (*_EachEntry[E]) -> Product[E]
215
215
 
216
216
  # <!--
217
217
  # rdoc-file=enumerator.c
@@ -248,7 +248,7 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
248
248
  # enum.each(:y, :z).equal?(enum) #=> false
249
249
  # enum.each(:y, :z) { |elm| elm } #=> :method_returned
250
250
  #
251
- def each: () { (Elem arg0) -> untyped } -> Return
251
+ def each: () { (E arg0) -> untyped } -> R
252
252
  | () -> self
253
253
 
254
254
  # <!--
@@ -296,7 +296,7 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
296
296
  # e.next # (7)
297
297
  # # (10)
298
298
  #
299
- def feed: (Elem arg0) -> NilClass
299
+ def feed: (E arg0) -> NilClass
300
300
 
301
301
  # <!--
302
302
  # rdoc-file=enumerator.c
@@ -322,7 +322,7 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
322
322
  # lazy fashion (see Enumerator#size). It can either be a value or a callable
323
323
  # object.
324
324
  #
325
- def initialize: (?Integer arg0) { (Enumerator::Yielder arg0) -> Return } -> void
325
+ def initialize: (?Integer arg0) { (Enumerator::Yielder arg0) -> R } -> void
326
326
 
327
327
  # <!--
328
328
  # rdoc-file=enumerator.c
@@ -350,7 +350,7 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
350
350
  #
351
351
  # See class-level notes about external iterators.
352
352
  #
353
- def next: () -> Elem
353
+ def next: () -> E
354
354
 
355
355
  # <!--
356
356
  # rdoc-file=enumerator.c
@@ -394,7 +394,7 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
394
394
  # # yield nil [nil] nil
395
395
  # # yield [1, 2] [[1, 2]] [1, 2]
396
396
  #
397
- def next_values: () -> ::Array[Elem]
397
+ def next_values: () -> ::Array[E]
398
398
 
399
399
  # <!--
400
400
  # rdoc-file=enumerator.c
@@ -418,7 +418,7 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
418
418
  # p e.next #=> 3
419
419
  # p e.peek #raises StopIteration
420
420
  #
421
- def peek: () -> Elem
421
+ def peek: () -> E
422
422
 
423
423
  # <!--
424
424
  # rdoc-file=enumerator.c
@@ -448,7 +448,7 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
448
448
  # e.next
449
449
  # p e.peek_values # raises StopIteration
450
450
  #
451
- def peek_values: () -> ::Array[Elem]
451
+ def peek_values: () -> ::Array[E]
452
452
 
453
453
  # <!--
454
454
  # rdoc-file=enumerator.c
@@ -501,7 +501,7 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
501
501
  # e = (1..3).each + [4, 5]
502
502
  # e.to_a #=> [1, 2, 3, 4, 5]
503
503
  #
504
- def +: [Elem2] (::_Each[Elem2]) -> ::Enumerator::Chain[Elem | Elem2]
504
+ def +: [Elem2] (::_Each[Elem2]) -> ::Enumerator::Chain[E | Elem2]
505
505
 
506
506
  # <!--
507
507
  # rdoc-file=enumerator.c
@@ -515,8 +515,8 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
515
515
  # `offset`
516
516
  # : the starting index to use
517
517
  #
518
- def with_index: (?Integer offset) { (Elem arg0, Integer arg1) -> untyped } -> Return
519
- | (?Integer offset) -> ::Enumerator[[ Elem, Integer ], Return]
518
+ def with_index: (?Integer offset) { (E arg0, Integer arg1) -> untyped } -> R
519
+ | (?Integer offset) -> ::Enumerator[[ E, Integer ], R]
520
520
 
521
521
  # <!-- rdoc-file=enumerator.c -->
522
522
  # Iterates the given block for each element with an arbitrary object, `obj`, and
@@ -541,17 +541,17 @@ class Enumerator[unchecked out Elem, out Return = void] < Object
541
541
  # # => foo: 1
542
542
  # # => foo: 2
543
543
  #
544
- def with_object: [U] (U obj) { (Elem, U obj) -> untyped } -> U
545
- | [U] (U obj) -> ::Enumerator[[ Elem, U ], U]
544
+ def with_object: [U] (U obj) { (E, U obj) -> untyped } -> U
545
+ | [U] (U obj) -> ::Enumerator[[ E, U ], U]
546
546
  end
547
547
 
548
548
  # <!-- rdoc-file=enumerator.c -->
549
549
  # Generator
550
550
  #
551
- class Enumerator::Generator[out Elem] < Object
552
- include Enumerable[Elem]
551
+ class Enumerator::Generator[out E] < Object
552
+ include Enumerable[E]
553
553
 
554
- def each: () { (Elem) -> void } -> void
554
+ def each: () { (E) -> void } -> void
555
555
  end
556
556
 
557
557
  # <!-- rdoc-file=enumerator.c -->
@@ -620,7 +620,7 @@ end
620
620
  # # This returns an array of items like a normal enumerator does.
621
621
  # all_checked = active_items.select(&:checked)
622
622
  #
623
- class Enumerator::Lazy[out Elem, out Return = void] < Enumerator[Elem, Return]
623
+ class Enumerator::Lazy[out E, out R = void] < Enumerator[E, R]
624
624
  # <!-- rdoc-file=enumerator.c -->
625
625
  # Expands `lazy` enumerator to an array. See Enumerable#to_a.
626
626
  #
@@ -632,7 +632,7 @@ class Enumerator::Lazy[out Elem, out Return = void] < Enumerator[Elem, Return]
632
632
  # -->
633
633
  # Like Enumerable#compact, but chains operation to be lazy-evaluated.
634
634
  #
635
- def compact: () -> Enumerator::Lazy[Elem, Return]
635
+ def compact: () -> Enumerator::Lazy[E, R]
636
636
 
637
637
  # <!--
638
638
  # rdoc-file=enumerator.c
@@ -640,7 +640,7 @@ class Enumerator::Lazy[out Elem, out Return = void] < Enumerator[Elem, Return]
640
640
  # -->
641
641
  # Returns a non-lazy Enumerator converted from the lazy enumerator.
642
642
  #
643
- def eager: () -> ::Enumerator[Elem, Return]
643
+ def eager: () -> ::Enumerator[E, R]
644
644
  end
645
645
 
646
646
  # <!-- rdoc-file=enumerator.c -->
@@ -675,7 +675,7 @@ end
675
675
  #
676
676
  # This type of objects can be created by Enumerable#chain and Enumerator#+.
677
677
  #
678
- class Enumerator::Chain[out Elem] < Enumerator[Elem, void]
678
+ class Enumerator::Chain[out E] < Enumerator[E, void]
679
679
  # <!--
680
680
  # rdoc-file=enumerator.c
681
681
  # - Enumerator::Chain.new(*enums) -> enum
@@ -687,7 +687,7 @@ class Enumerator::Chain[out Elem] < Enumerator[Elem, void]
687
687
  # e.to_a #=> [1, 2, 3, 4, 5]
688
688
  # e.size #=> 5
689
689
  #
690
- def initialize: (*_Each[Elem] enums) -> void
690
+ def initialize: (*_Each[E] enums) -> void
691
691
 
692
692
  # <!--
693
693
  # rdoc-file=enumerator.c
@@ -700,6 +700,6 @@ class Enumerator::Chain[out Elem] < Enumerator[Elem, void]
700
700
  #
701
701
  # If no block is given, returns an enumerator.
702
702
  #
703
- def each: () { (Elem) -> void } -> self
704
- | () -> Enumerator[Elem, self]
703
+ def each: () { (E) -> void } -> self
704
+ | () -> Enumerator[E, self]
705
705
  end