rbi 0.0.16 → 0.0.17

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bda85d642d83b25177d24ab2bc789631861302ebc31c862ea40bcd56b034ec68
4
- data.tar.gz: 23071846fc0c1edaa681ab3cbb4c2663fc27a00666ef890fcdb404546128307d
3
+ metadata.gz: b377a351b9385e3c256fa079584f193232a767df408850e72265db4319346aa9
4
+ data.tar.gz: 04a3e0cd339374e9ccc3f0d2d769e564730ad69881c73c4f42ae328db48bcad5
5
5
  SHA512:
6
- metadata.gz: f7678a81e3e9e66a858c72c5093ebc0fdc0bec4d0e4d08ac662341959f1e82dfa5ef5898a5c166442c718907faef2ad826e979dd7dd98a48c5496969209ffdc8
7
- data.tar.gz: c4616ce80159a71fea63a23ce90d6eaf7527fabda7200224ea213aedf0926610a974d1a428c569d0f2bfe0b3efa84fd73b7476bd29312189dd3df2e3ef321c56
6
+ metadata.gz: e9123353786e09d5869e8621f086ef057d57b21ff8a05ddb6c1be3dffa5dc0d94bc433e0074f0e7b4dff0eb63ed66d300ab11856d536a299f8560ec53912f444
7
+ data.tar.gz: 6a12ef064826678ce3a47b6a1d327e8de0b506fd09c100f4f88111afe6b84d11549cf41ef727a70bb9b93e16dd1868a00f3ed7a3e5b9e10578e159a7aafa2c04
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.0")
13
- gem("rubocop", "~> 1.7", require: false)
13
+ gem("rubocop", "~> 1.54", 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
@@ -5,8 +5,20 @@ module RBI
5
5
  class Formatter
6
6
  extend T::Sig
7
7
 
8
- sig { returns(T::Boolean) }
9
- attr_accessor :add_sig_templates, :group_nodes, :nest_singleton_methods, :nest_non_public_methods, :sort_nodes
8
+ sig { params(sort_nodes: T::Boolean).returns(T::Boolean) }
9
+ attr_writer :sort_nodes
10
+
11
+ sig { params(nest_singleton_methods: T::Boolean).returns(T::Boolean) }
12
+ attr_writer :nest_singleton_methods
13
+
14
+ sig { params(add_sig_templates: T::Boolean).returns(T::Boolean) }
15
+ attr_writer :add_sig_templates
16
+
17
+ sig { params(group_nodes: T::Boolean).returns(T::Boolean) }
18
+ attr_writer :group_nodes
19
+
20
+ sig { params(nest_non_public_methods: T::Boolean).returns(T::Boolean) }
21
+ attr_writer :nest_non_public_methods
10
22
 
11
23
  sig { returns(T.nilable(Integer)) }
12
24
  attr_accessor :max_line_length
@@ -18,7 +30,7 @@ module RBI
18
30
  max_line_length: T.nilable(Integer),
19
31
  nest_singleton_methods: T::Boolean,
20
32
  nest_non_public_methods: T::Boolean,
21
- sort_nodes: T::Boolean
33
+ sort_nodes: T::Boolean,
22
34
  ).void
23
35
  end
24
36
  def initialize(
@@ -43,12 +55,6 @@ module RBI
43
55
  file.string(max_line_length: @max_line_length)
44
56
  end
45
57
 
46
- sig { params(tree: RBI::Tree).returns(String) }
47
- def print_tree(tree)
48
- format_tree(tree)
49
- tree.string(max_line_length: @max_line_length)
50
- end
51
-
52
58
  sig { params(file: RBI::File).void }
53
59
  def format_file(file)
54
60
  format_tree(file.root)
data/lib/rbi/index.rb CHANGED
@@ -6,11 +6,15 @@ module RBI
6
6
  extend T::Sig
7
7
  include T::Enumerable
8
8
 
9
- sig { params(node: Node).returns(Index) }
10
- def self.index(*node)
11
- index = Index.new
12
- index.visit_all(node)
13
- index
9
+ class << self
10
+ extend T::Sig
11
+
12
+ sig { params(node: Node).returns(Index) }
13
+ def index(*node)
14
+ index = Index.new
15
+ index.visit_all(node)
16
+ index
17
+ end
14
18
  end
15
19
 
16
20
  sig { void }
@@ -171,6 +175,16 @@ module RBI
171
175
  end
172
176
  end
173
177
 
178
+ class TypeMember
179
+ extend T::Sig
180
+ include Indexable
181
+
182
+ sig { override.returns(T::Array[String]) }
183
+ def index_ids
184
+ [to_s]
185
+ end
186
+ end
187
+
174
188
  class Send
175
189
  extend T::Sig
176
190
  include Indexable
data/lib/rbi/loc.rb CHANGED
@@ -17,7 +17,7 @@ module RBI
17
17
  begin_line: T.nilable(Integer),
18
18
  end_line: T.nilable(Integer),
19
19
  begin_column: T.nilable(Integer),
20
- end_column: T.nilable(Integer)
20
+ end_column: T.nilable(Integer),
21
21
  ).void
22
22
  end
23
23
  def initialize(file: nil, begin_line: nil, end_line: nil, begin_column: nil, end_column: nil)
@@ -36,8 +36,8 @@ module RBI
36
36
  sig { returns(T.nilable(String)) }
37
37
  def source
38
38
  file = self.file
39
- return nil unless file
40
- return nil unless ::File.file?(file)
39
+ return unless file
40
+ return unless ::File.file?(file)
41
41
 
42
42
  return ::File.read(file) unless begin_line && end_line
43
43
 
data/lib/rbi/model.rb CHANGED
@@ -24,6 +24,7 @@ module RBI
24
24
  def detach
25
25
  tree = parent_tree
26
26
  return unless tree
27
+
27
28
  tree.nodes.delete(self)
28
29
  self.parent_tree = nil
29
30
  end
@@ -32,8 +33,10 @@ module RBI
32
33
  def replace(node)
33
34
  tree = parent_tree
34
35
  raise unless tree
36
+
35
37
  index = tree.nodes.index(self)
36
38
  raise unless index
39
+
37
40
  tree.nodes[index] = node
38
41
  node.parent_tree = tree
39
42
  self.parent_tree = nil
@@ -62,6 +65,7 @@ module RBI
62
65
  sig { params(other: Object).returns(T::Boolean) }
63
66
  def ==(other)
64
67
  return false unless other.is_a?(Comment)
68
+
65
69
  text == other.text
66
70
  end
67
71
  end
@@ -109,7 +113,7 @@ module RBI
109
113
  params(
110
114
  loc: T.nilable(Loc),
111
115
  comments: T::Array[Comment],
112
- block: T.nilable(T.proc.params(node: Tree).void)
116
+ block: T.nilable(T.proc.params(node: Tree).void),
113
117
  ).void
114
118
  end
115
119
  def initialize(loc: nil, comments: [], &block)
@@ -146,7 +150,7 @@ module RBI
146
150
  params(
147
151
  strictness: T.nilable(String),
148
152
  comments: T::Array[Comment],
149
- block: T.nilable(T.proc.params(file: File).void)
153
+ block: T.nilable(T.proc.params(file: File).void),
150
154
  ).void
151
155
  end
152
156
  def initialize(strictness: nil, comments: [], &block)
@@ -194,7 +198,7 @@ module RBI
194
198
  name: String,
195
199
  loc: T.nilable(Loc),
196
200
  comments: T::Array[Comment],
197
- block: T.nilable(T.proc.params(node: Module).void)
201
+ block: T.nilable(T.proc.params(node: Module).void),
198
202
  ).void
199
203
  end
200
204
  def initialize(name, loc: nil, comments: [], &block)
@@ -206,6 +210,7 @@ module RBI
206
210
  sig { override.returns(String) }
207
211
  def fully_qualified_name
208
212
  return name if name.start_with?("::")
213
+
209
214
  "#{parent_scope&.fully_qualified_name}::#{name}"
210
215
  end
211
216
  end
@@ -225,7 +230,7 @@ module RBI
225
230
  superclass_name: T.nilable(String),
226
231
  loc: T.nilable(Loc),
227
232
  comments: T::Array[Comment],
228
- block: T.nilable(T.proc.params(node: Class).void)
233
+ block: T.nilable(T.proc.params(node: Class).void),
229
234
  ).void
230
235
  end
231
236
  def initialize(name, superclass_name: nil, loc: nil, comments: [], &block)
@@ -238,6 +243,7 @@ module RBI
238
243
  sig { override.returns(String) }
239
244
  def fully_qualified_name
240
245
  return name if name.start_with?("::")
246
+
241
247
  "#{parent_scope&.fully_qualified_name}::#{name}"
242
248
  end
243
249
  end
@@ -249,7 +255,7 @@ module RBI
249
255
  params(
250
256
  loc: T.nilable(Loc),
251
257
  comments: T::Array[Comment],
252
- block: T.nilable(T.proc.params(node: SingletonClass).void)
258
+ block: T.nilable(T.proc.params(node: SingletonClass).void),
253
259
  ).void
254
260
  end
255
261
  def initialize(loc: nil, comments: [], &block)
@@ -282,7 +288,7 @@ module RBI
282
288
  keyword_init: T::Boolean,
283
289
  loc: T.nilable(Loc),
284
290
  comments: T::Array[Comment],
285
- block: T.nilable(T.proc.params(struct: Struct).void)
291
+ block: T.nilable(T.proc.params(struct: Struct).void),
286
292
  ).void
287
293
  end
288
294
  def initialize(name, members: [], keyword_init: false, loc: nil, comments: [], &block)
@@ -296,6 +302,7 @@ module RBI
296
302
  sig { override.returns(String) }
297
303
  def fully_qualified_name
298
304
  return name if name.start_with?("::")
305
+
299
306
  "#{parent_scope&.fully_qualified_name}::#{name}"
300
307
  end
301
308
  end
@@ -314,7 +321,7 @@ module RBI
314
321
  value: String,
315
322
  loc: T.nilable(Loc),
316
323
  comments: T::Array[Comment],
317
- block: T.nilable(T.proc.params(node: Const).void)
324
+ block: T.nilable(T.proc.params(node: Const).void),
318
325
  ).void
319
326
  end
320
327
  def initialize(name, value, loc: nil, comments: [], &block)
@@ -327,6 +334,7 @@ module RBI
327
334
  sig { returns(String) }
328
335
  def fully_qualified_name
329
336
  return name if name.start_with?("::")
337
+
330
338
  "#{parent_scope&.fully_qualified_name}::#{name}"
331
339
  end
332
340
 
@@ -360,7 +368,7 @@ module RBI
360
368
  visibility: Visibility,
361
369
  sigs: T::Array[Sig],
362
370
  loc: T.nilable(Loc),
363
- comments: T::Array[Comment]
371
+ comments: T::Array[Comment],
364
372
  ).void
365
373
  end
366
374
  def initialize(name, names, visibility: Public.new, sigs: [], loc: nil, comments: [])
@@ -385,7 +393,7 @@ module RBI
385
393
  sigs: T::Array[Sig],
386
394
  loc: T.nilable(Loc),
387
395
  comments: T::Array[Comment],
388
- block: T.nilable(T.proc.params(node: AttrAccessor).void)
396
+ block: T.nilable(T.proc.params(node: AttrAccessor).void),
389
397
  ).void
390
398
  end
391
399
  def initialize(name, *names, visibility: Public.new, sigs: [], loc: nil, comments: [], &block)
@@ -417,7 +425,7 @@ module RBI
417
425
  sigs: T::Array[Sig],
418
426
  loc: T.nilable(Loc),
419
427
  comments: T::Array[Comment],
420
- block: T.nilable(T.proc.params(node: AttrReader).void)
428
+ block: T.nilable(T.proc.params(node: AttrReader).void),
421
429
  ).void
422
430
  end
423
431
  def initialize(name, *names, visibility: Public.new, sigs: [], loc: nil, comments: [], &block)
@@ -449,7 +457,7 @@ module RBI
449
457
  sigs: T::Array[Sig],
450
458
  loc: T.nilable(Loc),
451
459
  comments: T::Array[Comment],
452
- block: T.nilable(T.proc.params(node: AttrWriter).void)
460
+ block: T.nilable(T.proc.params(node: AttrWriter).void),
453
461
  ).void
454
462
  end
455
463
  def initialize(name, *names, visibility: Public.new, sigs: [], loc: nil, comments: [], &block)
@@ -499,7 +507,7 @@ module RBI
499
507
  sigs: T::Array[Sig],
500
508
  loc: T.nilable(Loc),
501
509
  comments: T::Array[Comment],
502
- block: T.nilable(T.proc.params(node: Method).void)
510
+ block: T.nilable(T.proc.params(node: Method).void),
503
511
  ).void
504
512
  end
505
513
  def initialize(
@@ -576,7 +584,7 @@ module RBI
576
584
  name: String,
577
585
  loc: T.nilable(Loc),
578
586
  comments: T::Array[Comment],
579
- block: T.nilable(T.proc.params(node: ReqParam).void)
587
+ block: T.nilable(T.proc.params(node: ReqParam).void),
580
588
  ).void
581
589
  end
582
590
  def initialize(name, loc: nil, comments: [], &block)
@@ -602,7 +610,7 @@ module RBI
602
610
  value: String,
603
611
  loc: T.nilable(Loc),
604
612
  comments: T::Array[Comment],
605
- block: T.nilable(T.proc.params(node: OptParam).void)
613
+ block: T.nilable(T.proc.params(node: OptParam).void),
606
614
  ).void
607
615
  end
608
616
  def initialize(name, value, loc: nil, comments: [], &block)
@@ -613,7 +621,7 @@ module RBI
613
621
 
614
622
  sig { params(other: T.nilable(Object)).returns(T::Boolean) }
615
623
  def ==(other)
616
- OptParam === other && name == other.name && value == other.value
624
+ OptParam === other && name == other.name
617
625
  end
618
626
  end
619
627
 
@@ -625,7 +633,7 @@ module RBI
625
633
  name: String,
626
634
  loc: T.nilable(Loc),
627
635
  comments: T::Array[Comment],
628
- block: T.nilable(T.proc.params(node: RestParam).void)
636
+ block: T.nilable(T.proc.params(node: RestParam).void),
629
637
  ).void
630
638
  end
631
639
  def initialize(name, loc: nil, comments: [], &block)
@@ -652,7 +660,7 @@ module RBI
652
660
  name: String,
653
661
  loc: T.nilable(Loc),
654
662
  comments: T::Array[Comment],
655
- block: T.nilable(T.proc.params(node: KwParam).void)
663
+ block: T.nilable(T.proc.params(node: KwParam).void),
656
664
  ).void
657
665
  end
658
666
  def initialize(name, loc: nil, comments: [], &block)
@@ -683,7 +691,7 @@ module RBI
683
691
  value: String,
684
692
  loc: T.nilable(Loc),
685
693
  comments: T::Array[Comment],
686
- block: T.nilable(T.proc.params(node: KwOptParam).void)
694
+ block: T.nilable(T.proc.params(node: KwOptParam).void),
687
695
  ).void
688
696
  end
689
697
  def initialize(name, value, loc: nil, comments: [], &block)
@@ -699,7 +707,7 @@ module RBI
699
707
 
700
708
  sig { params(other: T.nilable(Object)).returns(T::Boolean) }
701
709
  def ==(other)
702
- KwOptParam === other && name == other.name && value == other.value
710
+ KwOptParam === other && name == other.name
703
711
  end
704
712
  end
705
713
 
@@ -711,7 +719,7 @@ module RBI
711
719
  name: String,
712
720
  loc: T.nilable(Loc),
713
721
  comments: T::Array[Comment],
714
- block: T.nilable(T.proc.params(node: KwRestParam).void)
722
+ block: T.nilable(T.proc.params(node: KwRestParam).void),
715
723
  ).void
716
724
  end
717
725
  def initialize(name, loc: nil, comments: [], &block)
@@ -738,7 +746,7 @@ module RBI
738
746
  name: String,
739
747
  loc: T.nilable(Loc),
740
748
  comments: T::Array[Comment],
741
- block: T.nilable(T.proc.params(node: BlockParam).void)
749
+ block: T.nilable(T.proc.params(node: BlockParam).void),
742
750
  ).void
743
751
  end
744
752
  def initialize(name, loc: nil, comments: [], &block)
@@ -773,7 +781,7 @@ module RBI
773
781
  name: String,
774
782
  names: T::Array[String],
775
783
  loc: T.nilable(Loc),
776
- comments: T::Array[Comment]
784
+ comments: T::Array[Comment],
777
785
  ).void
778
786
  end
779
787
  def initialize(name, names, loc: nil, comments: [])
@@ -791,7 +799,7 @@ module RBI
791
799
  names: String,
792
800
  loc: T.nilable(Loc),
793
801
  comments: T::Array[Comment],
794
- block: T.nilable(T.proc.params(node: Include).void)
802
+ block: T.nilable(T.proc.params(node: Include).void),
795
803
  ).void
796
804
  end
797
805
  def initialize(name, *names, loc: nil, comments: [], &block)
@@ -814,7 +822,7 @@ module RBI
814
822
  names: String,
815
823
  loc: T.nilable(Loc),
816
824
  comments: T::Array[Comment],
817
- block: T.nilable(T.proc.params(node: Extend).void)
825
+ block: T.nilable(T.proc.params(node: Extend).void),
818
826
  ).void
819
827
  end
820
828
  def initialize(name, *names, loc: nil, comments: [], &block)
@@ -873,7 +881,7 @@ module RBI
873
881
  params(
874
882
  loc: T.nilable(Loc),
875
883
  comments: T::Array[Comment],
876
- block: T.nilable(T.proc.params(node: Public).void)
884
+ block: T.nilable(T.proc.params(node: Public).void),
877
885
  ).void
878
886
  end
879
887
  def initialize(loc: nil, comments: [], &block)
@@ -889,7 +897,7 @@ module RBI
889
897
  params(
890
898
  loc: T.nilable(Loc),
891
899
  comments: T::Array[Comment],
892
- block: T.nilable(T.proc.params(node: Protected).void)
900
+ block: T.nilable(T.proc.params(node: Protected).void),
893
901
  ).void
894
902
  end
895
903
  def initialize(loc: nil, comments: [], &block)
@@ -905,7 +913,7 @@ module RBI
905
913
  params(
906
914
  loc: T.nilable(Loc),
907
915
  comments: T::Array[Comment],
908
- block: T.nilable(T.proc.params(node: Private).void)
916
+ block: T.nilable(T.proc.params(node: Private).void),
909
917
  ).void
910
918
  end
911
919
  def initialize(loc: nil, comments: [], &block)
@@ -931,7 +939,7 @@ module RBI
931
939
  args: T::Array[Arg],
932
940
  loc: T.nilable(Loc),
933
941
  comments: T::Array[Comment],
934
- block: T.nilable(T.proc.params(node: Send).void)
942
+ block: T.nilable(T.proc.params(node: Send).void),
935
943
  ).void
936
944
  end
937
945
  def initialize(method, args = [], loc: nil, comments: [], &block)
@@ -966,7 +974,7 @@ module RBI
966
974
  sig do
967
975
  params(
968
976
  value: String,
969
- loc: T.nilable(Loc)
977
+ loc: T.nilable(Loc),
970
978
  ).void
971
979
  end
972
980
  def initialize(value, loc: nil)
@@ -995,7 +1003,7 @@ module RBI
995
1003
  params(
996
1004
  keyword: String,
997
1005
  value: String,
998
- loc: T.nilable(Loc)
1006
+ loc: T.nilable(Loc),
999
1007
  ).void
1000
1008
  end
1001
1009
  def initialize(keyword, value, loc: nil)
@@ -1045,7 +1053,7 @@ module RBI
1045
1053
  type_params: T::Array[String],
1046
1054
  checked: T.nilable(Symbol),
1047
1055
  loc: T.nilable(Loc),
1048
- block: T.nilable(T.proc.params(node: Sig).void)
1056
+ block: T.nilable(T.proc.params(node: Sig).void),
1049
1057
  ).void
1050
1058
  end
1051
1059
  def initialize(
@@ -1080,6 +1088,7 @@ module RBI
1080
1088
  sig { params(other: Object).returns(T::Boolean) }
1081
1089
  def ==(other)
1082
1090
  return false unless other.is_a?(Sig)
1091
+
1083
1092
  params == other.params && return_type == other.return_type && is_abstract == other.is_abstract &&
1084
1093
  is_override == other.is_override && is_overridable == other.is_overridable && is_final == other.is_final &&
1085
1094
  type_params == other.type_params && checked == other.checked
@@ -1098,7 +1107,7 @@ module RBI
1098
1107
  type: String,
1099
1108
  loc: T.nilable(Loc),
1100
1109
  comments: T::Array[Comment],
1101
- block: T.nilable(T.proc.params(node: SigParam).void)
1110
+ block: T.nilable(T.proc.params(node: SigParam).void),
1102
1111
  ).void
1103
1112
  end
1104
1113
  def initialize(name, type, loc: nil, comments: [], &block)
@@ -1124,7 +1133,7 @@ module RBI
1124
1133
  name: String,
1125
1134
  loc: T.nilable(Loc),
1126
1135
  comments: T::Array[Comment],
1127
- block: T.nilable(T.proc.params(klass: TStruct).void)
1136
+ block: T.nilable(T.proc.params(klass: TStruct).void),
1128
1137
  ).void
1129
1138
  end
1130
1139
  def initialize(name, loc: nil, comments: [], &block)
@@ -1151,7 +1160,7 @@ module RBI
1151
1160
  type: String,
1152
1161
  default: T.nilable(String),
1153
1162
  loc: T.nilable(Loc),
1154
- comments: T::Array[Comment]
1163
+ comments: T::Array[Comment],
1155
1164
  ).void
1156
1165
  end
1157
1166
  def initialize(name, type, default: nil, loc: nil, comments: [])
@@ -1175,7 +1184,7 @@ module RBI
1175
1184
  default: T.nilable(String),
1176
1185
  loc: T.nilable(Loc),
1177
1186
  comments: T::Array[Comment],
1178
- block: T.nilable(T.proc.params(node: TStructConst).void)
1187
+ block: T.nilable(T.proc.params(node: TStructConst).void),
1179
1188
  ).void
1180
1189
  end
1181
1190
  def initialize(name, type, default: nil, loc: nil, comments: [], &block)
@@ -1205,7 +1214,7 @@ module RBI
1205
1214
  default: T.nilable(String),
1206
1215
  loc: T.nilable(Loc),
1207
1216
  comments: T::Array[Comment],
1208
- block: T.nilable(T.proc.params(node: TStructProp).void)
1217
+ block: T.nilable(T.proc.params(node: TStructProp).void),
1209
1218
  ).void
1210
1219
  end
1211
1220
  def initialize(name, type, default: nil, loc: nil, comments: [], &block)
@@ -1235,7 +1244,7 @@ module RBI
1235
1244
  name: String,
1236
1245
  loc: T.nilable(Loc),
1237
1246
  comments: T::Array[Comment],
1238
- block: T.nilable(T.proc.params(klass: TEnum).void)
1247
+ block: T.nilable(T.proc.params(klass: TEnum).void),
1239
1248
  ).void
1240
1249
  end
1241
1250
  def initialize(name, loc: nil, comments: [], &block)
@@ -1255,7 +1264,7 @@ module RBI
1255
1264
  names: T::Array[String],
1256
1265
  loc: T.nilable(Loc),
1257
1266
  comments: T::Array[Comment],
1258
- block: T.nilable(T.proc.params(node: TEnumBlock).void)
1267
+ block: T.nilable(T.proc.params(node: TEnumBlock).void),
1259
1268
  ).void
1260
1269
  end
1261
1270
  def initialize(names = [], loc: nil, comments: [], &block)
@@ -1293,7 +1302,7 @@ module RBI
1293
1302
  name: String,
1294
1303
  loc: T.nilable(Loc),
1295
1304
  comments: T::Array[Comment],
1296
- block: T.nilable(T.proc.params(node: Helper).void)
1305
+ block: T.nilable(T.proc.params(node: Helper).void),
1297
1306
  ).void
1298
1307
  end
1299
1308
  def initialize(name, loc: nil, comments: [], &block)
@@ -1320,7 +1329,7 @@ module RBI
1320
1329
  value: String,
1321
1330
  loc: T.nilable(Loc),
1322
1331
  comments: T::Array[Comment],
1323
- block: T.nilable(T.proc.params(node: TypeMember).void)
1332
+ block: T.nilable(T.proc.params(node: TypeMember).void),
1324
1333
  ).void
1325
1334
  end
1326
1335
  def initialize(name, value, loc: nil, comments: [], &block)
@@ -1333,6 +1342,7 @@ module RBI
1333
1342
  sig { returns(String) }
1334
1343
  def fully_qualified_name
1335
1344
  return name if name.start_with?("::")
1345
+
1336
1346
  "#{parent_scope&.fully_qualified_name}::#{name}"
1337
1347
  end
1338
1348
 
@@ -1351,7 +1361,7 @@ module RBI
1351
1361
  names: String,
1352
1362
  loc: T.nilable(Loc),
1353
1363
  comments: T::Array[Comment],
1354
- block: T.nilable(T.proc.params(node: MixesInClassMethods).void)
1364
+ block: T.nilable(T.proc.params(node: MixesInClassMethods).void),
1355
1365
  ).void
1356
1366
  end
1357
1367
  def initialize(name, *names, loc: nil, comments: [], &block)
@@ -1375,7 +1385,7 @@ module RBI
1375
1385
  params(
1376
1386
  name: String,
1377
1387
  loc: T.nilable(Loc),
1378
- comments: T::Array[Comment]
1388
+ comments: T::Array[Comment],
1379
1389
  ).void
1380
1390
  end
1381
1391
  def initialize(name, loc: nil, comments: [])
data/lib/rbi/parser.rb CHANGED
@@ -66,20 +66,30 @@ module RBI
66
66
  require "unparser" unless defined?(::Unparser)
67
67
  end
68
68
 
69
- sig { params(string: String).returns(Tree) }
70
- def self.parse_string(string)
71
- Parser.new.parse_string(string)
72
- end
69
+ class << self
70
+ extend T::Sig
73
71
 
74
- sig { params(path: String).returns(Tree) }
75
- def self.parse_file(path)
76
- Parser.new.parse_file(path)
77
- end
72
+ sig { params(string: String).returns(Tree) }
73
+ def parse_string(string)
74
+ Parser.new.parse_string(string)
75
+ end
76
+
77
+ sig { params(path: String).returns(Tree) }
78
+ def parse_file(path)
79
+ Parser.new.parse_file(path)
80
+ end
81
+
82
+ sig { params(paths: T::Array[String]).returns(T::Array[Tree]) }
83
+ def parse_files(paths)
84
+ parser = Parser.new
85
+ paths.map { |path| parser.parse_file(path) }
86
+ end
78
87
 
79
- sig { params(paths: T::Array[String]).returns(T::Array[Tree]) }
80
- def self.parse_files(paths)
81
- parser = Parser.new
82
- paths.map { |path| parser.parse_file(path) }
88
+ sig { params(strings: T::Array[String]).returns(T::Array[Tree]) }
89
+ def parse_strings(strings)
90
+ parser = Parser.new
91
+ strings.map { |string| parser.parse_string(string) }
92
+ end
83
93
  end
84
94
 
85
95
  sig { params(string: String).returns(Tree) }
@@ -87,12 +97,6 @@ module RBI
87
97
  parse(string, file: "-")
88
98
  end
89
99
 
90
- sig { params(strings: T::Array[String]).returns(T::Array[Tree]) }
91
- def self.parse_strings(strings)
92
- parser = Parser.new
93
- strings.map { |string| parser.parse_string(string) }
94
- end
95
-
96
100
  sig { params(path: String).returns(Tree) }
97
101
  def parse_file(path)
98
102
  parse(::File.read(path), file: path)
@@ -166,7 +170,7 @@ module RBI
166
170
  params(
167
171
  file: String,
168
172
  comments: T::Array[::Parser::Source::Comment],
169
- nodes_comments_assoc: T::Hash[::Parser::Source::Map, T::Array[::Parser::Source::Comment]]
173
+ nodes_comments_assoc: T::Hash[::Parser::Source::Map, T::Array[::Parser::Source::Comment]],
170
174
  ).void
171
175
  end
172
176
  def initialize(file:, comments: [], nodes_comments_assoc: {})
@@ -192,6 +196,7 @@ module RBI
192
196
  sig { override.params(node: T.nilable(Object)).void }
193
197
  def visit(node)
194
198
  return unless node.is_a?(AST::Node)
199
+
195
200
  @last_node = node
196
201
 
197
202
  case node.type
@@ -250,6 +255,8 @@ module RBI
250
255
  node_value = node.children[2]
251
256
  if struct_definition?(node_value)
252
257
  parse_struct(node)
258
+ elsif type_variable_definition?(node_value)
259
+ parse_type_variable(node)
253
260
  else
254
261
  name = parse_name(node)
255
262
  value = parse_expr(node_value)
@@ -270,7 +277,7 @@ module RBI
270
277
  params: node.children[1].children.map { |child| parse_param(child) },
271
278
  sigs: current_sigs,
272
279
  loc: loc,
273
- comments: current_sigs_comments + node_comments(node)
280
+ comments: current_sigs_comments + node_comments(node),
274
281
  )
275
282
  when :defs
276
283
  Method.new(
@@ -279,7 +286,7 @@ module RBI
279
286
  is_singleton: true,
280
287
  sigs: current_sigs,
281
288
  loc: loc,
282
- comments: current_sigs_comments + node_comments(node)
289
+ comments: current_sigs_comments + node_comments(node),
283
290
  )
284
291
  else
285
292
  raise ParseError.new("Unsupported def node type `#{node.type}`", loc)
@@ -317,7 +324,7 @@ module RBI
317
324
  sig { params(node: AST::Node).returns(T.nilable(RBI::Node)) }
318
325
  def parse_send(node)
319
326
  recv = node.children[0]
320
- return nil if recv && recv != :self
327
+ return if recv && recv != :self
321
328
 
322
329
  method_name = node.children[1]
323
330
  loc = node_loc(node)
@@ -362,6 +369,7 @@ module RBI
362
369
  when :send
363
370
  snode = parse_send(nested_node)
364
371
  raise ParseError.new("Unexpected token `private` before `#{nested_node.type}`", loc) unless snode.is_a?(Attr)
372
+
365
373
  snode.visibility = visibility
366
374
  snode
367
375
  when nil
@@ -459,6 +467,24 @@ module RBI
459
467
  struct
460
468
  end
461
469
 
470
+ sig { params(node: AST::Node).returns(T::Boolean) }
471
+ def type_variable_definition?(node)
472
+ (node.type == :send && node.children[0].nil? && (node.children[1] == :type_member ||
473
+ node.children[1] == :type_template)) ||
474
+ (node.type == :block && type_variable_definition?(node.children[0]))
475
+ end
476
+
477
+ sig { params(node: AST::Node).returns(RBI::TypeMember) }
478
+ def parse_type_variable(node)
479
+ name = parse_name(node)
480
+ loc = node_loc(node)
481
+ comments = node_comments(node)
482
+
483
+ send = node.children[2]
484
+
485
+ TypeMember.new(name, send.location.expression.source, loc: loc, comments: comments)
486
+ end
487
+
462
488
  sig { params(node: AST::Node).returns([String, String, T.nilable(String)]) }
463
489
  def parse_tstruct_prop(node)
464
490
  name = node.children[2].children[0].to_s
@@ -516,6 +542,7 @@ module RBI
516
542
  def node_comments(node)
517
543
  comments = @nodes_comments_assoc[node.location]
518
544
  return [] unless comments
545
+
519
546
  comments.map do |comment|
520
547
  text = comment.text[1..-1].strip
521
548
  loc = Loc.from_ast_loc(@file, comment.location)
@@ -592,7 +619,7 @@ module RBI
592
619
  begin_line: first_loc&.begin_line || 0,
593
620
  begin_column: first_loc&.begin_column || 0,
594
621
  end_line: last_loc&.end_line || 0,
595
- end_column: last_loc&.end_column || 0
622
+ end_column: last_loc&.end_column || 0,
596
623
  )
597
624
  end
598
625
  end
@@ -600,14 +627,6 @@ module RBI
600
627
  class ConstBuilder < ASTVisitor
601
628
  extend T::Sig
602
629
 
603
- sig { params(node: T.nilable(AST::Node)).returns(T.nilable(String)) }
604
- def self.visit(node)
605
- v = ConstBuilder.new
606
- v.visit(node)
607
- return nil if v.names.empty?
608
- v.names.join("::")
609
- end
610
-
611
630
  sig { returns(T::Array[String]) }
612
631
  attr_accessor :names
613
632
 
@@ -617,9 +636,23 @@ module RBI
617
636
  @names = T.let([], T::Array[String])
618
637
  end
619
638
 
639
+ class << self
640
+ extend T::Sig
641
+
642
+ sig { params(node: T.nilable(AST::Node)).returns(T.nilable(String)) }
643
+ def visit(node)
644
+ v = ConstBuilder.new
645
+ v.visit(node)
646
+ return if v.names.empty?
647
+
648
+ v.names.join("::")
649
+ end
650
+ end
651
+
620
652
  sig { override.params(node: T.nilable(AST::Node)).void }
621
653
  def visit(node)
622
654
  return unless node
655
+
623
656
  case node.type
624
657
  when :const, :casgn
625
658
  visit(node.children[0])
@@ -635,15 +668,8 @@ module RBI
635
668
  class SigBuilder < ASTVisitor
636
669
  extend T::Sig
637
670
 
638
- sig { params(node: AST::Node).returns(Sig) }
639
- def self.build(node)
640
- v = SigBuilder.new
641
- v.visit_all(node.children)
642
- v.current
643
- end
644
-
645
671
  sig { returns(Sig) }
646
- attr_accessor :current
672
+ attr_reader :current
647
673
 
648
674
  sig { void }
649
675
  def initialize
@@ -651,9 +677,21 @@ module RBI
651
677
  @current = T.let(Sig.new, Sig)
652
678
  end
653
679
 
680
+ class << self
681
+ extend T::Sig
682
+
683
+ sig { params(node: AST::Node).returns(Sig) }
684
+ def build(node)
685
+ v = SigBuilder.new
686
+ v.visit_all(node.children)
687
+ v.current
688
+ end
689
+ end
690
+
654
691
  sig { override.params(node: T.nilable(AST::Node)).void }
655
692
  def visit(node)
656
693
  return unless node
694
+
657
695
  case node.type
658
696
  when :send
659
697
  visit_send(node)
@@ -703,15 +741,19 @@ module RBI
703
741
  end
704
742
 
705
743
  class Loc
706
- sig { params(file: String, ast_loc: T.any(::Parser::Source::Map, ::Parser::Source::Range)).returns(Loc) }
707
- def self.from_ast_loc(file, ast_loc)
708
- Loc.new(
709
- file: file,
710
- begin_line: ast_loc.line,
711
- begin_column: ast_loc.column,
712
- end_line: ast_loc.last_line,
713
- end_column: ast_loc.last_column
714
- )
744
+ class << self
745
+ extend T::Sig
746
+
747
+ sig { params(file: String, ast_loc: T.any(::Parser::Source::Map, ::Parser::Source::Range)).returns(Loc) }
748
+ def from_ast_loc(file, ast_loc)
749
+ Loc.new(
750
+ file: file,
751
+ begin_line: ast_loc.line,
752
+ begin_column: ast_loc.column,
753
+ end_line: ast_loc.last_line,
754
+ end_column: ast_loc.last_column,
755
+ )
756
+ end
715
757
  end
716
758
  end
717
759
  end
data/lib/rbi/printer.rb CHANGED
@@ -22,7 +22,7 @@ module RBI
22
22
  out: T.any(IO, StringIO),
23
23
  indent: Integer,
24
24
  print_locs: T::Boolean,
25
- max_line_length: T.nilable(Integer)
25
+ max_line_length: T.nilable(Integer),
26
26
  ).void
27
27
  end
28
28
  def initialize(out: $stdout, indent: 0, print_locs: false, max_line_length: nil)
@@ -82,6 +82,7 @@ module RBI
82
82
  sig { override.params(node: T.nilable(Node)).void }
83
83
  def visit(node)
84
84
  return unless node
85
+
85
86
  node.accept_printer(self)
86
87
  end
87
88
 
@@ -122,7 +123,7 @@ module RBI
122
123
  out: T.any(IO, StringIO),
123
124
  indent: Integer,
124
125
  print_locs: T::Boolean,
125
- max_line_length: T.nilable(Integer)
126
+ max_line_length: T.nilable(Integer),
126
127
  ).void
127
128
  end
128
129
  def print(out: $stdout, indent: 0, print_locs: false, max_line_length: nil)
@@ -149,7 +150,7 @@ module RBI
149
150
  out: T.any(IO, StringIO),
150
151
  indent: Integer,
151
152
  print_locs: T::Boolean,
152
- max_line_length: T.nilable(Integer)
153
+ max_line_length: T.nilable(Integer),
153
154
  ).void
154
155
  end
155
156
  def print(out: $stdout, indent: 0, print_locs: false, max_line_length: nil)
@@ -170,6 +171,7 @@ module RBI
170
171
  return unless previous_node
171
172
  return if previous_node.is_a?(BlankLine)
172
173
  return if previous_node.oneline? && oneline?
174
+
173
175
  v.printn
174
176
  end
175
177
 
@@ -36,7 +36,7 @@ module RBI
36
36
 
37
37
  attr.sigs << Sig.new(
38
38
  params: params,
39
- return_type: "T.untyped"
39
+ return_type: "T.untyped",
40
40
  )
41
41
  add_todo_comment(attr)
42
42
  end
@@ -47,7 +47,7 @@ module RBI
47
47
 
48
48
  method.sigs << Sig.new(
49
49
  params: method.params.map { |param| SigParam.new(param.name, "T.untyped") },
50
- return_type: "T.untyped"
50
+ return_type: "T.untyped",
51
51
  )
52
52
  add_todo_comment(method)
53
53
  end
@@ -30,6 +30,7 @@ module RBI
30
30
  sig { params(node: NodeWithComments).void }
31
31
  def annotate_node(node)
32
32
  return if node.annotations.one?(@annotation)
33
+
33
34
  node.comments << Comment.new("@#{@annotation}")
34
35
  end
35
36
 
@@ -49,7 +50,7 @@ module RBI
49
50
  visitor = Rewriters::Annotate.new(
50
51
  annotation,
51
52
  annotate_scopes: annotate_scopes,
52
- annotate_properties: annotate_properties
53
+ annotate_properties: annotate_properties,
53
54
  )
54
55
  visitor.visit(self)
55
56
  end
@@ -26,6 +26,7 @@ module RBI
26
26
  sig { params(node: NodeWithComments).void }
27
27
  def deannotate_node(node)
28
28
  return unless node.annotations.one?(@annotation)
29
+
29
30
  node.comments.reject! do |comment|
30
31
  comment.text == "@#{@annotation}"
31
32
  end
@@ -47,16 +47,20 @@ module RBI
47
47
  end
48
48
  end
49
49
 
50
- sig { params(left: Tree, right: Tree, left_name: String, right_name: String, keep: Keep).returns(MergeTree) }
51
- def self.merge_trees(left, right, left_name: "left", right_name: "right", keep: Keep::NONE)
52
- left.nest_singleton_methods!
53
- right.nest_singleton_methods!
54
- rewriter = Rewriters::Merge.new(left_name: left_name, right_name: right_name, keep: keep)
55
- rewriter.merge(left)
56
- rewriter.merge(right)
57
- tree = rewriter.tree
58
- ConflictTreeMerger.new.visit(tree)
59
- tree
50
+ class << self
51
+ extend T::Sig
52
+
53
+ sig { params(left: Tree, right: Tree, left_name: String, right_name: String, keep: Keep).returns(MergeTree) }
54
+ def merge_trees(left, right, left_name: "left", right_name: "right", keep: Keep::NONE)
55
+ left.nest_singleton_methods!
56
+ right.nest_singleton_methods!
57
+ rewriter = Rewriters::Merge.new(left_name: left_name, right_name: right_name, keep: keep)
58
+ rewriter.merge(left)
59
+ rewriter.merge(right)
60
+ tree = rewriter.tree
61
+ ConflictTreeMerger.new.visit(tree)
62
+ tree
63
+ end
60
64
  end
61
65
 
62
66
  sig { returns(MergeTree) }
@@ -293,6 +297,7 @@ module RBI
293
297
  parent = T.let(parent_tree, T.nilable(Node))
294
298
  while parent
295
299
  return parent if parent.is_a?(ConflictTree)
300
+
296
301
  parent = parent.parent_tree
297
302
  end
298
303
  nil
@@ -305,6 +310,7 @@ module RBI
305
310
  sig { override.params(other: Node).void }
306
311
  def merge_with(other)
307
312
  return unless other.is_a?(NodeWithComments)
313
+
308
314
  other.comments.each do |comment|
309
315
  comments << comment unless comments.include?(comment)
310
316
  end
@@ -332,7 +338,7 @@ module RBI
332
338
  loc: T.nilable(Loc),
333
339
  comments: T::Array[Comment],
334
340
  conflicts: T::Array[Rewriters::Merge::Conflict],
335
- block: T.nilable(T.proc.params(node: Tree).void)
341
+ block: T.nilable(T.proc.params(node: Tree).void),
336
342
  ).void
337
343
  end
338
344
  def initialize(loc: nil, comments: [], conflicts: [], &block)
@@ -406,12 +412,14 @@ module RBI
406
412
  def compatible_with?(other)
407
413
  return false unless other.is_a?(Attr)
408
414
  return false unless names == other.names
415
+
409
416
  sigs.empty? || other.sigs.empty? || sigs == other.sigs
410
417
  end
411
418
 
412
419
  sig { override.params(other: Node).void }
413
420
  def merge_with(other)
414
421
  return unless other.is_a?(Attr)
422
+
415
423
  super
416
424
  other.sigs.each do |sig|
417
425
  sigs << sig unless sigs.include?(sig)
@@ -454,12 +462,14 @@ module RBI
454
462
  return false unless other.is_a?(Method)
455
463
  return false unless name == other.name
456
464
  return false unless params == other.params
465
+
457
466
  sigs.empty? || other.sigs.empty? || sigs == other.sigs
458
467
  end
459
468
 
460
469
  sig { override.params(other: Node).void }
461
470
  def merge_with(other)
462
471
  return unless other.is_a?(Method)
472
+
463
473
  super
464
474
  other.sigs.each do |sig|
465
475
  sigs << sig unless sigs.include?(sig)
@@ -545,6 +555,7 @@ module RBI
545
555
  sig { override.params(other: Node).void }
546
556
  def merge_with(other)
547
557
  return unless other.is_a?(TEnumBlock)
558
+
548
559
  super
549
560
  other.names.each do |name|
550
561
  names << name unless names.include?(name)
@@ -625,7 +636,7 @@ module RBI
625
636
  left: Scope,
626
637
  right: Scope,
627
638
  left_name: String,
628
- right_name: String
639
+ right_name: String,
629
640
  ).void
630
641
  end
631
642
  def initialize(left:, right:, left_name: "left", right_name: "right")
@@ -19,6 +19,7 @@ module RBI
19
19
  node.nodes.dup.each do |child|
20
20
  visit(child)
21
21
  next unless child.is_a?(Method)
22
+
22
23
  child.detach
23
24
  case child.visibility
24
25
  when Protected
@@ -17,6 +17,7 @@ module RBI
17
17
  node.nodes.dup.each do |child|
18
18
  visit(child)
19
19
  next unless child.is_a?(Method) && child.is_singleton
20
+
20
21
  child.detach
21
22
  child.is_singleton = false
22
23
  singleton_class << child
@@ -48,18 +48,6 @@ module RBI
48
48
  class RemoveKnownDefinitions < Visitor
49
49
  extend T::Sig
50
50
 
51
- sig do
52
- params(
53
- tree: Tree,
54
- index: Index
55
- ).returns([Tree, T::Array[Operation]])
56
- end
57
- def self.remove(tree, index)
58
- v = RemoveKnownDefinitions.new(index)
59
- v.visit(tree)
60
- [tree, v.operations]
61
- end
62
-
63
51
  sig { returns(T::Array[Operation]) }
64
52
  attr_reader :operations
65
53
 
@@ -70,6 +58,22 @@ module RBI
70
58
  @operations = T.let([], T::Array[Operation])
71
59
  end
72
60
 
61
+ class << self
62
+ extend T::Sig
63
+
64
+ sig do
65
+ params(
66
+ tree: Tree,
67
+ index: Index,
68
+ ).returns([Tree, T::Array[Operation]])
69
+ end
70
+ def remove(tree, index)
71
+ v = RemoveKnownDefinitions.new(index)
72
+ v.visit(tree)
73
+ [tree, v.operations]
74
+ end
75
+ end
76
+
73
77
  sig { params(nodes: T::Array[Node]).void }
74
78
  def visit_all(nodes)
75
79
  nodes.dup.each { |node| visit(node) }
@@ -11,20 +11,32 @@ module RBI
11
11
  sort_node_names!(node) if node
12
12
 
13
13
  return unless node.is_a?(Tree)
14
+
14
15
  visit_all(node.nodes)
15
16
  original_order = node.nodes.map.with_index.to_h
16
- node.nodes.sort! do |a, b|
17
- # First we try to compare the nodes by their node rank (based on the node type)
18
- res = node_rank(a) <=> node_rank(b)
19
- next res if res != 0 # we can sort the nodes by their rank, let's stop here
20
17
 
21
- # Then, if the nodes ranks are the same (res == 0), we try to compare the nodes by their name
22
- res = node_name(a) <=> node_name(b)
23
- next res if res && res != 0 # we can sort the nodes by their name, let's stop here
18
+ # The child nodes could contain private/protected markers. If so, they should not be moved in the file.
19
+ # Otherwise, some methods could see their privacy change. To avoid that problem, divide the array of child
20
+ # nodes into chunks based on whether any Visibility nodes appear, and sort the chunks independently. This
21
+ # applies the ordering rules from the node_rank method as much as possible, while preserving visibility.
22
+ sorted_nodes = node.nodes.chunk do |n|
23
+ n.is_a?(Visibility)
24
+ end.flat_map do |_, nodes|
25
+ nodes.sort! do |a, b|
26
+ # First we try to compare the nodes by their node rank (based on the node type)
27
+ res = node_rank(a) <=> node_rank(b)
28
+ next res if res != 0 # we can sort the nodes by their rank, let's stop here
29
+
30
+ # Then, if the nodes ranks are the same (res == 0), we try to compare the nodes by their name
31
+ res = node_name(a) <=> node_name(b)
32
+ next res if res && res != 0 # we can sort the nodes by their name, let's stop here
24
33
 
25
- # Finally, if the two nodes have the same rank and the same name or at least one node is anonymous then,
26
- T.must(original_order[a]) <=> T.must(original_order[b]) # we keep the original order
34
+ # Finally, if the two nodes have the same rank and the same name or at least one node is anonymous then,
35
+ T.must(original_order[a]) <=> T.must(original_order[b]) # we keep the original order
36
+ end
27
37
  end
38
+
39
+ node.nodes.replace(sorted_nodes)
28
40
  end
29
41
 
30
42
  private
data/lib/rbi/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module RBI
5
- VERSION = "0.0.16"
5
+ VERSION = "0.0.17"
6
6
  end
data/lib/rbi.rb CHANGED
@@ -3,11 +3,6 @@
3
3
 
4
4
  require "sorbet-runtime"
5
5
  require "stringio"
6
-
7
- module RBI
8
- class Error < StandardError; end
9
- end
10
-
11
6
  require "rbi/loc"
12
7
  require "rbi/model"
13
8
  require "rbi/visitor"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Terrasa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-04 00:00:00.000000000 Z
11
+ date: 2023-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ast
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.6.4.0
33
+ version: 3.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.6.4.0
40
+ version: 3.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: sorbet-runtime
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 0.5.6
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 0.5.6
69
69
  description:
70
70
  email:
71
71
  - ruby@shopify.com
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  - !ruby/object:Gem::Version
115
115
  version: '0'
116
116
  requirements: []
117
- rubygems_version: 3.3.3
117
+ rubygems_version: 3.4.14
118
118
  signing_key:
119
119
  specification_version: 4
120
120
  summary: RBI generation framework