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
|
@@ -6,8 +6,17 @@ module RBS
|
|
|
6
6
|
| MethodTypesAnnotation
|
|
7
7
|
| SkipAnnotation
|
|
8
8
|
| ReturnTypeAnnotation
|
|
9
|
+
| InstanceVariableAnnotation
|
|
10
|
+
| ModuleSelfAnnotation
|
|
11
|
+
| ParamTypeAnnotation
|
|
12
|
+
| SplatParamTypeAnnotation
|
|
13
|
+
| DoubleSplatParamTypeAnnotation
|
|
14
|
+
| BlockParamTypeAnnotation
|
|
9
15
|
|
|
10
16
|
type trailing_annotation = NodeTypeAssertion
|
|
17
|
+
| TypeApplicationAnnotation
|
|
18
|
+
| ClassAliasAnnotation
|
|
19
|
+
| ModuleAliasAnnotation
|
|
11
20
|
|
|
12
21
|
type t = leading_annotation | trailing_annotation
|
|
13
22
|
|
|
@@ -23,6 +32,9 @@ module RBS
|
|
|
23
32
|
def initialize: (Location location, Location prefix_location) -> void
|
|
24
33
|
|
|
25
34
|
def buffer: () -> Buffer
|
|
35
|
+
|
|
36
|
+
# Returns the type fingerprint for this annotation
|
|
37
|
+
def type_fingerprint: () -> untyped
|
|
26
38
|
end
|
|
27
39
|
|
|
28
40
|
# `: TYPE` annotation attached to nodes
|
|
@@ -33,6 +45,51 @@ module RBS
|
|
|
33
45
|
def initialize: (location: Location, prefix_location: Location, type: Types::t) -> void
|
|
34
46
|
|
|
35
47
|
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
48
|
+
|
|
49
|
+
def type_fingerprint: () -> untyped
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
class AliasAnnotation < Base
|
|
53
|
+
attr_reader keyword_location: Location
|
|
54
|
+
|
|
55
|
+
attr_reader type_name_location: Location?
|
|
56
|
+
|
|
57
|
+
# The name of the module that will be the target of the alias
|
|
58
|
+
#
|
|
59
|
+
# - `nil` if the module/class name is unspecified
|
|
60
|
+
# - `TypeName` object if the module/class name is specified
|
|
61
|
+
#
|
|
62
|
+
attr_reader type_name: TypeName?
|
|
63
|
+
|
|
64
|
+
def initialize: (location: Location, prefix_location: Location, keyword_location: Location, type_name: TypeName?, type_name_location: Location?) -> void
|
|
65
|
+
|
|
66
|
+
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# `: class-alias` annotation
|
|
70
|
+
#
|
|
71
|
+
# ```
|
|
72
|
+
# : class-alias Foo::Bar
|
|
73
|
+
# ^ -- prefix_location
|
|
74
|
+
# ^^^^^^^^^^^^ -- keyword_location
|
|
75
|
+
# ^^^^^^^^ -- type_name_location
|
|
76
|
+
# ```
|
|
77
|
+
#
|
|
78
|
+
class ClassAliasAnnotation < AliasAnnotation
|
|
79
|
+
def type_fingerprint: () -> untyped
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# `: module-alias` annotation
|
|
83
|
+
#
|
|
84
|
+
# ```
|
|
85
|
+
# : module-alias Foo::Bar
|
|
86
|
+
# ^ -- prefix_location
|
|
87
|
+
# ^^^^^^^^^^^^ -- keyword_location
|
|
88
|
+
# ^^^^^^^^ -- type_name_location
|
|
89
|
+
# ```
|
|
90
|
+
#
|
|
91
|
+
class ModuleAliasAnnotation < AliasAnnotation
|
|
92
|
+
def type_fingerprint: () -> untyped
|
|
36
93
|
end
|
|
37
94
|
|
|
38
95
|
# `: METHOD-TYPE` annotation in leading comments
|
|
@@ -45,14 +102,18 @@ module RBS
|
|
|
45
102
|
def initialize: (location: Location, prefix_location: Location, annotations: Array[AST::Annotation], method_type: MethodType) -> void
|
|
46
103
|
|
|
47
104
|
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
105
|
+
|
|
106
|
+
def type_fingerprint: () -> untyped
|
|
48
107
|
end
|
|
49
108
|
|
|
50
109
|
# `@rbs METHOD-TYPEs` annotation in leading comments
|
|
51
110
|
#
|
|
52
111
|
# ```
|
|
53
|
-
# @rbs () -> void | %a{foo} () -> String
|
|
54
|
-
# ^^^^
|
|
55
|
-
# ^
|
|
112
|
+
# @rbs () -> void | %a{foo} () -> String | ...
|
|
113
|
+
# ^^^^ -- prefix_location
|
|
114
|
+
# ^ -- vertical_bar_locations[0]
|
|
115
|
+
# ^ -- vertical_bar_locations[1]
|
|
116
|
+
# ^^^ -- dot3_location
|
|
56
117
|
# ```
|
|
57
118
|
class MethodTypesAnnotation < Base
|
|
58
119
|
class Overload = AST::Members::MethodDefinition::Overload
|
|
@@ -61,9 +122,13 @@ module RBS
|
|
|
61
122
|
|
|
62
123
|
attr_reader vertical_bar_locations: Array[Location]
|
|
63
124
|
|
|
64
|
-
|
|
125
|
+
attr_reader dot3_location: Location?
|
|
126
|
+
|
|
127
|
+
def initialize: (location: Location, prefix_location: Location, overloads: Array[Overload], vertical_bar_locations: Array[Location], dot3_location: Location?) -> void
|
|
65
128
|
|
|
66
129
|
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
130
|
+
|
|
131
|
+
def type_fingerprint: () -> untyped
|
|
67
132
|
end
|
|
68
133
|
|
|
69
134
|
# `@rbs skip -- comment` annotation in leading comments
|
|
@@ -73,6 +138,8 @@ module RBS
|
|
|
73
138
|
attr_reader comment_location: Location?
|
|
74
139
|
|
|
75
140
|
def initialize: (location: Location, prefix_location: Location, skip_location: Location, comment_location: Location?) -> void
|
|
141
|
+
|
|
142
|
+
def type_fingerprint: () -> untyped
|
|
76
143
|
end
|
|
77
144
|
|
|
78
145
|
# `@rbs return: T -- comment` annotation in leading comments
|
|
@@ -103,6 +170,299 @@ module RBS
|
|
|
103
170
|
) -> void
|
|
104
171
|
|
|
105
172
|
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
173
|
+
|
|
174
|
+
def type_fingerprint: () -> untyped
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# `[T1, T2, ...]` annotation in trailing comments
|
|
178
|
+
#
|
|
179
|
+
# ```
|
|
180
|
+
# #[String, Integer]
|
|
181
|
+
# ^ -- prefix_location
|
|
182
|
+
# ^ -- comma_locations[0]
|
|
183
|
+
# ^ -- close_bracket_location
|
|
184
|
+
# ```
|
|
185
|
+
#
|
|
186
|
+
class TypeApplicationAnnotation < Base
|
|
187
|
+
attr_reader type_args: Array[Types::t]
|
|
188
|
+
|
|
189
|
+
attr_reader close_bracket_location: Location
|
|
190
|
+
|
|
191
|
+
attr_reader comma_locations: Array[Location]
|
|
192
|
+
|
|
193
|
+
def initialize: (
|
|
194
|
+
location: Location,
|
|
195
|
+
prefix_location: Location,
|
|
196
|
+
type_args: Array[Types::t],
|
|
197
|
+
close_bracket_location: Location,
|
|
198
|
+
comma_locations: Array[Location],
|
|
199
|
+
) -> void
|
|
200
|
+
|
|
201
|
+
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
202
|
+
|
|
203
|
+
def type_fingerprint: () -> untyped
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# `@rbs IVAR-NAME : TYPE` annotation in leading comments
|
|
207
|
+
#
|
|
208
|
+
# ```
|
|
209
|
+
# @rbs @foo : String -- comment
|
|
210
|
+
# ^^^^ -- prefix_location
|
|
211
|
+
# ^^^^ -- ivar_name_location
|
|
212
|
+
# ^ -- colon_location
|
|
213
|
+
# ^^^^^^^^^^ -- comment_location
|
|
214
|
+
# ```
|
|
215
|
+
class InstanceVariableAnnotation < Base
|
|
216
|
+
attr_reader ivar_name: Symbol
|
|
217
|
+
|
|
218
|
+
attr_reader ivar_name_location: Location
|
|
219
|
+
|
|
220
|
+
attr_reader colon_location: Location
|
|
221
|
+
|
|
222
|
+
attr_reader type: Types::t
|
|
223
|
+
|
|
224
|
+
attr_reader comment_location: Location?
|
|
225
|
+
|
|
226
|
+
def initialize: (
|
|
227
|
+
location: Location,
|
|
228
|
+
prefix_location: Location,
|
|
229
|
+
ivar_name: Symbol,
|
|
230
|
+
ivar_name_location: Location,
|
|
231
|
+
colon_location: Location,
|
|
232
|
+
type: Types::t,
|
|
233
|
+
comment_location: Location?,
|
|
234
|
+
) -> void
|
|
235
|
+
|
|
236
|
+
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
237
|
+
|
|
238
|
+
def type_fingerprint: () -> untyped
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
# `@rbs module-self: NAME[ARGS] -- comment` annotation in leading comments
|
|
242
|
+
#
|
|
243
|
+
# ```
|
|
244
|
+
# @rbs module-self: _Each[String, Integer] -- comment
|
|
245
|
+
# ^^^^ -- prefix_location
|
|
246
|
+
# ^^^^^^^^^^^ -- keyword_location
|
|
247
|
+
# ^ -- colon_location
|
|
248
|
+
# ^ -- open_bracket_location
|
|
249
|
+
# ^ -- args_comma_locations[0]
|
|
250
|
+
# ^ -- close_bracket_location
|
|
251
|
+
# ^^^^^^^^^^ -- comment_location
|
|
252
|
+
# ```
|
|
253
|
+
#
|
|
254
|
+
class ModuleSelfAnnotation < Base
|
|
255
|
+
attr_reader keyword_location: Location
|
|
256
|
+
|
|
257
|
+
attr_reader colon_location: Location
|
|
258
|
+
|
|
259
|
+
attr_reader name: TypeName
|
|
260
|
+
|
|
261
|
+
attr_reader args: Array[Types::t]
|
|
262
|
+
|
|
263
|
+
attr_reader open_bracket_location: Location?
|
|
264
|
+
|
|
265
|
+
attr_reader close_bracket_location: Location?
|
|
266
|
+
|
|
267
|
+
attr_reader args_comma_locations: Array[Location]
|
|
268
|
+
|
|
269
|
+
attr_reader comment_location: Location?
|
|
270
|
+
|
|
271
|
+
def initialize: (
|
|
272
|
+
location: Location,
|
|
273
|
+
prefix_location: Location,
|
|
274
|
+
keyword_location: Location,
|
|
275
|
+
colon_location: Location,
|
|
276
|
+
name: TypeName,
|
|
277
|
+
args: Array[Types::t],
|
|
278
|
+
open_bracket_location: Location?,
|
|
279
|
+
close_bracket_location: Location?,
|
|
280
|
+
args_comma_locations: Array[Location],
|
|
281
|
+
comment_location: Location?,
|
|
282
|
+
) -> void
|
|
283
|
+
|
|
284
|
+
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
285
|
+
|
|
286
|
+
def type_fingerprint: () -> untyped
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
class ParamTypeAnnotation < Base
|
|
290
|
+
attr_reader name_location: Location
|
|
291
|
+
|
|
292
|
+
attr_reader colon_location: Location
|
|
293
|
+
|
|
294
|
+
attr_reader param_type: Types::t
|
|
295
|
+
|
|
296
|
+
attr_reader comment_location: Location?
|
|
297
|
+
|
|
298
|
+
def initialize: (
|
|
299
|
+
location: Location,
|
|
300
|
+
prefix_location: Location,
|
|
301
|
+
name_location: Location,
|
|
302
|
+
colon_location: Location,
|
|
303
|
+
param_type: Types::t,
|
|
304
|
+
comment_location: Location?,
|
|
305
|
+
) -> void
|
|
306
|
+
|
|
307
|
+
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
308
|
+
|
|
309
|
+
def type_fingerprint: () -> untyped
|
|
310
|
+
|
|
311
|
+
%a{pure}
|
|
312
|
+
def name: () -> Symbol
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
# `@rbs *name: Type -- comment` annotation in leading comments
|
|
316
|
+
#
|
|
317
|
+
# ```
|
|
318
|
+
# @rbs *a: String -- comment
|
|
319
|
+
# ^^^^ -- prefix_location
|
|
320
|
+
# ^ -- star_location
|
|
321
|
+
# ^ -- name_location
|
|
322
|
+
# ^ -- colon_location
|
|
323
|
+
# ^^^^^^^^^^ -- comment_location
|
|
324
|
+
# ```
|
|
325
|
+
#
|
|
326
|
+
# ```
|
|
327
|
+
# @rbs *: String
|
|
328
|
+
# ^^^^ -- prefix_location
|
|
329
|
+
# ^ -- star_location
|
|
330
|
+
# ^ -- colon_location
|
|
331
|
+
# ```
|
|
332
|
+
#
|
|
333
|
+
class SplatParamTypeAnnotation < Base
|
|
334
|
+
attr_reader star_location: Location
|
|
335
|
+
|
|
336
|
+
attr_reader name_location: Location?
|
|
337
|
+
|
|
338
|
+
attr_reader colon_location: Location
|
|
339
|
+
|
|
340
|
+
attr_reader param_type: Types::t
|
|
341
|
+
|
|
342
|
+
attr_reader comment_location: Location?
|
|
343
|
+
|
|
344
|
+
def initialize: (
|
|
345
|
+
location: Location,
|
|
346
|
+
prefix_location: Location,
|
|
347
|
+
star_location: Location,
|
|
348
|
+
name_location: Location?,
|
|
349
|
+
colon_location: Location,
|
|
350
|
+
param_type: Types::t,
|
|
351
|
+
comment_location: Location?,
|
|
352
|
+
) -> void
|
|
353
|
+
|
|
354
|
+
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
355
|
+
|
|
356
|
+
def type_fingerprint: () -> untyped
|
|
357
|
+
|
|
358
|
+
%a{pure}
|
|
359
|
+
def name: () -> Symbol?
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
# `@rbs **name: Type -- comment` annotation in leading comments
|
|
363
|
+
#
|
|
364
|
+
# ```
|
|
365
|
+
# @rbs **b: bool -- comment
|
|
366
|
+
# ^^^^ -- prefix_location
|
|
367
|
+
# ^^ -- star2_location
|
|
368
|
+
# ^ -- name_location
|
|
369
|
+
# ^ -- colon_location
|
|
370
|
+
# ^^^^^^^^^^ -- comment_location
|
|
371
|
+
# ```
|
|
372
|
+
#
|
|
373
|
+
# ```
|
|
374
|
+
# @rbs **: bool
|
|
375
|
+
# ^^^^ -- prefix_location
|
|
376
|
+
# ^^ -- star2_location
|
|
377
|
+
# ^ -- colon_location
|
|
378
|
+
# ```
|
|
379
|
+
#
|
|
380
|
+
class DoubleSplatParamTypeAnnotation < Base
|
|
381
|
+
attr_reader star2_location: Location
|
|
382
|
+
|
|
383
|
+
attr_reader name_location: Location?
|
|
384
|
+
|
|
385
|
+
attr_reader colon_location: Location
|
|
386
|
+
|
|
387
|
+
attr_reader param_type: Types::t
|
|
388
|
+
|
|
389
|
+
attr_reader comment_location: Location?
|
|
390
|
+
|
|
391
|
+
def initialize: (
|
|
392
|
+
location: Location,
|
|
393
|
+
prefix_location: Location,
|
|
394
|
+
star2_location: Location,
|
|
395
|
+
name_location: Location?,
|
|
396
|
+
colon_location: Location,
|
|
397
|
+
param_type: Types::t,
|
|
398
|
+
comment_location: Location?,
|
|
399
|
+
) -> void
|
|
400
|
+
|
|
401
|
+
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
402
|
+
|
|
403
|
+
def type_fingerprint: () -> untyped
|
|
404
|
+
|
|
405
|
+
%a{pure}
|
|
406
|
+
def name: () -> Symbol?
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
# `@rbs &name: TYPE -- comment` annotation in leading comments
|
|
410
|
+
#
|
|
411
|
+
# ```
|
|
412
|
+
# @rbs &block: () -> void -- comment
|
|
413
|
+
# ^^^^ -- prefix_location
|
|
414
|
+
# ^ -- ampersand_location
|
|
415
|
+
# ^^^^^ -- name_location
|
|
416
|
+
# ^ -- colon_location
|
|
417
|
+
# ^^^^^^^^^^ -- type_location
|
|
418
|
+
# ^^^^^^^^^^ -- comment_location
|
|
419
|
+
# ```
|
|
420
|
+
#
|
|
421
|
+
# ```
|
|
422
|
+
# @rbs &: ? () -> void
|
|
423
|
+
# ^^^^ -- prefix_location
|
|
424
|
+
# ^ -- ampersand_location
|
|
425
|
+
# ^ -- colon_location
|
|
426
|
+
# ^ -- question_location
|
|
427
|
+
# ^^^^^^^^^^ -- type_location
|
|
428
|
+
# ```
|
|
429
|
+
#
|
|
430
|
+
class BlockParamTypeAnnotation < Base
|
|
431
|
+
attr_reader ampersand_location: Location
|
|
432
|
+
|
|
433
|
+
attr_reader name_location: Location?
|
|
434
|
+
|
|
435
|
+
attr_reader colon_location: Location
|
|
436
|
+
|
|
437
|
+
attr_reader type_location: Location
|
|
438
|
+
|
|
439
|
+
attr_reader type: Types::function
|
|
440
|
+
|
|
441
|
+
attr_reader question_location: Location?
|
|
442
|
+
|
|
443
|
+
attr_reader comment_location: Location?
|
|
444
|
+
|
|
445
|
+
def initialize: (
|
|
446
|
+
location: Location,
|
|
447
|
+
prefix_location: Location,
|
|
448
|
+
ampersand_location: Location,
|
|
449
|
+
name_location: Location?,
|
|
450
|
+
colon_location: Location,
|
|
451
|
+
question_location: Location?,
|
|
452
|
+
type_location: Location,
|
|
453
|
+
type: Types::function,
|
|
454
|
+
comment_location: Location?,
|
|
455
|
+
) -> void
|
|
456
|
+
|
|
457
|
+
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
458
|
+
|
|
459
|
+
def type_fingerprint: () -> untyped
|
|
460
|
+
|
|
461
|
+
%a{pure} def name: () -> Symbol?
|
|
462
|
+
|
|
463
|
+
def optional?: () -> bool
|
|
464
|
+
|
|
465
|
+
def required?: () -> bool
|
|
106
466
|
end
|
|
107
467
|
end
|
|
108
468
|
end
|
|
@@ -112,7 +112,15 @@ module RBS
|
|
|
112
112
|
|
|
113
113
|
def line_location: (Integer start_line, Integer end_line) -> Location
|
|
114
114
|
|
|
115
|
+
def location: () -> Location
|
|
116
|
+
|
|
115
117
|
private def leading_annotation?: (Integer index) -> bool
|
|
118
|
+
|
|
119
|
+
# Returns an comment object that contains the docs of from the comment block
|
|
120
|
+
#
|
|
121
|
+
# It ignores type annotations and syntax errors.
|
|
122
|
+
#
|
|
123
|
+
def as_comment: () -> AST::Comment?
|
|
116
124
|
end
|
|
117
125
|
end
|
|
118
126
|
end
|
|
@@ -2,7 +2,7 @@ module RBS
|
|
|
2
2
|
module AST
|
|
3
3
|
module Ruby
|
|
4
4
|
module Declarations
|
|
5
|
-
type t = ClassDecl | ModuleDecl
|
|
5
|
+
type t = ClassDecl | ModuleDecl | ConstantDecl | ClassModuleAliasDecl
|
|
6
6
|
|
|
7
7
|
class Base
|
|
8
8
|
attr_reader buffer: Buffer
|
|
@@ -11,27 +11,55 @@ module RBS
|
|
|
11
11
|
include Helpers::LocationHelper
|
|
12
12
|
|
|
13
13
|
def initialize: (Buffer) -> void
|
|
14
|
+
|
|
15
|
+
def type_fingerprint: () -> untyped
|
|
14
16
|
end
|
|
15
17
|
|
|
16
18
|
class ClassDecl < Base
|
|
19
|
+
class SuperClass
|
|
20
|
+
attr_reader operator_location: Location
|
|
21
|
+
|
|
22
|
+
attr_reader type_name_location: Location
|
|
23
|
+
|
|
24
|
+
attr_reader type_name: TypeName
|
|
25
|
+
|
|
26
|
+
attr_reader type_annotation: Annotations::TypeApplicationAnnotation?
|
|
27
|
+
|
|
28
|
+
def type_args: () -> Array[Types::t]
|
|
29
|
+
|
|
30
|
+
alias name type_name
|
|
31
|
+
|
|
32
|
+
alias args type_args
|
|
33
|
+
|
|
34
|
+
def initialize: (Location type_name_location, Location operator_location, TypeName, RBS::AST::Ruby::Annotations::TypeApplicationAnnotation?) -> void
|
|
35
|
+
|
|
36
|
+
def location: () -> Location
|
|
37
|
+
|
|
38
|
+
def type_fingerprint: () -> untyped
|
|
39
|
+
end
|
|
40
|
+
|
|
17
41
|
type member = t | Members::t
|
|
18
42
|
|
|
19
43
|
attr_reader class_name: TypeName
|
|
20
44
|
|
|
21
45
|
attr_reader node: Prism::ClassNode
|
|
22
46
|
|
|
47
|
+
attr_reader super_class: SuperClass?
|
|
48
|
+
|
|
23
49
|
attr_reader members: Array[member]
|
|
24
50
|
|
|
25
|
-
def initialize: (Buffer, TypeName, Prism::ClassNode) -> void
|
|
51
|
+
def initialize: (Buffer, TypeName, Prism::ClassNode, SuperClass?) -> void
|
|
26
52
|
|
|
27
53
|
def each_decl: () { (t) -> void } -> void
|
|
28
54
|
| () -> Enumerator[t]
|
|
29
55
|
|
|
30
|
-
def super_class: () -> nil
|
|
31
|
-
|
|
32
56
|
def type_params: () -> Array[AST::TypeParam]
|
|
33
57
|
|
|
34
58
|
def location: () -> Location
|
|
59
|
+
|
|
60
|
+
def name_location: () -> Location
|
|
61
|
+
|
|
62
|
+
def type_fingerprint: () -> untyped
|
|
35
63
|
end
|
|
36
64
|
|
|
37
65
|
class ModuleDecl < Base
|
|
@@ -53,6 +81,76 @@ module RBS
|
|
|
53
81
|
def location: () -> Location
|
|
54
82
|
|
|
55
83
|
def self_types: () -> Array[AST::Declarations::Module::Self]
|
|
84
|
+
|
|
85
|
+
def name_location: () -> Location
|
|
86
|
+
|
|
87
|
+
def type_fingerprint: () -> untyped
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
class ConstantDecl < Base
|
|
91
|
+
type node = Prism::ConstantWriteNode | Prism::ConstantPathWriteNode
|
|
92
|
+
|
|
93
|
+
attr_reader leading_comment: CommentBlock?
|
|
94
|
+
|
|
95
|
+
attr_reader constant_name: TypeName
|
|
96
|
+
|
|
97
|
+
attr_reader node: node
|
|
98
|
+
|
|
99
|
+
attr_reader type_annotation: Annotations::NodeTypeAssertion?
|
|
100
|
+
|
|
101
|
+
def initialize: (Buffer, TypeName, node, CommentBlock?, Annotations::NodeTypeAssertion?) -> void
|
|
102
|
+
|
|
103
|
+
def location: () -> Location
|
|
104
|
+
|
|
105
|
+
def name_location: () -> Location
|
|
106
|
+
|
|
107
|
+
# Returns the type of the constant
|
|
108
|
+
#
|
|
109
|
+
# - When type_anntoation is given, it returns the type from the annotation.
|
|
110
|
+
# - When type_annotation is not given, it returns infered type from the right-hand-side of the constant assignment
|
|
111
|
+
# - Or it returns `untyped` type
|
|
112
|
+
#
|
|
113
|
+
def type: () -> Types::t
|
|
114
|
+
|
|
115
|
+
# Returns the comment content extracted from the leading comment block
|
|
116
|
+
#
|
|
117
|
+
def comment: () -> AST::Comment?
|
|
118
|
+
|
|
119
|
+
def type_fingerprint: () -> untyped
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
class ClassModuleAliasDecl < Base
|
|
123
|
+
type node = Prism::ConstantWriteNode | Prism::ConstantPathWriteNode
|
|
124
|
+
|
|
125
|
+
type annotation = Annotations::ClassAliasAnnotation | Annotations::ModuleAliasAnnotation
|
|
126
|
+
|
|
127
|
+
attr_reader node: node
|
|
128
|
+
|
|
129
|
+
attr_reader leading_comment: CommentBlock?
|
|
130
|
+
|
|
131
|
+
attr_reader new_name: TypeName
|
|
132
|
+
|
|
133
|
+
# The infered old name from the right-hand side of the constant declaration
|
|
134
|
+
#
|
|
135
|
+
# - `nil` if the annotation has the type name
|
|
136
|
+
#
|
|
137
|
+
attr_reader infered_old_name: TypeName?
|
|
138
|
+
|
|
139
|
+
attr_reader annotation: annotation
|
|
140
|
+
|
|
141
|
+
def initialize: (Buffer, node, TypeName, TypeName?, CommentBlock?, annotation) -> void
|
|
142
|
+
|
|
143
|
+
def name_location: () -> Location
|
|
144
|
+
|
|
145
|
+
def location: () -> Location
|
|
146
|
+
|
|
147
|
+
# Returns the old name of the class/module alias
|
|
148
|
+
#
|
|
149
|
+
def old_name: () -> TypeName
|
|
150
|
+
|
|
151
|
+
def comment: () -> Comment?
|
|
152
|
+
|
|
153
|
+
def type_fingerprint: () -> untyped
|
|
56
154
|
end
|
|
57
155
|
end
|
|
58
156
|
end
|