rbi 0.2.3 → 0.3.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/Gemfile +1 -1
- data/lib/rbi/formatter.rb +5 -16
- data/lib/rbi/index.rb +37 -41
- data/lib/rbi/loc.rb +6 -18
- data/lib/rbi/model.rb +209 -577
- data/lib/rbi/parser.rb +64 -70
- data/lib/rbi/printer.rb +135 -101
- data/lib/rbi/rbs/method_type_translator.rb +120 -0
- data/lib/rbi/rbs/type_translator.rb +181 -0
- data/lib/rbi/rbs_printer.rb +178 -116
- data/lib/rbi/rewriters/add_sig_templates.rb +7 -10
- data/lib/rbi/rewriters/annotate.rb +6 -9
- data/lib/rbi/rewriters/attr_to_methods.rb +16 -32
- data/lib/rbi/rewriters/deannotate.rb +5 -8
- data/lib/rbi/rewriters/filter_versions.rb +7 -12
- data/lib/rbi/rewriters/flatten_singleton_methods.rb +3 -6
- data/lib/rbi/rewriters/flatten_visibilities.rb +4 -7
- data/lib/rbi/rewriters/group_nodes.rb +6 -11
- data/lib/rbi/rewriters/merge_trees.rb +74 -122
- data/lib/rbi/rewriters/nest_non_public_members.rb +5 -10
- data/lib/rbi/rewriters/nest_singleton_methods.rb +3 -6
- data/lib/rbi/rewriters/nest_top_level_members.rb +4 -7
- data/lib/rbi/rewriters/remove_known_definitions.rb +10 -20
- data/lib/rbi/rewriters/sort_nodes.rb +7 -10
- data/lib/rbi/rewriters/translate_rbs_sigs.rb +87 -0
- data/lib/rbi/type.rb +127 -129
- data/lib/rbi/type_parser.rb +15 -15
- data/lib/rbi/type_visitor.rb +19 -21
- data/lib/rbi/version.rb +1 -1
- data/lib/rbi/visitor.rb +50 -46
- data/lib/rbi.rb +7 -3
- data/rbi/rbi.rbi +4686 -0
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a3e133057e9df490de9a0757b30f9b1f19ffa3afbca8f16c55c90e1562bffd7
|
4
|
+
data.tar.gz: 835d569c6d20336e4911ef660117cb03af2b5c312e04850058b34402ba94cc34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c7d07ae2efbeee1310c61d0fdf440408e755d38febc3ed30a194512df118845d36ea9315142b87239ff1f8856f045bc565ac975683a504c05b05792aed9c4f8
|
7
|
+
data.tar.gz: 9661b08e169d35d2f947e88de33360bd8ba6d5ee522a2b8beccd77c6589bd6ed1fd560c7a665201c8e8d5869f7a8dda872c58fc0009acf6eda86b3e1da0a1fd9
|
data/Gemfile
CHANGED
@@ -10,7 +10,7 @@ group(:development, :test) do
|
|
10
10
|
gem("minitest")
|
11
11
|
gem("minitest-reporters")
|
12
12
|
gem("rake", "~> 13.2")
|
13
|
-
gem("rubocop", "~> 1.
|
13
|
+
gem("rubocop", "~> 1.73", require: false)
|
14
14
|
gem("rubocop-shopify", require: false)
|
15
15
|
gem("rubocop-sorbet", require: false)
|
16
16
|
gem("sorbet", ">= 0.5.9204", require: false)
|
data/lib/rbi/formatter.rb
CHANGED
@@ -3,21 +3,10 @@
|
|
3
3
|
|
4
4
|
module RBI
|
5
5
|
class Formatter
|
6
|
-
|
7
|
-
|
8
|
-
sig { returns(T.nilable(Integer)) }
|
6
|
+
#: Integer?
|
9
7
|
attr_accessor :max_line_length
|
10
8
|
|
11
|
-
|
12
|
-
params(
|
13
|
-
add_sig_templates: T::Boolean,
|
14
|
-
group_nodes: T::Boolean,
|
15
|
-
max_line_length: T.nilable(Integer),
|
16
|
-
nest_singleton_methods: T::Boolean,
|
17
|
-
nest_non_public_members: T::Boolean,
|
18
|
-
sort_nodes: T::Boolean,
|
19
|
-
).void
|
20
|
-
end
|
9
|
+
#: (?add_sig_templates: bool, ?group_nodes: bool, ?max_line_length: Integer?, ?nest_singleton_methods: bool, ?nest_non_public_members: bool, ?sort_nodes: bool) -> void
|
21
10
|
def initialize(
|
22
11
|
add_sig_templates: false,
|
23
12
|
group_nodes: false,
|
@@ -34,18 +23,18 @@ module RBI
|
|
34
23
|
@sort_nodes = sort_nodes
|
35
24
|
end
|
36
25
|
|
37
|
-
|
26
|
+
#: (RBI::File file) -> String
|
38
27
|
def print_file(file)
|
39
28
|
format_file(file)
|
40
29
|
file.string(max_line_length: @max_line_length)
|
41
30
|
end
|
42
31
|
|
43
|
-
|
32
|
+
#: (RBI::File file) -> void
|
44
33
|
def format_file(file)
|
45
34
|
format_tree(file.root)
|
46
35
|
end
|
47
36
|
|
48
|
-
|
37
|
+
#: (RBI::Tree tree) -> void
|
49
38
|
def format_tree(tree)
|
50
39
|
tree.add_sig_templates! if @add_sig_templates
|
51
40
|
tree.nest_singleton_methods! if @nest_singleton_methods
|
data/lib/rbi/index.rb
CHANGED
@@ -3,13 +3,10 @@
|
|
3
3
|
|
4
4
|
module RBI
|
5
5
|
class Index < Visitor
|
6
|
-
extend T::Sig
|
7
6
|
include T::Enumerable
|
8
7
|
|
9
8
|
class << self
|
10
|
-
|
11
|
-
|
12
|
-
sig { params(node: Node).returns(Index) }
|
9
|
+
#: (*Node node) -> Index
|
13
10
|
def index(*node)
|
14
11
|
index = Index.new
|
15
12
|
index.visit_all(node)
|
@@ -17,28 +14,29 @@ module RBI
|
|
17
14
|
end
|
18
15
|
end
|
19
16
|
|
20
|
-
|
17
|
+
#: -> void
|
21
18
|
def initialize
|
22
19
|
super
|
23
20
|
@index = T.let({}, T::Hash[String, T::Array[Node]])
|
24
21
|
end
|
25
22
|
|
26
|
-
|
23
|
+
#: -> Array[String]
|
27
24
|
def keys
|
28
25
|
@index.keys
|
29
26
|
end
|
30
27
|
|
31
|
-
|
28
|
+
#: (String id) -> Array[Node]
|
32
29
|
def [](id)
|
33
30
|
@index[id] ||= []
|
34
31
|
end
|
35
32
|
|
36
|
-
|
33
|
+
#: (*Node nodes) -> void
|
37
34
|
def index(*nodes)
|
38
35
|
nodes.each { |node| visit(node) }
|
39
36
|
end
|
40
37
|
|
41
|
-
|
38
|
+
# @override
|
39
|
+
#: (Node? node) -> void
|
42
40
|
def visit(node)
|
43
41
|
return unless node
|
44
42
|
|
@@ -55,16 +53,14 @@ module RBI
|
|
55
53
|
|
56
54
|
private
|
57
55
|
|
58
|
-
|
56
|
+
#: ((Indexable & Node) node) -> void
|
59
57
|
def index_node(node)
|
60
58
|
node.index_ids.each { |id| self[id] << node }
|
61
59
|
end
|
62
60
|
end
|
63
61
|
|
64
62
|
class Tree
|
65
|
-
|
66
|
-
|
67
|
-
sig { returns(Index) }
|
63
|
+
#: -> Index
|
68
64
|
def index
|
69
65
|
Index.index(self)
|
70
66
|
end
|
@@ -86,140 +82,140 @@ module RBI
|
|
86
82
|
end
|
87
83
|
|
88
84
|
class Scope
|
89
|
-
extend T::Sig
|
90
85
|
include Indexable
|
91
86
|
|
92
|
-
|
87
|
+
# @override
|
88
|
+
#: -> Array[String]
|
93
89
|
def index_ids
|
94
90
|
[fully_qualified_name]
|
95
91
|
end
|
96
92
|
end
|
97
93
|
|
98
94
|
class Const
|
99
|
-
extend T::Sig
|
100
95
|
include Indexable
|
101
96
|
|
102
|
-
|
97
|
+
# @override
|
98
|
+
#: -> Array[String]
|
103
99
|
def index_ids
|
104
100
|
[fully_qualified_name]
|
105
101
|
end
|
106
102
|
end
|
107
103
|
|
108
104
|
class Attr
|
109
|
-
extend T::Sig
|
110
105
|
include Indexable
|
111
106
|
|
112
|
-
|
107
|
+
# @override
|
108
|
+
#: -> Array[String]
|
113
109
|
def index_ids
|
114
110
|
fully_qualified_names
|
115
111
|
end
|
116
112
|
end
|
117
113
|
|
118
114
|
class Method
|
119
|
-
extend T::Sig
|
120
115
|
include Indexable
|
121
116
|
|
122
|
-
|
117
|
+
# @override
|
118
|
+
#: -> Array[String]
|
123
119
|
def index_ids
|
124
120
|
[fully_qualified_name]
|
125
121
|
end
|
126
122
|
end
|
127
123
|
|
128
124
|
class Include
|
129
|
-
extend T::Sig
|
130
125
|
include Indexable
|
131
126
|
|
132
|
-
|
127
|
+
# @override
|
128
|
+
#: -> Array[String]
|
133
129
|
def index_ids
|
134
130
|
names.map { |name| "#{parent_scope&.fully_qualified_name}.include(#{name})" }
|
135
131
|
end
|
136
132
|
end
|
137
133
|
|
138
134
|
class Extend
|
139
|
-
extend T::Sig
|
140
135
|
include Indexable
|
141
136
|
|
142
|
-
|
137
|
+
# @override
|
138
|
+
#: -> Array[String]
|
143
139
|
def index_ids
|
144
140
|
names.map { |name| "#{parent_scope&.fully_qualified_name}.extend(#{name})" }
|
145
141
|
end
|
146
142
|
end
|
147
143
|
|
148
144
|
class MixesInClassMethods
|
149
|
-
extend T::Sig
|
150
145
|
include Indexable
|
151
146
|
|
152
|
-
|
147
|
+
# @override
|
148
|
+
#: -> Array[String]
|
153
149
|
def index_ids
|
154
150
|
names.map { |name| "#{parent_scope&.fully_qualified_name}.mixes_in_class_method(#{name})" }
|
155
151
|
end
|
156
152
|
end
|
157
153
|
|
158
154
|
class RequiresAncestor
|
159
|
-
extend T::Sig
|
160
155
|
include Indexable
|
161
156
|
|
162
|
-
|
157
|
+
# @override
|
158
|
+
#: -> Array[String]
|
163
159
|
def index_ids
|
164
160
|
[to_s]
|
165
161
|
end
|
166
162
|
end
|
167
163
|
|
168
164
|
class Helper
|
169
|
-
extend T::Sig
|
170
165
|
include Indexable
|
171
166
|
|
172
|
-
|
167
|
+
# @override
|
168
|
+
#: -> Array[String]
|
173
169
|
def index_ids
|
174
170
|
[to_s]
|
175
171
|
end
|
176
172
|
end
|
177
173
|
|
178
174
|
class TypeMember
|
179
|
-
extend T::Sig
|
180
175
|
include Indexable
|
181
176
|
|
182
|
-
|
177
|
+
# @override
|
178
|
+
#: -> Array[String]
|
183
179
|
def index_ids
|
184
180
|
[to_s]
|
185
181
|
end
|
186
182
|
end
|
187
183
|
|
188
184
|
class Send
|
189
|
-
extend T::Sig
|
190
185
|
include Indexable
|
191
186
|
|
192
|
-
|
187
|
+
# @override
|
188
|
+
#: -> Array[String]
|
193
189
|
def index_ids
|
194
190
|
["#{parent_scope&.fully_qualified_name}.#{method}"]
|
195
191
|
end
|
196
192
|
end
|
197
193
|
|
198
194
|
class TStructConst
|
199
|
-
extend T::Sig
|
200
195
|
include Indexable
|
201
196
|
|
202
|
-
|
197
|
+
# @override
|
198
|
+
#: -> Array[String]
|
203
199
|
def index_ids
|
204
200
|
fully_qualified_names
|
205
201
|
end
|
206
202
|
end
|
207
203
|
|
208
204
|
class TStructProp
|
209
|
-
extend T::Sig
|
210
205
|
include Indexable
|
211
206
|
|
212
|
-
|
207
|
+
# @override
|
208
|
+
#: -> Array[String]
|
213
209
|
def index_ids
|
214
210
|
fully_qualified_names
|
215
211
|
end
|
216
212
|
end
|
217
213
|
|
218
214
|
class TEnumBlock
|
219
|
-
extend T::Sig
|
220
215
|
include Indexable
|
221
216
|
|
222
|
-
|
217
|
+
# @override
|
218
|
+
#: -> Array[String]
|
223
219
|
def index_ids
|
224
220
|
[to_s]
|
225
221
|
end
|
data/lib/rbi/loc.rb
CHANGED
@@ -3,12 +3,8 @@
|
|
3
3
|
|
4
4
|
module RBI
|
5
5
|
class Loc
|
6
|
-
extend T::Sig
|
7
|
-
|
8
6
|
class << self
|
9
|
-
|
10
|
-
|
11
|
-
sig { params(file: String, prism_location: Prism::Location).returns(Loc) }
|
7
|
+
#: (String file, Prism::Location prism_location) -> Loc
|
12
8
|
def from_prism(file, prism_location)
|
13
9
|
new(
|
14
10
|
file: file,
|
@@ -20,21 +16,13 @@ module RBI
|
|
20
16
|
end
|
21
17
|
end
|
22
18
|
|
23
|
-
|
19
|
+
#: String?
|
24
20
|
attr_reader :file
|
25
21
|
|
26
|
-
|
22
|
+
#: Integer?
|
27
23
|
attr_reader :begin_line, :end_line, :begin_column, :end_column
|
28
24
|
|
29
|
-
|
30
|
-
params(
|
31
|
-
file: T.nilable(String),
|
32
|
-
begin_line: T.nilable(Integer),
|
33
|
-
end_line: T.nilable(Integer),
|
34
|
-
begin_column: T.nilable(Integer),
|
35
|
-
end_column: T.nilable(Integer),
|
36
|
-
).void
|
37
|
-
end
|
25
|
+
#: (?file: String?, ?begin_line: Integer?, ?end_line: Integer?, ?begin_column: Integer?, ?end_column: Integer?) -> void
|
38
26
|
def initialize(file: nil, begin_line: nil, end_line: nil, begin_column: nil, end_column: nil)
|
39
27
|
@file = file
|
40
28
|
@begin_line = begin_line
|
@@ -43,7 +31,7 @@ module RBI
|
|
43
31
|
@end_column = end_column
|
44
32
|
end
|
45
33
|
|
46
|
-
|
34
|
+
#: -> String
|
47
35
|
def to_s
|
48
36
|
if end_line && end_column
|
49
37
|
"#{file}:#{begin_line}:#{begin_column}-#{end_line}:#{end_column}"
|
@@ -52,7 +40,7 @@ module RBI
|
|
52
40
|
end
|
53
41
|
end
|
54
42
|
|
55
|
-
|
43
|
+
#: -> String?
|
56
44
|
def source
|
57
45
|
file = self.file
|
58
46
|
return unless file
|