Record the use of possibly-foreign enum types as map values. · golang/protobuf@16256d3 (original) (raw)

Original file line number Diff line number Diff line change
@@ -1554,8 +1554,13 @@ func (g *Generator) generateMessage(message *Descriptor) {
1554 1554 keyTag, valTag := g.goTag(d, keyField, keyWire), g.goTag(d, valField, valWire)
1555 1555
1556 1556 // 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.
1557 1559 keyType = strings.TrimPrefix(keyType, "*")
1558 1560 switch *valField.Type {
1561 +case descriptor.FieldDescriptorProto_TYPE_ENUM:
1562 +valType = strings.TrimPrefix(valType, "*")
1563 +g.RecordTypeUse(valField.GetTypeName())
1559 1564 case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
1560 1565 g.RecordTypeUse(valField.GetTypeName())
1561 1566 default: