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/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
|
|
129
|
-
include Enumerable[
|
|
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
|
|
134
|
-
def each: () { (
|
|
135
|
-
| () -> Enumerator[
|
|
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: [
|
|
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: () { (
|
|
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: (
|
|
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) ->
|
|
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: () ->
|
|
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[
|
|
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: () ->
|
|
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[
|
|
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[
|
|
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) { (
|
|
519
|
-
| (?Integer offset) -> ::Enumerator[[
|
|
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) { (
|
|
545
|
-
| [U] (U obj) -> ::Enumerator[[
|
|
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
|
|
552
|
-
include Enumerable[
|
|
551
|
+
class Enumerator::Generator[out E] < Object
|
|
552
|
+
include Enumerable[E]
|
|
553
553
|
|
|
554
|
-
def each: () { (
|
|
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
|
|
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[
|
|
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[
|
|
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
|
|
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[
|
|
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: () { (
|
|
704
|
-
| () -> Enumerator[
|
|
703
|
+
def each: () { (E) -> void } -> self
|
|
704
|
+
| () -> Enumerator[E, self]
|
|
705
705
|
end
|