rbi 0.2.4 → 0.3.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/Gemfile +2 -1
- data/lib/rbi/formatter.rb +9 -17
- data/lib/rbi/index.rb +49 -43
- data/lib/rbi/loc.rb +7 -19
- data/lib/rbi/model.rb +238 -581
- data/lib/rbi/parser.rb +193 -91
- data/lib/rbi/printer.rb +158 -105
- 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 +201 -133
- 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 +5 -7
- data/lib/rbi/rewriters/flatten_visibilities.rb +6 -9
- data/lib/rbi/rewriters/group_nodes.rb +6 -11
- data/lib/rbi/rewriters/merge_trees.rb +84 -132
- 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 +5 -8
- data/lib/rbi/rewriters/remove_known_definitions.rb +13 -23
- data/lib/rbi/rewriters/sort_nodes.rb +10 -11
- data/lib/rbi/rewriters/translate_rbs_sigs.rb +87 -0
- data/lib/rbi/type.rb +135 -137
- data/lib/rbi/type_parser.rb +51 -27
- data/lib/rbi/type_visitor.rb +19 -21
- data/lib/rbi/version.rb +1 -1
- data/lib/rbi/visitor.rb +55 -46
- data/lib/rbi.rb +7 -3
- data/rbi/rbi.rbi +3673 -0
- metadata +21 -3
data/lib/rbi/type_parser.rb
CHANGED
@@ -6,7 +6,7 @@ module RBI
|
|
6
6
|
class Error < RBI::Error; end
|
7
7
|
|
8
8
|
class << self
|
9
|
-
|
9
|
+
#: (String string) -> Type
|
10
10
|
def parse_string(string)
|
11
11
|
result = Prism.parse(string)
|
12
12
|
unless result.success?
|
@@ -18,11 +18,11 @@ module RBI
|
|
18
18
|
raise Error, "Expected a type expression, got nothing" if node.statements.body.empty?
|
19
19
|
raise Error, "Expected a single type expression, got `#{node.slice}`" if node.statements.body.size > 1
|
20
20
|
|
21
|
-
node =
|
21
|
+
node = node.statements.body.first #: as !nil
|
22
22
|
parse_node(node)
|
23
23
|
end
|
24
24
|
|
25
|
-
|
25
|
+
#: (Prism::Node node) -> Type
|
26
26
|
def parse_node(node)
|
27
27
|
case node
|
28
28
|
when Prism::ConstantReadNode, Prism::ConstantPathNode
|
@@ -40,7 +40,9 @@ module RBI
|
|
40
40
|
children = body.body
|
41
41
|
raise Error, "Expected exactly 1 child, got #{children.size}" unless children.size == 1
|
42
42
|
|
43
|
-
parse_node(
|
43
|
+
parse_node(
|
44
|
+
children.first, #: as !nil
|
45
|
+
)
|
44
46
|
else
|
45
47
|
raise Error, "Unexpected node `#{node}`"
|
46
48
|
end
|
@@ -48,7 +50,7 @@ module RBI
|
|
48
50
|
|
49
51
|
private
|
50
52
|
|
51
|
-
|
53
|
+
#: ((Prism::ConstantReadNode | Prism::ConstantPathNode) node) -> Type
|
52
54
|
def parse_constant(node)
|
53
55
|
case node
|
54
56
|
when Prism::ConstantReadNode
|
@@ -65,7 +67,7 @@ module RBI
|
|
65
67
|
end
|
66
68
|
end
|
67
69
|
|
68
|
-
|
70
|
+
#: (Prism::CallNode node) -> Type
|
69
71
|
def parse_call(node)
|
70
72
|
recv = node.receiver
|
71
73
|
|
@@ -84,7 +86,11 @@ module RBI
|
|
84
86
|
if t_class?(recv)
|
85
87
|
# `T::Class[Foo]` or `::T::Class[Foo]`
|
86
88
|
args = check_arguments_exactly!(node, 1)
|
87
|
-
return Type::Class.new(
|
89
|
+
return Type::Class.new(
|
90
|
+
parse_node(
|
91
|
+
args.first, #: as !nil
|
92
|
+
),
|
93
|
+
)
|
88
94
|
else
|
89
95
|
# `::Foo[Bar]` or `::Foo[Bar, Baz]`
|
90
96
|
args = check_arguments_at_least!(node, 1)
|
@@ -94,11 +100,15 @@ module RBI
|
|
94
100
|
# `T.class_of(Foo)[Bar]`
|
95
101
|
if t_class_of?(recv)
|
96
102
|
type_args = check_arguments_exactly!(recv, 1)
|
97
|
-
type = parse_node(
|
103
|
+
type = parse_node(
|
104
|
+
type_args.first, #: as !nil
|
105
|
+
)
|
98
106
|
raise Error, "Expected a simple type, got `#{type}`" unless type.is_a?(Type::Simple)
|
99
107
|
|
100
108
|
type_param_args = check_arguments_exactly!(node, 1)
|
101
|
-
type_param = parse_node(
|
109
|
+
type_param = parse_node(
|
110
|
+
type_param_args.first, #: as !nil
|
111
|
+
)
|
102
112
|
return Type::ClassOf.new(type, type_param)
|
103
113
|
end
|
104
114
|
end
|
@@ -117,7 +127,9 @@ module RBI
|
|
117
127
|
when :nilable
|
118
128
|
# `T.nilable(Foo)`
|
119
129
|
args = check_arguments_exactly!(node, 1)
|
120
|
-
type = parse_node(
|
130
|
+
type = parse_node(
|
131
|
+
args.first, #: as !nil
|
132
|
+
)
|
121
133
|
Type::Nilable.new(type)
|
122
134
|
when :anything
|
123
135
|
# `T.anything`
|
@@ -142,7 +154,9 @@ module RBI
|
|
142
154
|
when :class_of
|
143
155
|
# `T.class_of(Foo)`
|
144
156
|
args = check_arguments_exactly!(node, 1)
|
145
|
-
type = parse_node(
|
157
|
+
type = parse_node(
|
158
|
+
args.first, #: as !nil
|
159
|
+
)
|
146
160
|
raise Error, "Expected a simple type, got `#{type}`" unless type.is_a?(Type::Simple)
|
147
161
|
|
148
162
|
Type::ClassOf.new(type)
|
@@ -167,12 +181,12 @@ module RBI
|
|
167
181
|
end
|
168
182
|
end
|
169
183
|
|
170
|
-
|
184
|
+
#: (Prism::ArrayNode node) -> Type
|
171
185
|
def parse_tuple(node)
|
172
186
|
T.unsafe(Type).tuple(*node.elements.map { |elem| parse_node(elem) })
|
173
187
|
end
|
174
188
|
|
175
|
-
|
189
|
+
#: ((Prism::HashNode | Prism::KeywordHashNode) node) -> Type
|
176
190
|
def parse_shape(node)
|
177
191
|
hash = node.elements.map do |elem|
|
178
192
|
raise Error, "Expected key-value pair, got `#{elem.slice}`" unless elem.is_a?(Prism::AssocNode)
|
@@ -180,7 +194,9 @@ module RBI
|
|
180
194
|
elem_key = elem.key
|
181
195
|
key = case elem_key
|
182
196
|
when Prism::SymbolNode
|
183
|
-
|
197
|
+
elem_key
|
198
|
+
.value #: as !nil
|
199
|
+
.to_sym
|
184
200
|
when Prism::StringNode
|
185
201
|
elem_key.content
|
186
202
|
else
|
@@ -191,7 +207,7 @@ module RBI
|
|
191
207
|
T.unsafe(Type).shape(**hash)
|
192
208
|
end
|
193
209
|
|
194
|
-
|
210
|
+
#: (Prism::CallNode node) -> Type
|
195
211
|
def parse_proc(node)
|
196
212
|
calls = call_chain(node).reverse
|
197
213
|
calls.pop # remove `T.`
|
@@ -216,14 +232,22 @@ module RBI
|
|
216
232
|
T.unsafe(type).params(**params)
|
217
233
|
when :returns
|
218
234
|
args = check_arguments_exactly!(call, 1)
|
219
|
-
type.returns(
|
235
|
+
type.returns(
|
236
|
+
parse_node(
|
237
|
+
args.first, #: as !nil
|
238
|
+
),
|
239
|
+
)
|
220
240
|
when :void
|
221
241
|
type.void
|
222
242
|
when :proc
|
223
243
|
return type
|
224
244
|
when :bind
|
225
245
|
args = check_arguments_exactly!(call, 1)
|
226
|
-
type.bind(
|
246
|
+
type.bind(
|
247
|
+
parse_node(
|
248
|
+
args.first, #: as !nil
|
249
|
+
),
|
250
|
+
)
|
227
251
|
else
|
228
252
|
raise Error, "Unexpected expression `#{node.slice}`"
|
229
253
|
end
|
@@ -231,7 +255,7 @@ module RBI
|
|
231
255
|
type
|
232
256
|
end
|
233
257
|
|
234
|
-
|
258
|
+
#: (Prism::CallNode node, Integer count) -> Array[Prism::Node]
|
235
259
|
def check_arguments_exactly!(node, count)
|
236
260
|
args = node.arguments&.arguments || []
|
237
261
|
unless args.size == count
|
@@ -246,7 +270,7 @@ module RBI
|
|
246
270
|
args
|
247
271
|
end
|
248
272
|
|
249
|
-
|
273
|
+
#: (Prism::CallNode node, Integer count) -> Array[Prism::Node]
|
250
274
|
def check_arguments_at_least!(node, count)
|
251
275
|
args = node.arguments&.arguments || []
|
252
276
|
if args.size < count
|
@@ -259,10 +283,10 @@ module RBI
|
|
259
283
|
args
|
260
284
|
end
|
261
285
|
|
262
|
-
|
286
|
+
#: (Prism::CallNode node) -> Array[Prism::Node]
|
263
287
|
def call_chain(node)
|
264
|
-
call_chain =
|
265
|
-
receiver =
|
288
|
+
call_chain = [node] #: Array[Prism::Node]
|
289
|
+
receiver = node.receiver #: Prism::Node?
|
266
290
|
while receiver
|
267
291
|
call_chain.prepend(receiver)
|
268
292
|
break unless receiver.is_a?(Prism::CallNode)
|
@@ -272,7 +296,7 @@ module RBI
|
|
272
296
|
call_chain
|
273
297
|
end
|
274
298
|
|
275
|
-
|
299
|
+
#: (Prism::Node? node) -> bool
|
276
300
|
def t?(node)
|
277
301
|
case node
|
278
302
|
when Prism::ConstantReadNode
|
@@ -284,26 +308,26 @@ module RBI
|
|
284
308
|
false
|
285
309
|
end
|
286
310
|
|
287
|
-
|
311
|
+
#: (Prism::Node? node) -> bool
|
288
312
|
def t_boolean?(node)
|
289
313
|
return false unless node.is_a?(Prism::ConstantPathNode)
|
290
314
|
|
291
315
|
t?(node.parent) && node.name == :Boolean
|
292
316
|
end
|
293
317
|
|
294
|
-
|
318
|
+
#: (Prism::ConstantPathNode node) -> bool
|
295
319
|
def t_class?(node)
|
296
320
|
t?(node.parent) && node.name == :Class
|
297
321
|
end
|
298
322
|
|
299
|
-
|
323
|
+
#: (Prism::Node? node) -> bool
|
300
324
|
def t_class_of?(node)
|
301
325
|
return false unless node.is_a?(Prism::CallNode)
|
302
326
|
|
303
327
|
t?(node.receiver) && node.name == :class_of
|
304
328
|
end
|
305
329
|
|
306
|
-
|
330
|
+
#: (Prism::CallNode node) -> bool
|
307
331
|
def t_proc?(node)
|
308
332
|
chain = call_chain(node)
|
309
333
|
return false if chain.size < 2
|
data/lib/rbi/type_visitor.rb
CHANGED
@@ -4,11 +4,9 @@
|
|
4
4
|
module RBI
|
5
5
|
class Type
|
6
6
|
class Visitor
|
7
|
-
extend T::Sig
|
8
|
-
|
9
7
|
class Error < RBI::Error; end
|
10
8
|
|
11
|
-
|
9
|
+
#: (Type node) -> void
|
12
10
|
def visit(node)
|
13
11
|
case node
|
14
12
|
when Type::Simple
|
@@ -54,58 +52,58 @@ module RBI
|
|
54
52
|
|
55
53
|
private
|
56
54
|
|
57
|
-
|
55
|
+
#: (Type::All type) -> void
|
58
56
|
def visit_all(type); end
|
59
57
|
|
60
|
-
|
58
|
+
#: (Type::Any type) -> void
|
61
59
|
def visit_any(type); end
|
62
60
|
|
63
|
-
|
61
|
+
#: (Type::Anything type) -> void
|
64
62
|
def visit_anything(type); end
|
65
63
|
|
66
|
-
|
64
|
+
#: (Type::AttachedClass type) -> void
|
67
65
|
def visit_attached_class(type); end
|
68
66
|
|
69
|
-
|
67
|
+
#: (Type::Boolean type) -> void
|
70
68
|
def visit_boolean(type); end
|
71
69
|
|
72
|
-
|
70
|
+
#: (Type::Class type) -> void
|
73
71
|
def visit_class(type); end
|
74
72
|
|
75
|
-
|
73
|
+
#: (Type::ClassOf type) -> void
|
76
74
|
def visit_class_of(type); end
|
77
75
|
|
78
|
-
|
76
|
+
#: (Type::Generic type) -> void
|
79
77
|
def visit_generic(type); end
|
80
78
|
|
81
|
-
|
79
|
+
#: (Type::Nilable type) -> void
|
82
80
|
def visit_nilable(type); end
|
83
81
|
|
84
|
-
|
82
|
+
#: (Type::Simple type) -> void
|
85
83
|
def visit_simple(type); end
|
86
84
|
|
87
|
-
|
85
|
+
#: (Type::NoReturn type) -> void
|
88
86
|
def visit_no_return(type); end
|
89
87
|
|
90
|
-
|
88
|
+
#: (Type::Proc type) -> void
|
91
89
|
def visit_proc(type); end
|
92
90
|
|
93
|
-
|
91
|
+
#: (Type::SelfType type) -> void
|
94
92
|
def visit_self_type(type); end
|
95
93
|
|
96
|
-
|
94
|
+
#: (Type::Void type) -> void
|
97
95
|
def visit_void(type); end
|
98
96
|
|
99
|
-
|
97
|
+
#: (Type::Shape type) -> void
|
100
98
|
def visit_shape(type); end
|
101
99
|
|
102
|
-
|
100
|
+
#: (Type::Tuple type) -> void
|
103
101
|
def visit_tuple(type); end
|
104
102
|
|
105
|
-
|
103
|
+
#: (Type::TypeParameter type) -> void
|
106
104
|
def visit_type_parameter(type); end
|
107
105
|
|
108
|
-
|
106
|
+
#: (Type::Untyped type) -> void
|
109
107
|
def visit_untyped(type); end
|
110
108
|
end
|
111
109
|
end
|
data/lib/rbi/version.rb
CHANGED
data/lib/rbi/visitor.rb
CHANGED
@@ -6,17 +6,18 @@ module RBI
|
|
6
6
|
|
7
7
|
class Visitor
|
8
8
|
extend T::Helpers
|
9
|
-
extend T::Sig
|
10
9
|
|
11
10
|
abstract!
|
12
11
|
|
13
|
-
|
12
|
+
#: (Node? node) -> void
|
14
13
|
def visit(node)
|
15
14
|
return unless node
|
16
15
|
|
17
16
|
case node
|
18
17
|
when BlankLine
|
19
18
|
visit_blank_line(node)
|
19
|
+
when RBSComment
|
20
|
+
visit_rbs_comment(node)
|
20
21
|
when Comment
|
21
22
|
visit_comment(node)
|
22
23
|
when TEnum
|
@@ -87,6 +88,8 @@ module RBI
|
|
87
88
|
visit_sig(node)
|
88
89
|
when SigParam
|
89
90
|
visit_sig_param(node)
|
91
|
+
when TEnumValue
|
92
|
+
visit_tenum_value(node)
|
90
93
|
when TStructConst
|
91
94
|
visit_tstruct_const(node)
|
92
95
|
when TStructProp
|
@@ -104,142 +107,148 @@ module RBI
|
|
104
107
|
end
|
105
108
|
end
|
106
109
|
|
107
|
-
|
110
|
+
#: (Array[Node] nodes) -> void
|
108
111
|
def visit_all(nodes)
|
109
112
|
nodes.each { |node| visit(node) }
|
110
113
|
end
|
111
114
|
|
112
|
-
|
115
|
+
#: (File file) -> void
|
113
116
|
def visit_file(file)
|
114
117
|
visit(file.root)
|
115
118
|
end
|
116
119
|
|
117
120
|
private
|
118
121
|
|
119
|
-
|
122
|
+
#: (Comment node) -> void
|
120
123
|
def visit_comment(node); end
|
121
124
|
|
122
|
-
|
125
|
+
#: (RBSComment node) -> void
|
126
|
+
def visit_rbs_comment(node); end
|
127
|
+
|
128
|
+
#: (BlankLine node) -> void
|
123
129
|
def visit_blank_line(node); end
|
124
130
|
|
125
|
-
|
131
|
+
#: (Module node) -> void
|
126
132
|
def visit_module(node); end
|
127
133
|
|
128
|
-
|
134
|
+
#: (Class node) -> void
|
129
135
|
def visit_class(node); end
|
130
136
|
|
131
|
-
|
137
|
+
#: (SingletonClass node) -> void
|
132
138
|
def visit_singleton_class(node); end
|
133
139
|
|
134
|
-
|
140
|
+
#: (Struct node) -> void
|
135
141
|
def visit_struct(node); end
|
136
142
|
|
137
|
-
|
143
|
+
#: (Tree node) -> void
|
138
144
|
def visit_tree(node); end
|
139
145
|
|
140
|
-
|
146
|
+
#: (Const node) -> void
|
141
147
|
def visit_const(node); end
|
142
148
|
|
143
|
-
|
149
|
+
#: (AttrAccessor node) -> void
|
144
150
|
def visit_attr_accessor(node); end
|
145
151
|
|
146
|
-
|
152
|
+
#: (AttrReader node) -> void
|
147
153
|
def visit_attr_reader(node); end
|
148
154
|
|
149
|
-
|
155
|
+
#: (AttrWriter node) -> void
|
150
156
|
def visit_attr_writer(node); end
|
151
157
|
|
152
|
-
|
158
|
+
#: (Method node) -> void
|
153
159
|
def visit_method(node); end
|
154
160
|
|
155
|
-
|
161
|
+
#: (ReqParam node) -> void
|
156
162
|
def visit_req_param(node); end
|
157
163
|
|
158
|
-
|
164
|
+
#: (OptParam node) -> void
|
159
165
|
def visit_opt_param(node); end
|
160
166
|
|
161
|
-
|
167
|
+
#: (RestParam node) -> void
|
162
168
|
def visit_rest_param(node); end
|
163
169
|
|
164
|
-
|
170
|
+
#: (KwParam node) -> void
|
165
171
|
def visit_kw_param(node); end
|
166
172
|
|
167
|
-
|
173
|
+
#: (KwOptParam node) -> void
|
168
174
|
def visit_kw_opt_param(node); end
|
169
175
|
|
170
|
-
|
176
|
+
#: (KwRestParam node) -> void
|
171
177
|
def visit_kw_rest_param(node); end
|
172
178
|
|
173
|
-
|
179
|
+
#: (BlockParam node) -> void
|
174
180
|
def visit_block_param(node); end
|
175
181
|
|
176
|
-
|
182
|
+
#: (Include node) -> void
|
177
183
|
def visit_include(node); end
|
178
184
|
|
179
|
-
|
185
|
+
#: (Extend node) -> void
|
180
186
|
def visit_extend(node); end
|
181
187
|
|
182
|
-
|
188
|
+
#: (Public node) -> void
|
183
189
|
def visit_public(node); end
|
184
190
|
|
185
|
-
|
191
|
+
#: (Protected node) -> void
|
186
192
|
def visit_protected(node); end
|
187
193
|
|
188
|
-
|
194
|
+
#: (Private node) -> void
|
189
195
|
def visit_private(node); end
|
190
196
|
|
191
|
-
|
197
|
+
#: (Send node) -> void
|
192
198
|
def visit_send(node); end
|
193
199
|
|
194
|
-
|
200
|
+
#: (Arg node) -> void
|
195
201
|
def visit_arg(node); end
|
196
202
|
|
197
|
-
|
203
|
+
#: (KwArg node) -> void
|
198
204
|
def visit_kw_arg(node); end
|
199
205
|
|
200
|
-
|
206
|
+
#: (Sig node) -> void
|
201
207
|
def visit_sig(node); end
|
202
208
|
|
203
|
-
|
209
|
+
#: (SigParam node) -> void
|
204
210
|
def visit_sig_param(node); end
|
205
211
|
|
206
|
-
|
212
|
+
#: (TStruct node) -> void
|
207
213
|
def visit_tstruct(node); end
|
208
214
|
|
209
|
-
|
215
|
+
#: (TStructConst node) -> void
|
210
216
|
def visit_tstruct_const(node); end
|
211
217
|
|
212
|
-
|
218
|
+
#: (TStructProp node) -> void
|
213
219
|
def visit_tstruct_prop(node); end
|
214
220
|
|
215
|
-
|
221
|
+
#: (TEnum node) -> void
|
216
222
|
def visit_tenum(node); end
|
217
223
|
|
218
|
-
|
224
|
+
#: (TEnumBlock node) -> void
|
219
225
|
def visit_tenum_block(node); end
|
220
226
|
|
221
|
-
|
227
|
+
#: (TEnumValue node) -> void
|
228
|
+
def visit_tenum_value(node); end
|
229
|
+
|
230
|
+
#: (Helper node) -> void
|
222
231
|
def visit_helper(node); end
|
223
232
|
|
224
|
-
|
233
|
+
#: (TypeMember node) -> void
|
225
234
|
def visit_type_member(node); end
|
226
235
|
|
227
|
-
|
236
|
+
#: (MixesInClassMethods node) -> void
|
228
237
|
def visit_mixes_in_class_methods(node); end
|
229
238
|
|
230
|
-
|
239
|
+
#: (RequiresAncestor node) -> void
|
231
240
|
def visit_requires_ancestor(node); end
|
232
241
|
|
233
|
-
|
242
|
+
#: (Group node) -> void
|
234
243
|
def visit_group(node); end
|
235
244
|
|
236
|
-
|
245
|
+
#: (VisibilityGroup node) -> void
|
237
246
|
def visit_visibility_group(node); end
|
238
247
|
|
239
|
-
|
248
|
+
#: (ConflictTree node) -> void
|
240
249
|
def visit_conflict_tree(node); end
|
241
250
|
|
242
|
-
|
251
|
+
#: (ScopeConflict node) -> void
|
243
252
|
def visit_scope_conflict(node); end
|
244
253
|
end
|
245
254
|
end
|
data/lib/rbi.rb
CHANGED
@@ -3,11 +3,10 @@
|
|
3
3
|
|
4
4
|
require "sorbet-runtime"
|
5
5
|
require "stringio"
|
6
|
+
require "rbs"
|
6
7
|
|
7
8
|
module RBI
|
8
|
-
class Error < StandardError
|
9
|
-
extend T::Sig
|
10
|
-
end
|
9
|
+
class Error < StandardError; end
|
11
10
|
end
|
12
11
|
|
13
12
|
require "rbi/loc"
|
@@ -15,6 +14,10 @@ require "rbi/model"
|
|
15
14
|
require "rbi/type"
|
16
15
|
require "rbi/visitor"
|
17
16
|
require "rbi/index"
|
17
|
+
|
18
|
+
require "rbi/rbs/method_type_translator"
|
19
|
+
require "rbi/rbs/type_translator"
|
20
|
+
|
18
21
|
require "rbi/rewriters/add_sig_templates"
|
19
22
|
require "rbi/rewriters/annotate"
|
20
23
|
require "rbi/rewriters/deannotate"
|
@@ -29,6 +32,7 @@ require "rbi/rewriters/group_nodes"
|
|
29
32
|
require "rbi/rewriters/remove_known_definitions"
|
30
33
|
require "rbi/rewriters/attr_to_methods"
|
31
34
|
require "rbi/rewriters/sort_nodes"
|
35
|
+
require "rbi/rewriters/translate_rbs_sigs"
|
32
36
|
require "rbi/parser"
|
33
37
|
require "rbi/type_parser"
|
34
38
|
require "rbi/type_visitor"
|