@@ -215,7 +215,7 @@ func (v *MapperGenerator) writeMapFunctionsForPair(out io.Writer, pair *typePair
215
215
}
216
216
217
217
if protoField .Cardinality () == protoreflect .Repeated {
218
- useSliceFromProto := ""
218
+ useSliceFromProtoFunction := ""
219
219
useCustomMethod := false
220
220
221
221
switch protoField .Kind () {
@@ -225,12 +225,22 @@ func (v *MapperGenerator) writeMapFunctionsForPair(out io.Writer, pair *typePair
225
225
krmElemTypeName = strings .TrimPrefix (krmElemTypeName , "[]" )
226
226
227
227
functionName := krmElemTypeName + "_FromProto"
228
- useSliceFromProto = functionName
228
+ useSliceFromProtoFunction = functionName
229
229
case protoreflect .StringKind :
230
230
if krmField .Type != "[]string" {
231
231
useCustomMethod = true
232
232
// useSliceFromProto = fmt.Sprintf("%s_%s_FromProto", goTypeName, protoFieldName)
233
233
}
234
+ case protoreflect .EnumKind :
235
+ krmElemTypeName := krmField .Type
236
+ krmElemTypeName = strings .TrimPrefix (krmElemTypeName , "*" )
237
+ krmElemTypeName = strings .TrimPrefix (krmElemTypeName , "[]" )
238
+
239
+ functionName := "Enum_FromProto"
240
+ useSliceFromProtoFunction = fmt .Sprintf ("%s(mapCtx, in.%s)" ,
241
+ functionName ,
242
+ krmFieldName ,
243
+ )
234
244
235
245
case
236
246
protoreflect .FloatKind ,
@@ -241,7 +251,7 @@ func (v *MapperGenerator) writeMapFunctionsForPair(out io.Writer, pair *typePair
241
251
protoreflect .Uint32Kind ,
242
252
protoreflect .Uint64Kind ,
243
253
protoreflect .BytesKind :
244
- useSliceFromProto = ""
254
+ useSliceFromProtoFunction = ""
245
255
default :
246
256
klog .Fatalf ("unhandled kind %q for repeated field %v" , protoField .Kind (), protoField )
247
257
}
@@ -251,19 +261,19 @@ func (v *MapperGenerator) writeMapFunctionsForPair(out io.Writer, pair *typePair
251
261
keyKind := entryMsg .Fields ().ByName ("key" ).Kind ()
252
262
valueKind := entryMsg .Fields ().ByName ("value" ).Kind ()
253
263
if keyKind == protoreflect .StringKind && valueKind == protoreflect .StringKind {
254
- useSliceFromProto = ""
264
+ useSliceFromProtoFunction = ""
255
265
} else if keyKind == protoreflect .StringKind && valueKind == protoreflect .Int64Kind {
256
- useSliceFromProto = ""
266
+ useSliceFromProtoFunction = ""
257
267
} else {
258
268
fmt .Fprintf (out , "// TODO: map type %v %v\n " , keyKind , valueKind )
259
269
}
260
270
}
261
271
262
- if useSliceFromProto != "" {
272
+ if useSliceFromProtoFunction != "" {
263
273
fmt .Fprintf (out , "\t out.%s = Slice_FromProto(mapCtx, in.%s, %s)\n " ,
264
274
krmFieldName ,
265
275
krmFieldName ,
266
- useSliceFromProto ,
276
+ useSliceFromProtoFunction ,
267
277
)
268
278
} else if useCustomMethod {
269
279
methodName := fmt .Sprintf ("%s_%s_FromProto" , goTypeName , protoFieldName )
@@ -362,6 +372,19 @@ func (v *MapperGenerator) writeMapFunctionsForPair(out io.Writer, pair *typePair
362
372
//useSliceToProtoFunction = fmt.Sprintf("%s_%s_ToProto", goTypeName, protoFieldName)
363
373
}
364
374
375
+ case protoreflect .EnumKind :
376
+ krmElemTypeName := krmField .Type
377
+ krmElemTypeName = strings .TrimPrefix (krmElemTypeName , "*" )
378
+ krmElemTypeName = strings .TrimPrefix (krmElemTypeName , "[]" )
379
+
380
+ protoTypeName := "pb." + protoNameForEnum (protoField .Enum ())
381
+ functionName := "Enum_ToProto"
382
+ useSliceToProtoFunction = fmt .Sprintf ("%s[%s](mapCtx, in.%s)" ,
383
+ functionName ,
384
+ protoTypeName ,
385
+ krmFieldName ,
386
+ )
387
+
365
388
case protoreflect .FloatKind ,
366
389
protoreflect .DoubleKind ,
367
390
protoreflect .BoolKind ,
0 commit comments