@@ -172,11 +172,14 @@ const oneOfMessageSetTestFieldTemplate = `tv.orig.{{ .originOneOfFieldName }} =
172
172
fillTest{{ .returnType }}(new{{ .returnType }}(tv.orig.Get{{ .returnType }}(), tv.state))`
173
173
174
174
const copyToValueOneOfMessageTemplate = ` case *{{ .originStructType }}:
175
- {{ .lowerFieldName }} := &{{ .originFieldPackageName}}.{{ .fieldName }}{}
176
- copyOrig{{ .returnType }}({{ .lowerFieldName }}, t.{{ .fieldName }})
177
- dest.{{ .originOneOfFieldName }} = &{{ .originStructType }}{
178
- {{ .fieldName }}: {{ .lowerFieldName }},
179
- }`
175
+ {{ .lowerFieldName }}, ok := dest.{{ .originOneOfFieldName }}.(*{{ .originStructType }})
176
+ if !ok || {{ .lowerFieldName }}.{{ .fieldName }} == nil {
177
+ {{ .lowerFieldName }} = &{{ .originStructType }}{
178
+ {{ .fieldName }}: &{{ .originFieldPackageName}}.{{ .fieldName }}{},
179
+ }
180
+ dest.{{ .originOneOfFieldName }} = {{ .lowerFieldName }}
181
+ }
182
+ copyOrig{{ .returnType }}({{ .lowerFieldName }}.{{ .fieldName }}, t.{{ .fieldName }})`
180
183
181
184
const accessorsOneOfPrimitiveTemplate = `// {{ .accessorFieldName }} returns the {{ .lowerFieldName }} associated with this {{ .structName }}.
182
185
func (ms {{ .structName }}) {{ .accessorFieldName }}() {{ .returnType }} {
@@ -218,8 +221,12 @@ const oneOfPrimitiveSetTestFieldTemplate = `tv.orig.{{ .originOneOfFieldName }}
218
221
{{- .originFieldName }}: {{ .testValue }}}`
219
222
220
223
const oneOfPrimitiveCopyOrigFieldTemplate = `case *{{ .originStructName }}_{{ .originFieldName }}:
221
- dest.{{ .originOneOfFieldName }} = &{{ .originStructName }}_{{ .originFieldName }}{
222
- {{- .originFieldName }}: t.{{ .originFieldName }}}`
224
+ dest{{ .originOneOfFieldName }}, ok := dest.{{ .originOneOfFieldName }}.(*{{ .originStructName }}_{{ .originFieldName }})
225
+ if !ok {
226
+ dest{{ .originOneOfFieldName }} = &{{ .originStructName }}_{{ .originFieldName }}{}
227
+ dest.{{ .originOneOfFieldName }} = dest{{ .originOneOfFieldName }}
228
+ }
229
+ dest{{ .originOneOfFieldName }}.{{ .originFieldName }} = t.{{ .originFieldName }}`
223
230
224
231
const oneOfPrimitiveSwitchCaseTemplate = `case *{{ .originStructName }}_{{ .originFieldName }}:
225
232
return {{ .typeName }}`
0 commit comments