What version of protobuf and what language are you using?
- libprotoc 32.1
- protoc-gen-go v1.36.9
What did you do?
protoc --go_out=./gen --go_opt=paths=source_relative test.proto
With the following file
syntax = "proto3";
package test;
option go_package = "proto/test";
enum MyEnum {
unknown = 0;
name = 1;
value = 2;
}
What did you expect to see?
No name clashes in the internal variables of the generated file
What did you see instead?
Variable name clashes:
MyEnum_name redeclared in this block
MyEnum_value redeclared in this block
It seems, for top-level enums, the enum value maps generated for go are named <enum_name>_name and <enum_name>_value. The enum consts have identical names, causing the clash.
Generated code extract:
type MyEnum int32
const (
MyEnum_unknown MyEnum = 0
MyEnum_name MyEnum = 1
MyEnum_value MyEnum = 2
)
// Enum value maps for MyEnum.
var (
MyEnum_name = map[int32]string{
0: "unknown",
1: "name",
2: "value",
}
MyEnum_value = map[string]int32{
"unknown": 0,
"name": 1,
"value": 2,
}
)
A workaround is to wrap the enum inside another message.
What version of protobuf and what language are you using?
What did you do?
With the following file
What did you expect to see?
No name clashes in the internal variables of the generated file
What did you see instead?
Variable name clashes:
It seems, for top-level enums, the enum value maps generated for go are named
<enum_name>_nameand<enum_name>_value. The enum consts have identical names, causing the clash.Generated code extract:
A workaround is to wrap the enum inside another message.