@@ -5,6 +5,7 @@ using ProtoBuf.CodeGenerators: resolve_inter_package_references!, get_all_transi
5
5
using ProtoBuf. CodeGenerators: CodeGenerators
6
6
using ProtoBuf. Parsers: parse_proto_file, ParserState, Parsers
7
7
using ProtoBuf. Lexers: Lexer
8
+ using EnumX
8
9
using Test
9
10
10
11
strify (f, args... ) = (io = IOBuffer (); f (io, args... ); String (take! (io)))
@@ -634,15 +635,18 @@ end
634
635
635
636
@testset " Metadata methods" begin
636
637
@testset " metadata_methods have generic fallback" begin
637
- s, p, ctx = translate_simple_proto (" message A { }" )
638
+ s, p, ctx = translate_simple_proto (" message A { } enum Foo { } " )
638
639
@test strify (CodeGenerators. maybe_generate_reserved_fields_method, p. definitions[" A" ]) == " "
640
+ @test strify (CodeGenerators. maybe_generate_reserved_fields_method, p. definitions[" Foo" ]) == " "
639
641
@test strify (CodeGenerators. maybe_generate_extendable_field_numbers_method, p. definitions[" A" ]) == " "
640
642
@test strify (CodeGenerators. maybe_generate_default_values_method, p. definitions[" A" ], ctx) == " "
641
643
@test strify (CodeGenerators. maybe_generate_oneof_field_types_method, p. definitions[" A" ], ctx) == " "
642
644
@test strify (CodeGenerators. maybe_generate_field_numbers_method, p. definitions[" A" ]) == " "
643
645
644
646
struct A end
647
+ @enumx Foo
645
648
@test reserved_fields (A) == (names = String[], numbers = Union{Int,UnitRange{Int}}[])
649
+ @test reserved_fields (Foo. T) == (names = String[], numbers = Union{Int,UnitRange{Int}}[])
646
650
@test extendable_field_numbers (A) == Union{Int,UnitRange{Int}}[]
647
651
@test default_values (A) == (;)
648
652
@test oneof_field_types (A) == (;)
658
662
@test strify (CodeGenerators. maybe_generate_field_numbers_method, p. definitions[" A" ]) == " PB.field_numbers(::Type{A}) = (;a = 1, s = 3)\n "
659
663
@test strify (CodeGenerators. maybe_generate_kwarg_constructor_method, p. definitions[" A" ], ctx) == " A(;a = nothing, o = nothing) = A(a, o)\n "
660
664
end
665
+
666
+ @testset " reserved fields are available for enums" begin
667
+ s, p, ctx = translate_simple_proto ("""
668
+ enum Foo {
669
+ reserved 2, 15, 9 to 11, 40 to max;
670
+ reserved "FOO", "BAR";
671
+ }
672
+ """ )
673
+ @test strify (CodeGenerators. maybe_generate_reserved_fields_method, p. definitions[" Foo" ]) == " PB.reserved_fields(::Type{Foo.T}) = (names = [\" FOO\" , \" BAR\" ], numbers = Union{Int,UnitRange{Int}}[2, 15, 9:11, 40:536870911])\n "
674
+ end
661
675
end
662
676
663
677
@testset " Imports within a leaf module which name-clashes with top module" begin
0 commit comments