rbs_protobuf 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +9 -7
- data/.gitmodules +0 -3
- data/CHANGELOG.md +12 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +31 -18
- data/README.md +36 -16
- data/Rakefile +4 -2
- data/Steepfile +0 -1
- data/bin/protoc-gen-dumper +3 -1
- data/bin/setup +0 -9
- data/example/d.proto +6 -0
- data/exe/protoc-gen-rbs +18 -0
- data/lib/rbs_protobuf/rbs_factory.rb +1 -0
- data/lib/rbs_protobuf/translator/base.rb +72 -7
- data/lib/rbs_protobuf/translator/protobuf_gem.rb +268 -127
- data/lib/rbs_protobuf/version.rb +1 -1
- data/rbs_collection.lock.yaml +39 -45
- data/rbs_collection.yaml +1 -9
- data/sig/rbs_protobuf/rbs_factory.rbs +1 -1
- data/sig/rbs_protobuf/translator/base.rbs +14 -2
- data/sig/rbs_protobuf/translator/protobuf_gem.rbs +2 -1
- metadata +4 -4
- data/.protoc-version +0 -1
@@ -19,8 +19,8 @@ module RBSProtobuf
|
|
19
19
|
|
20
20
|
attr_reader :accept_nil_writer
|
21
21
|
|
22
|
-
def initialize(input, upcase_enum:, nested_namespace:, extension:, accept_nil_writer:, stderr: STDERR)
|
23
|
-
super(input)
|
22
|
+
def initialize(input, filters=[], upcase_enum:, nested_namespace:, extension:, accept_nil_writer:, stderr: STDERR)
|
23
|
+
super(input, filters)
|
24
24
|
@upcase_enum = upcase_enum
|
25
25
|
@nested_namespace = nested_namespace
|
26
26
|
@extension = extension
|
@@ -49,7 +49,7 @@ module RBSProtobuf
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def rbs_content(file)
|
52
|
-
decls = []
|
52
|
+
decls = [] #: Array[RBS::AST::Declarations::t]
|
53
53
|
|
54
54
|
source_code_info = file.source_code_info
|
55
55
|
|
@@ -127,9 +127,7 @@ module RBSProtobuf
|
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
130
|
-
|
131
|
-
RBS::Writer.new(out: io).write(decls)
|
132
|
-
end.string
|
130
|
+
decls
|
133
131
|
end
|
134
132
|
|
135
133
|
def message_to_decl(message, prefix:, message_path:, source_code_info:, path:)
|
@@ -188,96 +186,124 @@ module RBSProtobuf
|
|
188
186
|
|
189
187
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
190
188
|
name: :initialize,
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
189
|
+
overloads: [
|
190
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
191
|
+
method_type: factory.method_type(
|
192
|
+
type: factory.function().update(
|
193
|
+
optional_keywords: field_types.transform_values {|pair|
|
194
|
+
_, _, init_type = pair
|
195
|
+
factory.param(init_type)
|
196
|
+
}
|
197
|
+
)
|
198
|
+
),
|
199
|
+
annotations: []
|
200
|
+
),
|
201
|
+
unless field_types.empty?
|
202
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
203
|
+
method_type: factory.method_type(
|
204
|
+
type: factory.function().update(
|
205
|
+
required_positionals: [factory.param(factory.alias_type("record"))]
|
206
|
+
)
|
207
|
+
),
|
208
|
+
annotations: []
|
198
209
|
)
|
199
|
-
|
200
|
-
],
|
210
|
+
end,
|
211
|
+
].compact,
|
201
212
|
annotations: [],
|
202
213
|
comment: nil,
|
203
214
|
location: nil,
|
204
|
-
|
215
|
+
overloading: false,
|
216
|
+
visibility: nil,
|
205
217
|
kind: :instance
|
206
218
|
)
|
207
219
|
|
208
220
|
unless field_types.empty?
|
209
221
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
210
222
|
name: :[],
|
211
|
-
|
223
|
+
overloads:
|
212
224
|
field_types.map do |field_name, pair|
|
213
225
|
read_type, _ = pair
|
214
226
|
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
factory.param(factory.literal_type(field_name))
|
219
|
-
]
|
220
|
-
)
|
221
|
-
)
|
222
|
-
end +
|
223
|
-
[
|
224
|
-
factory.method_type(
|
225
|
-
type: factory.function(factory.untyped).update(
|
227
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
228
|
+
method_type: factory.method_type(
|
229
|
+
type: factory.function(read_type).update(
|
226
230
|
required_positionals: [
|
227
|
-
factory.param(
|
231
|
+
factory.param(factory.literal_type(field_name))
|
228
232
|
]
|
229
233
|
)
|
234
|
+
),
|
235
|
+
annotations: []
|
236
|
+
)
|
237
|
+
end +
|
238
|
+
[
|
239
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
240
|
+
method_type: factory.method_type(
|
241
|
+
type: factory.function(factory.untyped).update(
|
242
|
+
required_positionals: [
|
243
|
+
factory.param(RBS::BuiltinNames::Symbol.instance_type)
|
244
|
+
]
|
245
|
+
)
|
246
|
+
),
|
247
|
+
annotations: []
|
230
248
|
)
|
231
249
|
],
|
232
250
|
annotations: [],
|
233
251
|
comment: nil,
|
234
252
|
location: nil,
|
235
|
-
|
253
|
+
overloading: false,
|
254
|
+
visibility: nil,
|
236
255
|
kind: :instance
|
237
256
|
)
|
238
257
|
|
239
258
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
240
259
|
name: :[]=,
|
241
|
-
|
260
|
+
overloads:
|
242
261
|
field_types.flat_map do |field_name, pair|
|
243
262
|
read_type, write_types = pair
|
244
263
|
|
245
264
|
[read_type, *write_types].map do |type|
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
265
|
+
method_type =
|
266
|
+
if (type_param, type_var = interface_type?(type))
|
267
|
+
factory.method_type(
|
268
|
+
type: factory.function(type_var).update(
|
269
|
+
required_positionals: [
|
270
|
+
factory.literal_type(field_name),
|
271
|
+
type_var
|
272
|
+
].map {|t| factory.param(t) }
|
273
|
+
)
|
274
|
+
).update(type_params: [type_param])
|
275
|
+
else
|
276
|
+
factory.method_type(
|
277
|
+
type: factory.function(type).update(
|
278
|
+
required_positionals: [
|
279
|
+
factory.literal_type(field_name),
|
280
|
+
type
|
281
|
+
].map {|t| factory.param(t) }
|
282
|
+
)
|
262
283
|
)
|
263
|
-
|
264
|
-
|
284
|
+
end
|
285
|
+
|
286
|
+
RBS::AST::Members::MethodDefinition::Overload.new(method_type: method_type, annotations: [])
|
265
287
|
end
|
266
288
|
end +
|
267
289
|
[
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
290
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
291
|
+
method_type: factory.method_type(
|
292
|
+
type: factory.function(factory.untyped).update(
|
293
|
+
required_positionals: [
|
294
|
+
RBS::BuiltinNames::Symbol.instance_type,
|
295
|
+
factory.untyped
|
296
|
+
].map {|t| factory.param(t) }
|
297
|
+
)
|
298
|
+
),
|
299
|
+
annotations: []
|
275
300
|
)
|
276
301
|
],
|
277
302
|
annotations: [],
|
278
303
|
comment: nil,
|
279
304
|
location: nil,
|
280
|
-
|
305
|
+
overloading: false,
|
306
|
+
visibility: nil,
|
281
307
|
kind: :instance
|
282
308
|
)
|
283
309
|
end
|
@@ -286,15 +312,19 @@ module RBSProtobuf
|
|
286
312
|
if field.type == FieldDescriptorProto::Type::TYPE_BOOL
|
287
313
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
288
314
|
name: :"#{field.name}?",
|
289
|
-
|
290
|
-
|
291
|
-
|
315
|
+
overloads: [
|
316
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
317
|
+
method_type: factory.method_type(
|
318
|
+
type: factory.function(factory.bool_type)
|
319
|
+
),
|
320
|
+
annotations: []
|
292
321
|
)
|
293
322
|
],
|
294
323
|
annotations: [],
|
295
324
|
comment: nil,
|
296
325
|
location: nil,
|
297
|
-
|
326
|
+
overloading: false,
|
327
|
+
visibility: nil,
|
298
328
|
kind: :instance
|
299
329
|
)
|
300
330
|
end
|
@@ -310,29 +340,37 @@ module RBSProtobuf
|
|
310
340
|
).tap do |interface_decl|
|
311
341
|
interface_decl.members << RBS::AST::Members::MethodDefinition.new(
|
312
342
|
name: :to_proto,
|
313
|
-
|
314
|
-
|
315
|
-
|
343
|
+
overloads: [
|
344
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
345
|
+
method_type: factory.method_type(
|
346
|
+
type: factory.function(class_instance_type)
|
347
|
+
),
|
348
|
+
annotations: []
|
316
349
|
)
|
317
350
|
],
|
318
351
|
annotations: [],
|
319
352
|
comment: nil,
|
320
353
|
location: nil,
|
321
|
-
|
354
|
+
overloading: false,
|
355
|
+
visibility: nil,
|
322
356
|
kind: :instance
|
323
357
|
)
|
324
358
|
end
|
325
359
|
|
326
|
-
class_decl.members << RBS::AST::Declarations::
|
360
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
327
361
|
name: TypeName("init"),
|
328
362
|
type_params: [],
|
329
|
-
type: factory.union_type(
|
363
|
+
type: factory.union_type(
|
364
|
+
class_instance_type,
|
365
|
+
TO_PROTO[],
|
366
|
+
field_types.empty? ? nil : factory.alias_type("record")
|
367
|
+
),
|
330
368
|
annotations: [],
|
331
369
|
comment: RBS::AST::Comment.new(string: "The type of `#initialize` parameter.", location: nil),
|
332
370
|
location: nil
|
333
371
|
)
|
334
372
|
|
335
|
-
class_decl.members << RBS::AST::Declarations::
|
373
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
336
374
|
name: TypeName("field_array"),
|
337
375
|
type_params: [],
|
338
376
|
type: FIELD_ARRAY[
|
@@ -344,7 +382,7 @@ module RBSProtobuf
|
|
344
382
|
location: nil
|
345
383
|
)
|
346
384
|
|
347
|
-
class_decl.members << RBS::AST::Declarations::
|
385
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
348
386
|
name: TypeName("field_hash"),
|
349
387
|
type_params: [RBS::AST::TypeParam.new(name: :KEY, variance: :invariant, upper_bound: nil, location: nil)],
|
350
388
|
type: FIELD_HASH[
|
@@ -357,7 +395,7 @@ module RBSProtobuf
|
|
357
395
|
location: nil
|
358
396
|
)
|
359
397
|
|
360
|
-
class_decl.members << RBS::AST::Declarations::
|
398
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
361
399
|
name: TypeName("array"),
|
362
400
|
type_params: [],
|
363
401
|
type: RBS::BuiltinNames::Array.instance_type(factory.union_type(class_instance_type, TO_PROTO[])),
|
@@ -366,7 +404,7 @@ module RBSProtobuf
|
|
366
404
|
location: nil
|
367
405
|
)
|
368
406
|
|
369
|
-
class_decl.members << RBS::AST::Declarations::
|
407
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
370
408
|
name: TypeName("hash"),
|
371
409
|
type_params: [RBS::AST::TypeParam.new(name: :KEY, variance: :invariant, upper_bound: nil, location: nil)],
|
372
410
|
type: RBS::BuiltinNames::Hash.instance_type(
|
@@ -377,6 +415,18 @@ module RBSProtobuf
|
|
377
415
|
comment: nil,
|
378
416
|
location: nil
|
379
417
|
)
|
418
|
+
|
419
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
420
|
+
name: TypeName("record"),
|
421
|
+
type_params: [],
|
422
|
+
type: RBS::Types::Record.new(
|
423
|
+
fields: field_types.transform_values {|_, _, type| optional_type(type) },
|
424
|
+
location: nil
|
425
|
+
),
|
426
|
+
annotations: [],
|
427
|
+
location: nil,
|
428
|
+
comment: nil
|
429
|
+
)
|
380
430
|
end
|
381
431
|
end
|
382
432
|
|
@@ -567,41 +617,52 @@ module RBSProtobuf
|
|
567
617
|
unless write_types.empty?
|
568
618
|
members << RBS::AST::Members::MethodDefinition.new(
|
569
619
|
name: :"#{name}=",
|
570
|
-
|
620
|
+
overloads:
|
571
621
|
write_types.map do |write_type|
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
622
|
+
method_type =
|
623
|
+
if (type_param, type = interface_type?(write_type))
|
624
|
+
factory.method_type(
|
625
|
+
type: factory.function(type).update(
|
626
|
+
required_positionals:[factory.param(type)]
|
627
|
+
)
|
628
|
+
).update(type_params: [type_param])
|
629
|
+
else
|
630
|
+
factory.method_type(
|
631
|
+
type: factory.function(write_type).update(
|
632
|
+
required_positionals:[factory.param(write_type)]
|
633
|
+
)
|
582
634
|
)
|
583
|
-
|
584
|
-
|
635
|
+
end
|
636
|
+
|
637
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
638
|
+
method_type: method_type,
|
639
|
+
annotations: []
|
640
|
+
)
|
585
641
|
end,
|
586
642
|
annotations: [],
|
587
643
|
comment: comment,
|
588
644
|
location: nil,
|
589
|
-
|
645
|
+
overloading: true,
|
646
|
+
visibility: nil,
|
590
647
|
kind: :instance
|
591
648
|
)
|
592
649
|
end
|
593
650
|
|
594
651
|
members << RBS::AST::Members::MethodDefinition.new(
|
595
652
|
name: :"#{name}!",
|
596
|
-
|
597
|
-
|
598
|
-
|
653
|
+
overloads: [
|
654
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
655
|
+
method_type: factory.method_type(
|
656
|
+
type: factory.function(factory.optional_type(read_type))
|
657
|
+
),
|
658
|
+
annotations: []
|
599
659
|
)
|
600
660
|
],
|
601
661
|
annotations: [],
|
602
662
|
comment: nil,
|
603
663
|
location: nil,
|
604
|
-
|
664
|
+
overloading: false,
|
665
|
+
visibility: nil,
|
605
666
|
kind: :instance
|
606
667
|
)
|
607
668
|
end
|
@@ -638,7 +699,7 @@ module RBSProtobuf
|
|
638
699
|
factory.literal_type(v.number)
|
639
700
|
end.uniq
|
640
701
|
|
641
|
-
enum_decl.members << RBS::AST::Declarations::
|
702
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
642
703
|
name: factory.type_name("names"),
|
643
704
|
type_params: [],
|
644
705
|
type: factory.union_type(*names),
|
@@ -647,7 +708,7 @@ module RBSProtobuf
|
|
647
708
|
annotations: []
|
648
709
|
)
|
649
710
|
|
650
|
-
enum_decl.members << RBS::AST::Declarations::
|
711
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
651
712
|
name: factory.type_name("strings"),
|
652
713
|
type_params: [],
|
653
714
|
type: factory.union_type(*strings),
|
@@ -656,7 +717,7 @@ module RBSProtobuf
|
|
656
717
|
annotations: []
|
657
718
|
)
|
658
719
|
|
659
|
-
enum_decl.members << RBS::AST::Declarations::
|
720
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
660
721
|
name: factory.type_name("tags"),
|
661
722
|
type_params: [],
|
662
723
|
type: factory.union_type(*tags),
|
@@ -665,7 +726,7 @@ module RBSProtobuf
|
|
665
726
|
annotations: []
|
666
727
|
)
|
667
728
|
|
668
|
-
enum_decl.members << RBS::AST::Declarations::
|
729
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
669
730
|
name: factory.type_name("values"),
|
670
731
|
type_params: [],
|
671
732
|
type: factory.union_type(
|
@@ -712,7 +773,7 @@ module RBSProtobuf
|
|
712
773
|
enum_instance_type = factory.instance_type(RBS::TypeName.new(name: enum_name.to_sym, namespace: RBS::Namespace.empty))
|
713
774
|
values_type = factory.alias_type(RBS::TypeName.new(name: :values, namespace: RBS::Namespace.empty))
|
714
775
|
|
715
|
-
enum_decl.members << RBS::AST::Declarations::
|
776
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
716
777
|
name: TypeName("init"),
|
717
778
|
type_params: [],
|
718
779
|
type: factory.union_type(enum_instance_type, values_type),
|
@@ -721,7 +782,7 @@ module RBSProtobuf
|
|
721
782
|
location: nil
|
722
783
|
)
|
723
784
|
|
724
|
-
enum_decl.members << RBS::AST::Declarations::
|
785
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
725
786
|
name: TypeName("field_array"),
|
726
787
|
type_params: [],
|
727
788
|
type: FIELD_ARRAY[
|
@@ -733,7 +794,7 @@ module RBSProtobuf
|
|
733
794
|
location: nil
|
734
795
|
)
|
735
796
|
|
736
|
-
enum_decl.members << RBS::AST::Declarations::
|
797
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
737
798
|
name: TypeName("field_hash"),
|
738
799
|
type_params: [RBS::AST::TypeParam.new(name: :KEY, variance: :invariant, upper_bound: nil, location: nil)],
|
739
800
|
type: FIELD_HASH[
|
@@ -746,7 +807,7 @@ module RBSProtobuf
|
|
746
807
|
location: nil
|
747
808
|
)
|
748
809
|
|
749
|
-
enum_decl.members << RBS::AST::Declarations::
|
810
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
750
811
|
name: TypeName("array"),
|
751
812
|
type_params: [],
|
752
813
|
type: RBS::BuiltinNames::Array.instance_type(factory.union_type(enum_instance_type, values_type)),
|
@@ -755,7 +816,7 @@ module RBSProtobuf
|
|
755
816
|
location: nil
|
756
817
|
)
|
757
818
|
|
758
|
-
enum_decl.members << RBS::AST::Declarations::
|
819
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
759
820
|
name: TypeName("hash"),
|
760
821
|
type_params: [RBS::AST::TypeParam.new(name: :KEY, variance: :invariant, upper_bound: nil, location: nil)],
|
761
822
|
type: RBS::BuiltinNames::Hash.instance_type(
|
@@ -790,49 +851,59 @@ module RBSProtobuf
|
|
790
851
|
|
791
852
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
792
853
|
name: :[],
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
854
|
+
overloads: [
|
855
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
856
|
+
method_type: factory.method_type(
|
857
|
+
type: factory.function(read_type).update(
|
858
|
+
required_positionals: [
|
859
|
+
factory.param(factory.literal_type(field_name))
|
860
|
+
]
|
861
|
+
)
|
862
|
+
),
|
863
|
+
annotations: []
|
800
864
|
)
|
801
865
|
],
|
802
866
|
annotations: [],
|
803
867
|
comment: nil,
|
804
868
|
location: nil,
|
805
|
-
|
869
|
+
overloading: true,
|
870
|
+
visibility: nil,
|
806
871
|
kind: :instance
|
807
872
|
)
|
808
873
|
|
809
874
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
810
875
|
name: :[]=,
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
876
|
+
overloads: [read_type, *write_types].map do |write_type|
|
877
|
+
method_type =
|
878
|
+
if (type_param, type_var = interface_type?(write_type))
|
879
|
+
factory.method_type(
|
880
|
+
type: factory.function(type_var).update(
|
881
|
+
required_positionals: [
|
882
|
+
factory.param(factory.literal_type(field_name)),
|
883
|
+
factory.param(type_var)
|
884
|
+
]
|
885
|
+
)
|
886
|
+
).update(type_params: [type_param])
|
887
|
+
else
|
888
|
+
factory.method_type(
|
889
|
+
type: factory.function(write_type).update(
|
890
|
+
required_positionals: [
|
891
|
+
factory.param(factory.literal_type(field_name)),
|
892
|
+
factory.param(write_type)
|
893
|
+
]
|
894
|
+
)
|
828
895
|
)
|
829
|
-
|
830
|
-
|
896
|
+
end
|
897
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
898
|
+
method_type: method_type,
|
899
|
+
annotations: []
|
900
|
+
)
|
831
901
|
end,
|
832
902
|
annotations: [],
|
833
903
|
comment: nil,
|
834
904
|
location: nil,
|
835
|
-
|
905
|
+
overloading: true,
|
906
|
+
visibility: nil,
|
836
907
|
kind: :instance
|
837
908
|
)
|
838
909
|
end
|
@@ -849,11 +920,81 @@ module RBSProtobuf
|
|
849
920
|
def service_to_decl(service, prefix:, source_code_info:, path:)
|
850
921
|
service_name = ActiveSupport::Inflector.camelize(service.name)
|
851
922
|
|
923
|
+
members = [] #: Array[RBS::AST::Declarations::Class::member]
|
924
|
+
|
925
|
+
service.method.each do |method|
|
926
|
+
method_name = ActiveSupport::Inflector.underscore(method.name).to_sym #: Symbol
|
927
|
+
|
928
|
+
interface_name = "_#{ActiveSupport::Inflector.camelize(method.name)}Method"
|
929
|
+
|
930
|
+
members << RBS::AST::Declarations::Interface.new(
|
931
|
+
name: factory.type_name(interface_name),
|
932
|
+
type_params: [],
|
933
|
+
members: [
|
934
|
+
RBS::AST::Members::MethodDefinition.new(
|
935
|
+
name: :request,
|
936
|
+
kind: :instance,
|
937
|
+
overloads: [
|
938
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
939
|
+
method_type: factory.method_type(type: factory.function(message_type(method.input_type))),
|
940
|
+
annotations: []
|
941
|
+
)
|
942
|
+
],
|
943
|
+
annotations: [],
|
944
|
+
location: nil,
|
945
|
+
comment: nil,
|
946
|
+
overloading: false,
|
947
|
+
visibility: nil
|
948
|
+
),
|
949
|
+
RBS::AST::Members::MethodDefinition.new(
|
950
|
+
name: :respond_with,
|
951
|
+
kind: :instance,
|
952
|
+
overloads: [
|
953
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
954
|
+
method_type: factory.method_type(
|
955
|
+
type: factory.function().update(
|
956
|
+
required_positionals: [
|
957
|
+
factory.param(message_init_type(message_type(method.output_type)))
|
958
|
+
]
|
959
|
+
)
|
960
|
+
),
|
961
|
+
annotations: []
|
962
|
+
)
|
963
|
+
],
|
964
|
+
annotations: [],
|
965
|
+
location: nil,
|
966
|
+
comment: nil,
|
967
|
+
overloading: false,
|
968
|
+
visibility: nil
|
969
|
+
)
|
970
|
+
],
|
971
|
+
annotations: [],
|
972
|
+
location: nil,
|
973
|
+
comment: nil
|
974
|
+
)
|
975
|
+
|
976
|
+
members << RBS::AST::Members::MethodDefinition.new(
|
977
|
+
name: method_name,
|
978
|
+
kind: :instance,
|
979
|
+
overloads: [
|
980
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
981
|
+
method_type: factory.method_type(type: factory.function()),
|
982
|
+
annotations: []
|
983
|
+
)
|
984
|
+
],
|
985
|
+
annotations: [],
|
986
|
+
location: nil,
|
987
|
+
comment: nil,
|
988
|
+
overloading: false,
|
989
|
+
visibility: nil
|
990
|
+
)
|
991
|
+
end
|
992
|
+
|
852
993
|
RBS::AST::Declarations::Class.new(
|
853
994
|
name: RBS::TypeName.new(name: service_name.to_sym, namespace: prefix),
|
854
995
|
super_class: service_base_class,
|
855
996
|
type_params: factory.module_type_params(),
|
856
|
-
members:
|
997
|
+
members: members,
|
857
998
|
comment: comment_for_path(source_code_info, path, options: nil),
|
858
999
|
location: nil,
|
859
1000
|
annotations: []
|
data/lib/rbs_protobuf/version.rb
CHANGED