rbs 3.9.4 → 4.1.1
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/.clang-format +75 -0
- data/.clangd +2 -0
- data/.dockerignore +37 -0
- data/.github/dependabot.yml +16 -14
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +66 -0
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/jruby.yml +79 -0
- data/.github/workflows/release-gems.yml +164 -0
- data/.github/workflows/ruby.yml +84 -30
- data/.github/workflows/rust.yml +186 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +5 -2
- data/.github/workflows/wasm.yml +55 -0
- data/.github/workflows/windows.yml +9 -3
- data/.gitignore +16 -0
- data/.rubocop.yml +2 -2
- data/CHANGELOG.md +430 -0
- data/Dockerfile.jruby +53 -0
- data/README.md +41 -4
- data/Rakefile +777 -60
- data/Steepfile +11 -0
- data/config.yml +660 -62
- data/core/array.rbs +541 -398
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +9 -8
- data/core/class.rbs +11 -8
- data/core/comparable.rbs +55 -34
- data/core/complex.rbs +104 -78
- data/core/dir.rbs +61 -49
- data/core/encoding.rbs +12 -15
- data/core/enumerable.rbs +297 -196
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator/product.rbs +5 -5
- data/core/enumerator.rbs +91 -28
- data/core/errno.rbs +11 -2
- data/core/errors.rbs +58 -29
- data/core/exception.rbs +13 -13
- data/core/fiber.rbs +74 -54
- data/core/file.rbs +260 -1151
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -116
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1151 -829
- data/core/integer.rbs +156 -195
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +220 -154
- data/core/kernel.rbs +239 -163
- data/core/marshal.rbs +4 -4
- data/core/match_data.rbs +16 -14
- data/core/math.rbs +107 -66
- data/core/method.rbs +69 -33
- data/core/module.rbs +302 -150
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +77 -63
- data/core/object.rbs +9 -11
- data/core/object_space/weak_key_map.rbs +7 -7
- data/core/object_space.rbs +30 -23
- data/core/pathname.rbs +1312 -0
- data/core/proc.rbs +95 -58
- data/core/process.rbs +222 -202
- data/core/ractor.rbs +364 -518
- data/core/random.rbs +21 -3
- data/core/range.rbs +181 -79
- data/core/rational.rbs +60 -89
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +63 -56
- data/core/rbs/unnamed/env_class.rbs +19 -14
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +11 -118
- data/core/regexp.rbs +258 -214
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +78 -34
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +6 -70
- data/core/rubygems/requirement.rbs +5 -15
- data/core/rubygems/rubygems.rbs +18 -81
- data/core/rubygems/specification.rbs +8 -0
- data/core/rubygems/version.rbs +2 -163
- data/core/set.rbs +493 -363
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +43 -42
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +139 -83
- data/core/time.rbs +81 -50
- data/core/trace_point.rbs +41 -35
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +24 -16
- data/core/warning.rbs +7 -7
- data/docs/CONTRIBUTING.md +2 -1
- data/docs/aliases.md +79 -0
- data/docs/collection.md +3 -3
- data/docs/config.md +171 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +0 -1
- data/docs/inline.md +634 -0
- data/docs/rbs_by_example.md +20 -20
- data/docs/release.md +151 -0
- data/docs/rust.md +96 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +48 -18
- data/docs/type_fingerprint.md +21 -0
- data/docs/wasm_serialization.md +80 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +1855 -0
- data/ext/rbs_extension/ast_translation.h +41 -0
- data/ext/rbs_extension/class_constants.c +187 -0
- data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +23 -1
- data/ext/rbs_extension/compat.h +10 -0
- data/ext/rbs_extension/extconf.rb +26 -1
- data/ext/rbs_extension/legacy_location.c +299 -0
- data/ext/rbs_extension/legacy_location.h +82 -0
- data/ext/rbs_extension/main.c +603 -23
- data/ext/rbs_extension/rbs_extension.h +6 -21
- data/ext/rbs_extension/rbs_string_bridging.c +9 -0
- data/ext/rbs_extension/rbs_string_bridging.h +24 -0
- data/include/rbs/ast.h +1047 -0
- data/include/rbs/defines.h +99 -0
- data/include/rbs/lexer.h +207 -0
- data/include/rbs/location.h +40 -0
- data/include/rbs/parser.h +153 -0
- data/include/rbs/serialize.h +39 -0
- data/include/rbs/string.h +47 -0
- data/include/rbs/util/rbs_allocator.h +59 -0
- data/include/rbs/util/rbs_assert.h +20 -0
- data/include/rbs/util/rbs_buffer.h +83 -0
- data/include/rbs/util/rbs_constant_pool.h +6 -70
- data/include/rbs/util/rbs_encoding.h +282 -0
- data/include/rbs/util/rbs_unescape.h +24 -0
- data/include/rbs.h +9 -2
- data/lib/rbs/annotate/formatter.rb +3 -13
- data/lib/rbs/annotate/rdoc_annotator.rb +30 -32
- data/lib/rbs/annotate/rdoc_source.rb +1 -1
- data/lib/rbs/ast/annotation.rb +1 -1
- data/lib/rbs/ast/comment.rb +1 -1
- data/lib/rbs/ast/declarations.rb +10 -10
- data/lib/rbs/ast/members.rb +14 -14
- data/lib/rbs/ast/ruby/annotations.rb +451 -0
- data/lib/rbs/ast/ruby/comment_block.rb +247 -0
- data/lib/rbs/ast/ruby/declarations.rb +291 -0
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/lib/rbs/ast/ruby/members.rb +762 -0
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +142 -20
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +63 -126
- data/lib/rbs/cli.rb +59 -29
- data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
- data/lib/rbs/collection/sources/git.rb +7 -0
- data/lib/rbs/definition.rb +6 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +121 -65
- data/lib/rbs/definition_builder/method_builder.rb +74 -33
- data/lib/rbs/definition_builder.rb +177 -20
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment/class_entry.rb +69 -0
- data/lib/rbs/environment/module_entry.rb +66 -0
- data/lib/rbs/environment.rb +410 -215
- data/lib/rbs/environment_loader.rb +2 -8
- data/lib/rbs/errors.rb +31 -21
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +568 -0
- data/lib/rbs/location_aux.rb +36 -4
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/namespace.rb +47 -18
- data/lib/rbs/parser_aux.rb +37 -7
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +3 -28
- data/lib/rbs/prototype/rbi.rb +196 -45
- data/lib/rbs/prototype/runtime.rb +12 -2
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +120 -44
- data/lib/rbs/rewriter.rb +70 -0
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/subtractor.rb +7 -4
- data/lib/rbs/test/type_check.rb +25 -3
- data/lib/rbs/type_name.rb +34 -21
- data/lib/rbs/types.rb +91 -79
- data/lib/rbs/unit_test/convertibles.rb +1 -0
- data/lib/rbs/unit_test/type_assertions.rb +44 -8
- data/lib/rbs/validator.rb +2 -2
- 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 +196 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs.rb +25 -2
- data/lib/rbs_jars.rb +39 -0
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +8 -3
- data/rbs.gemspec +37 -5
- data/schema/typeParam.json +17 -1
- data/sig/ancestor_builder.rbs +1 -1
- data/sig/annotate/formatter.rbs +2 -2
- data/sig/annotate/rdoc_annotater.rbs +13 -10
- data/sig/ast/ruby/annotations.rbs +470 -0
- data/sig/ast/ruby/comment_block.rbs +127 -0
- data/sig/ast/ruby/declarations.rbs +158 -0
- data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
- data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
- data/sig/ast/ruby/members.rbs +198 -0
- data/sig/buffer.rbs +81 -5
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/collection/config/lockfile_generator.rbs +2 -0
- data/sig/definition.rbs +6 -0
- data/sig/definition_builder.rbs +3 -1
- data/sig/environment/class_entry.rbs +50 -0
- data/sig/environment/module_entry.rbs +50 -0
- data/sig/environment.rbs +94 -87
- data/sig/errors.rbs +26 -20
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +126 -0
- data/sig/location.rbs +32 -7
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -2
- data/sig/method_builder.rbs +9 -4
- data/sig/namespace.rbs +20 -5
- data/sig/parser.rbs +77 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/prototype/rbi.rbs +33 -4
- data/sig/resolver/type_name_resolver.rbs +36 -10
- data/sig/rewriter.rbs +45 -0
- data/sig/source.rbs +48 -0
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +15 -5
- data/sig/types.rbs +10 -8
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +15 -0
- data/sig/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/src/ast.c +1628 -0
- data/src/lexer.c +3221 -0
- data/src/lexer.re +155 -0
- data/src/lexstate.c +221 -0
- data/src/location.c +31 -0
- data/src/parser.c +4258 -0
- data/src/serialize.c +958 -0
- data/src/string.c +41 -0
- data/src/util/rbs_allocator.c +171 -0
- data/src/util/rbs_assert.c +19 -0
- data/src/util/rbs_buffer.c +54 -0
- data/src/util/rbs_constant_pool.c +18 -92
- data/src/util/rbs_encoding.c +21308 -0
- data/src/util/rbs_unescape.c +167 -0
- data/stdlib/abbrev/0/array.rbs +1 -1
- data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
- data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
- data/stdlib/cgi/0/core.rbs +9 -393
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +7 -4
- data/stdlib/csv/0/csv.rbs +5 -5
- data/stdlib/date/0/date.rbs +92 -79
- data/stdlib/date/0/date_time.rbs +25 -24
- data/stdlib/delegate/0/delegator.rbs +11 -7
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/digest/0/digest.rbs +117 -1
- data/stdlib/erb/0/erb.rbs +748 -347
- data/stdlib/etc/0/etc.rbs +73 -54
- data/stdlib/fileutils/0/fileutils.rbs +179 -160
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/ipaddr/0/ipaddr.rbs +0 -5
- data/stdlib/json/0/json.rbs +232 -185
- data/stdlib/monitor/0/monitor.rbs +5 -5
- data/stdlib/net-http/0/net-http.rbs +162 -134
- data/stdlib/objspace/0/objspace.rbs +17 -34
- data/stdlib/open-uri/0/open-uri.rbs +48 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +521 -397
- data/stdlib/optparse/0/optparse.rbs +26 -17
- data/stdlib/pathname/0/pathname.rbs +11 -1381
- data/stdlib/pp/0/pp.rbs +9 -8
- data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
- data/stdlib/pstore/0/pstore.rbs +35 -30
- data/stdlib/psych/0/psych.rbs +65 -12
- data/stdlib/psych/0/store.rbs +2 -4
- data/stdlib/pty/0/pty.rbs +9 -6
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +4 -3
- data/stdlib/rdoc/0/comment.rbs +2 -0
- data/stdlib/rdoc/0/options.rbs +76 -0
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/rdoc.rbs +7 -5
- data/stdlib/rdoc/0/store.rbs +2 -2
- data/stdlib/resolv/0/resolv.rbs +26 -69
- data/stdlib/ripper/0/ripper.rbs +25 -19
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -20
- data/stdlib/shellwords/0/shellwords.rbs +3 -3
- data/stdlib/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/addrinfo.rbs +9 -9
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +23 -10
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +11 -3
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +1209 -95
- data/stdlib/strscan/0/string_scanner.rbs +101 -80
- data/stdlib/tempfile/0/manifest.yaml +3 -0
- data/stdlib/tempfile/0/tempfile.rbs +25 -21
- data/stdlib/time/0/time.rbs +8 -6
- data/stdlib/timeout/0/timeout.rbs +58 -7
- data/stdlib/tsort/0/cyclic.rbs +4 -1
- data/stdlib/tsort/0/interfaces.rbs +8 -8
- data/stdlib/tsort/0/tsort.rbs +16 -15
- data/stdlib/uri/0/common.rbs +42 -20
- data/stdlib/uri/0/file.rbs +3 -3
- data/stdlib/uri/0/generic.rbs +21 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/ldap.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +3 -3
- data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
- data/stdlib/zlib/0/deflate.rbs +4 -3
- data/stdlib/zlib/0/gzip_reader.rbs +8 -8
- data/stdlib/zlib/0/gzip_writer.rbs +14 -12
- data/stdlib/zlib/0/inflate.rbs +1 -1
- data/stdlib/zlib/0/need_dict.rbs +1 -1
- data/wasm/README.md +60 -0
- data/wasm/rbs_wasm.c +423 -0
- metadata +131 -19
- data/ext/rbs_extension/lexer.c +0 -2728
- data/ext/rbs_extension/lexer.h +0 -179
- data/ext/rbs_extension/lexer.re +0 -147
- data/ext/rbs_extension/lexstate.c +0 -175
- data/ext/rbs_extension/location.c +0 -325
- data/ext/rbs_extension/location.h +0 -85
- data/ext/rbs_extension/parser.c +0 -2982
- data/ext/rbs_extension/parser.h +0 -18
- data/ext/rbs_extension/parserstate.c +0 -411
- data/ext/rbs_extension/parserstate.h +0 -163
- data/ext/rbs_extension/unescape.c +0 -32
- data/include/rbs/ruby_objs.h +0 -72
- data/src/constants.c +0 -153
- data/src/ruby_objs.c +0 -799
data/sig/rewriter.rbs
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
# Rewriter performs targeted character-range replacements on Buffer content.
|
|
3
|
+
#
|
|
4
|
+
# Unlike Writer which regenerates entire source from AST, Rewriter preserves
|
|
5
|
+
# everything outside the rewritten ranges, including non-documentation comments.
|
|
6
|
+
#
|
|
7
|
+
# Rewrite requests are buffered and applied all at once when `#string` is called.
|
|
8
|
+
#
|
|
9
|
+
class Rewriter
|
|
10
|
+
attr_reader buffer: Buffer
|
|
11
|
+
|
|
12
|
+
# Initialize with a toplevel buffer.
|
|
13
|
+
# Raises if the buffer has a parent (non-toplevel).
|
|
14
|
+
#
|
|
15
|
+
def initialize: (Buffer buffer) -> void
|
|
16
|
+
|
|
17
|
+
# Register a rewrite request for the given location.
|
|
18
|
+
#
|
|
19
|
+
def rewrite: (Location[untyped, untyped] location, String string) -> self
|
|
20
|
+
|
|
21
|
+
# Add a new comment before the earliest of the given locations.
|
|
22
|
+
#
|
|
23
|
+
def add_comment: (*Location[untyped, untyped] locations, content: String) -> self
|
|
24
|
+
|
|
25
|
+
# Replace an existing comment's content.
|
|
26
|
+
#
|
|
27
|
+
def replace_comment: (AST::Comment comment, content: String) -> self
|
|
28
|
+
|
|
29
|
+
# Delete an existing comment.
|
|
30
|
+
#
|
|
31
|
+
def delete_comment: (AST::Comment comment) -> self
|
|
32
|
+
|
|
33
|
+
# Apply all buffered rewrites and return the resulting string.
|
|
34
|
+
#
|
|
35
|
+
# Raises if any rewrite ranges overlap.
|
|
36
|
+
#
|
|
37
|
+
def string: () -> String
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def format_comment: (String content, String indent) -> String
|
|
42
|
+
|
|
43
|
+
@rewrites: Array[[Location[untyped, untyped], String]]
|
|
44
|
+
end
|
|
45
|
+
end
|
data/sig/source.rbs
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
module Source
|
|
3
|
+
type t = RBS | Ruby
|
|
4
|
+
|
|
5
|
+
class RBS
|
|
6
|
+
attr_reader buffer: Buffer
|
|
7
|
+
|
|
8
|
+
attr_reader directives: Array[AST::Directives::t]
|
|
9
|
+
|
|
10
|
+
attr_reader declarations: Array[AST::Declarations::t]
|
|
11
|
+
|
|
12
|
+
def initialize: (Buffer, Array[AST::Directives::t], Array[AST::Declarations::t]) -> void
|
|
13
|
+
|
|
14
|
+
# Enumerates defined type names in the source
|
|
15
|
+
#
|
|
16
|
+
# The order is undefined. Deduplicated per source object.
|
|
17
|
+
#
|
|
18
|
+
def each_type_name: () { (TypeName) -> void } -> void
|
|
19
|
+
| () -> Enumerator[TypeName]
|
|
20
|
+
|
|
21
|
+
private def each_declaration_type_name: (Set[TypeName], AST::Declarations::t) { (TypeName) -> void } -> void
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class Ruby
|
|
25
|
+
attr_reader buffer: Buffer
|
|
26
|
+
|
|
27
|
+
attr_reader prism_result: Prism::ParseResult
|
|
28
|
+
|
|
29
|
+
attr_reader declarations: Array[AST::Ruby::Declarations::t]
|
|
30
|
+
|
|
31
|
+
attr_reader diagnostics: Array[InlineParser::Diagnostic::t]
|
|
32
|
+
|
|
33
|
+
def initialize: (Buffer, Prism::ParseResult, Array[AST::Ruby::Declarations::t], Array[InlineParser::Diagnostic::t]) -> void
|
|
34
|
+
|
|
35
|
+
def each_type_name: () { (TypeName) -> void } -> void
|
|
36
|
+
| () -> Enumerator[TypeName]
|
|
37
|
+
|
|
38
|
+
private def each_declaration_type_name: (Set[TypeName], AST::Ruby::Declarations::t) { (TypeName) -> void } -> void
|
|
39
|
+
|
|
40
|
+
# Compares the type declaration between `self` and `other`
|
|
41
|
+
#
|
|
42
|
+
# The comparison is based on the AST structure.
|
|
43
|
+
# Differences on Ruby code implementation may be ignored.
|
|
44
|
+
#
|
|
45
|
+
def ==: (other: Ruby) -> bool
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
data/sig/type_param.rbs
CHANGED
|
@@ -4,13 +4,14 @@ module RBS
|
|
|
4
4
|
# Key
|
|
5
5
|
# ^^^ name
|
|
6
6
|
#
|
|
7
|
-
# unchecked out Elem < _ToJson = untyped
|
|
8
|
-
# ^^^^^^^^^
|
|
9
|
-
# ^^^
|
|
10
|
-
# ^^^^
|
|
11
|
-
# ^^^^^^^^^
|
|
12
|
-
#
|
|
13
|
-
|
|
7
|
+
# unchecked out Elem < _ToJson > bot = untyped
|
|
8
|
+
# ^^^^^^^^^ unchecked
|
|
9
|
+
# ^^^ variance
|
|
10
|
+
# ^^^^ name
|
|
11
|
+
# ^^^^^^^^^ upper_bound
|
|
12
|
+
# ^^^^^ lower_bound
|
|
13
|
+
# ^^^^^^^^ default
|
|
14
|
+
type loc = Location[:name, :variance | :unchecked | :upper_bound | :lower_bound | :default]
|
|
14
15
|
|
|
15
16
|
type variance = :invariant | :covariant | :contravariant
|
|
16
17
|
|
|
@@ -24,9 +25,13 @@ module RBS
|
|
|
24
25
|
|
|
25
26
|
attr_reader upper_bound_type: Types::t?
|
|
26
27
|
|
|
28
|
+
%a{pure} def lower_bound: () -> bound?
|
|
29
|
+
|
|
30
|
+
attr_reader lower_bound_type: Types::t?
|
|
31
|
+
|
|
27
32
|
attr_reader default_type: Types::t?
|
|
28
33
|
|
|
29
|
-
def initialize: (name: Symbol, variance: variance, upper_bound: Types::t?, location: loc?, ?default_type: Types::t?, ?unchecked: bool) -> void
|
|
34
|
+
def initialize: (name: Symbol, variance: variance, upper_bound: Types::t?, lower_bound: Types::t?, location: loc?, ?default_type: Types::t?, ?unchecked: bool) -> void
|
|
30
35
|
|
|
31
36
|
include _ToJson
|
|
32
37
|
|
data/sig/typename.rbs
CHANGED
|
@@ -28,6 +28,21 @@ module RBS
|
|
|
28
28
|
#
|
|
29
29
|
def initialize: (namespace: Namespace, name: Symbol) -> void
|
|
30
30
|
|
|
31
|
+
@hash: Integer?
|
|
32
|
+
|
|
33
|
+
self.@intern_mutex: Mutex
|
|
34
|
+
|
|
35
|
+
# Two-level Hash keyed by canonical Namespace identity (outer uses
|
|
36
|
+
# `compare_by_identity`) and name Symbol.
|
|
37
|
+
self.@intern_cache: Hash[Namespace, Hash[Symbol, TypeName]]
|
|
38
|
+
|
|
39
|
+
# Returns an interned `TypeName` instance.
|
|
40
|
+
#
|
|
41
|
+
# The given `namespace` is canonicalized so cached instances always hold an
|
|
42
|
+
# interned namespace. Subsequent calls with structurally equal arguments
|
|
43
|
+
# return the same object.
|
|
44
|
+
def self.[]: (Namespace namespace, Symbol name) -> TypeName
|
|
45
|
+
|
|
31
46
|
def ==: (untyped other) -> bool
|
|
32
47
|
|
|
33
48
|
def hash: () -> Integer
|
|
@@ -72,8 +87,3 @@ module RBS
|
|
|
72
87
|
def self.parse: (String name) -> RBS::TypeName
|
|
73
88
|
end
|
|
74
89
|
end
|
|
75
|
-
|
|
76
|
-
module Kernel
|
|
77
|
-
# Deprecated: Use `RBS::TypeName.parse` instead
|
|
78
|
-
%a{deprecated: Use `RBS::TypeName.parse` instead} def TypeName: (String name) -> RBS::TypeName
|
|
79
|
-
end
|
data/sig/types.rbs
CHANGED
|
@@ -172,24 +172,23 @@ module RBS
|
|
|
172
172
|
class ClassSingleton
|
|
173
173
|
# singleton(::Foo)
|
|
174
174
|
# ^^^^^ => name
|
|
175
|
-
type loc = Location[:name,
|
|
176
|
-
|
|
177
|
-
def initialize: (name: TypeName, location: loc?) -> void
|
|
175
|
+
type loc = Location[:name, :args]
|
|
178
176
|
|
|
179
|
-
|
|
177
|
+
def initialize: (name: TypeName, location: loc?, ?args: Array[t]) -> void
|
|
180
178
|
|
|
181
179
|
attr_reader location: loc?
|
|
182
180
|
|
|
183
181
|
include _TypeBase
|
|
184
|
-
include
|
|
185
|
-
include NoSubst
|
|
186
|
-
include EmptyEachType
|
|
182
|
+
include Application
|
|
187
183
|
|
|
188
184
|
def ==: (untyped other) -> bool
|
|
189
185
|
|
|
190
186
|
alias eql? ==
|
|
191
187
|
|
|
192
188
|
def hash: () -> Integer
|
|
189
|
+
|
|
190
|
+
def map_type: () { (t) -> t } -> ClassSingleton
|
|
191
|
+
| () -> Enumerator[t, ClassSingleton]
|
|
193
192
|
end
|
|
194
193
|
|
|
195
194
|
module Application
|
|
@@ -518,7 +517,10 @@ module RBS
|
|
|
518
517
|
|
|
519
518
|
attr_reader self_type: t?
|
|
520
519
|
|
|
521
|
-
|
|
520
|
+
type loc = Location[bot, bot]
|
|
521
|
+
attr_reader location: loc?
|
|
522
|
+
|
|
523
|
+
def initialize: (?location: loc?, type: function, ?self_type: t?, required: boolish) -> void
|
|
522
524
|
|
|
523
525
|
def ==: (untyped other) -> bool
|
|
524
526
|
|
data/sig/unit_test/spy.rbs
CHANGED
|
@@ -153,6 +153,17 @@ module RBS
|
|
|
153
153
|
#
|
|
154
154
|
def refute_send_type: (String | MethodType method_type, untyped receiver, Symbol method_name, *untyped args) ?{ () -> untyped } -> void
|
|
155
155
|
|
|
156
|
+
# Calls a method `method_name`, validates if it's compatible with RBS type definition, and ensures it raises the `exception` class.
|
|
157
|
+
#
|
|
158
|
+
# 1. It calls `method_name` with `receiver` passing `args` and given block,
|
|
159
|
+
# 2. Validates if it's compatible with given `method_type`, and
|
|
160
|
+
# 3. Validates if it's compatible with one of the overloads defined in RBS type definition
|
|
161
|
+
# 4. Ensures that `exception` is thrown
|
|
162
|
+
#
|
|
163
|
+
# See `assert_send_type` for the details.
|
|
164
|
+
#
|
|
165
|
+
def assert_send_type_error: (String | MethodType method_type, Class exception, untyped receiver, Symbol method_name, *untyped args) ?{ () -> untyped } -> void
|
|
166
|
+
|
|
156
167
|
# Asserts if the constant `constant_name` has `constant_type`, and the RBS definition has compatible type
|
|
157
168
|
#
|
|
158
169
|
# ```ruby
|
|
@@ -168,6 +179,10 @@ module RBS
|
|
|
168
179
|
#
|
|
169
180
|
def assert_type: (String | Types::t value_type, untyped value) -> void
|
|
170
181
|
|
|
182
|
+
# Asserts if RBS definition declares given `method_name` with `visibility`
|
|
183
|
+
#
|
|
184
|
+
def assert_visibility: (:private | :public visibility, Symbol method_name) -> void
|
|
185
|
+
|
|
171
186
|
# Allow non _simple-type_ method types given to `assert_send_type` and `refute_send_type`
|
|
172
187
|
#
|
|
173
188
|
# ```ruby
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
module WASM
|
|
3
|
+
# Rebuilds RBS::AST objects from the binary buffer produced by
|
|
4
|
+
# `rbs_serialize_node` (src/serialize.c), driven by SerializationSchema.
|
|
5
|
+
class Deserializer
|
|
6
|
+
@bytes: String
|
|
7
|
+
|
|
8
|
+
@buffer: Buffer
|
|
9
|
+
|
|
10
|
+
@encoding: Encoding
|
|
11
|
+
|
|
12
|
+
@pos: Integer
|
|
13
|
+
|
|
14
|
+
@class_cache: Hash[String, untyped]
|
|
15
|
+
|
|
16
|
+
# Deserialize a buffer produced for a whole signature, returning
|
|
17
|
+
# `[directives, declarations]` to match RBS::Parser._parse_signature.
|
|
18
|
+
def self.deserialize: (String bytes, Buffer buffer) -> untyped
|
|
19
|
+
|
|
20
|
+
# Deserialize a bare node list (RBS::Parser._parse_type_params).
|
|
21
|
+
def self.deserialize_node_list: (String bytes, Buffer buffer) -> Array[untyped]
|
|
22
|
+
|
|
23
|
+
# Deserialize the token stream from rbs_wasm_lex (RBS::Parser._lex).
|
|
24
|
+
def self.deserialize_tokens: (String bytes, Buffer buffer) -> Array[[ Symbol, Location ]]
|
|
25
|
+
|
|
26
|
+
def initialize: (String bytes, Buffer buffer) -> void
|
|
27
|
+
|
|
28
|
+
# Reads the next node and returns the reconstructed Ruby value.
|
|
29
|
+
def read_node: () -> untyped
|
|
30
|
+
|
|
31
|
+
def read_node_list: () -> Array[untyped]
|
|
32
|
+
|
|
33
|
+
def read_tokens: () -> Array[[ Symbol, Location ]]
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
def read_struct: (Array[untyped] entry) -> untyped
|
|
38
|
+
|
|
39
|
+
def read_field: (untyped reader) -> untyped
|
|
40
|
+
|
|
41
|
+
def read_hash: () -> Hash[untyped, untyped]
|
|
42
|
+
|
|
43
|
+
def read_count: () -> Integer
|
|
44
|
+
|
|
45
|
+
def read_location: (Array[untyped]? loc_children) -> Location?
|
|
46
|
+
|
|
47
|
+
def read_location_value: () -> Location?
|
|
48
|
+
|
|
49
|
+
def read_location_value_list: () -> Array[Location?]
|
|
50
|
+
|
|
51
|
+
def read_attr_ivar_name: () -> (Symbol | false | nil)
|
|
52
|
+
|
|
53
|
+
def read_range: () -> [ Integer, Integer ]?
|
|
54
|
+
|
|
55
|
+
def read_u8: () -> Integer
|
|
56
|
+
|
|
57
|
+
def read_u32: () -> Integer
|
|
58
|
+
|
|
59
|
+
def read_i32: () -> Integer
|
|
60
|
+
|
|
61
|
+
def read_string: (Encoding encoding) -> String
|
|
62
|
+
|
|
63
|
+
def class_for: (String name) -> untyped
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
module WASM
|
|
3
|
+
# Generated from config.yml. See `templates/lib/rbs/wasm/serialization_schema.rb.erb`.
|
|
4
|
+
module SerializationSchema
|
|
5
|
+
# The node tag used for interned symbols (`rbs_ast_symbol`).
|
|
6
|
+
SYMBOL_TAG: Integer
|
|
7
|
+
|
|
8
|
+
# Indexed by node tag. Each entry describes how to decode one node; see the
|
|
9
|
+
# generated file for the exact shape.
|
|
10
|
+
SCHEMA: Array[Array[untyped]?]
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|