rbs_protobuf 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +9 -7
- data/.gitmodules +0 -3
- data/CHANGELOG.md +5 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +31 -18
- data/Rakefile +4 -2
- data/Steepfile +0 -1
- data/bin/protoc-gen-dumper +3 -1
- data/example/d.proto +6 -0
- data/lib/rbs_protobuf/translator/base.rb +1 -1
- data/lib/rbs_protobuf/translator/protobuf_gem.rb +166 -119
- data/lib/rbs_protobuf/version.rb +1 -1
- data/rbs_collection.lock.yaml +39 -45
- data/rbs_collection.yaml +1 -9
- metadata +4 -4
- data/.protoc-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36689cc81f238ec33c07f1485ab4ff50f73fe365c1e84fcb925d34b0159859d3
|
4
|
+
data.tar.gz: a149120654ab2387721383d723bf3c54923385a66feff3a755ebce1056bf014c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2bc3a51198e70d9617edf6df9c40e9fbfbac8061d3b849d6cf2ec21b839bd379bea6bf94d5a63dc134af173c773338f7b937b53597906e1bb3e85dd6c965c3c
|
7
|
+
data.tar.gz: 349c294046f6c7665dad74a0461311bf4c7edb58d9c8f804bd70b6c6ed11442d295086a59b9990465d478195c87c96e54180237e8fdd1a73c202e48ffde73b60
|
data/.github/workflows/test.yml
CHANGED
@@ -12,12 +12,13 @@ jobs:
|
|
12
12
|
strategy:
|
13
13
|
matrix:
|
14
14
|
container_tag:
|
15
|
-
-
|
16
|
-
- 3.
|
17
|
-
- 3.
|
15
|
+
- 3.0-dev-focal
|
16
|
+
- 3.1-dev-jammy
|
17
|
+
- 3.2-dev-jammy
|
18
18
|
protoc_version:
|
19
|
-
- 3.18.2
|
20
|
-
- 3.19.4
|
19
|
+
- "3.18.2"
|
20
|
+
- "3.19.4"
|
21
|
+
- "24.0"
|
21
22
|
container:
|
22
23
|
image: rubylang/ruby:${{ matrix.container_tag }}
|
23
24
|
steps:
|
@@ -31,8 +32,9 @@ jobs:
|
|
31
32
|
mv bin/protoc /usr/local/bin/protoc
|
32
33
|
protoc --version
|
33
34
|
- uses: actions/checkout@v3
|
34
|
-
|
35
|
-
|
35
|
+
- name: Set up git safe.directory
|
36
|
+
run: |
|
37
|
+
git config --global --add safe.directory /__w/rbs_protobuf/rbs_protobuf
|
36
38
|
- name: Run test
|
37
39
|
run: |
|
38
40
|
ruby -v
|
data/.gitmodules
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 1.1.0 (2023-08-16)
|
4
|
+
|
5
|
+
* Support optional fields in proto3 ([\#32](https://github.com/square/rbs_protobuf/pull/32))
|
6
|
+
* Update Steep to 1.5 and RBS to 3.1 ([\#30](https://github.com/square/rbs_protobuf/pull/30))
|
7
|
+
|
3
8
|
## 1.0.0 (2022-04-25)
|
4
9
|
|
5
10
|
This is version 1.0.0. 🎉
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,59 +1,72 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rbs_protobuf (1.
|
4
|
+
rbs_protobuf (1.1.0)
|
5
5
|
activesupport (>= 4.0)
|
6
6
|
rbs (>= 2.2.0)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
activesupport (7.0.
|
11
|
+
activesupport (7.0.7)
|
12
12
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
13
13
|
i18n (>= 1.6, < 2)
|
14
14
|
minitest (>= 5.1)
|
15
15
|
tzinfo (~> 2.0)
|
16
16
|
ast (2.4.2)
|
17
|
-
concurrent-ruby (1.
|
17
|
+
concurrent-ruby (1.2.2)
|
18
|
+
csv (3.2.7)
|
18
19
|
ffi (1.15.5)
|
19
|
-
|
20
|
+
fileutils (1.7.1)
|
21
|
+
i18n (1.14.1)
|
20
22
|
concurrent-ruby (~> 1.0)
|
21
|
-
|
22
|
-
|
23
|
+
json (2.6.3)
|
24
|
+
language_server-protocol (3.17.0.3)
|
25
|
+
listen (3.8.0)
|
23
26
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
24
27
|
rb-inotify (~> 0.9, >= 0.9.10)
|
28
|
+
logger (1.5.3)
|
25
29
|
middleware (0.1.0)
|
26
|
-
minitest (5.
|
27
|
-
|
28
|
-
parser (3.1.2.0)
|
30
|
+
minitest (5.19.0)
|
31
|
+
parser (3.2.2.3)
|
29
32
|
ast (~> 2.4.1)
|
33
|
+
racc
|
30
34
|
protobuf (3.10.5)
|
31
35
|
activesupport (>= 3.2)
|
32
36
|
middleware
|
33
37
|
thor
|
34
38
|
thread_safe
|
39
|
+
racc (1.7.1)
|
35
40
|
rainbow (3.1.1)
|
36
41
|
rake (12.3.3)
|
37
|
-
rb-fsevent (0.11.
|
42
|
+
rb-fsevent (0.11.2)
|
38
43
|
rb-inotify (0.10.1)
|
39
44
|
ffi (~> 1.0)
|
40
|
-
rbs (
|
41
|
-
|
45
|
+
rbs (3.1.3)
|
46
|
+
securerandom (0.2.2)
|
47
|
+
steep (1.5.3)
|
42
48
|
activesupport (>= 5.1)
|
49
|
+
concurrent-ruby (>= 1.1.10)
|
50
|
+
csv (>= 3.0.9)
|
51
|
+
fileutils (>= 1.1.0)
|
52
|
+
json (>= 2.1.0)
|
43
53
|
language_server-protocol (>= 3.15, < 4.0)
|
44
54
|
listen (~> 3.0)
|
45
|
-
|
46
|
-
parser (>= 3.
|
55
|
+
logger (>= 1.3.0)
|
56
|
+
parser (>= 3.1)
|
47
57
|
rainbow (>= 2.2.2, < 4.0)
|
48
|
-
rbs (>=
|
58
|
+
rbs (>= 3.1.0)
|
59
|
+
securerandom (>= 0.1)
|
60
|
+
strscan (>= 1.0.0)
|
49
61
|
terminal-table (>= 2, < 4)
|
62
|
+
strscan (3.0.6)
|
50
63
|
terminal-table (3.0.2)
|
51
64
|
unicode-display_width (>= 1.1.1, < 3)
|
52
65
|
thor (1.2.1)
|
53
66
|
thread_safe (0.3.6)
|
54
|
-
tzinfo (2.0.
|
67
|
+
tzinfo (2.0.6)
|
55
68
|
concurrent-ruby (~> 1.0)
|
56
|
-
unicode-display_width (2.
|
69
|
+
unicode-display_width (2.4.2)
|
57
70
|
|
58
71
|
PLATFORMS
|
59
72
|
ruby
|
@@ -62,7 +75,7 @@ DEPENDENCIES
|
|
62
75
|
minitest (~> 5.0)
|
63
76
|
protobuf (~> 3.10)
|
64
77
|
rake (~> 12.0)
|
65
|
-
rbs
|
78
|
+
rbs (~> 3.1)
|
66
79
|
rbs_protobuf!
|
67
80
|
steep
|
68
81
|
|
data/Rakefile
CHANGED
@@ -27,7 +27,8 @@ namespace :example do
|
|
27
27
|
"-I#{proto_path}",
|
28
28
|
"example/a.proto",
|
29
29
|
"example/b.proto",
|
30
|
-
"example/c.proto"
|
30
|
+
"example/c.proto",
|
31
|
+
"example/d.proto"
|
31
32
|
)
|
32
33
|
sh(
|
33
34
|
{ "RBS_PROTOBUF_BACKEND" => "protobuf", "RBS_PROTOBUF_EXTENSION" => "true" },
|
@@ -35,7 +36,8 @@ namespace :example do
|
|
35
36
|
"--rbs_out=example/protobuf-gem",
|
36
37
|
"-Iexample",
|
37
38
|
"example/a.proto",
|
38
|
-
"example/b.proto"
|
39
|
+
"example/b.proto",
|
40
|
+
"example/d.proto"
|
39
41
|
)
|
40
42
|
sh(
|
41
43
|
{ "RBS_PROTOBUF_BACKEND" => "protobuf", "RBS_PROTOBUF_EXTENSION" => "true", "RUBYOPT" => "-rbundler/setup -Iexample/protobuf-gem -rc.pb" },
|
data/Steepfile
CHANGED
data/bin/protoc-gen-dumper
CHANGED
@@ -7,5 +7,7 @@ require "rbs_protobuf"
|
|
7
7
|
input = STDIN.read()
|
8
8
|
File.write(ENV["PROTOC_DUMPER_OUT"] || "a.pb.out", input)
|
9
9
|
|
10
|
-
response = Google::Protobuf::Compiler::CodeGeneratorResponse.new
|
10
|
+
response = Google::Protobuf::Compiler::CodeGeneratorResponse.new(
|
11
|
+
:supported_features => ::Google::Protobuf::Compiler::CodeGeneratorResponse::Feature::FEATURE_PROTO3_OPTIONAL.to_i
|
12
|
+
)
|
11
13
|
print Google::Protobuf::Compiler::CodeGeneratorResponse.encode(response)
|
data/example/d.proto
ADDED
@@ -14,7 +14,7 @@ module RBSProtobuf
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def response
|
17
|
-
@response ||= Google::Protobuf::Compiler::CodeGeneratorResponse.new
|
17
|
+
@response ||= Google::Protobuf::Compiler::CodeGeneratorResponse.new(:supported_features => ::Google::Protobuf::Compiler::CodeGeneratorResponse::Feature::FEATURE_PROTO3_OPTIONAL.to_i)
|
18
18
|
end
|
19
19
|
|
20
20
|
def generate_rbs!
|
@@ -188,96 +188,114 @@ module RBSProtobuf
|
|
188
188
|
|
189
189
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
190
190
|
name: :initialize,
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
191
|
+
overloads: [
|
192
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
193
|
+
method_type: factory.method_type(
|
194
|
+
type: factory.function().update(
|
195
|
+
optional_keywords: field_types.transform_values {|pair|
|
196
|
+
_, _, init_type = pair
|
197
|
+
factory.param(init_type)
|
198
|
+
}
|
199
|
+
)
|
200
|
+
),
|
201
|
+
annotations: []
|
202
|
+
),
|
200
203
|
],
|
201
204
|
annotations: [],
|
202
205
|
comment: nil,
|
203
206
|
location: nil,
|
204
|
-
|
207
|
+
overloading: false,
|
208
|
+
visibility: nil,
|
205
209
|
kind: :instance
|
206
210
|
)
|
207
211
|
|
208
212
|
unless field_types.empty?
|
209
213
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
210
214
|
name: :[],
|
211
|
-
|
215
|
+
overloads:
|
212
216
|
field_types.map do |field_name, pair|
|
213
217
|
read_type, _ = pair
|
214
218
|
|
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(
|
219
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
220
|
+
method_type: factory.method_type(
|
221
|
+
type: factory.function(read_type).update(
|
226
222
|
required_positionals: [
|
227
|
-
factory.param(
|
223
|
+
factory.param(factory.literal_type(field_name))
|
228
224
|
]
|
229
225
|
)
|
226
|
+
),
|
227
|
+
annotations: []
|
228
|
+
)
|
229
|
+
end +
|
230
|
+
[
|
231
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
232
|
+
method_type: factory.method_type(
|
233
|
+
type: factory.function(factory.untyped).update(
|
234
|
+
required_positionals: [
|
235
|
+
factory.param(RBS::BuiltinNames::Symbol.instance_type)
|
236
|
+
]
|
237
|
+
)
|
238
|
+
),
|
239
|
+
annotations: []
|
230
240
|
)
|
231
241
|
],
|
232
242
|
annotations: [],
|
233
243
|
comment: nil,
|
234
244
|
location: nil,
|
235
|
-
|
245
|
+
overloading: false,
|
246
|
+
visibility: nil,
|
236
247
|
kind: :instance
|
237
248
|
)
|
238
249
|
|
239
250
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
240
251
|
name: :[]=,
|
241
|
-
|
252
|
+
overloads:
|
242
253
|
field_types.flat_map do |field_name, pair|
|
243
254
|
read_type, write_types = pair
|
244
255
|
|
245
256
|
[read_type, *write_types].map do |type|
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
257
|
+
method_type =
|
258
|
+
if (type_param, type_var = interface_type?(type))
|
259
|
+
factory.method_type(
|
260
|
+
type: factory.function(type_var).update(
|
261
|
+
required_positionals: [
|
262
|
+
factory.literal_type(field_name),
|
263
|
+
type_var
|
264
|
+
].map {|t| factory.param(t) }
|
265
|
+
)
|
266
|
+
).update(type_params: [type_param])
|
267
|
+
else
|
268
|
+
factory.method_type(
|
269
|
+
type: factory.function(type).update(
|
270
|
+
required_positionals: [
|
271
|
+
factory.literal_type(field_name),
|
272
|
+
type
|
273
|
+
].map {|t| factory.param(t) }
|
274
|
+
)
|
253
275
|
)
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
type: factory.function(type).update(
|
258
|
-
required_positionals: [
|
259
|
-
factory.literal_type(field_name),
|
260
|
-
type
|
261
|
-
].map {|t| factory.param(t) }
|
262
|
-
)
|
263
|
-
)
|
264
|
-
end
|
276
|
+
end
|
277
|
+
|
278
|
+
RBS::AST::Members::MethodDefinition::Overload.new(method_type: method_type, annotations: [])
|
265
279
|
end
|
266
280
|
end +
|
267
281
|
[
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
282
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
283
|
+
method_type: factory.method_type(
|
284
|
+
type: factory.function(factory.untyped).update(
|
285
|
+
required_positionals: [
|
286
|
+
RBS::BuiltinNames::Symbol.instance_type,
|
287
|
+
factory.untyped
|
288
|
+
].map {|t| factory.param(t) }
|
289
|
+
)
|
290
|
+
),
|
291
|
+
annotations: []
|
275
292
|
)
|
276
293
|
],
|
277
294
|
annotations: [],
|
278
295
|
comment: nil,
|
279
296
|
location: nil,
|
280
|
-
|
297
|
+
overloading: false,
|
298
|
+
visibility: nil,
|
281
299
|
kind: :instance
|
282
300
|
)
|
283
301
|
end
|
@@ -286,15 +304,19 @@ module RBSProtobuf
|
|
286
304
|
if field.type == FieldDescriptorProto::Type::TYPE_BOOL
|
287
305
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
288
306
|
name: :"#{field.name}?",
|
289
|
-
|
290
|
-
|
291
|
-
|
307
|
+
overloads: [
|
308
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
309
|
+
method_type: factory.method_type(
|
310
|
+
type: factory.function(factory.bool_type)
|
311
|
+
),
|
312
|
+
annotations: []
|
292
313
|
)
|
293
314
|
],
|
294
315
|
annotations: [],
|
295
316
|
comment: nil,
|
296
317
|
location: nil,
|
297
|
-
|
318
|
+
overloading: false,
|
319
|
+
visibility: nil,
|
298
320
|
kind: :instance
|
299
321
|
)
|
300
322
|
end
|
@@ -310,20 +332,24 @@ module RBSProtobuf
|
|
310
332
|
).tap do |interface_decl|
|
311
333
|
interface_decl.members << RBS::AST::Members::MethodDefinition.new(
|
312
334
|
name: :to_proto,
|
313
|
-
|
314
|
-
|
315
|
-
|
335
|
+
overloads: [
|
336
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
337
|
+
method_type: factory.method_type(
|
338
|
+
type: factory.function(class_instance_type)
|
339
|
+
),
|
340
|
+
annotations: []
|
316
341
|
)
|
317
342
|
],
|
318
343
|
annotations: [],
|
319
344
|
comment: nil,
|
320
345
|
location: nil,
|
321
|
-
|
346
|
+
overloading: false,
|
347
|
+
visibility: nil,
|
322
348
|
kind: :instance
|
323
349
|
)
|
324
350
|
end
|
325
351
|
|
326
|
-
class_decl.members << RBS::AST::Declarations::
|
352
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
327
353
|
name: TypeName("init"),
|
328
354
|
type_params: [],
|
329
355
|
type: factory.union_type(class_instance_type, TO_PROTO[]),
|
@@ -332,7 +358,7 @@ module RBSProtobuf
|
|
332
358
|
location: nil
|
333
359
|
)
|
334
360
|
|
335
|
-
class_decl.members << RBS::AST::Declarations::
|
361
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
336
362
|
name: TypeName("field_array"),
|
337
363
|
type_params: [],
|
338
364
|
type: FIELD_ARRAY[
|
@@ -344,7 +370,7 @@ module RBSProtobuf
|
|
344
370
|
location: nil
|
345
371
|
)
|
346
372
|
|
347
|
-
class_decl.members << RBS::AST::Declarations::
|
373
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
348
374
|
name: TypeName("field_hash"),
|
349
375
|
type_params: [RBS::AST::TypeParam.new(name: :KEY, variance: :invariant, upper_bound: nil, location: nil)],
|
350
376
|
type: FIELD_HASH[
|
@@ -357,7 +383,7 @@ module RBSProtobuf
|
|
357
383
|
location: nil
|
358
384
|
)
|
359
385
|
|
360
|
-
class_decl.members << RBS::AST::Declarations::
|
386
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
361
387
|
name: TypeName("array"),
|
362
388
|
type_params: [],
|
363
389
|
type: RBS::BuiltinNames::Array.instance_type(factory.union_type(class_instance_type, TO_PROTO[])),
|
@@ -366,7 +392,7 @@ module RBSProtobuf
|
|
366
392
|
location: nil
|
367
393
|
)
|
368
394
|
|
369
|
-
class_decl.members << RBS::AST::Declarations::
|
395
|
+
class_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
370
396
|
name: TypeName("hash"),
|
371
397
|
type_params: [RBS::AST::TypeParam.new(name: :KEY, variance: :invariant, upper_bound: nil, location: nil)],
|
372
398
|
type: RBS::BuiltinNames::Hash.instance_type(
|
@@ -567,41 +593,52 @@ module RBSProtobuf
|
|
567
593
|
unless write_types.empty?
|
568
594
|
members << RBS::AST::Members::MethodDefinition.new(
|
569
595
|
name: :"#{name}=",
|
570
|
-
|
596
|
+
overloads:
|
571
597
|
write_types.map do |write_type|
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
598
|
+
method_type =
|
599
|
+
if (type_param, type = interface_type?(write_type))
|
600
|
+
factory.method_type(
|
601
|
+
type: factory.function(type).update(
|
602
|
+
required_positionals:[factory.param(type)]
|
603
|
+
)
|
604
|
+
).update(type_params: [type_param])
|
605
|
+
else
|
606
|
+
factory.method_type(
|
607
|
+
type: factory.function(write_type).update(
|
608
|
+
required_positionals:[factory.param(write_type)]
|
609
|
+
)
|
582
610
|
)
|
583
|
-
|
584
|
-
|
611
|
+
end
|
612
|
+
|
613
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
614
|
+
method_type: method_type,
|
615
|
+
annotations: []
|
616
|
+
)
|
585
617
|
end,
|
586
618
|
annotations: [],
|
587
619
|
comment: comment,
|
588
620
|
location: nil,
|
589
|
-
|
621
|
+
overloading: true,
|
622
|
+
visibility: nil,
|
590
623
|
kind: :instance
|
591
624
|
)
|
592
625
|
end
|
593
626
|
|
594
627
|
members << RBS::AST::Members::MethodDefinition.new(
|
595
628
|
name: :"#{name}!",
|
596
|
-
|
597
|
-
|
598
|
-
|
629
|
+
overloads: [
|
630
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
631
|
+
method_type: factory.method_type(
|
632
|
+
type: factory.function(factory.optional_type(read_type))
|
633
|
+
),
|
634
|
+
annotations: []
|
599
635
|
)
|
600
636
|
],
|
601
637
|
annotations: [],
|
602
638
|
comment: nil,
|
603
639
|
location: nil,
|
604
|
-
|
640
|
+
overloading: false,
|
641
|
+
visibility: nil,
|
605
642
|
kind: :instance
|
606
643
|
)
|
607
644
|
end
|
@@ -638,7 +675,7 @@ module RBSProtobuf
|
|
638
675
|
factory.literal_type(v.number)
|
639
676
|
end.uniq
|
640
677
|
|
641
|
-
enum_decl.members << RBS::AST::Declarations::
|
678
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
642
679
|
name: factory.type_name("names"),
|
643
680
|
type_params: [],
|
644
681
|
type: factory.union_type(*names),
|
@@ -647,7 +684,7 @@ module RBSProtobuf
|
|
647
684
|
annotations: []
|
648
685
|
)
|
649
686
|
|
650
|
-
enum_decl.members << RBS::AST::Declarations::
|
687
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
651
688
|
name: factory.type_name("strings"),
|
652
689
|
type_params: [],
|
653
690
|
type: factory.union_type(*strings),
|
@@ -656,7 +693,7 @@ module RBSProtobuf
|
|
656
693
|
annotations: []
|
657
694
|
)
|
658
695
|
|
659
|
-
enum_decl.members << RBS::AST::Declarations::
|
696
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
660
697
|
name: factory.type_name("tags"),
|
661
698
|
type_params: [],
|
662
699
|
type: factory.union_type(*tags),
|
@@ -665,7 +702,7 @@ module RBSProtobuf
|
|
665
702
|
annotations: []
|
666
703
|
)
|
667
704
|
|
668
|
-
enum_decl.members << RBS::AST::Declarations::
|
705
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
669
706
|
name: factory.type_name("values"),
|
670
707
|
type_params: [],
|
671
708
|
type: factory.union_type(
|
@@ -712,7 +749,7 @@ module RBSProtobuf
|
|
712
749
|
enum_instance_type = factory.instance_type(RBS::TypeName.new(name: enum_name.to_sym, namespace: RBS::Namespace.empty))
|
713
750
|
values_type = factory.alias_type(RBS::TypeName.new(name: :values, namespace: RBS::Namespace.empty))
|
714
751
|
|
715
|
-
enum_decl.members << RBS::AST::Declarations::
|
752
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
716
753
|
name: TypeName("init"),
|
717
754
|
type_params: [],
|
718
755
|
type: factory.union_type(enum_instance_type, values_type),
|
@@ -721,7 +758,7 @@ module RBSProtobuf
|
|
721
758
|
location: nil
|
722
759
|
)
|
723
760
|
|
724
|
-
enum_decl.members << RBS::AST::Declarations::
|
761
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
725
762
|
name: TypeName("field_array"),
|
726
763
|
type_params: [],
|
727
764
|
type: FIELD_ARRAY[
|
@@ -733,7 +770,7 @@ module RBSProtobuf
|
|
733
770
|
location: nil
|
734
771
|
)
|
735
772
|
|
736
|
-
enum_decl.members << RBS::AST::Declarations::
|
773
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
737
774
|
name: TypeName("field_hash"),
|
738
775
|
type_params: [RBS::AST::TypeParam.new(name: :KEY, variance: :invariant, upper_bound: nil, location: nil)],
|
739
776
|
type: FIELD_HASH[
|
@@ -746,7 +783,7 @@ module RBSProtobuf
|
|
746
783
|
location: nil
|
747
784
|
)
|
748
785
|
|
749
|
-
enum_decl.members << RBS::AST::Declarations::
|
786
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
750
787
|
name: TypeName("array"),
|
751
788
|
type_params: [],
|
752
789
|
type: RBS::BuiltinNames::Array.instance_type(factory.union_type(enum_instance_type, values_type)),
|
@@ -755,7 +792,7 @@ module RBSProtobuf
|
|
755
792
|
location: nil
|
756
793
|
)
|
757
794
|
|
758
|
-
enum_decl.members << RBS::AST::Declarations::
|
795
|
+
enum_decl.members << RBS::AST::Declarations::TypeAlias.new(
|
759
796
|
name: TypeName("hash"),
|
760
797
|
type_params: [RBS::AST::TypeParam.new(name: :KEY, variance: :invariant, upper_bound: nil, location: nil)],
|
761
798
|
type: RBS::BuiltinNames::Hash.instance_type(
|
@@ -790,49 +827,59 @@ module RBSProtobuf
|
|
790
827
|
|
791
828
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
792
829
|
name: :[],
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
830
|
+
overloads: [
|
831
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
832
|
+
method_type: factory.method_type(
|
833
|
+
type: factory.function(read_type).update(
|
834
|
+
required_positionals: [
|
835
|
+
factory.param(factory.literal_type(field_name))
|
836
|
+
]
|
837
|
+
)
|
838
|
+
),
|
839
|
+
annotations: []
|
800
840
|
)
|
801
841
|
],
|
802
842
|
annotations: [],
|
803
843
|
comment: nil,
|
804
844
|
location: nil,
|
805
|
-
|
845
|
+
overloading: true,
|
846
|
+
visibility: nil,
|
806
847
|
kind: :instance
|
807
848
|
)
|
808
849
|
|
809
850
|
class_decl.members << RBS::AST::Members::MethodDefinition.new(
|
810
851
|
name: :[]=,
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
852
|
+
overloads: [read_type, *write_types].map do |write_type|
|
853
|
+
method_type =
|
854
|
+
if (type_param, type_var = interface_type?(write_type))
|
855
|
+
factory.method_type(
|
856
|
+
type: factory.function(type_var).update(
|
857
|
+
required_positionals: [
|
858
|
+
factory.param(factory.literal_type(field_name)),
|
859
|
+
factory.param(type_var)
|
860
|
+
]
|
861
|
+
)
|
862
|
+
).update(type_params: [type_param])
|
863
|
+
else
|
864
|
+
factory.method_type(
|
865
|
+
type: factory.function(write_type).update(
|
866
|
+
required_positionals: [
|
867
|
+
factory.param(factory.literal_type(field_name)),
|
868
|
+
factory.param(write_type)
|
869
|
+
]
|
870
|
+
)
|
828
871
|
)
|
829
|
-
|
830
|
-
|
872
|
+
end
|
873
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
874
|
+
method_type: method_type,
|
875
|
+
annotations: []
|
876
|
+
)
|
831
877
|
end,
|
832
878
|
annotations: [],
|
833
879
|
comment: nil,
|
834
880
|
location: nil,
|
835
|
-
|
881
|
+
overloading: true,
|
882
|
+
visibility: nil,
|
836
883
|
kind: :instance
|
837
884
|
)
|
838
885
|
end
|
data/lib/rbs_protobuf/version.rb
CHANGED
data/rbs_collection.lock.yaml
CHANGED
@@ -1,76 +1,61 @@
|
|
1
1
|
---
|
2
2
|
sources:
|
3
|
-
-
|
3
|
+
- type: git
|
4
|
+
name: ruby/gem_rbs_collection
|
5
|
+
revision: 8a678b2ec20e9d594055f53745399814e3a887dc
|
4
6
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
5
|
-
revision: main
|
6
7
|
repo_dir: gems
|
7
8
|
path: ".gem_rbs_collection"
|
8
9
|
gems:
|
9
|
-
- name:
|
10
|
-
version:
|
10
|
+
- name: abbrev
|
11
|
+
version: '0'
|
11
12
|
source:
|
12
|
-
type:
|
13
|
+
type: stdlib
|
13
14
|
- name: activesupport
|
14
|
-
version: '
|
15
|
+
version: '7.0'
|
15
16
|
source:
|
16
17
|
type: git
|
17
18
|
name: ruby/gem_rbs_collection
|
18
|
-
revision:
|
19
|
+
revision: 8a678b2ec20e9d594055f53745399814e3a887dc
|
19
20
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
20
21
|
repo_dir: gems
|
21
|
-
- name:
|
22
|
-
version: '
|
22
|
+
- name: concurrent-ruby
|
23
|
+
version: '1.1'
|
23
24
|
source:
|
24
25
|
type: git
|
25
26
|
name: ruby/gem_rbs_collection
|
26
|
-
revision:
|
27
|
+
revision: 8a678b2ec20e9d594055f53745399814e3a887dc
|
27
28
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
28
29
|
repo_dir: gems
|
30
|
+
- name: date
|
31
|
+
version: '0'
|
32
|
+
source:
|
33
|
+
type: stdlib
|
29
34
|
- name: i18n
|
30
35
|
version: '1.10'
|
31
36
|
source:
|
32
37
|
type: git
|
33
38
|
name: ruby/gem_rbs_collection
|
34
|
-
revision:
|
39
|
+
revision: 8a678b2ec20e9d594055f53745399814e3a887dc
|
35
40
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
36
41
|
repo_dir: gems
|
37
|
-
- name:
|
38
|
-
version: '
|
39
|
-
source:
|
40
|
-
type: git
|
41
|
-
name: ruby/gem_rbs_collection
|
42
|
-
revision: c7b9329222debd0b8a4a85c0ccdae6588fedd57a
|
43
|
-
remote: https://github.com/ruby/gem_rbs_collection.git
|
44
|
-
repo_dir: gems
|
45
|
-
- name: parallel
|
46
|
-
version: '1.20'
|
47
|
-
source:
|
48
|
-
type: git
|
49
|
-
name: ruby/gem_rbs_collection
|
50
|
-
revision: c7b9329222debd0b8a4a85c0ccdae6588fedd57a
|
51
|
-
remote: https://github.com/ruby/gem_rbs_collection.git
|
52
|
-
repo_dir: gems
|
53
|
-
- name: rainbow
|
54
|
-
version: '3.0'
|
42
|
+
- name: json
|
43
|
+
version: '0'
|
55
44
|
source:
|
56
|
-
type:
|
57
|
-
name: ruby/gem_rbs_collection
|
58
|
-
revision: c7b9329222debd0b8a4a85c0ccdae6588fedd57a
|
59
|
-
remote: https://github.com/ruby/gem_rbs_collection.git
|
60
|
-
repo_dir: gems
|
45
|
+
type: stdlib
|
61
46
|
- name: logger
|
62
47
|
version: '0'
|
63
48
|
source:
|
64
49
|
type: stdlib
|
65
|
-
- name:
|
50
|
+
- name: minitest
|
66
51
|
version: '0'
|
67
52
|
source:
|
68
53
|
type: stdlib
|
69
|
-
- name:
|
54
|
+
- name: monitor
|
70
55
|
version: '0'
|
71
56
|
source:
|
72
57
|
type: stdlib
|
73
|
-
- name:
|
58
|
+
- name: mutex_m
|
74
59
|
version: '0'
|
75
60
|
source:
|
76
61
|
type: stdlib
|
@@ -78,19 +63,27 @@ gems:
|
|
78
63
|
version: '0'
|
79
64
|
source:
|
80
65
|
type: stdlib
|
81
|
-
- name:
|
66
|
+
- name: pathname
|
82
67
|
version: '0'
|
83
68
|
source:
|
84
69
|
type: stdlib
|
85
|
-
- name:
|
86
|
-
version:
|
70
|
+
- name: protobuf
|
71
|
+
version: 3.10.3
|
87
72
|
source:
|
88
|
-
type:
|
89
|
-
|
73
|
+
type: git
|
74
|
+
name: ruby/gem_rbs_collection
|
75
|
+
revision: 8a678b2ec20e9d594055f53745399814e3a887dc
|
76
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
77
|
+
repo_dir: gems
|
78
|
+
- name: rbs
|
79
|
+
version: 3.1.3
|
80
|
+
source:
|
81
|
+
type: rubygems
|
82
|
+
- name: rdoc
|
90
83
|
version: '0'
|
91
84
|
source:
|
92
85
|
type: stdlib
|
93
|
-
- name:
|
86
|
+
- name: securerandom
|
94
87
|
version: '0'
|
95
88
|
source:
|
96
89
|
type: stdlib
|
@@ -98,11 +91,12 @@ gems:
|
|
98
91
|
version: '0'
|
99
92
|
source:
|
100
93
|
type: stdlib
|
101
|
-
- name:
|
94
|
+
- name: time
|
102
95
|
version: '0'
|
103
96
|
source:
|
104
97
|
type: stdlib
|
105
|
-
- name:
|
98
|
+
- name: tsort
|
106
99
|
version: '0'
|
107
100
|
source:
|
108
101
|
type: stdlib
|
102
|
+
gemfile_lock_path: Gemfile.lock
|
data/rbs_collection.yaml
CHANGED
@@ -8,12 +8,4 @@ sources:
|
|
8
8
|
# A directory to install the downloaded RBSs
|
9
9
|
path: .gem_rbs_collection
|
10
10
|
|
11
|
-
gems:
|
12
|
-
# Skip loading rbs gem's RBS.
|
13
|
-
# It's unnecessary if you don't use rbs as a library.
|
14
|
-
- name: rbs
|
15
|
-
- name: activesupport
|
16
|
-
- name: protobuf
|
17
|
-
ignore: true
|
18
|
-
- name: rbs_protobuf
|
19
|
-
ignore: true
|
11
|
+
gems: []
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbs_protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbs
|
@@ -49,7 +49,6 @@ files:
|
|
49
49
|
- ".github/workflows/test.yml"
|
50
50
|
- ".gitignore"
|
51
51
|
- ".gitmodules"
|
52
|
-
- ".protoc-version"
|
53
52
|
- ".rakeTasks"
|
54
53
|
- ".travis.yml"
|
55
54
|
- CHANGELOG.md
|
@@ -69,6 +68,7 @@ files:
|
|
69
68
|
- example/a.proto
|
70
69
|
- example/b.proto
|
71
70
|
- example/c.proto
|
71
|
+
- example/d.proto
|
72
72
|
- example/protobuf_gem_example.rb
|
73
73
|
- exe/protoc-gen-rbs
|
74
74
|
- lib/rbs_protobuf.rb
|
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
110
|
requirements: []
|
111
|
-
rubygems_version: 3.
|
111
|
+
rubygems_version: 3.4.10
|
112
112
|
signing_key:
|
113
113
|
specification_version: 4
|
114
114
|
summary: Generate RBS files from .proto files
|
data/.protoc-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
3.9.0-square-1.0
|