rbs 4.0.0.dev.4 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +14 -14
- data/.github/workflows/bundle-update.yml +60 -0
- data/.github/workflows/c-check.yml +18 -11
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/ruby.yml +27 -34
- data/.github/workflows/rust.yml +95 -0
- data/.github/workflows/typecheck.yml +2 -2
- data/.github/workflows/windows.yml +2 -2
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +323 -0
- data/README.md +1 -1
- data/Rakefile +43 -33
- data/Steepfile +1 -0
- data/config.yml +426 -24
- data/core/array.rbs +307 -227
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +2 -2
- data/core/class.rbs +6 -5
- 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 +179 -87
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator.rbs +65 -2
- 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 +280 -177
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -92
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1045 -739
- data/core/integer.rbs +135 -137
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +192 -144
- data/core/kernel.rbs +216 -155
- 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 +244 -106
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +74 -63
- data/core/object.rbs +9 -11
- 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 +159 -57
- data/core/rational.rbs +60 -89
- data/core/rbs/unnamed/argf.rbs +60 -53
- 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 +38 -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 +490 -360
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +27 -26
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +135 -67
- 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/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 +576 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +46 -16
- data/docs/type_fingerprint.md +21 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +544 -116
- data/ext/rbs_extension/ast_translation.h +3 -0
- data/ext/rbs_extension/class_constants.c +16 -2
- data/ext/rbs_extension/class_constants.h +8 -0
- data/ext/rbs_extension/extconf.rb +5 -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 +44 -35
- data/include/rbs/ast.h +448 -173
- data/include/rbs/defines.h +27 -0
- data/include/rbs/lexer.h +30 -11
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +6 -6
- 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/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 +293 -3
- data/lib/rbs/ast/ruby/comment_block.rb +24 -0
- data/lib/rbs/ast/ruby/declarations.rb +198 -3
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/members.rb +532 -22
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +20 -15
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -106
- data/lib/rbs/cli.rb +52 -19
- data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
- data/lib/rbs/collection/sources/git.rb +1 -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 +20 -0
- data/lib/rbs/definition_builder.rb +147 -25
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +227 -74
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -18
- data/lib/rbs/inline_parser.rb +342 -6
- 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/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 +8 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +116 -38
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +19 -2
- data/lib/rbs/type_name.rb +1 -1
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/type_assertions.rb +35 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +1 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +4 -3
- data/rust/.gitignore +1 -0
- data/rust/Cargo.lock +378 -0
- data/rust/Cargo.toml +7 -0
- data/rust/ruby-rbs/Cargo.toml +22 -0
- data/rust/ruby-rbs/build.rs +764 -0
- data/rust/ruby-rbs/examples/locations.rs +60 -0
- data/rust/ruby-rbs/src/lib.rs +1 -0
- data/rust/ruby-rbs/src/node/mod.rs +742 -0
- data/rust/ruby-rbs/tests/sanity.rs +47 -0
- data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
- data/rust/ruby-rbs-sys/Cargo.toml +23 -0
- data/rust/ruby-rbs-sys/build.rs +204 -0
- data/rust/ruby-rbs-sys/src/lib.rs +50 -0
- data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
- data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
- data/rust/ruby-rbs-sys/wrapper.h +1 -0
- data/schema/typeParam.json +17 -1
- data/sig/ast/ruby/annotations.rbs +315 -4
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +108 -2
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- 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 +39 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -1
- data/sig/method_builder.rbs +3 -1
- data/sig/parser.rbs +31 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +35 -7
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- data/sig/types.rbs +6 -7
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +11 -0
- data/src/ast.c +410 -153
- data/src/lexer.c +1392 -1313
- data/src/lexer.re +3 -0
- data/src/lexstate.c +58 -37
- data/src/location.c +8 -48
- data/src/parser.c +977 -516
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -71
- 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/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/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 +110 -0
- data/stdlib/erb/0/erb.rbs +748 -347
- data/stdlib/etc/0/etc.rbs +55 -50
- data/stdlib/fileutils/0/fileutils.rbs +158 -139
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +217 -136
- 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 +475 -357
- 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 +25 -68
- 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 +2 -2
- 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 +1177 -85
- data/stdlib/strscan/0/string_scanner.rbs +27 -25
- 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 +3 -0
- data/stdlib/tsort/0/tsort.rbs +7 -6
- 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 +6 -6
- 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
- metadata +50 -6
data/sig/cli/diff.rbs
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
module RBS
|
|
2
2
|
class CLI
|
|
3
3
|
class Diff
|
|
4
|
-
@format: String
|
|
5
4
|
@stdout: _IO
|
|
6
5
|
@stderr: _IO
|
|
7
|
-
@diff: RBS::Diff
|
|
8
6
|
|
|
9
|
-
def initialize: (
|
|
10
|
-
argv: Array[String],
|
|
11
|
-
library_options: RBS::CLI::LibraryOptions,
|
|
12
|
-
?stdout: _IO,
|
|
13
|
-
?stderr: _IO,
|
|
14
|
-
) -> void
|
|
7
|
+
def initialize: (?stdout: _IO, ?stderr: _IO) -> void
|
|
15
8
|
|
|
16
|
-
def run: () ->
|
|
17
|
-
|
|
18
|
-
def
|
|
9
|
+
def run: (library_options: RBS::CLI::LibraryOptions, argv: Array[String]) -> Integer
|
|
10
|
+
|
|
11
|
+
def run_diff: (RBS::Diff) -> void
|
|
12
|
+
def run_markdown: (RBS::Diff) -> void
|
|
19
13
|
end
|
|
20
14
|
end
|
|
21
15
|
end
|
data/sig/cli/validate.rbs
CHANGED
|
@@ -3,15 +3,22 @@ module RBS
|
|
|
3
3
|
class Validate
|
|
4
4
|
class Errors
|
|
5
5
|
@limit: Integer?
|
|
6
|
-
@exit_error: boolish
|
|
7
|
-
@has_syntax_error: bool
|
|
8
6
|
@errors: Array[BaseError]
|
|
9
7
|
|
|
10
|
-
|
|
8
|
+
# The tag that will be thrown in #finish method
|
|
9
|
+
@tag: top
|
|
10
|
+
|
|
11
|
+
def initialize: (limit: Integer?) -> void
|
|
11
12
|
|
|
12
13
|
def add: (BaseError) -> void
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
# Throws the `@tag` with 0 or 1
|
|
16
|
+
#
|
|
17
|
+
# Must be called from the block passed to `#try` method.
|
|
18
|
+
#
|
|
19
|
+
def finish: () -> Integer
|
|
20
|
+
|
|
21
|
+
def try: () { () -> void } -> Integer
|
|
15
22
|
|
|
16
23
|
private
|
|
17
24
|
|
|
@@ -25,7 +32,7 @@ module RBS
|
|
|
25
32
|
|
|
26
33
|
def initialize: (args: Array[String], options: LibraryOptions) -> void
|
|
27
34
|
|
|
28
|
-
def run: () ->
|
|
35
|
+
def run: () -> Integer
|
|
29
36
|
|
|
30
37
|
private
|
|
31
38
|
|
|
@@ -35,9 +42,6 @@ module RBS
|
|
|
35
42
|
def validate_constant: () -> void
|
|
36
43
|
def validate_global: () -> void
|
|
37
44
|
def validate_type_alias: () -> void
|
|
38
|
-
def no_self_type_validator: (::RBS::Types::t | ::RBS::MethodType type) -> void
|
|
39
|
-
def no_classish_type_validator: (::RBS::Types::t | ::RBS::MethodType type) -> void
|
|
40
|
-
def void_type_context_validator: (::RBS::Types::t | ::RBS::MethodType type, ?bool allowed_here) -> void
|
|
41
45
|
end
|
|
42
46
|
end
|
|
43
47
|
end
|
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,7 +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
|
|
24
|
-
| AST::Ruby::Members::DefMember
|
|
28
|
+
| AST::Ruby::Members::DefMember | AST::Ruby::Members::AttrReaderMember | AST::Ruby::Members::AttrWriterMember | AST::Ruby::Members::AttrAccessorMember
|
|
25
29
|
|
|
26
30
|
class TypeDef
|
|
27
31
|
attr_reader type: MethodType
|
|
@@ -155,6 +159,7 @@ module RBS
|
|
|
155
159
|
type source = :super # Inheritance
|
|
156
160
|
| nil # Itself
|
|
157
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
|
|
158
163
|
| AST::Declarations::Module::Self
|
|
159
164
|
|
|
160
165
|
attr_reader name: TypeName
|
data/sig/definition_builder.rbs
CHANGED
|
@@ -97,6 +97,8 @@ 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
|
data/sig/environment.rbs
CHANGED
|
@@ -12,10 +12,10 @@ module RBS
|
|
|
12
12
|
def initialize: (name: N, decl: D, context: Resolver::context) -> void
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
class ModuleAliasEntry < SingleEntry[TypeName, AST::Declarations::ModuleAlias]
|
|
15
|
+
class ModuleAliasEntry < SingleEntry[TypeName, AST::Declarations::ModuleAlias | AST::Ruby::Declarations::ClassModuleAliasDecl]
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
class ClassAliasEntry < SingleEntry[TypeName, AST::Declarations::ClassAlias]
|
|
18
|
+
class ClassAliasEntry < SingleEntry[TypeName, AST::Declarations::ClassAlias | AST::Ruby::Declarations::ClassModuleAliasDecl]
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
class InterfaceEntry < SingleEntry[TypeName, AST::Declarations::Interface]
|
|
@@ -24,7 +24,7 @@ module RBS
|
|
|
24
24
|
class TypeAliasEntry < SingleEntry[TypeName, AST::Declarations::TypeAlias]
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
class ConstantEntry < SingleEntry[TypeName, AST::Declarations::Constant]
|
|
27
|
+
class ConstantEntry < SingleEntry[TypeName, AST::Declarations::Constant | AST::Ruby::Declarations::ConstantDecl]
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
class GlobalEntry < SingleEntry[Symbol, AST::Declarations::Global]
|
|
@@ -84,9 +84,15 @@ module RBS
|
|
|
84
84
|
# When `only` is given, it skips other _top-level_ declarations not included in the collection.
|
|
85
85
|
# This helps running resolution faster in the case of _partial updates_.
|
|
86
86
|
#
|
|
87
|
-
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
|
|
88
88
|
|
|
89
|
-
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]]
|
|
90
96
|
|
|
91
97
|
def inspect: () -> String
|
|
92
98
|
|
|
@@ -94,7 +100,8 @@ module RBS
|
|
|
94
100
|
|
|
95
101
|
# Remove declarations and directives that are loaded from `buffers`
|
|
96
102
|
#
|
|
97
|
-
def unload: (Set[
|
|
103
|
+
def unload: (Set[Pathname] paths) -> Environment
|
|
104
|
+
| %a{deprecated: Use pathname version} (Set[Buffer] buffers) -> Environment
|
|
98
105
|
|
|
99
106
|
# Returns true if an interface with the type name is defined
|
|
100
107
|
#
|
|
@@ -135,22 +142,58 @@ module RBS
|
|
|
135
142
|
# Returns true if the type name is a class alias
|
|
136
143
|
def class_alias?: (TypeName) -> bool
|
|
137
144
|
|
|
138
|
-
|
|
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)
|
|
139
156
|
|
|
140
157
|
# Returns ClassEntry if the class definition is found, normalized in case of alias
|
|
141
158
|
#
|
|
159
|
+
%a{deprecated: Use `class_entry(type_name, normalized: true)` instead. }
|
|
142
160
|
def normalized_class_entry: (TypeName) -> ClassEntry?
|
|
143
161
|
|
|
144
|
-
|
|
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)
|
|
145
173
|
|
|
146
174
|
# Returns ModuleEntry if the module definition is found, normalized in case of alias
|
|
147
175
|
#
|
|
176
|
+
%a{deprecated: Use `module_entry(type_name, normalized: true)` instead. }
|
|
148
177
|
def normalized_module_entry: (TypeName) -> ModuleEntry?
|
|
149
178
|
|
|
150
|
-
|
|
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)
|
|
151
188
|
|
|
152
|
-
|
|
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)
|
|
153
195
|
|
|
196
|
+
%a{deprecated: Use `module_class_entry(type_name, normalized: true)` instead. }
|
|
154
197
|
def normalized_module_class_entry: (TypeName) -> (ClassEntry | ModuleEntry | nil)
|
|
155
198
|
|
|
156
199
|
@normalize_module_name_cache: Hash[TypeName, TypeName | false | nil]
|
|
@@ -161,26 +204,39 @@ module RBS
|
|
|
161
204
|
# * Returns `nil` if the rhs name cannot be found
|
|
162
205
|
# * Returns `false` if the name is cyclic
|
|
163
206
|
#
|
|
207
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
208
|
+
#
|
|
164
209
|
def normalize_module_name?: (TypeName) -> (TypeName | nil | false)
|
|
165
210
|
|
|
166
|
-
# Returns the original module name that is defined with `module` declaration
|
|
211
|
+
# Returns the original module name that is defined with `module`/`class` declaration
|
|
167
212
|
#
|
|
168
|
-
# * Raises an error if given type name is not module
|
|
213
|
+
# * Raises an error if given type name is not module/class
|
|
169
214
|
# * Calls `#absolute!` for relative module names
|
|
170
215
|
# * Returns the name itself if the name cannot be normalized to a class/module
|
|
171
216
|
#
|
|
217
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
218
|
+
#
|
|
172
219
|
def normalize_module_name: (TypeName) -> TypeName
|
|
173
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
|
+
|
|
174
226
|
# Returns a normalized module/class name or a type name with a normalized namespace
|
|
175
227
|
#
|
|
176
228
|
# * Calls `#absolute!` for relative module names
|
|
177
229
|
# * Returns `nil` if the typename cannot be found
|
|
178
230
|
# * Returns `false` if the name is cyclic
|
|
179
231
|
#
|
|
232
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
233
|
+
#
|
|
180
234
|
def normalize_type_name?: (TypeName) -> (TypeName | nil | false)
|
|
181
235
|
|
|
182
236
|
# Normalize the type name or raises an error
|
|
183
237
|
#
|
|
238
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
239
|
+
#
|
|
184
240
|
def normalize_type_name!: (TypeName) -> TypeName
|
|
185
241
|
|
|
186
242
|
# Returns a normalized module/class name or a type name with a normalized namespace
|
|
@@ -188,6 +244,8 @@ module RBS
|
|
|
188
244
|
# * Calls `#absolute!` for relative module names
|
|
189
245
|
# * Returns the typename itself if the name cannot be normalized
|
|
190
246
|
#
|
|
247
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
248
|
+
#
|
|
191
249
|
def normalize_type_name: (TypeName) -> TypeName
|
|
192
250
|
|
|
193
251
|
# Returns `true` if given type name is normalized
|
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
|
|
@@ -287,6 +289,7 @@ module RBS
|
|
|
287
289
|
include DetailedMessageable
|
|
288
290
|
|
|
289
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
|
|
290
293
|
|
|
291
294
|
attr_reader type_name: TypeName
|
|
292
295
|
attr_reader member: member
|
|
@@ -297,17 +300,21 @@ module RBS
|
|
|
297
300
|
|
|
298
301
|
def self.check!: (type_name: TypeName, env: Environment, member: member) -> void
|
|
299
302
|
|
|
303
|
+
def member_name: (member) -> TypeName
|
|
304
|
+
|
|
300
305
|
def mixin_name: () -> String
|
|
301
306
|
end
|
|
302
307
|
|
|
303
308
|
# InheritModuleError is raised if a class definition inherits a module (not a class)
|
|
304
309
|
#
|
|
305
310
|
class InheritModuleError < DefinitionError
|
|
311
|
+
type super_class = AST::Declarations::Class::Super | AST::Ruby::Declarations::ClassDecl::SuperClass
|
|
312
|
+
|
|
306
313
|
include DetailedMessageable
|
|
307
314
|
|
|
308
|
-
attr_reader super_decl:
|
|
315
|
+
attr_reader super_decl: super_class
|
|
309
316
|
|
|
310
|
-
def initialize: (
|
|
317
|
+
def initialize: (super_class) -> void
|
|
311
318
|
|
|
312
319
|
def location: () -> Location[untyped, untyped]?
|
|
313
320
|
|
|
@@ -315,7 +322,7 @@ module RBS
|
|
|
315
322
|
#
|
|
316
323
|
# Automatically normalize the name of super.
|
|
317
324
|
#
|
|
318
|
-
def self.check!: (
|
|
325
|
+
def self.check!: (super_class, env: Environment) -> void
|
|
319
326
|
end
|
|
320
327
|
|
|
321
328
|
class RecursiveTypeAliasError < BaseError
|
|
@@ -387,14 +394,6 @@ module RBS
|
|
|
387
394
|
def location: () -> AST::Declarations::AliasDecl::loc?
|
|
388
395
|
end
|
|
389
396
|
|
|
390
|
-
class WillSyntaxError < BaseError
|
|
391
|
-
include RBS::DetailedMessageable
|
|
392
|
-
|
|
393
|
-
def initialize: (String message, location: Location[untyped, untyped]?) -> void
|
|
394
|
-
|
|
395
|
-
attr_reader location: Location[untyped, untyped]?
|
|
396
|
-
end
|
|
397
|
-
|
|
398
397
|
class TypeParamDefaultReferenceError < BaseError
|
|
399
398
|
include DetailedMessageable
|
|
400
399
|
|
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,16 @@ 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
|
+
private
|
|
114
|
+
|
|
115
|
+
def parse_mixin_call: (Prism::CallNode) -> void
|
|
116
|
+
|
|
117
|
+
def parse_attribute_call: (Prism::CallNode) -> void
|
|
118
|
+
|
|
119
|
+
def parse_constant_declaration: (Prism::ConstantWriteNode | Prism::ConstantPathWriteNode) -> void
|
|
120
|
+
|
|
121
|
+
def parse_super_class: (Prism::node, Prism::Location) -> Declarations::ClassDecl::SuperClass?
|
|
85
122
|
end
|
|
86
123
|
end
|
|
87
124
|
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/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,7 +132,9 @@ 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
|
|
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
|