@@ -17,6 +17,7 @@ limitations under the License.
17
17
package generators
18
18
19
19
import (
20
+ "fmt"
20
21
"io"
21
22
"path/filepath"
22
23
"strings"
@@ -202,6 +203,16 @@ func (g *genDeepCopy) Imports(c *generator.Context) (imports []string) {
202
203
return importLines
203
204
}
204
205
206
+ func argsFromType (t * types.Type ) interface {} {
207
+ return map [string ]interface {}{
208
+ "type" : t ,
209
+ }
210
+ }
211
+
212
+ func (g * genDeepCopy ) funcNameTmpl (t * types.Type ) string {
213
+ return "DeepCopy_$.type|public$"
214
+ }
215
+
205
216
func (g * genDeepCopy ) Init (c * generator.Context , w io.Writer ) error {
206
217
sw := generator .NewSnippetWriter (w , c , "$" , "$" )
207
218
sw .Do ("func init() {\n " , nil )
@@ -211,7 +222,7 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
211
222
sw .Do ("if err := api.Scheme.AddGeneratedDeepCopyFuncs(\n " , nil )
212
223
}
213
224
for _ , t := range g .typesForInit {
214
- sw .Do ("deepCopy_$.|public$ ,\n " , t )
225
+ sw .Do (fmt . Sprintf ( "%s ,\n " , g . funcNameTmpl ( t )), argsFromType ( t ) )
215
226
}
216
227
sw .Do ("); err != nil {\n " , nil )
217
228
sw .Do ("// if one of the deep copy functions is malformed, detect it immediately.\n " , nil )
@@ -224,7 +235,8 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
224
235
// GenerateType makes the body of a file implementing a set for type t.
225
236
func (g * genDeepCopy ) GenerateType (c * generator.Context , t * types.Type , w io.Writer ) error {
226
237
sw := generator .NewSnippetWriter (w , c , "$" , "$" )
227
- sw .Do ("func deepCopy_$.|public$(in $.|raw$, out *$.|raw$, c *conversion.Cloner) error {\n " , t )
238
+ funcName := g .funcNameTmpl (t )
239
+ sw .Do (fmt .Sprintf ("func %s(in $.type|raw$, out *$.type|raw$, c *conversion.Cloner) error {\n " , funcName ), argsFromType (t ))
228
240
g .generateFor (t , sw )
229
241
sw .Do ("return nil\n " , nil )
230
242
sw .Do ("}\n \n " , nil )
@@ -270,7 +282,8 @@ func (g *genDeepCopy) doMap(t *types.Type, sw *generator.SnippetWriter) {
270
282
} else {
271
283
if g .copyableWithinPackage (t .Elem ) {
272
284
sw .Do ("newVal := new($.|raw$)\n " , t .Elem )
273
- sw .Do ("if err := deepCopy_$.|public$(val, newVal, c); err != nil {\n " , t .Elem )
285
+ funcName := g .funcNameTmpl (t .Elem )
286
+ sw .Do (fmt .Sprintf ("if err := %s(val, newVal, c); err != nil {\n " , funcName ), argsFromType (t .Elem ))
274
287
sw .Do ("return err\n " , nil )
275
288
sw .Do ("}\n " , nil )
276
289
sw .Do ("(*out)[key] = *newVal\n " , nil )
@@ -298,7 +311,8 @@ func (g *genDeepCopy) doSlice(t *types.Type, sw *generator.SnippetWriter) {
298
311
if t .Elem .IsAssignable () {
299
312
sw .Do ("(*out)[i] = in[i]\n " , nil )
300
313
} else if g .copyableWithinPackage (t .Elem ) {
301
- sw .Do ("if err := deepCopy_$.|public$(in[i], &(*out)[i], c); err != nil {\n " , t .Elem )
314
+ funcName := g .funcNameTmpl (t .Elem )
315
+ sw .Do (fmt .Sprintf ("if err := %s(in[i], &(*out)[i], c); err != nil {\n " , funcName ), argsFromType (t .Elem ))
302
316
sw .Do ("return err\n " , nil )
303
317
sw .Do ("}\n " , nil )
304
318
} else {
@@ -330,7 +344,8 @@ func (g *genDeepCopy) doStruct(t *types.Type, sw *generator.SnippetWriter) {
330
344
sw .Do ("}\n " , nil )
331
345
case types .Struct :
332
346
if g .copyableWithinPackage (m .Type ) {
333
- sw .Do ("if err := deepCopy_$.type|public$(in.$.name$, &out.$.name$, c); err != nil {\n " , args )
347
+ funcName := g .funcNameTmpl (m .Type )
348
+ sw .Do (fmt .Sprintf ("if err := %s(in.$.name$, &out.$.name$, c); err != nil {\n " , funcName ), args )
334
349
sw .Do ("return err\n " , nil )
335
350
sw .Do ("}\n " , nil )
336
351
} else {
@@ -364,7 +379,8 @@ func (g *genDeepCopy) doPointer(t *types.Type, sw *generator.SnippetWriter) {
364
379
if t .Elem .Kind == types .Builtin {
365
380
sw .Do ("**out = *in" , nil )
366
381
} else if g .copyableWithinPackage (t .Elem ) {
367
- sw .Do ("if err := deepCopy_$.|public$(*in, *out, c); err != nil {\n " , t .Elem )
382
+ funcName := g .funcNameTmpl (t .Elem )
383
+ sw .Do (fmt .Sprintf ("if err := %s(*in, *out, c); err != nil {\n " , funcName ), argsFromType (t .Elem ))
368
384
sw .Do ("return err\n " , nil )
369
385
sw .Do ("}\n " , nil )
370
386
} else {
0 commit comments