Skip to content

Commit 16256d3

Browse files
committed
Record the use of possibly-foreign enum types as map values.
1 parent 39e27fc commit 16256d3

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

protoc-gen-go/generator/generator.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1554,8 +1554,13 @@ func (g *Generator) generateMessage(message *Descriptor) {
15541554
keyTag, valTag := g.goTag(d, keyField, keyWire), g.goTag(d, valField, valWire)
15551555

15561556
// We don't use stars, except for message-typed values.
1557+
// Message and enum types are the only two possibly foreign types used in maps,
1558+
// so record their use. They are not permitted as map keys.
15571559
keyType = strings.TrimPrefix(keyType, "*")
15581560
switch *valField.Type {
1561+
case descriptor.FieldDescriptorProto_TYPE_ENUM:
1562+
valType = strings.TrimPrefix(valType, "*")
1563+
g.RecordTypeUse(valField.GetTypeName())
15591564
case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
15601565
g.RecordTypeUse(valField.GetTypeName())
15611566
default:

0 commit comments

Comments
 (0)