rbi 0.3.1 → 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 +1 -1
- data/lib/rbi/formatter.rb +5 -2
- data/lib/rbi/index.rb +12 -2
- data/lib/rbi/loc.rb +1 -1
- data/lib/rbi/model.rb +31 -6
- data/lib/rbi/parser.rb +127 -28
- data/lib/rbi/printer.rb +23 -4
- data/lib/rbi/rbs/method_type_translator.rb +2 -2
- data/lib/rbi/rbs/type_translator.rb +1 -1
- data/lib/rbi/rbs_printer.rb +24 -18
- data/lib/rbi/rewriters/flatten_singleton_methods.rb +2 -1
- data/lib/rbi/rewriters/flatten_visibilities.rb +2 -2
- data/lib/rbi/rewriters/merge_trees.rb +10 -10
- data/lib/rbi/rewriters/nest_top_level_members.rb +1 -1
- data/lib/rbi/rewriters/remove_known_definitions.rb +3 -3
- data/lib/rbi/rewriters/sort_nodes.rb +3 -1
- data/lib/rbi/rewriters/translate_rbs_sigs.rb +2 -2
- data/lib/rbi/type.rb +8 -8
- data/lib/rbi/type_parser.rb +36 -12
- data/lib/rbi/version.rb +1 -1
- data/lib/rbi/visitor.rb +5 -0
- data/rbi/rbi.rbi +63 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30c1564f6fad1d76035f6cd07bf31237251e6c622350aa4911797980b3a17414
|
4
|
+
data.tar.gz: 1d1350fa25cf2dad93c59e74288372701bfe73c6214d46e279350a953269786d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a273b8f7e57c8471e8a9d46f71c7b554e2416243e7ef1c953137720543f7dd70f4166b0c916e327dcb9cf516e0668deaf56027ade2c36485f9fce10cfedb9d9d
|
7
|
+
data.tar.gz: e03adcd232b2557c68d6a18a62c0e0b1977e8f4cccb3a8718f711ae2ec35ded301026021a7d39829da51286348089cdde3593d0b3bb1703da8d69a86af6364c5
|
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.75", 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
@@ -6,14 +6,15 @@ module RBI
|
|
6
6
|
#: Integer?
|
7
7
|
attr_accessor :max_line_length
|
8
8
|
|
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
|
9
|
+
#: (?add_sig_templates: bool, ?group_nodes: bool, ?max_line_length: Integer?, ?nest_singleton_methods: bool, ?nest_non_public_members: bool, ?sort_nodes: bool, ?replace_attributes_with_methods: bool) -> void
|
10
10
|
def initialize(
|
11
11
|
add_sig_templates: false,
|
12
12
|
group_nodes: false,
|
13
13
|
max_line_length: nil,
|
14
14
|
nest_singleton_methods: false,
|
15
15
|
nest_non_public_members: false,
|
16
|
-
sort_nodes: false
|
16
|
+
sort_nodes: false,
|
17
|
+
replace_attributes_with_methods: false
|
17
18
|
)
|
18
19
|
@add_sig_templates = add_sig_templates
|
19
20
|
@group_nodes = group_nodes
|
@@ -21,6 +22,7 @@ module RBI
|
|
21
22
|
@nest_singleton_methods = nest_singleton_methods
|
22
23
|
@nest_non_public_members = nest_non_public_members
|
23
24
|
@sort_nodes = sort_nodes
|
25
|
+
@replace_attributes_with_methods = replace_attributes_with_methods
|
24
26
|
end
|
25
27
|
|
26
28
|
#: (RBI::File file) -> String
|
@@ -36,6 +38,7 @@ module RBI
|
|
36
38
|
|
37
39
|
#: (RBI::Tree tree) -> void
|
38
40
|
def format_tree(tree)
|
41
|
+
tree.replace_attributes_with_methods! if @replace_attributes_with_methods
|
39
42
|
tree.add_sig_templates! if @add_sig_templates
|
40
43
|
tree.nest_singleton_methods! if @nest_singleton_methods
|
41
44
|
tree.nest_non_public_members! if @nest_non_public_members
|
data/lib/rbi/index.rb
CHANGED
@@ -17,7 +17,7 @@ module RBI
|
|
17
17
|
#: -> void
|
18
18
|
def initialize
|
19
19
|
super
|
20
|
-
@index =
|
20
|
+
@index = {} #: Hash[String, Array[Node]]
|
21
21
|
end
|
22
22
|
|
23
23
|
#: -> Array[String]
|
@@ -217,7 +217,17 @@ module RBI
|
|
217
217
|
# @override
|
218
218
|
#: -> Array[String]
|
219
219
|
def index_ids
|
220
|
-
[
|
220
|
+
[fully_qualified_name]
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
class TEnumValue
|
225
|
+
include Indexable
|
226
|
+
|
227
|
+
# @override
|
228
|
+
#: -> Array[String]
|
229
|
+
def index_ids
|
230
|
+
[fully_qualified_name]
|
221
231
|
end
|
222
232
|
end
|
223
233
|
end
|
data/lib/rbi/loc.rb
CHANGED
@@ -50,7 +50,7 @@ module RBI
|
|
50
50
|
|
51
51
|
string = String.new
|
52
52
|
::File.foreach(file).with_index do |line, line_number|
|
53
|
-
string << line if line_number + 1
|
53
|
+
string << line if (line_number + 1).between?(begin_line, end_line)
|
54
54
|
end
|
55
55
|
string
|
56
56
|
end
|
data/lib/rbi/model.rb
CHANGED
@@ -45,7 +45,7 @@ module RBI
|
|
45
45
|
|
46
46
|
#: -> Scope?
|
47
47
|
def parent_scope
|
48
|
-
parent =
|
48
|
+
parent = parent_tree #: Tree?
|
49
49
|
parent = parent.parent_tree until parent.is_a?(Scope) || parent.nil?
|
50
50
|
parent
|
51
51
|
end
|
@@ -105,7 +105,9 @@ module RBI
|
|
105
105
|
def annotations
|
106
106
|
comments
|
107
107
|
.select { |comment| comment.text.start_with?("@") }
|
108
|
-
.map
|
108
|
+
.map do |comment|
|
109
|
+
comment.text[1..] #: as !nil
|
110
|
+
end
|
109
111
|
end
|
110
112
|
end
|
111
113
|
|
@@ -116,7 +118,7 @@ module RBI
|
|
116
118
|
#: (?loc: Loc?, ?comments: Array[Comment]) ?{ (Tree node) -> void } -> void
|
117
119
|
def initialize(loc: nil, comments: [], &block)
|
118
120
|
super(loc: loc, comments: comments)
|
119
|
-
@nodes =
|
121
|
+
@nodes = [] #: Array[Node]
|
120
122
|
block&.call(self)
|
121
123
|
end
|
122
124
|
|
@@ -144,7 +146,7 @@ module RBI
|
|
144
146
|
|
145
147
|
#: (?strictness: String?, ?comments: Array[Comment]) ?{ (File file) -> void } -> void
|
146
148
|
def initialize(strictness: nil, comments: [], &block)
|
147
|
-
@root =
|
149
|
+
@root = Tree.new #: Tree
|
148
150
|
@strictness = strictness
|
149
151
|
@comments = comments
|
150
152
|
block&.call(self)
|
@@ -313,7 +315,7 @@ module RBI
|
|
313
315
|
#: (Symbol name, Array[Symbol] names, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) -> void
|
314
316
|
def initialize(name, names, visibility: Public.new, sigs: [], loc: nil, comments: [])
|
315
317
|
super(loc: loc, comments: comments)
|
316
|
-
@names =
|
318
|
+
@names = [name, *names] #: Array[Symbol]
|
317
319
|
@visibility = visibility
|
318
320
|
@sigs = sigs
|
319
321
|
end
|
@@ -671,7 +673,7 @@ module RBI
|
|
671
673
|
#: (String name, Array[String] names, ?loc: Loc?, ?comments: Array[Comment]) -> void
|
672
674
|
def initialize(name, names, loc: nil, comments: [])
|
673
675
|
super(loc: loc, comments: comments)
|
674
|
-
@names =
|
676
|
+
@names = [name, *names] #: Array[String]
|
675
677
|
end
|
676
678
|
end
|
677
679
|
|
@@ -1037,6 +1039,29 @@ module RBI
|
|
1037
1039
|
end
|
1038
1040
|
end
|
1039
1041
|
|
1042
|
+
class TEnumValue < NodeWithComments
|
1043
|
+
#: String
|
1044
|
+
attr_reader :name
|
1045
|
+
|
1046
|
+
#: (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (TEnumValue node) -> void } -> void
|
1047
|
+
def initialize(name, loc: nil, comments: [], &block)
|
1048
|
+
super(loc: loc, comments: comments)
|
1049
|
+
@name = name
|
1050
|
+
block&.call(self)
|
1051
|
+
end
|
1052
|
+
|
1053
|
+
#: -> String
|
1054
|
+
def fully_qualified_name
|
1055
|
+
"#{parent_scope&.fully_qualified_name}::#{name}"
|
1056
|
+
end
|
1057
|
+
|
1058
|
+
# @override
|
1059
|
+
#: -> String
|
1060
|
+
def to_s
|
1061
|
+
fully_qualified_name
|
1062
|
+
end
|
1063
|
+
end
|
1064
|
+
|
1040
1065
|
# Sorbet's misc.
|
1041
1066
|
|
1042
1067
|
class Helper < NodeWithComments
|
data/lib/rbi/parser.rb
CHANGED
@@ -136,7 +136,18 @@ module RBI
|
|
136
136
|
|
137
137
|
#: (Prism::Node node) -> String
|
138
138
|
def node_string!(node)
|
139
|
-
|
139
|
+
node_string(node) #: as !nil
|
140
|
+
end
|
141
|
+
|
142
|
+
#: (Prism::Node node) -> Prism::Location
|
143
|
+
def adjust_prism_location_for_heredoc(node)
|
144
|
+
visitor = HeredocLocationVisitor.new(
|
145
|
+
node.location.send(:source),
|
146
|
+
node.location.start_offset,
|
147
|
+
node.location.end_offset,
|
148
|
+
)
|
149
|
+
visitor.visit(node)
|
150
|
+
visitor.location
|
140
151
|
end
|
141
152
|
end
|
142
153
|
|
@@ -151,12 +162,12 @@ module RBI
|
|
151
162
|
def initialize(source, comments:, file:)
|
152
163
|
super(source, file: file)
|
153
164
|
|
154
|
-
@comments_by_line =
|
155
|
-
@tree =
|
165
|
+
@comments_by_line = comments.to_h { |c| [c.location.start_line, c] } #: Hash[Integer, Prism::Comment]
|
166
|
+
@tree = Tree.new #: Tree
|
156
167
|
|
157
|
-
@scopes_stack =
|
158
|
-
@last_node =
|
159
|
-
@last_sigs =
|
168
|
+
@scopes_stack = [@tree] #: Array[Tree]
|
169
|
+
@last_node = nil #: Prism::Node?
|
170
|
+
@last_sigs = [] #: Array[RBI::Sig]
|
160
171
|
end
|
161
172
|
|
162
173
|
# @override
|
@@ -217,30 +228,51 @@ module RBI
|
|
217
228
|
|
218
229
|
current_scope << if struct
|
219
230
|
struct
|
220
|
-
elsif
|
221
|
-
|
231
|
+
elsif t_enum_value?(node)
|
232
|
+
TEnumValue.new(
|
222
233
|
case node
|
223
234
|
when Prism::ConstantWriteNode
|
224
235
|
node.name.to_s
|
225
236
|
when Prism::ConstantPathWriteNode
|
226
237
|
node_string!(node.target)
|
227
238
|
end,
|
228
|
-
node_string!(node.value),
|
229
239
|
loc: node_loc(node),
|
230
240
|
comments: node_comments(node),
|
231
241
|
)
|
232
242
|
else
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
end,
|
240
|
-
node_string!(node.value),
|
241
|
-
loc: node_loc(node),
|
242
|
-
comments: node_comments(node),
|
243
|
+
adjusted_node_location = adjust_prism_location_for_heredoc(node)
|
244
|
+
|
245
|
+
adjusted_value_location = Prism::Location.new(
|
246
|
+
node.value.location.send(:source),
|
247
|
+
node.value.location.start_offset,
|
248
|
+
adjusted_node_location.end_offset - node.value.location.start_offset,
|
243
249
|
)
|
250
|
+
|
251
|
+
if type_variable_definition?(node.value)
|
252
|
+
TypeMember.new(
|
253
|
+
case node
|
254
|
+
when Prism::ConstantWriteNode
|
255
|
+
node.name.to_s
|
256
|
+
when Prism::ConstantPathWriteNode
|
257
|
+
node_string!(node.target)
|
258
|
+
end,
|
259
|
+
adjusted_value_location.slice,
|
260
|
+
loc: Loc.from_prism(@file, adjusted_node_location),
|
261
|
+
comments: node_comments(node),
|
262
|
+
)
|
263
|
+
else
|
264
|
+
Const.new(
|
265
|
+
case node
|
266
|
+
when Prism::ConstantWriteNode
|
267
|
+
node.name.to_s
|
268
|
+
when Prism::ConstantPathWriteNode
|
269
|
+
node_string!(node.target)
|
270
|
+
end,
|
271
|
+
adjusted_value_location.slice,
|
272
|
+
loc: Loc.from_prism(@file, adjusted_node_location),
|
273
|
+
comments: node_comments(node),
|
274
|
+
)
|
275
|
+
end
|
244
276
|
end
|
245
277
|
end
|
246
278
|
|
@@ -509,7 +541,7 @@ module RBI
|
|
509
541
|
# Collect all the remaining comments after visiting the tree
|
510
542
|
#: -> void
|
511
543
|
def collect_orphan_comments
|
512
|
-
last_line =
|
544
|
+
last_line = nil #: Integer?
|
513
545
|
last_node_end = @tree.nodes.last&.loc&.end_line
|
514
546
|
|
515
547
|
@comments_by_line.each do |line, comment|
|
@@ -532,7 +564,7 @@ module RBI
|
|
532
564
|
|
533
565
|
#: -> Tree
|
534
566
|
def current_scope
|
535
|
-
|
567
|
+
@scopes_stack.last #: as !nil # Should never be nil since we create a Tree as the root
|
536
568
|
end
|
537
569
|
|
538
570
|
#: -> Array[Sig]
|
@@ -544,7 +576,7 @@ module RBI
|
|
544
576
|
|
545
577
|
#: (Array[Sig] sigs) -> Array[Comment]
|
546
578
|
def detach_comments_from_sigs(sigs)
|
547
|
-
comments =
|
579
|
+
comments = [] #: Array[Comment]
|
548
580
|
|
549
581
|
sigs.each do |sig|
|
550
582
|
comments += sig.comments.dup
|
@@ -587,7 +619,7 @@ module RBI
|
|
587
619
|
|
588
620
|
#: (Prism::Node? node) -> Array[Arg]
|
589
621
|
def parse_send_args(node)
|
590
|
-
args =
|
622
|
+
args = [] #: Array[Arg]
|
591
623
|
return args unless node.is_a?(Prism::ArgumentsNode)
|
592
624
|
|
593
625
|
node.arguments.each do |arg|
|
@@ -598,11 +630,13 @@ module RBI
|
|
598
630
|
|
599
631
|
args << KwArg.new(
|
600
632
|
node_string!(assoc.key).delete_suffix(":"),
|
601
|
-
|
633
|
+
node_string(assoc.value), #: as !nil
|
602
634
|
)
|
603
635
|
end
|
604
636
|
else
|
605
|
-
args << Arg.new(
|
637
|
+
args << Arg.new(
|
638
|
+
node_string(arg), #: as !nil
|
639
|
+
)
|
606
640
|
end
|
607
641
|
end
|
608
642
|
|
@@ -703,7 +737,7 @@ module RBI
|
|
703
737
|
return unless node_string(recv) =~ /(::)?Struct/
|
704
738
|
|
705
739
|
members = []
|
706
|
-
keyword_init =
|
740
|
+
keyword_init = false #: bool
|
707
741
|
|
708
742
|
args = send.arguments
|
709
743
|
if args.is_a?(Prism::ArgumentsNode)
|
@@ -753,7 +787,7 @@ module RBI
|
|
753
787
|
type = node_string!(type_arg)
|
754
788
|
loc = node_loc(send)
|
755
789
|
comments = node_comments(send)
|
756
|
-
default_value =
|
790
|
+
default_value = nil #: String?
|
757
791
|
|
758
792
|
rest.each do |arg|
|
759
793
|
next unless arg.is_a?(Prism::KeywordHashNode)
|
@@ -819,6 +853,19 @@ module RBI
|
|
819
853
|
def type_variable_definition?(node)
|
820
854
|
node.is_a?(Prism::CallNode) && (node.message == "type_member" || node.message == "type_template")
|
821
855
|
end
|
856
|
+
|
857
|
+
#: (Prism::Node? node) -> bool
|
858
|
+
def t_enum_value?(node)
|
859
|
+
return false unless current_scope.is_a?(TEnumBlock)
|
860
|
+
|
861
|
+
return false unless node.is_a?(Prism::ConstantWriteNode)
|
862
|
+
|
863
|
+
value = node.value
|
864
|
+
return false unless value.is_a?(Prism::CallNode)
|
865
|
+
return false unless value.message == "new"
|
866
|
+
|
867
|
+
true
|
868
|
+
end
|
822
869
|
end
|
823
870
|
|
824
871
|
class SigBuilder < Visitor
|
@@ -829,7 +876,7 @@ module RBI
|
|
829
876
|
def initialize(content, file:)
|
830
877
|
super
|
831
878
|
|
832
|
-
@current =
|
879
|
+
@current = Sig.new #: Sig
|
833
880
|
end
|
834
881
|
|
835
882
|
# @override
|
@@ -903,5 +950,57 @@ module RBI
|
|
903
950
|
)
|
904
951
|
end
|
905
952
|
end
|
953
|
+
|
954
|
+
class HeredocLocationVisitor < Prism::Visitor
|
955
|
+
#: (Prism::Source source, Integer begin_offset, Integer end_offset) -> void
|
956
|
+
def initialize(source, begin_offset, end_offset)
|
957
|
+
super()
|
958
|
+
@source = source
|
959
|
+
@begin_offset = begin_offset
|
960
|
+
@end_offset = end_offset
|
961
|
+
@offset_last_newline = false #: bool
|
962
|
+
end
|
963
|
+
|
964
|
+
#: (Prism::StringNode node) -> void
|
965
|
+
def visit_string_node(node)
|
966
|
+
return unless node.heredoc?
|
967
|
+
|
968
|
+
closing_loc = node.closing_loc
|
969
|
+
return unless closing_loc
|
970
|
+
|
971
|
+
handle_string_node(node)
|
972
|
+
end
|
973
|
+
|
974
|
+
#: (Prism::InterpolatedStringNode node) -> void
|
975
|
+
def visit_interpolated_string_node(node)
|
976
|
+
return super unless node.heredoc?
|
977
|
+
|
978
|
+
closing_loc = node.closing_loc
|
979
|
+
return super unless closing_loc
|
980
|
+
|
981
|
+
handle_string_node(node)
|
982
|
+
end
|
983
|
+
|
984
|
+
#: -> Prism::Location
|
985
|
+
def location
|
986
|
+
Prism::Location.new(
|
987
|
+
@source,
|
988
|
+
@begin_offset,
|
989
|
+
@end_offset - @begin_offset - (@offset_last_newline ? 1 : 0),
|
990
|
+
)
|
991
|
+
end
|
992
|
+
|
993
|
+
private
|
994
|
+
|
995
|
+
#: (Prism::StringNode | Prism::InterpolatedStringNode node) -> void
|
996
|
+
def handle_string_node(node)
|
997
|
+
closing_loc = node.closing_loc #: as !nil
|
998
|
+
|
999
|
+
if closing_loc.end_offset > @end_offset
|
1000
|
+
@end_offset = closing_loc.end_offset
|
1001
|
+
@offset_last_newline = true if node.closing_loc&.slice&.end_with?("\n")
|
1002
|
+
end
|
1003
|
+
end
|
1004
|
+
end
|
906
1005
|
end
|
907
1006
|
end
|
data/lib/rbi/printer.rb
CHANGED
@@ -23,8 +23,8 @@ module RBI
|
|
23
23
|
@out = out
|
24
24
|
@current_indent = indent
|
25
25
|
@print_locs = print_locs
|
26
|
-
@in_visibility_group =
|
27
|
-
@previous_node =
|
26
|
+
@in_visibility_group = false #: bool
|
27
|
+
@previous_node = nil #: Node?
|
28
28
|
@max_line_length = max_line_length
|
29
29
|
end
|
30
30
|
|
@@ -542,6 +542,16 @@ module RBI
|
|
542
542
|
printl("end")
|
543
543
|
end
|
544
544
|
|
545
|
+
# @override
|
546
|
+
#: (TEnumValue node) -> void
|
547
|
+
def visit_tenum_value(node)
|
548
|
+
print_blank_line_before(node)
|
549
|
+
print_loc(node)
|
550
|
+
visit_all(node.comments)
|
551
|
+
|
552
|
+
printl("#{node.name} = new")
|
553
|
+
end
|
554
|
+
|
545
555
|
# @override
|
546
556
|
#: (TypeMember node) -> void
|
547
557
|
def visit_type_member(node)
|
@@ -675,6 +685,13 @@ module RBI
|
|
675
685
|
node.comments.empty? && node.empty?
|
676
686
|
when Attr
|
677
687
|
node.comments.empty? && node.sigs.empty?
|
688
|
+
when Const
|
689
|
+
return false unless node.comments.empty?
|
690
|
+
|
691
|
+
loc = node.loc
|
692
|
+
return true unless loc
|
693
|
+
|
694
|
+
loc.begin_line == loc.end_line
|
678
695
|
when Method
|
679
696
|
node.comments.empty? && node.sigs.empty? && node.params.all? { |p| p.comments.empty? }
|
680
697
|
when Sig
|
@@ -722,7 +739,9 @@ module RBI
|
|
722
739
|
printn(" do")
|
723
740
|
indent
|
724
741
|
if modifiers.any?
|
725
|
-
printl(
|
742
|
+
printl(
|
743
|
+
modifiers.first, #: as !nil
|
744
|
+
)
|
726
745
|
indent
|
727
746
|
modifiers[1..]&.each do |modifier|
|
728
747
|
printl(".#{modifier}")
|
@@ -771,7 +790,7 @@ module RBI
|
|
771
790
|
|
772
791
|
#: (Sig node) -> Array[String]
|
773
792
|
def sig_modifiers(node)
|
774
|
-
modifiers =
|
793
|
+
modifiers = [] #: Array[String]
|
775
794
|
modifiers << "abstract" if node.is_abstract
|
776
795
|
|
777
796
|
if node.is_override
|
@@ -21,7 +21,7 @@ module RBI
|
|
21
21
|
#: (Method) -> void
|
22
22
|
def initialize(method)
|
23
23
|
@method = method
|
24
|
-
@result =
|
24
|
+
@result = Sig.new #: Sig
|
25
25
|
end
|
26
26
|
|
27
27
|
#: (::RBS::MethodType) -> void
|
@@ -44,7 +44,7 @@ module RBI
|
|
44
44
|
raise Error, "No block param found" unless block_param
|
45
45
|
|
46
46
|
block_name = block_param.name
|
47
|
-
block_type =
|
47
|
+
block_type = translate_type(type.type) #: as RBI::Type::Proc
|
48
48
|
|
49
49
|
bind = type.self_type
|
50
50
|
block_type.bind(translate_type(bind)) if bind
|
@@ -75,7 +75,7 @@ module RBI
|
|
75
75
|
when ::RBS::Types::Optional
|
76
76
|
Type.nilable(translate(type.type))
|
77
77
|
when ::RBS::Types::Proc
|
78
|
-
proc =
|
78
|
+
proc = translate(type.type) #: as Type::Proc
|
79
79
|
proc.bind(translate(type.self_type)) if type.self_type
|
80
80
|
proc
|
81
81
|
when ::RBS::Types::Record
|
data/lib/rbi/rbs_printer.rb
CHANGED
@@ -23,9 +23,9 @@ module RBI
|
|
23
23
|
@out = out
|
24
24
|
@current_indent = indent
|
25
25
|
@print_locs = print_locs
|
26
|
-
@in_visibility_group =
|
27
|
-
@previous_node =
|
28
|
-
@positional_names =
|
26
|
+
@in_visibility_group = false #: bool
|
27
|
+
@previous_node = nil #: Node?
|
28
|
+
@positional_names = positional_names #: bool
|
29
29
|
end
|
30
30
|
|
31
31
|
# Printing
|
@@ -349,7 +349,10 @@ module RBI
|
|
349
349
|
print(": ")
|
350
350
|
if sigs.any?
|
351
351
|
first, *rest = sigs
|
352
|
-
print_method_sig(
|
352
|
+
print_method_sig(
|
353
|
+
node,
|
354
|
+
first, #: as !nil
|
355
|
+
)
|
353
356
|
if rest.any?
|
354
357
|
spaces = node.name.size + 4
|
355
358
|
rest.each do |sig|
|
@@ -645,19 +648,22 @@ module RBI
|
|
645
648
|
# @override
|
646
649
|
#: (TEnumBlock node) -> void
|
647
650
|
def visit_tenum_block(node)
|
648
|
-
node.nodes
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
651
|
+
visit_all(node.nodes)
|
652
|
+
end
|
653
|
+
|
654
|
+
# @override
|
655
|
+
#: (TEnumValue node) -> void
|
656
|
+
def visit_tenum_value(node)
|
657
|
+
print_blank_line_before(node)
|
658
|
+
print_loc(node)
|
659
|
+
visit_all(node.comments)
|
660
|
+
|
661
|
+
t_enum = node.parent_scope&.parent_scope
|
662
|
+
|
663
|
+
if t_enum.is_a?(TEnum)
|
664
|
+
printl("#{node.name}: #{t_enum.name}")
|
665
|
+
else
|
666
|
+
printl("#{node.name}: untyped")
|
661
667
|
end
|
662
668
|
end
|
663
669
|
|
@@ -882,7 +888,7 @@ module RBI
|
|
882
888
|
|
883
889
|
#: -> void
|
884
890
|
def initialize
|
885
|
-
@string =
|
891
|
+
@string = String.new #: String
|
886
892
|
end
|
887
893
|
|
888
894
|
#: (Type node) -> void
|
@@ -29,7 +29,7 @@ module RBI
|
|
29
29
|
def initialize
|
30
30
|
super
|
31
31
|
|
32
|
-
@current_visibility =
|
32
|
+
@current_visibility = [Public.new] #: Array[Visibility]
|
33
33
|
end
|
34
34
|
|
35
35
|
# @override
|
@@ -46,7 +46,7 @@ module RBI
|
|
46
46
|
visit_all(node.nodes.dup)
|
47
47
|
@current_visibility.pop
|
48
48
|
when Attr, Method
|
49
|
-
node.visibility =
|
49
|
+
node.visibility = @current_visibility.last #: as !nil
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
@@ -67,8 +67,8 @@ module RBI
|
|
67
67
|
@left_name = left_name
|
68
68
|
@right_name = right_name
|
69
69
|
@keep = keep
|
70
|
-
@tree =
|
71
|
-
@scope_stack =
|
70
|
+
@tree = MergeTree.new #: MergeTree
|
71
|
+
@scope_stack = [@tree] #: Array[Tree]
|
72
72
|
end
|
73
73
|
|
74
74
|
#: (Tree tree) -> void
|
@@ -99,12 +99,12 @@ module RBI
|
|
99
99
|
def initialize(output, left_name: "left", right_name: "right", keep: Keep::NONE)
|
100
100
|
super()
|
101
101
|
@tree = output
|
102
|
-
@index =
|
103
|
-
@scope_stack =
|
102
|
+
@index = output.index #: Index
|
103
|
+
@scope_stack = [@tree] #: Array[Tree]
|
104
104
|
@left_name = left_name
|
105
105
|
@right_name = right_name
|
106
106
|
@keep = keep
|
107
|
-
@conflicts =
|
107
|
+
@conflicts = [] #: Array[Conflict]
|
108
108
|
end
|
109
109
|
|
110
110
|
# @override
|
@@ -159,7 +159,7 @@ module RBI
|
|
159
159
|
|
160
160
|
#: -> Tree
|
161
161
|
def current_scope
|
162
|
-
|
162
|
+
@scope_stack.last #: as !nil
|
163
163
|
end
|
164
164
|
|
165
165
|
#: (Node node) -> Node?
|
@@ -245,7 +245,7 @@ module RBI
|
|
245
245
|
# @override
|
246
246
|
#: (Array[Node] nodes) -> void
|
247
247
|
def visit_all(nodes)
|
248
|
-
last_conflict_tree =
|
248
|
+
last_conflict_tree = nil #: ConflictTree?
|
249
249
|
nodes.dup.each do |node|
|
250
250
|
if node.is_a?(ConflictTree)
|
251
251
|
if last_conflict_tree
|
@@ -287,7 +287,7 @@ module RBI
|
|
287
287
|
|
288
288
|
#: -> ConflictTree?
|
289
289
|
def parent_conflict_tree
|
290
|
-
parent =
|
290
|
+
parent = parent_tree #: Node?
|
291
291
|
while parent
|
292
292
|
return parent if parent.is_a?(ConflictTree)
|
293
293
|
|
@@ -555,9 +555,9 @@ module RBI
|
|
555
555
|
super()
|
556
556
|
@left_name = left_name
|
557
557
|
@right_name = right_name
|
558
|
-
@left =
|
558
|
+
@left = Tree.new #: Tree
|
559
559
|
@left.parent_tree = self
|
560
|
-
@right =
|
560
|
+
@right = Tree.new #: Tree
|
561
561
|
@right.parent_tree = self
|
562
562
|
end
|
563
563
|
end
|
@@ -53,7 +53,7 @@ module RBI
|
|
53
53
|
def initialize(index)
|
54
54
|
super()
|
55
55
|
@index = index
|
56
|
-
@operations =
|
56
|
+
@operations = [] #: Array[Operation]
|
57
57
|
end
|
58
58
|
|
59
59
|
class << self
|
@@ -107,10 +107,10 @@ module RBI
|
|
107
107
|
when Scope
|
108
108
|
node.empty?
|
109
109
|
when Attr
|
110
|
-
previous =
|
110
|
+
previous = previous #: as Attr
|
111
111
|
node.names == previous.names && node.sigs == previous.sigs
|
112
112
|
when Method
|
113
|
-
previous =
|
113
|
+
previous = previous #: as Method
|
114
114
|
node.params == previous.params && node.sigs == previous.sigs
|
115
115
|
else
|
116
116
|
true
|
@@ -31,7 +31,9 @@ module RBI
|
|
31
31
|
next res if res && res != 0 # we can sort the nodes by their name, let's stop here
|
32
32
|
|
33
33
|
# Finally, if the two nodes have the same rank and the same name or at least one node is anonymous then,
|
34
|
-
|
34
|
+
original_order_a = original_order[a] #: as !nil
|
35
|
+
original_order_b = original_order[b] #: as !nil
|
36
|
+
original_order_a <=> original_order_b # we keep the original order
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
@@ -35,7 +35,7 @@ module RBI
|
|
35
35
|
comments = node.comments.dup
|
36
36
|
node.comments.clear
|
37
37
|
|
38
|
-
rbs_sigs =
|
38
|
+
rbs_sigs = [] #: Array[RBSComment]
|
39
39
|
|
40
40
|
comments.each do |comment|
|
41
41
|
case comment
|
@@ -67,7 +67,7 @@ module RBI
|
|
67
67
|
raise Error, "AttrWriter must have exactly one name"
|
68
68
|
end
|
69
69
|
|
70
|
-
name =
|
70
|
+
name = node.names.first #: as !nil
|
71
71
|
sig.params << SigParam.new(name.to_s, RBS::TypeTranslator.translate(attr_type))
|
72
72
|
end
|
73
73
|
|
data/lib/rbi/type.rb
CHANGED
@@ -285,7 +285,7 @@ module RBI
|
|
285
285
|
def initialize(name, *params)
|
286
286
|
super()
|
287
287
|
@name = name
|
288
|
-
@params =
|
288
|
+
@params = params #: Array[Type]
|
289
289
|
end
|
290
290
|
|
291
291
|
# @override
|
@@ -395,9 +395,9 @@ module RBI
|
|
395
395
|
#: -> void
|
396
396
|
def initialize
|
397
397
|
super
|
398
|
-
@proc_params =
|
399
|
-
@proc_returns =
|
400
|
-
@proc_bind =
|
398
|
+
@proc_params = {} #: Hash[Symbol, Type]
|
399
|
+
@proc_returns = Type.void #: Type
|
400
|
+
@proc_bind = nil #: Type?
|
401
401
|
end
|
402
402
|
|
403
403
|
# @override
|
@@ -570,7 +570,7 @@ module RBI
|
|
570
570
|
end.uniq
|
571
571
|
|
572
572
|
if flattened.size == 1
|
573
|
-
|
573
|
+
flattened.first #: as !nil
|
574
574
|
else
|
575
575
|
raise ArgumentError, "RBI::Type.all should have at least 2 types supplied" if flattened.size < 2
|
576
576
|
|
@@ -596,7 +596,7 @@ module RBI
|
|
596
596
|
end
|
597
597
|
end
|
598
598
|
|
599
|
-
is_nilable =
|
599
|
+
is_nilable = false #: bool
|
600
600
|
|
601
601
|
types = flattened.filter_map do |type|
|
602
602
|
case type
|
@@ -632,7 +632,7 @@ module RBI
|
|
632
632
|
raise ArgumentError, "RBI::Type.any should have at least 2 types supplied"
|
633
633
|
end
|
634
634
|
when 1
|
635
|
-
|
635
|
+
types.first #: as !nil
|
636
636
|
else
|
637
637
|
Any.new(types)
|
638
638
|
end
|
@@ -693,7 +693,7 @@ module RBI
|
|
693
693
|
|
694
694
|
#: -> void
|
695
695
|
def initialize
|
696
|
-
@nilable =
|
696
|
+
@nilable = false #: bool
|
697
697
|
end
|
698
698
|
|
699
699
|
# Returns a new type that is `nilable` if it is not already.
|
data/lib/rbi/type_parser.rb
CHANGED
@@ -18,7 +18,7 @@ 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
|
|
@@ -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
|
@@ -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)
|
@@ -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
|
@@ -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
|
@@ -261,8 +285,8 @@ module RBI
|
|
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)
|
data/lib/rbi/version.rb
CHANGED
data/lib/rbi/visitor.rb
CHANGED
@@ -88,6 +88,8 @@ module RBI
|
|
88
88
|
visit_sig(node)
|
89
89
|
when SigParam
|
90
90
|
visit_sig_param(node)
|
91
|
+
when TEnumValue
|
92
|
+
visit_tenum_value(node)
|
91
93
|
when TStructConst
|
92
94
|
visit_tstruct_const(node)
|
93
95
|
when TStructProp
|
@@ -222,6 +224,9 @@ module RBI
|
|
222
224
|
#: (TEnumBlock node) -> void
|
223
225
|
def visit_tenum_block(node); end
|
224
226
|
|
227
|
+
#: (TEnumValue node) -> void
|
228
|
+
def visit_tenum_value(node); end
|
229
|
+
|
225
230
|
#: (Helper node) -> void
|
226
231
|
def visit_helper(node); end
|
227
232
|
|
data/rbi/rbi.rbi
CHANGED
@@ -403,10 +403,11 @@ class RBI::Formatter
|
|
403
403
|
max_line_length: T.nilable(::Integer),
|
404
404
|
nest_singleton_methods: T::Boolean,
|
405
405
|
nest_non_public_members: T::Boolean,
|
406
|
-
sort_nodes: T::Boolean
|
406
|
+
sort_nodes: T::Boolean,
|
407
|
+
replace_attributes_with_methods: T::Boolean
|
407
408
|
).void
|
408
409
|
end
|
409
|
-
def initialize(add_sig_templates: T.unsafe(nil), group_nodes: T.unsafe(nil), max_line_length: T.unsafe(nil), nest_singleton_methods: T.unsafe(nil), nest_non_public_members: T.unsafe(nil), sort_nodes: T.unsafe(nil)); end
|
410
|
+
def initialize(add_sig_templates: T.unsafe(nil), group_nodes: T.unsafe(nil), max_line_length: T.unsafe(nil), nest_singleton_methods: T.unsafe(nil), nest_non_public_members: T.unsafe(nil), sort_nodes: T.unsafe(nil), replace_attributes_with_methods: T.unsafe(nil)); end
|
410
411
|
|
411
412
|
sig { params(file: ::RBI::File).void }
|
412
413
|
def format_file(file); end
|
@@ -1005,6 +1006,25 @@ class RBI::Parser
|
|
1005
1006
|
end
|
1006
1007
|
end
|
1007
1008
|
|
1009
|
+
class RBI::Parser::HeredocLocationVisitor < ::Prism::Visitor
|
1010
|
+
sig { params(source: ::Prism::Source, begin_offset: ::Integer, end_offset: ::Integer).void }
|
1011
|
+
def initialize(source, begin_offset, end_offset); end
|
1012
|
+
|
1013
|
+
sig { returns(::Prism::Location) }
|
1014
|
+
def location; end
|
1015
|
+
|
1016
|
+
sig { params(node: ::Prism::InterpolatedStringNode).void }
|
1017
|
+
def visit_interpolated_string_node(node); end
|
1018
|
+
|
1019
|
+
sig { params(node: ::Prism::StringNode).void }
|
1020
|
+
def visit_string_node(node); end
|
1021
|
+
|
1022
|
+
private
|
1023
|
+
|
1024
|
+
sig { params(node: T.any(::Prism::InterpolatedStringNode, ::Prism::StringNode)).void }
|
1025
|
+
def handle_string_node(node); end
|
1026
|
+
end
|
1027
|
+
|
1008
1028
|
class RBI::Parser::SigBuilder < ::RBI::Parser::Visitor
|
1009
1029
|
sig { params(content: ::String, file: ::String).void }
|
1010
1030
|
def initialize(content, file:); end
|
@@ -1109,6 +1129,9 @@ class RBI::Parser::TreeBuilder < ::RBI::Parser::Visitor
|
|
1109
1129
|
sig { void }
|
1110
1130
|
def set_root_tree_loc; end
|
1111
1131
|
|
1132
|
+
sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) }
|
1133
|
+
def t_enum_value?(node); end
|
1134
|
+
|
1112
1135
|
sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) }
|
1113
1136
|
def type_variable_definition?(node); end
|
1114
1137
|
end
|
@@ -1119,6 +1142,9 @@ class RBI::Parser::Visitor < ::Prism::Visitor
|
|
1119
1142
|
|
1120
1143
|
private
|
1121
1144
|
|
1145
|
+
sig { params(node: ::Prism::Node).returns(::Prism::Location) }
|
1146
|
+
def adjust_prism_location_for_heredoc(node); end
|
1147
|
+
|
1122
1148
|
sig { params(node: ::Prism::Node).returns(::RBI::Loc) }
|
1123
1149
|
def node_loc(node); end
|
1124
1150
|
|
@@ -1345,6 +1371,9 @@ class RBI::Printer < ::RBI::Visitor
|
|
1345
1371
|
sig { override.params(node: ::RBI::TEnumBlock).void }
|
1346
1372
|
def visit_tenum_block(node); end
|
1347
1373
|
|
1374
|
+
sig { override.params(node: ::RBI::TEnumValue).void }
|
1375
|
+
def visit_tenum_value(node); end
|
1376
|
+
|
1348
1377
|
sig { override.params(node: ::RBI::Tree).void }
|
1349
1378
|
def visit_tree(node); end
|
1350
1379
|
|
@@ -1658,6 +1687,9 @@ class RBI::RBSPrinter < ::RBI::Visitor
|
|
1658
1687
|
sig { override.params(node: ::RBI::TEnumBlock).void }
|
1659
1688
|
def visit_tenum_block(node); end
|
1660
1689
|
|
1690
|
+
sig { override.params(node: ::RBI::TEnumValue).void }
|
1691
|
+
def visit_tenum_value(node); end
|
1692
|
+
|
1661
1693
|
sig { override.params(node: ::RBI::Tree).void }
|
1662
1694
|
def visit_tree(node); end
|
1663
1695
|
|
@@ -2549,6 +2581,32 @@ class RBI::TEnumBlock < ::RBI::Scope
|
|
2549
2581
|
def to_s; end
|
2550
2582
|
end
|
2551
2583
|
|
2584
|
+
class RBI::TEnumValue < ::RBI::NodeWithComments
|
2585
|
+
include ::RBI::Indexable
|
2586
|
+
|
2587
|
+
sig do
|
2588
|
+
params(
|
2589
|
+
name: ::String,
|
2590
|
+
loc: T.nilable(::RBI::Loc),
|
2591
|
+
comments: T::Array[::RBI::Comment],
|
2592
|
+
block: T.nilable(T.proc.params(node: ::RBI::TEnumValue).void)
|
2593
|
+
).void
|
2594
|
+
end
|
2595
|
+
def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end
|
2596
|
+
|
2597
|
+
sig { returns(::String) }
|
2598
|
+
def fully_qualified_name; end
|
2599
|
+
|
2600
|
+
sig { override.returns(T::Array[::String]) }
|
2601
|
+
def index_ids; end
|
2602
|
+
|
2603
|
+
sig { returns(::String) }
|
2604
|
+
def name; end
|
2605
|
+
|
2606
|
+
sig { override.returns(::String) }
|
2607
|
+
def to_s; end
|
2608
|
+
end
|
2609
|
+
|
2552
2610
|
# Sorbet's T::Struct
|
2553
2611
|
class RBI::TStruct < ::RBI::Class
|
2554
2612
|
sig do
|
@@ -3590,6 +3648,9 @@ class RBI::Visitor
|
|
3590
3648
|
sig { params(node: ::RBI::TEnumBlock).void }
|
3591
3649
|
def visit_tenum_block(node); end
|
3592
3650
|
|
3651
|
+
sig { params(node: ::RBI::TEnumValue).void }
|
3652
|
+
def visit_tenum_value(node); end
|
3653
|
+
|
3593
3654
|
sig { params(node: ::RBI::Tree).void }
|
3594
3655
|
def visit_tree(node); end
|
3595
3656
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandre Terrasa
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-04-10 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: prism
|
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
112
|
requirements: []
|
113
|
-
rubygems_version: 3.6.
|
113
|
+
rubygems_version: 3.6.6
|
114
114
|
specification_version: 4
|
115
115
|
summary: RBI generation framework
|
116
116
|
test_files: []
|