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/cli.rbs
CHANGED
|
@@ -46,41 +46,41 @@ module RBS
|
|
|
46
46
|
|
|
47
47
|
def has_parser?: () -> bool
|
|
48
48
|
|
|
49
|
-
def run: (Array[String] args) ->
|
|
49
|
+
def run: (Array[String] args) -> Integer
|
|
50
50
|
|
|
51
|
-
def run_ast: (Array[String], LibraryOptions) ->
|
|
51
|
+
def run_ast: (Array[String], LibraryOptions) -> Integer
|
|
52
52
|
|
|
53
|
-
def run_list: (Array[String], LibraryOptions) ->
|
|
53
|
+
def run_list: (Array[String], LibraryOptions) -> Integer
|
|
54
54
|
|
|
55
|
-
def run_ancestors: (Array[String], LibraryOptions) ->
|
|
55
|
+
def run_ancestors: (Array[String], LibraryOptions) -> Integer
|
|
56
56
|
|
|
57
|
-
def run_methods: (Array[String], LibraryOptions) ->
|
|
57
|
+
def run_methods: (Array[String], LibraryOptions) -> Integer
|
|
58
58
|
|
|
59
|
-
def run_method: (Array[String], LibraryOptions) ->
|
|
59
|
+
def run_method: (Array[String], LibraryOptions) -> Integer
|
|
60
60
|
|
|
61
|
-
def run_validate: (Array[String], LibraryOptions) ->
|
|
61
|
+
def run_validate: (Array[String], LibraryOptions) -> Integer
|
|
62
62
|
|
|
63
|
-
def run_constant: (Array[String], LibraryOptions) ->
|
|
63
|
+
def run_constant: (Array[String], LibraryOptions) -> Integer
|
|
64
64
|
|
|
65
|
-
def run_paths: (Array[String], LibraryOptions) ->
|
|
65
|
+
def run_paths: (Array[String], LibraryOptions) -> Integer
|
|
66
66
|
|
|
67
|
-
def run_prototype: (Array[String], LibraryOptions) ->
|
|
67
|
+
def run_prototype: (Array[String], LibraryOptions) -> Integer
|
|
68
68
|
|
|
69
|
-
def run_prototype_file: (String format, Array[String]) ->
|
|
69
|
+
def run_prototype_file: (String format, Array[String]) -> Integer
|
|
70
70
|
|
|
71
|
-
def run_vendor: (Array[String], LibraryOptions) ->
|
|
71
|
+
def run_vendor: (Array[String], LibraryOptions) -> Integer
|
|
72
72
|
|
|
73
|
-
def run_parse: (Array[String], LibraryOptions) ->
|
|
73
|
+
def run_parse: (Array[String], LibraryOptions) -> Integer
|
|
74
74
|
|
|
75
|
-
def run_test: (Array[String], LibraryOptions) ->
|
|
75
|
+
def run_test: (Array[String], LibraryOptions) -> Integer
|
|
76
76
|
|
|
77
|
-
def run_collection: (Array[String], LibraryOptions) ->
|
|
77
|
+
def run_collection: (Array[String], LibraryOptions) -> Integer
|
|
78
78
|
|
|
79
|
-
def run_annotate: (Array[String], top) ->
|
|
79
|
+
def run_annotate: (Array[String], top) -> Integer
|
|
80
80
|
|
|
81
|
-
def run_subtract: (Array[String], top) ->
|
|
81
|
+
def run_subtract: (Array[String], top) -> Integer
|
|
82
82
|
|
|
83
|
-
def run_diff: (Array[String], LibraryOptions) ->
|
|
83
|
+
def run_diff: (Array[String], LibraryOptions) -> Integer
|
|
84
84
|
|
|
85
85
|
def test_opt: (LibraryOptions) -> String?
|
|
86
86
|
|
data/sig/definition.rbs
CHANGED
|
@@ -12,6 +12,10 @@ module RBS
|
|
|
12
12
|
| AST::Members::InstanceVariable
|
|
13
13
|
| AST::Members::ClassVariable
|
|
14
14
|
| AST::Members::ClassInstanceVariable
|
|
15
|
+
| AST::Ruby::Members::AttrReaderMember
|
|
16
|
+
| AST::Ruby::Members::AttrWriterMember
|
|
17
|
+
| AST::Ruby::Members::AttrAccessorMember
|
|
18
|
+
| AST::Ruby::Members::InstanceVariableMember
|
|
15
19
|
attr_reader source: source
|
|
16
20
|
|
|
17
21
|
def initialize: (parent_variable: Variable?, type: Types::t, declared_in: TypeName, source: source) -> void
|
|
@@ -21,6 +25,7 @@ module RBS
|
|
|
21
25
|
|
|
22
26
|
class Method
|
|
23
27
|
type method_member = AST::Members::MethodDefinition | AST::Members::AttrReader | AST::Members::AttrAccessor | AST::Members::AttrWriter
|
|
28
|
+
| AST::Ruby::Members::DefMember | AST::Ruby::Members::AttrReaderMember | AST::Ruby::Members::AttrWriterMember | AST::Ruby::Members::AttrAccessorMember
|
|
24
29
|
|
|
25
30
|
class TypeDef
|
|
26
31
|
attr_reader type: MethodType
|
|
@@ -154,6 +159,7 @@ module RBS
|
|
|
154
159
|
type source = :super # Inheritance
|
|
155
160
|
| nil # Itself
|
|
156
161
|
| AST::Members::Include | AST::Members::Extend | AST::Members::Prepend # AST
|
|
162
|
+
| AST::Ruby::Members::IncludeMember | AST::Ruby::Members::ExtendMember | AST::Ruby::Members::PrependMember # Ruby AST
|
|
157
163
|
| AST::Declarations::Module::Self
|
|
158
164
|
|
|
159
165
|
attr_reader name: TypeName
|
data/sig/definition_builder.rbs
CHANGED
|
@@ -97,13 +97,15 @@ module RBS
|
|
|
97
97
|
#
|
|
98
98
|
def interface_methods: (Array[Definition::Ancestor::Instance] interface_ancestors) -> interface_methods
|
|
99
99
|
|
|
100
|
+
def special_accessibility: (bool, Symbol) -> Definition::accessibility?
|
|
101
|
+
|
|
100
102
|
def try_cache: (TypeName, cache: Hash[TypeName, Definition | false | nil]) { () -> Definition } -> Definition
|
|
101
103
|
|
|
102
104
|
def validate_params_with: (Array[AST::TypeParam], result: VarianceCalculator::Result) { (AST::TypeParam) -> void } -> void
|
|
103
105
|
|
|
104
106
|
def validate_type_params: (Definition, ancestors: AncestorBuilder::OneAncestors, methods: MethodBuilder::Methods) -> void
|
|
105
107
|
|
|
106
|
-
def source_location: (Definition::Ancestor::Instance::source, AST::Declarations::t) -> Location[untyped, untyped]?
|
|
108
|
+
def source_location: (Definition::Ancestor::Instance::source, AST::Declarations::t | AST::Ruby::Declarations::t) -> Location[untyped, untyped]?
|
|
107
109
|
|
|
108
110
|
def validate_variable: (Definition::Variable) -> void
|
|
109
111
|
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
class Environment
|
|
3
|
+
# Represents a class entry in the environment
|
|
4
|
+
#
|
|
5
|
+
# ```rb
|
|
6
|
+
# entry = ClassEntry.new(TypeName.parse("::String"))
|
|
7
|
+
# entry << [nil, declaration]
|
|
8
|
+
# entry << [[nil, TypeName.parse("::Kernel")], declaration]
|
|
9
|
+
# ```
|
|
10
|
+
class ClassEntry
|
|
11
|
+
attr_reader name: TypeName
|
|
12
|
+
|
|
13
|
+
type declaration = AST::Declarations::Class | AST::Ruby::Declarations::ClassDecl
|
|
14
|
+
|
|
15
|
+
type context_decl = [Resolver::context, declaration]
|
|
16
|
+
|
|
17
|
+
attr_reader context_decls: Array[context_decl]
|
|
18
|
+
|
|
19
|
+
@primary_decl: declaration?
|
|
20
|
+
|
|
21
|
+
def initialize: (TypeName) -> void
|
|
22
|
+
|
|
23
|
+
def <<: (context_decl) -> self
|
|
24
|
+
|
|
25
|
+
def each_decl: { (declaration) -> void } -> void
|
|
26
|
+
| () -> Enumerator[declaration]
|
|
27
|
+
|
|
28
|
+
# Returns true if the entry doesn't have any declaration
|
|
29
|
+
#
|
|
30
|
+
def empty?: () -> bool
|
|
31
|
+
|
|
32
|
+
# Find the *primary* declaration of the class
|
|
33
|
+
#
|
|
34
|
+
# * Returns the first declaration with super class
|
|
35
|
+
# * Returns the first declaration if the declaration doesn't have super class
|
|
36
|
+
#
|
|
37
|
+
%a{pure} def primary_decl: () -> declaration
|
|
38
|
+
|
|
39
|
+
# Returns the generics declaration
|
|
40
|
+
#
|
|
41
|
+
def type_params: () -> Array[AST::TypeParam]
|
|
42
|
+
|
|
43
|
+
# Confirms if the type parameters in the declaration are compatible
|
|
44
|
+
#
|
|
45
|
+
# * Raises `GenericParameterMismatchError` if incompatible declaration is detected.
|
|
46
|
+
#
|
|
47
|
+
def validate_type_params: () -> void
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
class Environment
|
|
3
|
+
# Represents a class entry in the environment
|
|
4
|
+
#
|
|
5
|
+
# ```rb
|
|
6
|
+
# entry = ModuleEntry.new(TypeName.parse("::Kernel"))
|
|
7
|
+
# entry << [nil, declaration]
|
|
8
|
+
# entry << [[nil, TypeName.parse("::Object")], declaration]
|
|
9
|
+
# ```
|
|
10
|
+
#
|
|
11
|
+
class ModuleEntry
|
|
12
|
+
attr_reader name: TypeName
|
|
13
|
+
|
|
14
|
+
type declaration = AST::Declarations::Module | AST::Ruby::Declarations::ModuleDecl
|
|
15
|
+
|
|
16
|
+
type context_decl = [Resolver::context, declaration]
|
|
17
|
+
|
|
18
|
+
attr_reader context_decls: Array[context_decl]
|
|
19
|
+
|
|
20
|
+
def initialize: (TypeName) -> void
|
|
21
|
+
|
|
22
|
+
def <<: (context_decl) -> self
|
|
23
|
+
|
|
24
|
+
def each_decl: { (declaration) -> void } -> void
|
|
25
|
+
| () -> Enumerator[declaration]
|
|
26
|
+
|
|
27
|
+
# Returns true if the entry doesn't have any declaration
|
|
28
|
+
#
|
|
29
|
+
def empty?: () -> bool
|
|
30
|
+
|
|
31
|
+
# Returns the first declaration
|
|
32
|
+
#
|
|
33
|
+
# This method helps using the class with `ClassEntry` objects.
|
|
34
|
+
#
|
|
35
|
+
def primary_decl: () -> declaration
|
|
36
|
+
|
|
37
|
+
# Returns the generics declaration
|
|
38
|
+
#
|
|
39
|
+
def type_params: () -> Array[AST::TypeParam]
|
|
40
|
+
|
|
41
|
+
# Confirms if the type parameters in the declaration are compatible
|
|
42
|
+
#
|
|
43
|
+
# * Raises `GenericParameterMismatchError` if incompatible declaration is detected.
|
|
44
|
+
#
|
|
45
|
+
def validate_type_params: () -> void
|
|
46
|
+
|
|
47
|
+
def self_types: () -> Array[AST::Declarations::Module::Self]
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
data/sig/environment.rbs
CHANGED
|
@@ -2,81 +2,20 @@ module RBS
|
|
|
2
2
|
class Environment
|
|
3
3
|
type module_decl = AST::Declarations::Class | AST::Declarations::Module
|
|
4
4
|
|
|
5
|
-
interface _ModuleOrClass
|
|
6
|
-
def name: () -> TypeName
|
|
7
|
-
|
|
8
|
-
def type_params: () -> Array[AST::TypeParam]
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
interface _NamedDecl
|
|
12
|
-
def name: () -> TypeName
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
module ContextUtil
|
|
16
|
-
def calculate_context: (Array[_NamedDecl]) -> Resolver::context
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# Name of object, it's (multiple) declarations with the outer module declarations
|
|
20
|
-
#
|
|
21
|
-
class MultiEntry[M < _ModuleOrClass]
|
|
22
|
-
class D[M < _ModuleOrClass]
|
|
23
|
-
attr_reader decl: M
|
|
24
|
-
attr_reader outer: Array[module_decl]
|
|
25
|
-
|
|
26
|
-
def initialize: (decl: M, outer: Array[module_decl]) -> void
|
|
27
|
-
|
|
28
|
-
include ContextUtil
|
|
29
|
-
|
|
30
|
-
@context: Resolver::context
|
|
31
|
-
|
|
32
|
-
def context: () -> Resolver::context
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
attr_reader name: TypeName
|
|
36
|
-
attr_reader decls: Array[D[M]]
|
|
37
|
-
|
|
38
|
-
@primary: D[M]?
|
|
39
|
-
|
|
40
|
-
def initialize: (name: TypeName) -> void
|
|
41
|
-
|
|
42
|
-
def insert: (decl: M, outer: Array[module_decl]) -> void
|
|
43
|
-
|
|
44
|
-
def validate_type_params: () -> void
|
|
45
|
-
|
|
46
|
-
def compatible_params?: (Array[AST::TypeParam], Array[AST::TypeParam]) -> boolish
|
|
47
|
-
|
|
48
|
-
def type_params: () -> Array[AST::TypeParam]
|
|
49
|
-
|
|
50
|
-
def primary: () -> D[M]
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
class ModuleEntry < MultiEntry[AST::Declarations::Module]
|
|
54
|
-
def self_types: () -> Array[AST::Declarations::Module::Self]
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
class ClassEntry < MultiEntry[AST::Declarations::Class]
|
|
58
|
-
end
|
|
59
|
-
|
|
60
5
|
# Name of object, it's (single) declaration, and the outer module declarations
|
|
61
6
|
#
|
|
62
7
|
class SingleEntry[N, D]
|
|
63
8
|
attr_reader name: N
|
|
64
9
|
attr_reader decl: D
|
|
65
|
-
attr_reader
|
|
66
|
-
|
|
67
|
-
def initialize: (name: N, decl: D, outer: Array[module_decl]) -> void
|
|
10
|
+
attr_reader context: Resolver::context
|
|
68
11
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
@context: Resolver::context
|
|
72
|
-
|
|
73
|
-
def context: () -> Resolver::context
|
|
12
|
+
def initialize: (name: N, decl: D, context: Resolver::context) -> void
|
|
74
13
|
end
|
|
75
14
|
|
|
76
|
-
class ModuleAliasEntry < SingleEntry[TypeName, AST::Declarations::ModuleAlias]
|
|
15
|
+
class ModuleAliasEntry < SingleEntry[TypeName, AST::Declarations::ModuleAlias | AST::Ruby::Declarations::ClassModuleAliasDecl]
|
|
77
16
|
end
|
|
78
17
|
|
|
79
|
-
class ClassAliasEntry < SingleEntry[TypeName, AST::Declarations::ClassAlias]
|
|
18
|
+
class ClassAliasEntry < SingleEntry[TypeName, AST::Declarations::ClassAlias | AST::Ruby::Declarations::ClassModuleAliasDecl]
|
|
80
19
|
end
|
|
81
20
|
|
|
82
21
|
class InterfaceEntry < SingleEntry[TypeName, AST::Declarations::Interface]
|
|
@@ -85,14 +24,18 @@ module RBS
|
|
|
85
24
|
class TypeAliasEntry < SingleEntry[TypeName, AST::Declarations::TypeAlias]
|
|
86
25
|
end
|
|
87
26
|
|
|
88
|
-
class ConstantEntry < SingleEntry[TypeName, AST::Declarations::Constant]
|
|
27
|
+
class ConstantEntry < SingleEntry[TypeName, AST::Declarations::Constant | AST::Ruby::Declarations::ConstantDecl]
|
|
89
28
|
end
|
|
90
29
|
|
|
91
30
|
class GlobalEntry < SingleEntry[Symbol, AST::Declarations::Global]
|
|
92
31
|
end
|
|
93
32
|
|
|
94
33
|
# Top level declarations
|
|
95
|
-
|
|
34
|
+
def declarations: () -> Array[AST::Ruby::Declarations::t | AST::Declarations::t]
|
|
35
|
+
|
|
36
|
+
# Array of source objects loaded in the environment
|
|
37
|
+
#
|
|
38
|
+
attr_reader sources: Array[Source::t]
|
|
96
39
|
|
|
97
40
|
# Class declarations
|
|
98
41
|
attr_reader class_decls: Hash[TypeName, ModuleEntry | ClassEntry]
|
|
@@ -111,10 +54,6 @@ module RBS
|
|
|
111
54
|
# Global declarations
|
|
112
55
|
attr_reader global_decls: Hash[Symbol, GlobalEntry]
|
|
113
56
|
|
|
114
|
-
# A hash from Buffer to it's contents
|
|
115
|
-
#
|
|
116
|
-
attr_reader signatures: Hash[Buffer, [Array[AST::Directives::t], Array[AST::Declarations::t]]]
|
|
117
|
-
|
|
118
57
|
def initialize: () -> void
|
|
119
58
|
|
|
120
59
|
def initialize_copy: (Environment) -> void
|
|
@@ -123,15 +62,21 @@ module RBS
|
|
|
123
62
|
#
|
|
124
63
|
def self.from_loader: (EnvironmentLoader) -> Environment
|
|
125
64
|
|
|
126
|
-
def
|
|
65
|
+
def add_source: (Source::t) -> void
|
|
66
|
+
|
|
67
|
+
def each_rbs_source: () { (Source::RBS) -> void } -> void
|
|
68
|
+
| () -> Enumerator[Source::RBS]
|
|
127
69
|
|
|
128
|
-
|
|
70
|
+
def each_ruby_source: () { (Source::Ruby) -> void } -> void
|
|
71
|
+
| () -> Enumerator[Source::Ruby]
|
|
72
|
+
|
|
73
|
+
# Insert a declaration into the environment
|
|
129
74
|
#
|
|
130
|
-
def
|
|
75
|
+
private def insert_rbs_decl: (AST::Declarations::t, context: Resolver::context, namespace: Namespace) -> void
|
|
131
76
|
|
|
132
77
|
# Insert a declaration into the environment
|
|
133
78
|
#
|
|
134
|
-
private def
|
|
79
|
+
private def insert_ruby_decl: (AST::Ruby::Declarations::t, context: Resolver::context, namespace: Namespace) -> void
|
|
135
80
|
|
|
136
81
|
# Resolve all type names in the environment to absolute type names.
|
|
137
82
|
# Relative type name will be left if absolute type name cannot be found.
|
|
@@ -139,9 +84,15 @@ module RBS
|
|
|
139
84
|
# When `only` is given, it skips other _top-level_ declarations not included in the collection.
|
|
140
85
|
# This helps running resolution faster in the case of _partial updates_.
|
|
141
86
|
#
|
|
142
|
-
def resolve_type_names: (?only: Set[AST::Declarations::t]?) -> Environment
|
|
87
|
+
def resolve_type_names: (?only: Set[AST::Declarations::t | AST::Ruby::Declarations::t]?) -> Environment
|
|
143
88
|
|
|
144
|
-
def resolve_signature: (
|
|
89
|
+
def resolve_signature: (
|
|
90
|
+
Resolver::TypeNameResolver,
|
|
91
|
+
UseMap::Table,
|
|
92
|
+
Array[AST::Directives::t],
|
|
93
|
+
Array[AST::Declarations::t],
|
|
94
|
+
?only: Set[AST::Declarations::t | AST::Ruby::Declarations::t]?
|
|
95
|
+
) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
|
|
145
96
|
|
|
146
97
|
def inspect: () -> String
|
|
147
98
|
|
|
@@ -149,7 +100,8 @@ module RBS
|
|
|
149
100
|
|
|
150
101
|
# Remove declarations and directives that are loaded from `buffers`
|
|
151
102
|
#
|
|
152
|
-
def unload: (Set[
|
|
103
|
+
def unload: (Set[Pathname] paths) -> Environment
|
|
104
|
+
| %a{deprecated: Use pathname version} (Set[Buffer] buffers) -> Environment
|
|
153
105
|
|
|
154
106
|
# Returns true if an interface with the type name is defined
|
|
155
107
|
#
|
|
@@ -190,22 +142,58 @@ module RBS
|
|
|
190
142
|
# Returns true if the type name is a class alias
|
|
191
143
|
def class_alias?: (TypeName) -> bool
|
|
192
144
|
|
|
193
|
-
|
|
145
|
+
# Returns the entry for the class name
|
|
146
|
+
#
|
|
147
|
+
# Returns `nil` when:
|
|
148
|
+
#
|
|
149
|
+
# * The type name is not found
|
|
150
|
+
# * The type name is not a class
|
|
151
|
+
#
|
|
152
|
+
# It normalizes when `normalized: true` is given -- returns `ClassEntry` or `nil`.
|
|
153
|
+
#
|
|
154
|
+
def class_entry: (TypeName, normalized: true) -> ClassEntry?
|
|
155
|
+
| (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | nil)
|
|
194
156
|
|
|
195
157
|
# Returns ClassEntry if the class definition is found, normalized in case of alias
|
|
196
158
|
#
|
|
159
|
+
%a{deprecated: Use `class_entry(type_name, normalized: true)` instead. }
|
|
197
160
|
def normalized_class_entry: (TypeName) -> ClassEntry?
|
|
198
161
|
|
|
199
|
-
|
|
162
|
+
# Returns the entry for the module name
|
|
163
|
+
#
|
|
164
|
+
# Returns `nil` when:
|
|
165
|
+
#
|
|
166
|
+
# * The type name is not found
|
|
167
|
+
# * The type name is not a module
|
|
168
|
+
#
|
|
169
|
+
# It normalizes when `normalized: true` is given -- returns `ModuleEntry` or `nil`.
|
|
170
|
+
#
|
|
171
|
+
def module_entry: (TypeName, normalized: true) -> ModuleEntry?
|
|
172
|
+
| (TypeName, ?normalized: bool) -> (ModuleEntry | ModuleAliasEntry | nil)
|
|
200
173
|
|
|
201
174
|
# Returns ModuleEntry if the module definition is found, normalized in case of alias
|
|
202
175
|
#
|
|
176
|
+
%a{deprecated: Use `module_entry(type_name, normalized: true)` instead. }
|
|
203
177
|
def normalized_module_entry: (TypeName) -> ModuleEntry?
|
|
204
178
|
|
|
205
|
-
|
|
179
|
+
# Returns the entry for the type name
|
|
180
|
+
#
|
|
181
|
+
# The entry is one of ClassEntry, ModuleEntry, ConstantEntry, ClassAliasEntry, or ModuleAliasEntry.
|
|
182
|
+
# When `normalized: true` is given, it returns normalized entry -- one of ClassEntry, ModuleEntry, or ConstantEntry.
|
|
183
|
+
#
|
|
184
|
+
# Returns `nil` if not found.
|
|
185
|
+
#
|
|
186
|
+
def constant_entry: (TypeName, normalized: true) -> (ClassEntry | ModuleEntry | ConstantEntry | nil)
|
|
187
|
+
| (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | ModuleEntry | ModuleAliasEntry | ConstantEntry | nil)
|
|
206
188
|
|
|
207
|
-
|
|
189
|
+
# Returns ClassEntry or ModuleEntry if the class/module definition is found
|
|
190
|
+
#
|
|
191
|
+
# Normalizes when `normalized: true` is given.
|
|
192
|
+
#
|
|
193
|
+
def module_class_entry: (TypeName, normalized: true) -> (ClassEntry | ModuleEntry | nil)
|
|
194
|
+
| (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | ModuleEntry | ModuleAliasEntry | nil)
|
|
208
195
|
|
|
196
|
+
%a{deprecated: Use `module_class_entry(type_name, normalized: true)` instead. }
|
|
209
197
|
def normalized_module_class_entry: (TypeName) -> (ClassEntry | ModuleEntry | nil)
|
|
210
198
|
|
|
211
199
|
@normalize_module_name_cache: Hash[TypeName, TypeName | false | nil]
|
|
@@ -216,26 +204,39 @@ module RBS
|
|
|
216
204
|
# * Returns `nil` if the rhs name cannot be found
|
|
217
205
|
# * Returns `false` if the name is cyclic
|
|
218
206
|
#
|
|
207
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
208
|
+
#
|
|
219
209
|
def normalize_module_name?: (TypeName) -> (TypeName | nil | false)
|
|
220
210
|
|
|
221
|
-
# Returns the original module name that is defined with `module` declaration
|
|
211
|
+
# Returns the original module name that is defined with `module`/`class` declaration
|
|
222
212
|
#
|
|
223
|
-
# * Raises an error if given type name is not module
|
|
213
|
+
# * Raises an error if given type name is not module/class
|
|
224
214
|
# * Calls `#absolute!` for relative module names
|
|
225
215
|
# * Returns the name itself if the name cannot be normalized to a class/module
|
|
226
216
|
#
|
|
217
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
218
|
+
#
|
|
227
219
|
def normalize_module_name: (TypeName) -> TypeName
|
|
228
220
|
|
|
221
|
+
# Returns the original module name that is defined with `module`/`class` declaration
|
|
222
|
+
#
|
|
223
|
+
# * Raises an error if given type name is not a module/class
|
|
224
|
+
def normalize_module_name!: (TypeName) -> TypeName
|
|
225
|
+
|
|
229
226
|
# Returns a normalized module/class name or a type name with a normalized namespace
|
|
230
227
|
#
|
|
231
228
|
# * Calls `#absolute!` for relative module names
|
|
232
229
|
# * Returns `nil` if the typename cannot be found
|
|
233
230
|
# * Returns `false` if the name is cyclic
|
|
234
231
|
#
|
|
232
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
233
|
+
#
|
|
235
234
|
def normalize_type_name?: (TypeName) -> (TypeName | nil | false)
|
|
236
235
|
|
|
237
236
|
# Normalize the type name or raises an error
|
|
238
237
|
#
|
|
238
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
239
|
+
#
|
|
239
240
|
def normalize_type_name!: (TypeName) -> TypeName
|
|
240
241
|
|
|
241
242
|
# Returns a normalized module/class name or a type name with a normalized namespace
|
|
@@ -243,6 +244,8 @@ module RBS
|
|
|
243
244
|
# * Calls `#absolute!` for relative module names
|
|
244
245
|
# * Returns the typename itself if the name cannot be normalized
|
|
245
246
|
#
|
|
247
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
248
|
+
#
|
|
246
249
|
def normalize_type_name: (TypeName) -> TypeName
|
|
247
250
|
|
|
248
251
|
# Returns `true` if given type name is normalized
|
|
@@ -264,7 +267,7 @@ module RBS
|
|
|
264
267
|
|
|
265
268
|
def append_context: (Resolver::context, module_decl) -> Resolver::context
|
|
266
269
|
|
|
267
|
-
def resolve_declaration: (Resolver::TypeNameResolver resolver, UseMap map, AST::Declarations::t decl,
|
|
270
|
+
def resolve_declaration: (Resolver::TypeNameResolver resolver, UseMap map, AST::Declarations::t decl, context: Resolver::context, prefix: Namespace) -> AST::Declarations::t
|
|
268
271
|
|
|
269
272
|
def resolve_member: (Resolver::TypeNameResolver, UseMap map, AST::Members::t, context: Resolver::context) -> AST::Members::t
|
|
270
273
|
|
|
@@ -272,8 +275,12 @@ module RBS
|
|
|
272
275
|
|
|
273
276
|
def resolve_type_params: (Resolver::TypeNameResolver resolver, UseMap map, Array[AST::TypeParam], context: Resolver::context) -> Array[AST::TypeParam]
|
|
274
277
|
|
|
275
|
-
def
|
|
278
|
+
def resolve_ruby_decl: (Resolver::TypeNameResolver, AST::Ruby::Declarations::t, context: Resolver::context, prefix: Namespace) -> AST::Ruby::Declarations::t
|
|
279
|
+
|
|
280
|
+
def resolve_ruby_member: (Resolver::TypeNameResolver, AST::Ruby::Members::t, context: Resolver::context) -> AST::Ruby::Members::t
|
|
281
|
+
|
|
282
|
+
def absolute_type: (Resolver::TypeNameResolver, UseMap? map, Types::t, context: Resolver::context) -> Types::t
|
|
276
283
|
|
|
277
|
-
def absolute_type_name: (Resolver::TypeNameResolver, UseMap map, TypeName, context: Resolver::context) -> TypeName
|
|
284
|
+
def absolute_type_name: (Resolver::TypeNameResolver, UseMap? map, TypeName, context: Resolver::context) -> TypeName
|
|
278
285
|
end
|
|
279
286
|
end
|
data/sig/errors.rbs
CHANGED
|
@@ -115,14 +115,16 @@ module RBS
|
|
|
115
115
|
class NoMixinFoundError < DefinitionError
|
|
116
116
|
include DetailedMessageable
|
|
117
117
|
|
|
118
|
+
type member = AST::Members::t | AST::Ruby::Members::IncludeMember | AST::Ruby::Members::ExtendMember | AST::Ruby::Members::PrependMember
|
|
119
|
+
|
|
118
120
|
attr_reader type_name: TypeName
|
|
119
|
-
attr_reader member:
|
|
121
|
+
attr_reader member: member
|
|
120
122
|
|
|
121
|
-
def initialize: (type_name: TypeName, member:
|
|
123
|
+
def initialize: (type_name: TypeName, member: member) -> void
|
|
122
124
|
|
|
123
125
|
def location: () -> Location[untyped, untyped]?
|
|
124
126
|
|
|
125
|
-
def self.check!: (TypeName, env: Environment, member:
|
|
127
|
+
def self.check!: (TypeName, env: Environment, member: member) -> void
|
|
126
128
|
end
|
|
127
129
|
|
|
128
130
|
class DuplicatedMethodDefinitionError < DefinitionError
|
|
@@ -226,28 +228,35 @@ module RBS
|
|
|
226
228
|
class InvalidOverloadMethodError < DefinitionError
|
|
227
229
|
include DetailedMessageable
|
|
228
230
|
|
|
231
|
+
type member = AST::Members::MethodDefinition | AST::Ruby::Members::DefMember
|
|
232
|
+
|
|
229
233
|
attr_reader type_name: TypeName
|
|
230
234
|
attr_reader method_name: Symbol
|
|
231
235
|
attr_reader kind: :instance | :singleton
|
|
232
|
-
attr_reader members: Array[
|
|
236
|
+
attr_reader members: Array[member]
|
|
233
237
|
|
|
234
|
-
def initialize: (type_name: TypeName, method_name: Symbol, kind: :instance | :singleton, members: Array[
|
|
238
|
+
def initialize: (type_name: TypeName, method_name: Symbol, kind: :instance | :singleton, members: Array[member]) -> void
|
|
235
239
|
|
|
236
240
|
def location: () -> AST::Members::MethodDefinition::loc?
|
|
237
241
|
end
|
|
238
242
|
|
|
239
243
|
class GenericParameterMismatchError < LoadingError
|
|
244
|
+
type decl = AST::Declarations::Class | AST::Declarations::Module
|
|
245
|
+
| AST::Ruby::Declarations::ClassDecl | AST::Ruby::Declarations::ModuleDecl
|
|
246
|
+
|
|
240
247
|
attr_reader name: TypeName
|
|
241
|
-
attr_reader decl:
|
|
248
|
+
attr_reader decl: decl
|
|
242
249
|
|
|
243
|
-
def initialize: (name: TypeName, decl:
|
|
250
|
+
def initialize: (name: TypeName, decl: decl, ?location: Location) -> void
|
|
244
251
|
end
|
|
245
252
|
|
|
246
253
|
class DuplicatedDeclarationError < LoadingError
|
|
254
|
+
type declaration = AST::Declarations::t | AST::Ruby::Declarations::t
|
|
255
|
+
|
|
247
256
|
attr_reader name: TypeName | Symbol
|
|
248
|
-
attr_reader decls: Array[
|
|
257
|
+
attr_reader decls: Array[declaration]
|
|
249
258
|
|
|
250
|
-
def initialize: (TypeName | Symbol, *
|
|
259
|
+
def initialize: (TypeName | Symbol, *declaration) -> void
|
|
251
260
|
end
|
|
252
261
|
|
|
253
262
|
class InvalidVarianceAnnotationError < DefinitionError
|
|
@@ -280,6 +289,7 @@ module RBS
|
|
|
280
289
|
include DetailedMessageable
|
|
281
290
|
|
|
282
291
|
type member = AST::Members::Include | AST::Members::Prepend | AST::Members::Extend
|
|
292
|
+
| AST::Ruby::Members::IncludeMember | AST::Ruby::Members::PrependMember | AST::Ruby::Members::ExtendMember
|
|
283
293
|
|
|
284
294
|
attr_reader type_name: TypeName
|
|
285
295
|
attr_reader member: member
|
|
@@ -290,17 +300,21 @@ module RBS
|
|
|
290
300
|
|
|
291
301
|
def self.check!: (type_name: TypeName, env: Environment, member: member) -> void
|
|
292
302
|
|
|
303
|
+
def member_name: (member) -> TypeName
|
|
304
|
+
|
|
293
305
|
def mixin_name: () -> String
|
|
294
306
|
end
|
|
295
307
|
|
|
296
308
|
# InheritModuleError is raised if a class definition inherits a module (not a class)
|
|
297
309
|
#
|
|
298
310
|
class InheritModuleError < DefinitionError
|
|
311
|
+
type super_class = AST::Declarations::Class::Super | AST::Ruby::Declarations::ClassDecl::SuperClass
|
|
312
|
+
|
|
299
313
|
include DetailedMessageable
|
|
300
314
|
|
|
301
|
-
attr_reader super_decl:
|
|
315
|
+
attr_reader super_decl: super_class
|
|
302
316
|
|
|
303
|
-
def initialize: (
|
|
317
|
+
def initialize: (super_class) -> void
|
|
304
318
|
|
|
305
319
|
def location: () -> Location[untyped, untyped]?
|
|
306
320
|
|
|
@@ -308,7 +322,7 @@ module RBS
|
|
|
308
322
|
#
|
|
309
323
|
# Automatically normalize the name of super.
|
|
310
324
|
#
|
|
311
|
-
def self.check!: (
|
|
325
|
+
def self.check!: (super_class, env: Environment) -> void
|
|
312
326
|
end
|
|
313
327
|
|
|
314
328
|
class RecursiveTypeAliasError < BaseError
|
|
@@ -380,14 +394,6 @@ module RBS
|
|
|
380
394
|
def location: () -> AST::Declarations::AliasDecl::loc?
|
|
381
395
|
end
|
|
382
396
|
|
|
383
|
-
class WillSyntaxError < BaseError
|
|
384
|
-
include RBS::DetailedMessageable
|
|
385
|
-
|
|
386
|
-
def initialize: (String message, location: Location[untyped, untyped]?) -> void
|
|
387
|
-
|
|
388
|
-
attr_reader location: Location[untyped, untyped]?
|
|
389
|
-
end
|
|
390
|
-
|
|
391
397
|
class TypeParamDefaultReferenceError < BaseError
|
|
392
398
|
include DetailedMessageable
|
|
393
399
|
|