rbs 3.10.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 +7 -5
- data/.github/workflows/comments.yml +2 -2
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/ruby.yml +16 -26
- data/.github/workflows/rust.yml +95 -0
- data/.github/workflows/typecheck.yml +1 -1
- data/.github/workflows/windows.yml +2 -2
- data/.rubocop.yml +2 -2
- data/.vscode/extensions.json +5 -0
- data/.vscode/settings.json +19 -0
- data/CHANGELOG.md +202 -2
- data/Rakefile +9 -23
- data/Steepfile +2 -0
- data/config.yml +457 -13
- data/core/array.rbs +218 -188
- 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 +45 -31
- data/core/complex.rbs +66 -55
- data/core/dir.rbs +57 -45
- data/core/encoding.rbs +6 -6
- data/core/enumerable.rbs +105 -91
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator.rbs +24 -3
- data/core/errno.rbs +3 -2
- data/core/errors.rbs +31 -29
- data/core/exception.rbs +12 -12
- data/core/fiber.rbs +47 -36
- data/core/file.rbs +242 -169
- data/core/file_test.rbs +2 -2
- data/core/float.rbs +42 -68
- data/core/gc.rbs +78 -70
- data/core/hash.rbs +70 -60
- data/core/integer.rbs +32 -75
- data/core/io/buffer.rbs +36 -36
- data/core/io/wait.rbs +7 -7
- data/core/io.rbs +192 -146
- data/core/kernel.rbs +198 -147
- data/core/marshal.rbs +3 -3
- data/core/match_data.rbs +14 -12
- data/core/math.rbs +69 -67
- data/core/method.rbs +6 -8
- data/core/module.rbs +148 -88
- data/core/nil_class.rbs +4 -3
- data/core/numeric.rbs +53 -50
- data/core/object.rbs +6 -8
- data/core/object_space.rbs +11 -10
- data/core/pathname.rbs +131 -81
- data/core/proc.rbs +65 -34
- data/core/process.rbs +221 -201
- data/core/ractor.rbs +15 -11
- data/core/random.rbs +21 -3
- data/core/range.rbs +152 -49
- data/core/rational.rbs +5 -56
- data/core/rbs/unnamed/argf.rbs +58 -51
- data/core/rbs/unnamed/env_class.rbs +18 -13
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +7 -116
- data/core/regexp.rbs +236 -197
- data/core/ruby.rbs +1 -1
- data/core/ruby_vm.rbs +32 -30
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +1 -1
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +5 -3
- data/core/set.rbs +17 -16
- data/core/signal.rbs +2 -2
- data/core/string.rbs +318 -298
- data/core/struct.rbs +26 -25
- data/core/symbol.rbs +25 -24
- data/core/thread.rbs +40 -41
- data/core/time.rbs +47 -42
- data/core/trace_point.rbs +34 -31
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +10 -10
- data/core/warning.rbs +7 -7
- data/docs/collection.md +1 -1
- data/docs/config.md +171 -0
- data/docs/inline.md +576 -0
- 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 +595 -98
- data/ext/rbs_extension/class_constants.c +30 -0
- data/ext/rbs_extension/class_constants.h +15 -0
- data/ext/rbs_extension/legacy_location.c +30 -53
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +125 -24
- data/include/rbs/ast.h +485 -150
- data/include/rbs/lexer.h +11 -4
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +20 -2
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- 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 +409 -0
- data/lib/rbs/ast/ruby/comment_block.rb +245 -0
- data/lib/rbs/ast/ruby/declarations.rb +281 -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 +723 -0
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +105 -20
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +62 -125
- data/lib/rbs/cli.rb +55 -23
- data/lib/rbs/collection/config/lockfile_generator.rb +8 -4
- data/lib/rbs/collection/sources/git.rb +1 -0
- data/lib/rbs/collection.rb +0 -1
- data/lib/rbs/definition.rb +6 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +119 -63
- data/lib/rbs/definition_builder/method_builder.rb +65 -30
- 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 +338 -155
- data/lib/rbs/environment_loader.rb +2 -2
- data/lib/rbs/errors.rb +30 -20
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +542 -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 +0 -7
- data/lib/rbs/parser_aux.rb +31 -8
- 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 -2
- data/lib/rbs/resolver/type_name_resolver.rb +0 -8
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/subtractor.rb +4 -3
- data/lib/rbs/test/type_check.rb +5 -2
- data/lib/rbs/type_name.rb +1 -8
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/convertibles.rb +1 -0
- 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 +12 -1
- data/rbs.gemspec +3 -2
- 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/ancestor_builder.rbs +1 -1
- data/sig/ast/ruby/annotations.rbs +421 -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 +178 -0
- data/sig/buffer.rbs +63 -5
- 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 -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 +37 -81
- data/sig/errors.rbs +26 -20
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +124 -0
- data/sig/location.rbs +32 -7
- data/sig/locator.rbs +0 -2
- data/sig/method_builder.rbs +9 -4
- data/sig/namespace.rbs +0 -5
- data/sig/parser.rbs +47 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +0 -3
- data/sig/source.rbs +48 -0
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +0 -5
- 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 +491 -143
- data/src/lexer.c +1552 -1314
- data/src/lexer.re +7 -0
- data/src/lexstate.c +8 -1
- data/src/location.c +8 -48
- data/src/parser.c +1107 -409
- data/src/util/rbs_constant_pool.c +0 -4
- data/stdlib/bigdecimal/0/big_decimal.rbs +16 -16
- data/stdlib/cgi-escape/0/escape.rbs +4 -4
- data/stdlib/coverage/0/coverage.rbs +4 -3
- data/stdlib/date/0/date.rbs +33 -28
- data/stdlib/date/0/date_time.rbs +24 -23
- 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 +64 -53
- data/stdlib/etc/0/etc.rbs +55 -50
- data/stdlib/fileutils/0/fileutils.rbs +140 -126
- data/stdlib/forwardable/0/forwardable.rbs +10 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +158 -131
- data/stdlib/monitor/0/monitor.rbs +3 -3
- data/stdlib/net-http/0/net-http.rbs +159 -134
- data/stdlib/objspace/0/objspace.rbs +8 -30
- data/stdlib/open-uri/0/open-uri.rbs +8 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +144 -129
- data/stdlib/optparse/0/optparse.rbs +23 -14
- data/stdlib/pathname/0/pathname.rbs +2 -2
- 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 +62 -9
- 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/store.rbs +1 -1
- data/stdlib/ripper/0/ripper.rbs +20 -17
- 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/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 +10 -9
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +1 -1
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +55 -54
- data/stdlib/strscan/0/string_scanner.rbs +46 -44
- data/stdlib/tempfile/0/tempfile.rbs +24 -20
- data/stdlib/time/0/time.rbs +7 -5
- data/stdlib/tsort/0/tsort.rbs +7 -6
- data/stdlib/uri/0/common.rbs +31 -18
- data/stdlib/uri/0/file.rbs +2 -2
- data/stdlib/uri/0/generic.rbs +9 -2
- 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 +6 -5
- 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
- metadata +66 -3
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
module AST
|
|
3
|
+
module Ruby
|
|
4
|
+
module Members
|
|
5
|
+
class Base
|
|
6
|
+
attr_reader buffer: Buffer
|
|
7
|
+
|
|
8
|
+
def initialize: (Buffer) -> void
|
|
9
|
+
|
|
10
|
+
include Helpers::LocationHelper
|
|
11
|
+
|
|
12
|
+
def type_fingerprint: () -> untyped
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
type t = DefMember
|
|
16
|
+
| IncludeMember | ExtendMember | PrependMember
|
|
17
|
+
| AttrReaderMember | AttrWriterMember | AttrAccessorMember
|
|
18
|
+
| InstanceVariableMember
|
|
19
|
+
|
|
20
|
+
class MethodTypeAnnotation
|
|
21
|
+
class DocStyle
|
|
22
|
+
type param_type_annotation = Annotations::ParamTypeAnnotation
|
|
23
|
+
| Annotations::SplatParamTypeAnnotation
|
|
24
|
+
| Annotations::DoubleSplatParamTypeAnnotation
|
|
25
|
+
| Annotations::BlockParamTypeAnnotation
|
|
26
|
+
|
|
27
|
+
attr_accessor return_type_annotation: Annotations::ReturnTypeAnnotation | Annotations::NodeTypeAssertion | nil
|
|
28
|
+
|
|
29
|
+
attr_reader required_positionals: Array[Annotations::ParamTypeAnnotation | Symbol]
|
|
30
|
+
attr_reader optional_positionals: Array[Annotations::ParamTypeAnnotation | Symbol]
|
|
31
|
+
attr_accessor rest_positionals: Annotations::SplatParamTypeAnnotation | Symbol | true | nil
|
|
32
|
+
attr_reader trailing_positionals: Array[Annotations::ParamTypeAnnotation | Symbol]
|
|
33
|
+
attr_reader required_keywords: Hash[Symbol, Annotations::ParamTypeAnnotation | Symbol]
|
|
34
|
+
attr_reader optional_keywords: Hash[Symbol, Annotations::ParamTypeAnnotation | Symbol]
|
|
35
|
+
attr_accessor rest_keywords: Annotations::DoubleSplatParamTypeAnnotation | Symbol | true | nil
|
|
36
|
+
attr_accessor block: Annotations::BlockParamTypeAnnotation | Symbol | true | nil
|
|
37
|
+
|
|
38
|
+
def initialize: () -> void
|
|
39
|
+
|
|
40
|
+
def self.build: (Array[param_type_annotation], Annotations::ReturnTypeAnnotation | Annotations::NodeTypeAssertion | nil, Prism::DefNode) -> [DocStyle, Array[param_type_annotation]]
|
|
41
|
+
|
|
42
|
+
def all_param_annotations: () -> Array[param_type_annotation | Symbol | true | nil]
|
|
43
|
+
|
|
44
|
+
def map_type_name: () { (TypeName) -> TypeName } -> self
|
|
45
|
+
|
|
46
|
+
def method_type: () -> MethodType
|
|
47
|
+
|
|
48
|
+
def type_fingerprint: () -> untyped
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
type type_annotations = DocStyle | Array[Annotations::ColonMethodTypeAnnotation | Annotations::MethodTypesAnnotation] | nil
|
|
52
|
+
|
|
53
|
+
attr_reader type_annotations: type_annotations
|
|
54
|
+
|
|
55
|
+
def initialize: (type_annotations: type_annotations) -> void
|
|
56
|
+
|
|
57
|
+
def map_type_name: { (TypeName) -> TypeName } -> self
|
|
58
|
+
|
|
59
|
+
# Returns the method type annotations from the comment block
|
|
60
|
+
#
|
|
61
|
+
# Returns a tuple of `DefAnnotations` object, array of unused leading annotations, and unused trailing annotation.
|
|
62
|
+
#
|
|
63
|
+
def self.build: (CommentBlock? leading_block, CommentBlock? trailing_block, Array[Symbol], Prism::DefNode) -> [
|
|
64
|
+
MethodTypeAnnotation,
|
|
65
|
+
Array[Annotations::leading_annotation | CommentBlock::AnnotationSyntaxError],
|
|
66
|
+
Annotations::trailing_annotation | CommentBlock::AnnotationSyntaxError | nil
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
# Returns `true` if it doesn't have any annotation
|
|
70
|
+
def empty?: () -> bool
|
|
71
|
+
|
|
72
|
+
# Returns the method type overloads
|
|
73
|
+
#
|
|
74
|
+
def overloads: () -> Array[AST::Members::MethodDefinition::Overload]
|
|
75
|
+
|
|
76
|
+
def overloading?: () -> bool
|
|
77
|
+
|
|
78
|
+
def type_fingerprint: () -> untyped
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
class DefMember < Base
|
|
82
|
+
class Overload = AST::Members::MethodDefinition::Overload
|
|
83
|
+
|
|
84
|
+
attr_reader name: Symbol
|
|
85
|
+
attr_reader node: Prism::DefNode
|
|
86
|
+
attr_reader method_type: MethodTypeAnnotation
|
|
87
|
+
attr_reader leading_comment: CommentBlock?
|
|
88
|
+
|
|
89
|
+
def initialize: (Buffer, Symbol name, Prism::DefNode node, MethodTypeAnnotation, CommentBlock? leading_comment) -> void
|
|
90
|
+
|
|
91
|
+
def location: () -> Location
|
|
92
|
+
|
|
93
|
+
def overloads: () -> Array[Overload]
|
|
94
|
+
|
|
95
|
+
def overloading?: () -> bool
|
|
96
|
+
|
|
97
|
+
def annotations: () -> Array[AST::Annotation]
|
|
98
|
+
|
|
99
|
+
def name_location: () -> Location
|
|
100
|
+
|
|
101
|
+
def type_fingerprint: () -> untyped
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
class MixinMember < Base
|
|
105
|
+
attr_reader node: Prism::CallNode
|
|
106
|
+
|
|
107
|
+
attr_reader module_name: TypeName
|
|
108
|
+
|
|
109
|
+
attr_reader annotation: Annotations::TypeApplicationAnnotation | nil
|
|
110
|
+
|
|
111
|
+
def initialize: (Buffer, Prism::CallNode, TypeName, Annotations::TypeApplicationAnnotation | nil) -> void
|
|
112
|
+
|
|
113
|
+
def location: () -> Location
|
|
114
|
+
|
|
115
|
+
def name_location: () -> Location
|
|
116
|
+
|
|
117
|
+
def type_args: () -> Array[Types::t]
|
|
118
|
+
|
|
119
|
+
def type_fingerprint: () -> untyped
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
class IncludeMember < MixinMember
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
class ExtendMember < MixinMember
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
class PrependMember < MixinMember
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
class AttributeMember < Base
|
|
132
|
+
attr_reader node: Prism::CallNode
|
|
133
|
+
|
|
134
|
+
attr_reader name_nodes: Array[Prism::SymbolNode]
|
|
135
|
+
|
|
136
|
+
attr_reader type_annotation: Annotations::NodeTypeAssertion?
|
|
137
|
+
|
|
138
|
+
attr_reader leading_comment: CommentBlock?
|
|
139
|
+
|
|
140
|
+
def initialize: (Buffer, Prism::CallNode, Array[Prism::SymbolNode] name_nodes, RBS::AST::Ruby::CommentBlock? leading_comment, Annotations::NodeTypeAssertion? type_annotation) -> void
|
|
141
|
+
|
|
142
|
+
def names: () -> Array[Symbol]
|
|
143
|
+
|
|
144
|
+
def location: () -> Location
|
|
145
|
+
|
|
146
|
+
def name_locations: () -> Array[Location]
|
|
147
|
+
|
|
148
|
+
def type: () -> Types::t?
|
|
149
|
+
|
|
150
|
+
def type_fingerprint: () -> untyped
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
class AttrReaderMember < AttributeMember
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
class AttrWriterMember < AttributeMember
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
class AttrAccessorMember < AttributeMember
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
class InstanceVariableMember < Base
|
|
163
|
+
attr_reader annotation: Annotations::InstanceVariableAnnotation
|
|
164
|
+
|
|
165
|
+
def initialize: (Buffer, Annotations::InstanceVariableAnnotation) -> void
|
|
166
|
+
|
|
167
|
+
def name: () -> Symbol
|
|
168
|
+
|
|
169
|
+
def type: () -> Types::t
|
|
170
|
+
|
|
171
|
+
def location: () -> Location
|
|
172
|
+
|
|
173
|
+
def type_fingerprint: () -> untyped
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
data/sig/buffer.rbs
CHANGED
|
@@ -6,21 +6,45 @@ module RBS
|
|
|
6
6
|
type loc = [Integer, Integer]
|
|
7
7
|
|
|
8
8
|
# Name to identify Buffer.
|
|
9
|
-
attr_reader name:
|
|
9
|
+
attr_reader name: Pathname
|
|
10
10
|
|
|
11
11
|
# The content of the buffer.
|
|
12
12
|
attr_reader content: String
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
attr_reader parent: [Buffer, Array[Range[Integer]]]?
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def initialize: (name: untyped name, content: String content) -> void
|
|
16
|
+
def initialize: (name: Pathname name, content: String content) -> void
|
|
17
|
+
| (content: String content, parent: [Buffer, Array[Range[Integer]]] parent) -> void
|
|
19
18
|
|
|
19
|
+
# Array of lines of the content, without the EOL
|
|
20
|
+
#
|
|
21
|
+
# ```rb
|
|
22
|
+
# buffer = Buffer.new(name: name, content: "123\nabc")
|
|
23
|
+
# buffer.lines # => ["123", "abc"]
|
|
24
|
+
# ```
|
|
25
|
+
#
|
|
26
|
+
# If the input has EOL at the end of the file, the `lines` has an empty string at the end.
|
|
27
|
+
#
|
|
28
|
+
# ```rb
|
|
29
|
+
# buffer = Buffer.new(name: name, content: "123\nabc\n")
|
|
30
|
+
# buffer.lines # => ["123", "abc", ""]
|
|
31
|
+
# ```
|
|
32
|
+
#
|
|
20
33
|
def lines: () -> Array[String]
|
|
21
34
|
|
|
35
|
+
@ranges: Array[Range[Integer]]?
|
|
36
|
+
# Array of ranges that stores the ranges of the each line, without the EOL
|
|
37
|
+
#
|
|
38
|
+
# ```rb
|
|
39
|
+
# buffer = Buffer.new(name: name, content: "123\nabc\n")
|
|
40
|
+
# buffer.ranges # => [0...3, 4...7, 8...8]
|
|
41
|
+
# ```
|
|
42
|
+
#
|
|
22
43
|
def ranges: () -> Array[Range[Integer]]
|
|
23
44
|
|
|
45
|
+
# Returns the number of the lines
|
|
46
|
+
def line_count: () -> Integer
|
|
47
|
+
|
|
24
48
|
# Translate position to location.
|
|
25
49
|
def pos_to_loc: (Integer pos) -> loc
|
|
26
50
|
|
|
@@ -28,5 +52,39 @@ module RBS
|
|
|
28
52
|
def loc_to_pos: (loc loc) -> Integer
|
|
29
53
|
|
|
30
54
|
def last_position: () -> Integer
|
|
55
|
+
|
|
56
|
+
# Translate `Prism::Location` to `RBS::Location` attached to this buffer
|
|
57
|
+
#
|
|
58
|
+
# It assumes the `Prism::Location` has a source which is equivalent to `self`.
|
|
59
|
+
#
|
|
60
|
+
def rbs_location: (Prism::Location) -> Location
|
|
61
|
+
| (Prism::Location, Prism::Location) -> Location
|
|
62
|
+
|
|
63
|
+
# Construct a buffer from substrings of this buffer.
|
|
64
|
+
#
|
|
65
|
+
# The returned buffer contains lines from given ranges.
|
|
66
|
+
#
|
|
67
|
+
# ```rb
|
|
68
|
+
# buffer = Buffer.new(name: name, content: <<TEXT)
|
|
69
|
+
# 12345
|
|
70
|
+
# abcde
|
|
71
|
+
# ABCDE
|
|
72
|
+
# TEXT
|
|
73
|
+
#
|
|
74
|
+
# buffer.sub_buffer(lines: [0...1, 2...3]) # => Buffer with content = 1\n34
|
|
75
|
+
# buffer.sub_buffer(lines: [5..7]) # => Raises an error because the range contains newline
|
|
76
|
+
# ```
|
|
77
|
+
#
|
|
78
|
+
%a{pure} def sub_buffer: (lines: Array[Range[Integer]]) -> Buffer
|
|
79
|
+
|
|
80
|
+
%a{pure} def parent_buffer: () -> Buffer?
|
|
81
|
+
|
|
82
|
+
%a{pure} def parent_position: (Integer) -> Integer?
|
|
83
|
+
|
|
84
|
+
%a{pure} def absolute_position: (Integer) -> Integer?
|
|
85
|
+
|
|
86
|
+
%a{pure} def top_buffer: () -> Buffer
|
|
87
|
+
|
|
88
|
+
%a{pure} def detach: () -> Buffer
|
|
31
89
|
end
|
|
32
90
|
end
|
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,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
|