Skip to content

Commit 210bac1

Browse files
author
k8s-merge-robot
committed
Merge pull request kubernetes#19200 from wojtek-t/public_deep_copies
Auto commit by PR queue bot
2 parents fc2929e + 68d0f63 commit 210bac1

File tree

2 files changed

+513
-514
lines changed

2 files changed

+513
-514
lines changed

cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package generators
1818

1919
import (
20+
"fmt"
2021
"io"
2122
"path/filepath"
2223
"strings"
@@ -202,6 +203,16 @@ func (g *genDeepCopy) Imports(c *generator.Context) (imports []string) {
202203
return importLines
203204
}
204205

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+
205216
func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
206217
sw := generator.NewSnippetWriter(w, c, "$", "$")
207218
sw.Do("func init() {\n", nil)
@@ -211,7 +222,7 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
211222
sw.Do("if err := api.Scheme.AddGeneratedDeepCopyFuncs(\n", nil)
212223
}
213224
for _, t := range g.typesForInit {
214-
sw.Do("deepCopy_$.|public$,\n", t)
225+
sw.Do(fmt.Sprintf("%s,\n", g.funcNameTmpl(t)), argsFromType(t))
215226
}
216227
sw.Do("); err != nil {\n", nil)
217228
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 {
224235
// GenerateType makes the body of a file implementing a set for type t.
225236
func (g *genDeepCopy) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
226237
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))
228240
g.generateFor(t, sw)
229241
sw.Do("return nil\n", nil)
230242
sw.Do("}\n\n", nil)
@@ -270,7 +282,8 @@ func (g *genDeepCopy) doMap(t *types.Type, sw *generator.SnippetWriter) {
270282
} else {
271283
if g.copyableWithinPackage(t.Elem) {
272284
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))
274287
sw.Do("return err\n", nil)
275288
sw.Do("}\n", nil)
276289
sw.Do("(*out)[key] = *newVal\n", nil)
@@ -298,7 +311,8 @@ func (g *genDeepCopy) doSlice(t *types.Type, sw *generator.SnippetWriter) {
298311
if t.Elem.IsAssignable() {
299312
sw.Do("(*out)[i] = in[i]\n", nil)
300313
} 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))
302316
sw.Do("return err\n", nil)
303317
sw.Do("}\n", nil)
304318
} else {
@@ -330,7 +344,8 @@ func (g *genDeepCopy) doStruct(t *types.Type, sw *generator.SnippetWriter) {
330344
sw.Do("}\n", nil)
331345
case types.Struct:
332346
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)
334349
sw.Do("return err\n", nil)
335350
sw.Do("}\n", nil)
336351
} else {
@@ -364,7 +379,8 @@ func (g *genDeepCopy) doPointer(t *types.Type, sw *generator.SnippetWriter) {
364379
if t.Elem.Kind == types.Builtin {
365380
sw.Do("**out = *in", nil)
366381
} 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))
368384
sw.Do("return err\n", nil)
369385
sw.Do("}\n", nil)
370386
} else {

0 commit comments

Comments
 (0)