rbs 4.0.0.dev.4 → 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/.clang-format +1 -0
- data/.github/dependabot.yml +16 -14
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +21 -11
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/jruby.yml +67 -0
- data/.github/workflows/milestone.yml +83 -0
- data/.github/workflows/ruby.yml +63 -24
- data/.github/workflows/rust.yml +184 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +5 -2
- data/.github/workflows/wasm.yml +53 -0
- data/.github/workflows/windows.yml +8 -2
- data/.gitignore +11 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +357 -0
- data/README.md +4 -4
- data/Rakefile +365 -33
- data/Steepfile +8 -0
- data/config.yml +450 -24
- data/core/array.rbs +443 -363
- 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 +288 -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 -92
- 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 +216 -150
- data/core/kernel.rbs +239 -163
- data/core/marshal.rbs +4 -4
- data/core/match_data.rbs +15 -13
- 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 +1322 -0
- data/core/proc.rbs +95 -58
- data/core/process.rbs +222 -202
- data/core/ractor.rbs +371 -515
- 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 +4 -71
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +16 -82
- data/core/rubygems/version.rbs +2 -3
- 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 +141 -73
- 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/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 +1441 -671
- data/ext/rbs_extension/ast_translation.h +7 -0
- data/ext/rbs_extension/class_constants.c +18 -2
- data/ext/rbs_extension/class_constants.h +9 -0
- data/ext/rbs_extension/extconf.rb +6 -1
- data/ext/rbs_extension/legacy_location.c +33 -56
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +183 -39
- data/include/rbs/ast.h +597 -297
- data/include/rbs/defines.h +40 -0
- data/include/rbs/lexer.h +31 -11
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +6 -6
- data/include/rbs/serialize.h +39 -0
- data/include/rbs/string.h +0 -2
- data/include/rbs/util/rbs_allocator.h +34 -13
- data/include/rbs/util/rbs_assert.h +12 -1
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- data/include/rbs/util/rbs_encoding.h +2 -0
- data/include/rbs/util/rbs_unescape.h +2 -1
- data/include/rbs.h +8 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +27 -31
- 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 +335 -3
- data/lib/rbs/ast/ruby/comment_block.rb +30 -4
- data/lib/rbs/ast/ruby/declarations.rb +209 -4
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +1 -1
- data/lib/rbs/ast/ruby/members.rb +571 -22
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +66 -24
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -106
- data/lib/rbs/cli.rb +55 -24
- data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
- data/lib/rbs/collection/sources/git.rb +7 -0
- data/lib/rbs/definition.rb +1 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
- data/lib/rbs/definition_builder/method_builder.rb +32 -6
- data/lib/rbs/definition_builder.rb +147 -25
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +235 -75
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -18
- data/lib/rbs/inline_parser.rb +377 -15
- data/lib/rbs/location_aux.rb +1 -1
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/namespace.rb +47 -11
- data/lib/rbs/parser_aux.rb +20 -7
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +3 -28
- data/lib/rbs/prototype/rbi.rb +3 -20
- data/lib/rbs/prototype/runtime.rb +10 -0
- 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/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +25 -3
- data/lib/rbs/type_name.rb +34 -14
- data/lib/rbs/types.rb +88 -78
- 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 +217 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs.rb +13 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +24 -6
- data/schema/typeParam.json +17 -1
- data/sig/annotate/rdoc_annotater.rbs +12 -9
- data/sig/ast/ruby/annotations.rbs +364 -4
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +128 -2
- data/sig/buffer.rbs +19 -1
- 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 -1
- data/sig/definition_builder.rbs +2 -0
- data/sig/environment.rbs +70 -12
- data/sig/errors.rbs +13 -14
- data/sig/inline_parser.rbs +41 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -2
- data/sig/method_builder.rbs +3 -1
- data/sig/namespace.rbs +20 -0
- data/sig/parser.rbs +41 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +36 -10
- data/sig/rewriter.rbs +45 -0
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +15 -0
- data/sig/types.rbs +6 -7
- 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 +443 -162
- data/src/lexer.c +1415 -1313
- data/src/lexer.re +4 -0
- data/src/lexstate.c +63 -37
- data/src/location.c +7 -47
- data/src/parser.c +1032 -521
- data/src/serialize.c +958 -0
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -74
- data/src/util/rbs_assert.c +1 -1
- data/src/util/rbs_buffer.c +2 -2
- data/src/util/rbs_constant_pool.c +10 -14
- data/src/util/rbs_encoding.c +4 -8
- data/src/util/rbs_unescape.c +56 -20
- 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 +10 -7
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/digest/0/digest.rbs +111 -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/json/0/json.rbs +223 -142
- data/stdlib/monitor/0/monitor.rbs +3 -3
- 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 +482 -364
- 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 +2 -1
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/rdoc.rbs +1 -1
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +26 -69
- data/stdlib/ripper/0/ripper.rbs +22 -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 +7 -7
- 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/tempfile.rbs +25 -21
- data/stdlib/time/0/time.rbs +8 -6
- data/stdlib/timeout/0/timeout.rbs +63 -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 +26 -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/stdlib/zlib/0/zstream.rbs +1 -0
- data/wasm/README.md +59 -0
- data/wasm/rbs_wasm.c +411 -0
- metadata +56 -8
- data/.vscode/extensions.json +0 -5
- data/.vscode/settings.json +0 -19
data/sig/inline_parser.rbs
CHANGED
|
@@ -9,6 +9,8 @@ module RBS
|
|
|
9
9
|
attr_reader diagnostics: Array[Diagnostic::t]
|
|
10
10
|
|
|
11
11
|
def initialize: (Buffer, Prism::ParseResult) -> void
|
|
12
|
+
|
|
13
|
+
def type_fingerprint: () -> untyped
|
|
12
14
|
end
|
|
13
15
|
|
|
14
16
|
module Diagnostic
|
|
@@ -29,19 +31,44 @@ module RBS
|
|
|
29
31
|
class NonConstantModuleName < Base
|
|
30
32
|
end
|
|
31
33
|
|
|
34
|
+
class NonConstantSuperClassName < Base
|
|
35
|
+
end
|
|
36
|
+
|
|
32
37
|
class TopLevelMethodDefinition < Base
|
|
33
38
|
end
|
|
34
39
|
|
|
40
|
+
class TopLevelAttributeDefinition < Base
|
|
41
|
+
end
|
|
42
|
+
|
|
35
43
|
class UnusedInlineAnnotation < Base
|
|
36
44
|
end
|
|
37
45
|
|
|
38
46
|
class AnnotationSyntaxError < Base
|
|
39
47
|
end
|
|
40
48
|
|
|
49
|
+
class MixinMultipleArguments < Base
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
class MixinNonConstantModule < Base
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
class AttributeNonSymbolName < Base
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
class NonConstantConstantDeclaration < Base
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
class ClassModuleAliasDeclarationMissingTypeName < Base
|
|
62
|
+
end
|
|
63
|
+
|
|
41
64
|
type t = NotImplementedYet
|
|
42
|
-
| NonConstantClassName | NonConstantModuleName
|
|
43
|
-
| TopLevelMethodDefinition
|
|
65
|
+
| NonConstantClassName | NonConstantModuleName | NonConstantSuperClassName
|
|
66
|
+
| TopLevelMethodDefinition | TopLevelAttributeDefinition
|
|
44
67
|
| UnusedInlineAnnotation | AnnotationSyntaxError
|
|
68
|
+
| MixinMultipleArguments | MixinNonConstantModule
|
|
69
|
+
| AttributeNonSymbolName
|
|
70
|
+
| NonConstantConstantDeclaration
|
|
71
|
+
| ClassModuleAliasDeclarationMissingTypeName
|
|
45
72
|
end
|
|
46
73
|
|
|
47
74
|
def self.parse: (Buffer, Prism::ParseResult) -> Result
|
|
@@ -82,6 +109,18 @@ module RBS
|
|
|
82
109
|
def report_unused_annotation: (*AST::Ruby::Annotations::t | nil | AST::Ruby::CommentBlock::AnnotationSyntaxError) -> void
|
|
83
110
|
|
|
84
111
|
def report_unused_block: (AST::Ruby::CommentBlock) -> void
|
|
112
|
+
|
|
113
|
+
def visit_class_or_module_body: (module_context, Prism::ClassNode | Prism::ModuleNode) -> void
|
|
114
|
+
|
|
115
|
+
private
|
|
116
|
+
|
|
117
|
+
def parse_mixin_call: (Prism::CallNode) -> void
|
|
118
|
+
|
|
119
|
+
def parse_attribute_call: (Prism::CallNode) -> void
|
|
120
|
+
|
|
121
|
+
def parse_constant_declaration: (Prism::ConstantWriteNode | Prism::ConstantPathWriteNode) -> void
|
|
122
|
+
|
|
123
|
+
def parse_super_class: (Prism::node, Prism::Location) -> Declarations::ClassDecl::SuperClass?
|
|
85
124
|
end
|
|
86
125
|
end
|
|
87
126
|
end
|
data/sig/locator.rbs
CHANGED
|
@@ -37,8 +37,6 @@ module RBS
|
|
|
37
37
|
#
|
|
38
38
|
def find2: (line: Integer, column: Integer) -> [Symbol?, Array[component]]?
|
|
39
39
|
|
|
40
|
-
private
|
|
41
|
-
|
|
42
40
|
def find_in_directive: (Integer pos, AST::Directives::t, Array[component]) -> bool
|
|
43
41
|
|
|
44
42
|
def find_in_decl: (Integer pos, decl: AST::Declarations::t, array: Array[component]) -> bool
|
data/sig/manifest.yaml
CHANGED
data/sig/method_builder.rbs
CHANGED
|
@@ -16,7 +16,7 @@ module RBS
|
|
|
16
16
|
#
|
|
17
17
|
class Definition
|
|
18
18
|
type original = AST::Members::MethodDefinition | AST::Members::Alias | AST::Members::AttrAccessor | AST::Members::AttrWriter | AST::Members::AttrReader
|
|
19
|
-
| AST::Ruby::Members::DefMember
|
|
19
|
+
| AST::Ruby::Members::DefMember | AST::Ruby::Members::AttrReaderMember | AST::Ruby::Members::AttrWriterMember | AST::Ruby::Members::AttrAccessorMember
|
|
20
20
|
|
|
21
21
|
type overloading_definition = AST::Members::MethodDefinition | AST::Ruby::Members::DefMember
|
|
22
22
|
|
|
@@ -77,6 +77,8 @@ module RBS
|
|
|
77
77
|
|
|
78
78
|
def build_attribute: (Methods, Methods::instance_type, member: AST::Members::AttrAccessor | AST::Members::AttrReader | AST::Members::AttrWriter, accessibility: Definition::accessibility) -> void
|
|
79
79
|
|
|
80
|
+
def build_ruby_attribute: (Methods, Methods::instance_type, member: AST::Ruby::Members::AttrReaderMember | AST::Ruby::Members::AttrWriterMember | AST::Ruby::Members::AttrAccessorMember, accessibility: Definition::accessibility) -> void
|
|
81
|
+
|
|
80
82
|
def build_method: (Methods, Methods::instance_type, member: AST::Members::MethodDefinition | AST::Ruby::Members::DefMember, accessibility: Definition::accessibility) -> void
|
|
81
83
|
|
|
82
84
|
def each_rbs_member_with_accessibility: (Array[AST::Members::t | AST::Declarations::t], ?accessibility: Definition::accessibility) { (AST::Members::t | AST::Declarations::t, Definition::accessibility) -> void } -> void
|
data/sig/namespace.rbs
CHANGED
|
@@ -40,10 +40,30 @@ module RBS
|
|
|
40
40
|
|
|
41
41
|
@parent: Namespace?
|
|
42
42
|
|
|
43
|
+
@hash: Integer?
|
|
44
|
+
|
|
43
45
|
self.@root: Namespace?
|
|
44
46
|
|
|
45
47
|
self.@empty: Namespace?
|
|
46
48
|
|
|
49
|
+
self.@intern_mutex: Mutex
|
|
50
|
+
|
|
51
|
+
# Per-`absolute` flag tries of nested Hashes keyed on path Symbols,
|
|
52
|
+
# with the cached Namespace stored under the `INTERN_LEAF` sentinel
|
|
53
|
+
# at each path's terminal node.
|
|
54
|
+
self.@intern_trie_absolute: Hash[Symbol | Module, untyped]
|
|
55
|
+
|
|
56
|
+
self.@intern_trie_relative: Hash[Symbol | Module, untyped]
|
|
57
|
+
|
|
58
|
+
INTERN_LEAF: Module
|
|
59
|
+
|
|
60
|
+
# Returns an interned `Namespace` instance.
|
|
61
|
+
#
|
|
62
|
+
# Subsequent calls with structurally equal `path` and `absolute` arguments
|
|
63
|
+
# return the same object. The internal `path` array is duplicated and
|
|
64
|
+
# frozen before being cached.
|
|
65
|
+
def self.[]: (Array[Symbol] path, boolish absolute) -> Namespace
|
|
66
|
+
|
|
47
67
|
# Returns new _empty_ namespace.
|
|
48
68
|
def self.empty: () -> Namespace
|
|
49
69
|
|
data/sig/parser.rbs
CHANGED
|
@@ -20,13 +20,13 @@ module RBS
|
|
|
20
20
|
|
|
21
21
|
# Parse a method type and return it
|
|
22
22
|
#
|
|
23
|
-
# When `
|
|
23
|
+
# When `byte_range` keyword is specified, it starts parsing from the `begin` to the `end` of the range.
|
|
24
24
|
#
|
|
25
25
|
# ```ruby
|
|
26
|
-
# RBS::Parser.parse_method_type("() -> void")
|
|
27
|
-
# RBS::Parser.parse_method_type("() -> void",
|
|
28
|
-
# RBS::Parser.parse_method_type("() -> void () -> String",
|
|
29
|
-
# RBS::Parser.parse_method_type("() -> void () -> String",
|
|
26
|
+
# RBS::Parser.parse_method_type("() -> void") # => `() -> void`
|
|
27
|
+
# RBS::Parser.parse_method_type("() -> void", byte_range: 0...) # => `() -> void`
|
|
28
|
+
# RBS::Parser.parse_method_type("() -> void () -> String", byte_range: 11...) # => `() -> String`
|
|
29
|
+
# RBS::Parser.parse_method_type("() -> void () -> String", byte_range: 23...) # => nil
|
|
30
30
|
# ```
|
|
31
31
|
#
|
|
32
32
|
# When `require_eof` is `true`, an error is raised if more tokens are left in the input.
|
|
@@ -39,17 +39,18 @@ module RBS
|
|
|
39
39
|
# RBS::Parser.parse_method_type("", require_eof: true) # => nil
|
|
40
40
|
# ```
|
|
41
41
|
#
|
|
42
|
-
def self.parse_method_type: (Buffer | String, ?
|
|
42
|
+
def self.parse_method_type: (Buffer | String, ?byte_range: Range[Integer?], ?variables: Array[Symbol], ?require_eof: bool) -> MethodType?
|
|
43
|
+
| %a{deprecated: Use `byte_range:` keyword instead of `range:`} (Buffer | String, range: Range[Integer?], ?variables: Array[Symbol], ?require_eof: bool) -> MethodType?
|
|
43
44
|
|
|
44
45
|
# Parse a type and return it
|
|
45
46
|
#
|
|
46
|
-
# When `
|
|
47
|
+
# When `byte_range` keyword is specified, it starts parsing from the `begin` to the `end` of the range.
|
|
47
48
|
#
|
|
48
49
|
# ```ruby
|
|
49
|
-
# RBS::Parser.parse_type("String")
|
|
50
|
-
# RBS::Parser.parse_type("String",
|
|
51
|
-
# RBS::Parser.parse_type("String Integer",
|
|
52
|
-
# RBS::Parser.parse_type("String Integer",
|
|
50
|
+
# RBS::Parser.parse_type("String") # => `String`
|
|
51
|
+
# RBS::Parser.parse_type("String", byte_range: 0...) # => `String`
|
|
52
|
+
# RBS::Parser.parse_type("String Integer", byte_range: 7...) # => `Integer`
|
|
53
|
+
# RBS::Parser.parse_type("String Integer", byte_range: 14...) # => nil
|
|
53
54
|
# ```
|
|
54
55
|
#
|
|
55
56
|
# When `require_eof` is `true`, an error is raised if more tokens are left in the input.
|
|
@@ -62,7 +63,22 @@ module RBS
|
|
|
62
63
|
# RBS::Parser.parse_type("", require_eof: true) # => nil
|
|
63
64
|
# ```
|
|
64
65
|
#
|
|
65
|
-
|
|
66
|
+
# The `void_allowed` keyword controls whether `void` is allowed as a type.
|
|
67
|
+
#
|
|
68
|
+
# ```ruby
|
|
69
|
+
# RBS::Parser.parse_type("void", void_allowed: true) # => `void`
|
|
70
|
+
# RBS::Parser.parse_type("void", void_allowed: false) # => Raises an syntax error
|
|
71
|
+
# ```
|
|
72
|
+
#
|
|
73
|
+
# The `self_allowed` keyword controls whether `self` is allowed as a type.
|
|
74
|
+
#
|
|
75
|
+
# ```ruby
|
|
76
|
+
# RBS::Parser.parse_type("self", self_allowed: true) # => `self`
|
|
77
|
+
# RBS::Parser.parse_type("self", self_allowed: false) # => Raises an syntax error
|
|
78
|
+
# ```
|
|
79
|
+
#
|
|
80
|
+
def self.parse_type: (Buffer | String, ?byte_range: Range[Integer?], ?variables: Array[Symbol], ?require_eof: bool, ?void_allowed: bool, ?self_allowed: bool, ?classish_allowed: bool) -> Types::t?
|
|
81
|
+
| %a{deprecated: Use `byte_range:` keyword instead of `range:`} (Buffer | String, range: Range[Integer?], ?variables: Array[Symbol], ?require_eof: bool, ?void_allowed: bool, ?self_allowed: bool, ?classish_allowed: bool) -> Types::t?
|
|
66
82
|
|
|
67
83
|
# Parse whole RBS file and return an array of declarations
|
|
68
84
|
#
|
|
@@ -116,12 +132,24 @@ module RBS
|
|
|
116
132
|
|
|
117
133
|
def self.buffer: (String | Buffer source) -> Buffer
|
|
118
134
|
|
|
119
|
-
def self.
|
|
135
|
+
def self.byte_range: (Range[Integer?] char_range, String content) -> Range[Integer?]
|
|
136
|
+
|
|
137
|
+
def self._parse_type: (Buffer, Integer start_pos, Integer end_pos, Array[Symbol] variables, bool require_eof, bool void_allowed, bool self_allowed, bool classish_allowed) -> Types::t?
|
|
120
138
|
|
|
121
139
|
def self._parse_method_type: (Buffer, Integer start_pos, Integer end_pos, Array[Symbol] variables, bool require_eof) -> MethodType?
|
|
122
140
|
|
|
123
141
|
def self._parse_signature: (Buffer, Integer start_pos, Integer end_pos) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
|
|
124
142
|
|
|
143
|
+
# Parse and serialize the result to the binary format consumed by
|
|
144
|
+
# RBS::WASM::Deserializer (see ext/rbs_extension/main.c and
|
|
145
|
+
# docs/wasm_serialization.md). The `_to_bytes` variants exist so the
|
|
146
|
+
# round-trip can be exercised on CRuby.
|
|
147
|
+
def self._parse_type_to_bytes: (Buffer, Integer start_pos, Integer end_pos, Array[Symbol] variables, bool require_eof, bool void_allowed, bool self_allowed, bool classish_allowed) -> String?
|
|
148
|
+
|
|
149
|
+
def self._parse_method_type_to_bytes: (Buffer, Integer start_pos, Integer end_pos, Array[Symbol] variables, bool require_eof) -> String?
|
|
150
|
+
|
|
151
|
+
def self._parse_signature_to_bytes: (Buffer, Integer start_pos, Integer end_pos) -> String
|
|
152
|
+
|
|
125
153
|
def self._parse_type_params: (Buffer, Integer start_pos, Integer end_pos, bool module_type_params) -> Array[AST::TypeParam]
|
|
126
154
|
|
|
127
155
|
def self._lex: (Buffer, Integer end_pos) -> Array[[Symbol, Location[untyped, untyped]]]
|
data/sig/prototype/helpers.rbs
CHANGED
|
@@ -3,6 +3,8 @@ module RBS
|
|
|
3
3
|
module Helpers
|
|
4
4
|
type node = RubyVM::AbstractSyntaxTree::Node
|
|
5
5
|
|
|
6
|
+
def parse_comments: (String, include_trailing: bool) -> Hash[Integer, AST::Comment]
|
|
7
|
+
|
|
6
8
|
def block_from_body: (node) -> Types::Block?
|
|
7
9
|
|
|
8
10
|
def each_node: (Array[untyped] nodes) { (node) -> void } -> void
|
|
@@ -6,30 +6,56 @@ module RBS
|
|
|
6
6
|
# It just ignores included modules and super classes.
|
|
7
7
|
#
|
|
8
8
|
class TypeNameResolver
|
|
9
|
-
|
|
9
|
+
def initialize: (Set[TypeName] all_names, Hash[TypeName, [TypeName, context]] aliases) -> void
|
|
10
10
|
|
|
11
|
-
def
|
|
11
|
+
def self.build: (Environment) -> instance
|
|
12
12
|
|
|
13
|
-
# Translates given type name to absolute type name
|
|
13
|
+
# Translates given type name to absolute type name
|
|
14
|
+
#
|
|
14
15
|
# Returns `nil` if cannot find associated type name.
|
|
16
|
+
# Module names in the type name are normalized.
|
|
15
17
|
#
|
|
16
18
|
def resolve: (TypeName, context: context) -> TypeName?
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
# Translates given type name to absolute type name
|
|
21
|
+
#
|
|
22
|
+
# Returns `false` if a cycle is detected while resolving aliases.
|
|
23
|
+
# Returns `nil` if the type name cannot be resolved.
|
|
24
|
+
#
|
|
25
|
+
def resolve_namespace: (TypeName, context: context) -> (TypeName | false | nil)
|
|
19
26
|
|
|
20
|
-
|
|
27
|
+
private
|
|
21
28
|
|
|
22
29
|
attr_reader all_names: Set[TypeName]
|
|
23
30
|
|
|
24
|
-
attr_reader
|
|
31
|
+
attr_reader aliases: Hash[TypeName, [TypeName, context]]
|
|
32
|
+
|
|
33
|
+
attr_reader cache: Hash[context, Hash[TypeName, TypeName?]]
|
|
25
34
|
|
|
26
|
-
|
|
35
|
+
# Returns the type name if it exists in `all_names` (normalized)
|
|
36
|
+
#
|
|
37
|
+
def has_type_name?: (TypeName) -> TypeName?
|
|
27
38
|
|
|
28
|
-
|
|
39
|
+
# Returns the type name if it is an alias (not normalized)
|
|
40
|
+
#
|
|
41
|
+
def aliased_name?: (TypeName) -> TypeName?
|
|
42
|
+
|
|
43
|
+
def try_cache: (TypeName, context) { () -> TypeName? } -> TypeName?
|
|
44
|
+
|
|
45
|
+
# Translates the head module name in the context and returns an absolute type name
|
|
46
|
+
#
|
|
47
|
+
# Returns `nil` if cannot find associated type name.
|
|
48
|
+
# The returned namespace may be an alias
|
|
49
|
+
#
|
|
50
|
+
def resolve_head_namespace: (Symbol, context) -> TypeName?
|
|
51
|
+
|
|
52
|
+
# Resolves the type name in the given context
|
|
53
|
+
#
|
|
54
|
+
def resolve_type_name: (Symbol, context) -> TypeName?
|
|
29
55
|
|
|
30
|
-
def
|
|
56
|
+
def resolve_namespace0: (TypeName, context, Set[TypeName]) -> (TypeName | false | nil)
|
|
31
57
|
|
|
32
|
-
def
|
|
58
|
+
def normalize_namespace: (TypeName, TypeName rhs, context, Set[TypeName]) -> (TypeName | false | nil)
|
|
33
59
|
end
|
|
34
60
|
end
|
|
35
61
|
end
|
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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module RBS
|
|
2
2
|
module Source
|
|
3
3
|
type t = RBS | Ruby
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
class RBS
|
|
6
6
|
attr_reader buffer: Buffer
|
|
7
7
|
|
|
@@ -28,9 +28,9 @@ module RBS
|
|
|
28
28
|
|
|
29
29
|
attr_reader declarations: Array[AST::Ruby::Declarations::t]
|
|
30
30
|
|
|
31
|
-
attr_reader diagnostics: Array[
|
|
31
|
+
attr_reader diagnostics: Array[InlineParser::Diagnostic::t]
|
|
32
32
|
|
|
33
|
-
def initialize: (Buffer, Prism::ParseResult, Array[AST::Ruby::Declarations::t], Array[
|
|
33
|
+
def initialize: (Buffer, Prism::ParseResult, Array[AST::Ruby::Declarations::t], Array[InlineParser::Diagnostic::t]) -> void
|
|
34
34
|
|
|
35
35
|
def each_type_name: () { (TypeName) -> void } -> void
|
|
36
36
|
| () -> Enumerator[TypeName]
|
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
|
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
|
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
|