Move gengo/examples/defaulter -> code_generator
This includes tests, which all pass. Also fixes a bunch of lint.
This commit is contained in:
@@ -24,10 +24,10 @@ import (
|
||||
// build script dependencies
|
||||
_ "github.com/onsi/ginkgo/v2/ginkgo"
|
||||
_ "k8s.io/code-generator/cmd/deepcopy-gen"
|
||||
_ "k8s.io/code-generator/cmd/defaulter-gen"
|
||||
_ "k8s.io/code-generator/cmd/go-to-protobuf"
|
||||
_ "k8s.io/code-generator/cmd/go-to-protobuf/protoc-gen-gogo"
|
||||
_ "k8s.io/code-generator/cmd/import-boss"
|
||||
_ "k8s.io/gengo/v2/examples/defaulter-gen/generators"
|
||||
_ "k8s.io/kube-openapi/cmd/openapi-gen"
|
||||
|
||||
// submodule test dependencies
|
||||
|
@@ -51,6 +51,7 @@
|
||||
- baseImportPath: "./staging/src/k8s.io/code-generator"
|
||||
ignoredSubTrees:
|
||||
- "./staging/src/k8s.io/code-generator/examples"
|
||||
- "./staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests"
|
||||
allowedImports:
|
||||
- k8s.io/gengo
|
||||
- k8s.io/code-generator
|
||||
|
@@ -21,17 +21,20 @@ import (
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
"k8s.io/gengo/v2/args"
|
||||
"k8s.io/gengo/v2/examples/defaulter-gen/generators"
|
||||
)
|
||||
|
||||
// CustomArgs is used by the gengo framework to pass args specific to this generator.
|
||||
type CustomArgs generators.CustomArgs
|
||||
type CustomArgs struct {
|
||||
OutputFile string
|
||||
ExtraPeerDirs []string // Always consider these as last-ditch possibilities for conversions.
|
||||
GoHeaderFile string
|
||||
}
|
||||
|
||||
// NewDefaults returns default arguments for the generator.
|
||||
func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
|
||||
genericArgs := args.Default()
|
||||
customArgs := &CustomArgs{}
|
||||
genericArgs.CustomArgs = (*generators.CustomArgs)(customArgs) // convert to upstream type to make type-casts work there
|
||||
genericArgs.CustomArgs = (*CustomArgs)(customArgs) // convert to upstream type to make type-casts work there
|
||||
return genericArgs, customArgs
|
||||
}
|
||||
|
||||
@@ -47,7 +50,7 @@ func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) {
|
||||
|
||||
// Validate checks the given arguments.
|
||||
func Validate(genericArgs *args.GeneratorArgs) error {
|
||||
custom := genericArgs.CustomArgs.(*generators.CustomArgs)
|
||||
custom := genericArgs.CustomArgs.(*CustomArgs)
|
||||
|
||||
if len(custom.OutputFile) == 0 {
|
||||
return fmt.Errorf("--output-file must be specified")
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -46,8 +46,8 @@ import (
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
generatorargs "k8s.io/code-generator/cmd/defaulter-gen/args"
|
||||
"k8s.io/code-generator/cmd/defaulter-gen/generators"
|
||||
"k8s.io/gengo/v2/args"
|
||||
"k8s.io/gengo/v2/examples/defaulter-gen/generators"
|
||||
"k8s.io/klog/v2"
|
||||
)
|
||||
|
||||
|
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// +k8s:defaulter-gen=covers
|
||||
|
||||
// This is a test package.
|
||||
package empty // import "k8s.io/code-generator/cmd/defaulter-gen/output_tests/empty"
|
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package empty
|
||||
|
||||
// Only test
|
||||
type Ttest struct {
|
||||
BoolField bool
|
||||
IntField int
|
||||
StringField string
|
||||
FloatField float64
|
||||
}
|
||||
|
||||
type TypeMeta struct {
|
||||
Fortest bool
|
||||
}
|
33
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/empty/zz_generated.defaults.go
generated
Normal file
33
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/empty/zz_generated.defaults.go
generated
Normal file
@@ -0,0 +1,33 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Code generated by defaulter-gen. DO NOT EDIT.
|
||||
|
||||
package empty
|
||||
|
||||
import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// RegisterDefaults adds defaulters functions to the given scheme.
|
||||
// Public to allow building arbitrary schemes.
|
||||
// All generated defaulters are covering - they call all nested defaulters.
|
||||
func RegisterDefaults(scheme *runtime.Scheme) error {
|
||||
return nil
|
||||
}
|
@@ -0,0 +1,27 @@
|
||||
//go:build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright 2024 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Ignore this file to prevent zz_generated for this package
|
||||
|
||||
//go:generate go run k8s.io/code-generator/cmd/defaulter-gen --output-file zz_generated.defaults.go --go-header-file=../../../examples/hack/boilerplate.go.txt k8s.io/code-generator/cmd/defaulter-gen/output_tests/...
|
||||
package outputtests
|
||||
|
||||
import (
|
||||
// For go-generate
|
||||
_ "k8s.io/code-generator/cmd/defaulter-gen/generators"
|
||||
)
|
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
Copyright 2020 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package marker
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
//nolint:unused
|
||||
func addDefaultingFuncs(scheme *runtime.Scheme) error {
|
||||
return RegisterDefaults(scheme)
|
||||
}
|
||||
|
||||
func SetDefaults_DefaultedWithFunction(obj *DefaultedWithFunction) {
|
||||
if obj.S1 == "" {
|
||||
obj.S1 = "default_function"
|
||||
}
|
||||
}
|
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
Copyright 2020 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// +k8s:defaulter-gen=TypeMeta
|
||||
|
||||
// This is a test package.
|
||||
package marker // import "k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker"
|
20
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external/constant.go
vendored
Normal file
20
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external/constant.go
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
Copyright 2024 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package external
|
||||
|
||||
// Used for test with multiple packages of the same name
|
||||
const AConstant string = "AConstantString"
|
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
Copyright 2024 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package external
|
||||
|
||||
// Used for test with multiple packages of the same name
|
||||
const AnotherConstant string = "AnotherConstantString"
|
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
Copyright 2024 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package external2
|
||||
|
||||
type String string
|
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
Copyright 2024 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package external3
|
||||
|
||||
import "k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external2"
|
||||
|
||||
type StringPointer *external2.String
|
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
Copyright 2020 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package marker
|
||||
|
||||
import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
)
|
||||
|
||||
func (in *Defaulted) DeepCopy() *Defaulted {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(Defaulted)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *Defaulted) DeepCopyInto(out *Defaulted) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
func (in *Defaulted) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (in *DefaultedOmitempty) DeepCopy() *DefaultedOmitempty {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DefaultedOmitempty)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *DefaultedOmitempty) DeepCopyInto(out *DefaultedOmitempty) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
func (in *DefaultedOmitempty) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (in *DefaultedWithFunction) DeepCopy() *DefaultedWithFunction {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DefaultedWithFunction)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *DefaultedWithFunction) DeepCopyInto(out *DefaultedWithFunction) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
func (in *DefaultedWithFunction) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (in *Defaulted) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
func (in *DefaultedOmitempty) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
func (in *DefaultedWithFunction) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
func (in *DefaultedWithReference) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
|
||||
func (in *DefaultedWithReference) DeepCopy() *DefaultedWithReference {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DefaultedWithReference)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *DefaultedWithReference) DeepCopyInto(out *DefaultedWithReference) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
func (in *DefaultedWithReference) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
@@ -0,0 +1,412 @@
|
||||
/*
|
||||
Copyright 2020 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package marker
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
|
||||
"k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external"
|
||||
externalexternal "k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external/external"
|
||||
"k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external2"
|
||||
"k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external3"
|
||||
)
|
||||
|
||||
func getPointerFromString(s string) *string {
|
||||
return &s
|
||||
}
|
||||
|
||||
var (
|
||||
defaultInt32 int32 = 32
|
||||
defaultInt64 int64 = 64
|
||||
)
|
||||
|
||||
func Test_Marker(t *testing.T) {
|
||||
testcases := []struct {
|
||||
name string
|
||||
in Defaulted
|
||||
out Defaulted
|
||||
}{
|
||||
{
|
||||
name: "default",
|
||||
in: Defaulted{},
|
||||
out: Defaulted{
|
||||
StringDefault: "bar",
|
||||
StringEmptyDefault: "",
|
||||
StringEmpty: "",
|
||||
StringPointer: getPointerFromString("default"),
|
||||
Int64: &defaultInt64,
|
||||
Int32: &defaultInt32,
|
||||
IntDefault: 1,
|
||||
IntEmptyDefault: 0,
|
||||
IntEmpty: 0,
|
||||
FloatDefault: 0.5,
|
||||
FloatEmptyDefault: 0.0,
|
||||
FloatEmpty: 0.0,
|
||||
List: []Item{
|
||||
getPointerFromString("foo"),
|
||||
getPointerFromString("bar"),
|
||||
},
|
||||
Sub: &SubStruct{
|
||||
S: "foo",
|
||||
I: 5,
|
||||
},
|
||||
OtherSub: SubStruct{
|
||||
S: "",
|
||||
I: 1,
|
||||
},
|
||||
StructList: []SubStruct{
|
||||
{
|
||||
S: "foo1",
|
||||
I: 1,
|
||||
},
|
||||
{
|
||||
S: "foo2",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
PtrStructList: []*SubStruct{
|
||||
{
|
||||
S: "foo1",
|
||||
I: 1,
|
||||
},
|
||||
{
|
||||
S: "foo2",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
StringList: []string{
|
||||
"foo",
|
||||
},
|
||||
Map: map[string]Item{
|
||||
"foo": getPointerFromString("bar"),
|
||||
},
|
||||
StructMap: map[string]SubStruct{
|
||||
"foo": {
|
||||
S: "string",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
PtrStructMap: map[string]*SubStruct{
|
||||
"foo": {
|
||||
S: "string",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
AliasPtr: getPointerFromString("banana"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "values-omitempty",
|
||||
in: Defaulted{
|
||||
StringDefault: "changed",
|
||||
IntDefault: 5,
|
||||
},
|
||||
out: Defaulted{
|
||||
StringDefault: "changed",
|
||||
StringEmptyDefault: "",
|
||||
StringEmpty: "",
|
||||
StringPointer: getPointerFromString("default"),
|
||||
Int64: &defaultInt64,
|
||||
Int32: &defaultInt32,
|
||||
IntDefault: 5,
|
||||
IntEmptyDefault: 0,
|
||||
IntEmpty: 0,
|
||||
FloatDefault: 0.5,
|
||||
FloatEmptyDefault: 0.0,
|
||||
FloatEmpty: 0.0,
|
||||
List: []Item{
|
||||
getPointerFromString("foo"),
|
||||
getPointerFromString("bar"),
|
||||
},
|
||||
Sub: &SubStruct{
|
||||
S: "foo",
|
||||
I: 5,
|
||||
},
|
||||
StructList: []SubStruct{
|
||||
{
|
||||
S: "foo1",
|
||||
I: 1,
|
||||
},
|
||||
{
|
||||
S: "foo2",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
PtrStructList: []*SubStruct{
|
||||
{
|
||||
S: "foo1",
|
||||
I: 1,
|
||||
},
|
||||
{
|
||||
S: "foo2",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
StringList: []string{
|
||||
"foo",
|
||||
},
|
||||
OtherSub: SubStruct{
|
||||
S: "",
|
||||
I: 1,
|
||||
},
|
||||
Map: map[string]Item{
|
||||
"foo": getPointerFromString("bar"),
|
||||
},
|
||||
StructMap: map[string]SubStruct{
|
||||
"foo": {
|
||||
S: "string",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
PtrStructMap: map[string]*SubStruct{
|
||||
"foo": {
|
||||
S: "string",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
AliasPtr: getPointerFromString("banana"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "lists",
|
||||
in: Defaulted{
|
||||
List: []Item{
|
||||
nil,
|
||||
getPointerFromString("bar"),
|
||||
},
|
||||
},
|
||||
out: Defaulted{
|
||||
StringDefault: "bar",
|
||||
StringEmptyDefault: "",
|
||||
StringEmpty: "",
|
||||
StringPointer: getPointerFromString("default"),
|
||||
Int64: &defaultInt64,
|
||||
Int32: &defaultInt32,
|
||||
IntDefault: 1,
|
||||
IntEmptyDefault: 0,
|
||||
IntEmpty: 0,
|
||||
FloatDefault: 0.5,
|
||||
FloatEmptyDefault: 0.0,
|
||||
FloatEmpty: 0.0,
|
||||
List: []Item{
|
||||
getPointerFromString("apple"),
|
||||
getPointerFromString("bar"),
|
||||
},
|
||||
Sub: &SubStruct{
|
||||
S: "foo",
|
||||
I: 5,
|
||||
},
|
||||
StructList: []SubStruct{
|
||||
{
|
||||
S: "foo1",
|
||||
I: 1,
|
||||
},
|
||||
{
|
||||
S: "foo2",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
PtrStructList: []*SubStruct{
|
||||
{
|
||||
S: "foo1",
|
||||
I: 1,
|
||||
},
|
||||
{
|
||||
S: "foo2",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
StringList: []string{
|
||||
"foo",
|
||||
},
|
||||
OtherSub: SubStruct{
|
||||
S: "",
|
||||
I: 1,
|
||||
},
|
||||
Map: map[string]Item{
|
||||
"foo": getPointerFromString("bar"),
|
||||
},
|
||||
StructMap: map[string]SubStruct{
|
||||
"foo": {
|
||||
S: "string",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
PtrStructMap: map[string]*SubStruct{
|
||||
"foo": {
|
||||
S: "string",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
AliasPtr: getPointerFromString("banana"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "stringmap",
|
||||
in: Defaulted{
|
||||
Map: map[string]Item{
|
||||
"foo": nil,
|
||||
"bar": getPointerFromString("banana"),
|
||||
},
|
||||
},
|
||||
out: Defaulted{
|
||||
StringDefault: "bar",
|
||||
StringEmptyDefault: "",
|
||||
StringEmpty: "",
|
||||
StringPointer: getPointerFromString("default"),
|
||||
Int64: &defaultInt64,
|
||||
Int32: &defaultInt32,
|
||||
IntDefault: 1,
|
||||
IntEmptyDefault: 0,
|
||||
IntEmpty: 0,
|
||||
FloatDefault: 0.5,
|
||||
FloatEmptyDefault: 0.0,
|
||||
FloatEmpty: 0.0,
|
||||
List: []Item{
|
||||
getPointerFromString("foo"),
|
||||
getPointerFromString("bar"),
|
||||
},
|
||||
Sub: &SubStruct{
|
||||
S: "foo",
|
||||
I: 5,
|
||||
},
|
||||
StructList: []SubStruct{
|
||||
{
|
||||
S: "foo1",
|
||||
I: 1,
|
||||
},
|
||||
{
|
||||
S: "foo2",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
PtrStructList: []*SubStruct{
|
||||
{
|
||||
S: "foo1",
|
||||
I: 1,
|
||||
},
|
||||
{
|
||||
S: "foo2",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
StringList: []string{
|
||||
"foo",
|
||||
},
|
||||
OtherSub: SubStruct{
|
||||
S: "",
|
||||
I: 1,
|
||||
},
|
||||
Map: map[string]Item{
|
||||
"foo": getPointerFromString("apple"),
|
||||
"bar": getPointerFromString("banana"),
|
||||
},
|
||||
StructMap: map[string]SubStruct{
|
||||
"foo": {
|
||||
S: "string",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
PtrStructMap: map[string]*SubStruct{
|
||||
"foo": {
|
||||
S: "string",
|
||||
I: 1,
|
||||
},
|
||||
},
|
||||
AliasPtr: getPointerFromString("banana"),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testcases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
SetObjectDefaults_Defaulted(&tc.in)
|
||||
if diff := cmp.Diff(tc.out, tc.in); len(diff) > 0 {
|
||||
t.Errorf("Error: Expected and actual output are different \n %s\n", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_DefaultingFunction(t *testing.T) {
|
||||
in := DefaultedWithFunction{}
|
||||
SetObjectDefaults_DefaultedWithFunction(&in)
|
||||
out := DefaultedWithFunction{
|
||||
S1: "default_function",
|
||||
S2: "default_marker",
|
||||
}
|
||||
if diff := cmp.Diff(out, in); len(diff) > 0 {
|
||||
t.Errorf("Error: Expected and actual output are different \n %s\n", diff)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func Test_DefaultingReference(t *testing.T) {
|
||||
dv := DefaultedValueItem(SomeValue)
|
||||
SomeDefault := SomeDefault
|
||||
SomeValue := SomeValue
|
||||
|
||||
ptrVar9 := string(SomeValue)
|
||||
ptrVar8 := &ptrVar9
|
||||
ptrVar7 := (*B1)(&ptrVar8)
|
||||
ptrVar6 := (*B2)(&ptrVar7)
|
||||
ptrVar5 := &ptrVar6
|
||||
ptrVar4 := &ptrVar5
|
||||
ptrVar3 := &ptrVar4
|
||||
ptrVar2 := (*B3)(&ptrVar3)
|
||||
ptrVar1 := &ptrVar2
|
||||
|
||||
var external2Str = external2.String(SomeValue)
|
||||
|
||||
testcases := []struct {
|
||||
name string
|
||||
in DefaultedWithReference
|
||||
out DefaultedWithReference
|
||||
}{
|
||||
{
|
||||
name: "default",
|
||||
in: DefaultedWithReference{},
|
||||
out: DefaultedWithReference{
|
||||
AliasPointerInside: Item(&SomeDefault),
|
||||
AliasOverride: Item(&SomeDefault),
|
||||
AliasConvertDefaultPointer: &dv,
|
||||
AliasPointerDefault: &dv,
|
||||
PointerAliasDefault: Item(getPointerFromString("apple")),
|
||||
AliasNonPointer: SomeValue,
|
||||
AliasPointer: &SomeValue,
|
||||
SymbolReference: SomeDefault,
|
||||
SameNamePackageSymbolReference1: external.AConstant,
|
||||
SameNamePackageSymbolReference2: externalexternal.AnotherConstant,
|
||||
PointerConversion: (*B4)(&ptrVar1),
|
||||
PointerConversionValue: (B4)(ptrVar1),
|
||||
FullyQualifiedLocalSymbol: string(SomeValue),
|
||||
ImportFromAliasCast: external3.StringPointer(&external2Str),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testcases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
SetObjectDefaults_DefaultedWithReference(&tc.in)
|
||||
if diff := cmp.Diff(tc.out, tc.in); len(diff) > 0 {
|
||||
t.Errorf("Error: Expected and actual output are different \n %s\n", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
@@ -0,0 +1,265 @@
|
||||
/*
|
||||
Copyright 2020 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package marker
|
||||
|
||||
import (
|
||||
"k8s.io/code-generator/cmd/defaulter-gen/output_tests/empty"
|
||||
"k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external3"
|
||||
)
|
||||
|
||||
type Defaulted struct {
|
||||
empty.TypeMeta
|
||||
|
||||
// +default="bar"
|
||||
StringDefault string
|
||||
|
||||
// Default is forced to empty string
|
||||
// Specifying the default is a no-op
|
||||
// +default=""
|
||||
StringEmptyDefault string
|
||||
|
||||
// Not specifying a default still defaults for non-omitempty
|
||||
StringEmpty string
|
||||
|
||||
// +default="default"
|
||||
StringPointer *string
|
||||
|
||||
// +default=64
|
||||
Int64 *int64
|
||||
|
||||
// +default=32
|
||||
Int32 *int32
|
||||
|
||||
// +default=1
|
||||
IntDefault int
|
||||
|
||||
// +default=0
|
||||
IntEmptyDefault int
|
||||
|
||||
// Default is forced to 0
|
||||
IntEmpty int
|
||||
|
||||
// +default=0.5
|
||||
FloatDefault float64
|
||||
|
||||
// +default=0.0
|
||||
FloatEmptyDefault float64
|
||||
|
||||
FloatEmpty float64
|
||||
|
||||
// +default=["foo", "bar"]
|
||||
List []Item
|
||||
// +default={"s": "foo", "i": 5}
|
||||
Sub *SubStruct
|
||||
|
||||
//+default=[{"s": "foo1", "i": 1}, {"s": "foo2"}]
|
||||
StructList []SubStruct
|
||||
|
||||
//+default=[{"s": "foo1", "i": 1}, {"s": "foo2"}]
|
||||
PtrStructList []*SubStruct
|
||||
|
||||
//+default=["foo"]
|
||||
StringList []string
|
||||
|
||||
// Default is forced to empty struct
|
||||
OtherSub SubStruct
|
||||
|
||||
// +default={"foo": "bar"}
|
||||
Map map[string]Item
|
||||
|
||||
// +default={"foo": {"S": "string", "I": 1}}
|
||||
StructMap map[string]SubStruct
|
||||
|
||||
// +default={"foo": {"S": "string", "I": 1}}
|
||||
PtrStructMap map[string]*SubStruct
|
||||
|
||||
// A default specified here overrides the default for the Item type
|
||||
// +default="banana"
|
||||
AliasPtr Item
|
||||
}
|
||||
|
||||
type DefaultedOmitempty struct {
|
||||
empty.TypeMeta `json:",omitempty"`
|
||||
|
||||
// +default="bar"
|
||||
StringDefault string `json:",omitempty"`
|
||||
|
||||
// Default is forced to empty string
|
||||
// Specifying the default is a no-op
|
||||
// +default=""
|
||||
StringEmptyDefault string `json:",omitempty"`
|
||||
|
||||
// Not specifying a default still defaults for non-omitempty
|
||||
StringEmpty string `json:",omitempty"`
|
||||
|
||||
// +default="default"
|
||||
StringPointer *string `json:",omitempty"`
|
||||
|
||||
// +default=64
|
||||
Int64 *int64 `json:",omitempty"`
|
||||
|
||||
// +default=32
|
||||
Int32 *int32 `json:",omitempty"`
|
||||
|
||||
// +default=1
|
||||
IntDefault int `json:",omitempty"`
|
||||
|
||||
// +default=0
|
||||
IntEmptyDefault int `json:",omitempty"`
|
||||
|
||||
// Default is forced to 0
|
||||
IntEmpty int `json:",omitempty"`
|
||||
|
||||
// +default=0.5
|
||||
FloatDefault float64 `json:",omitempty"`
|
||||
|
||||
// +default=0.0
|
||||
FloatEmptyDefault float64 `json:",omitempty"`
|
||||
|
||||
FloatEmpty float64 `json:",omitempty"`
|
||||
|
||||
// +default=["foo", "bar"]
|
||||
List []Item `json:",omitempty"`
|
||||
// +default={"s": "foo", "i": 5}
|
||||
Sub *SubStruct `json:",omitempty"`
|
||||
|
||||
//+default=[{"s": "foo1", "i": 1}, {"s": "foo2"}]
|
||||
StructList []SubStruct `json:",omitempty"`
|
||||
|
||||
//+default=[{"s": "foo1", "i": 1}, {"s": "foo2"}]
|
||||
PtrStructList []*SubStruct `json:",omitempty"`
|
||||
|
||||
//+default=["foo"]
|
||||
StringList []string `json:",omitempty"`
|
||||
|
||||
// Default is forced to empty struct
|
||||
OtherSub SubStruct `json:",omitempty"`
|
||||
|
||||
// +default={"foo": "bar"}
|
||||
Map map[string]Item `json:",omitempty"`
|
||||
|
||||
// +default={"foo": {"S": "string", "I": 1}}
|
||||
StructMap map[string]SubStruct `json:",omitempty"`
|
||||
|
||||
// +default={"foo": {"S": "string", "I": 1}}
|
||||
PtrStructMap map[string]*SubStruct `json:",omitempty"`
|
||||
|
||||
// A default specified here overrides the default for the Item type
|
||||
// +default="banana"
|
||||
AliasPtr Item `json:",omitempty"`
|
||||
}
|
||||
|
||||
const SomeDefault = "ACoolConstant"
|
||||
|
||||
// +default="apple"
|
||||
type Item *string
|
||||
|
||||
type ValueItem string
|
||||
|
||||
// +default=ref(SomeValue)
|
||||
type DefaultedValueItem ValueItem
|
||||
type PointerValueItem *DefaultedValueItem
|
||||
|
||||
type ItemDefaultWiped Item
|
||||
|
||||
const SomeValue ValueItem = "Value"
|
||||
|
||||
type SubStruct struct {
|
||||
S string
|
||||
// +default=1
|
||||
I int `json:"I,omitempty"`
|
||||
}
|
||||
|
||||
type DefaultedWithFunction struct {
|
||||
empty.TypeMeta
|
||||
// +default="default_marker"
|
||||
S1 string `json:"S1,omitempty"`
|
||||
// +default="default_marker"
|
||||
S2 string `json:"S2,omitempty"`
|
||||
}
|
||||
|
||||
type DefaultedWithReference struct {
|
||||
empty.TypeMeta
|
||||
|
||||
// Shows that if we have an alias that is a pointer and have a default
|
||||
// that is a value convertible to that pointer we can still use it
|
||||
// +default=ref(SomeValue)
|
||||
AliasConvertDefaultPointer PointerValueItem
|
||||
|
||||
// Shows that default defined on a nested type is not respected through
|
||||
// an alias
|
||||
AliasWipedDefault ItemDefaultWiped
|
||||
|
||||
// A default defined on a pointer-valued alias is respected
|
||||
PointerAliasDefault Item
|
||||
|
||||
// Can have alias that is a pointer to type of constant
|
||||
// +default=ref(SomeDefault)
|
||||
AliasPointerInside Item
|
||||
|
||||
// Can override default specified on an alias
|
||||
// +default=ref(SomeDefault)
|
||||
AliasOverride Item
|
||||
|
||||
// Type-level default is not respected unless a pointer
|
||||
AliasNonPointerDefault DefaultedValueItem `json:",omitempty"`
|
||||
|
||||
// Type-level default is not respected unless a pointer
|
||||
AliasPointerDefault *DefaultedValueItem
|
||||
|
||||
// Can have value typed alias
|
||||
// +default=ref(SomeValue)
|
||||
AliasNonPointer ValueItem `json:",omitempty"`
|
||||
|
||||
// Can have a pointer to an alias whose default is a non-pointer value
|
||||
// +default=ref(SomeValue)
|
||||
AliasPointer *ValueItem `json:",omitempty"`
|
||||
|
||||
// Basic ref usage example
|
||||
// +default=ref(SomeDefault)
|
||||
SymbolReference string `json:",omitempty"`
|
||||
|
||||
// +default=ref(k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external.AConstant)
|
||||
SameNamePackageSymbolReference1 string `json:",omitempty"`
|
||||
|
||||
// +default=ref(k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external/external.AnotherConstant)
|
||||
SameNamePackageSymbolReference2 string `json:",omitempty"`
|
||||
|
||||
// Should convert ValueItem -> string then up to B4 through addressOf and
|
||||
// casting
|
||||
// +default=ref(SomeValue)
|
||||
PointerConversion *B4
|
||||
|
||||
// +default=ref(SomeValue)
|
||||
PointerConversionValue B4
|
||||
|
||||
// +default=ref(k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker.SomeValue)
|
||||
FullyQualifiedLocalSymbol string
|
||||
|
||||
// Construction of external3.StringPointer requires importing external2
|
||||
// Test that generator can handle it
|
||||
// +default=ref(SomeValue)
|
||||
ImportFromAliasCast external3.StringPointer
|
||||
}
|
||||
|
||||
// Super complicated hierarchy of aliases which includes multiple pointers,
|
||||
// and sibling types.
|
||||
type B0 *string
|
||||
type B1 B0
|
||||
type B2 *B1
|
||||
type B3 ****B2
|
||||
type B4 **B3
|
325
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/zz_generated.defaults.go
generated
Normal file
325
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/zz_generated.defaults.go
generated
Normal file
@@ -0,0 +1,325 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Code generated by defaulter-gen. DO NOT EDIT.
|
||||
|
||||
package marker
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
external "k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external"
|
||||
externalexternal "k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external/external"
|
||||
external2 "k8s.io/code-generator/cmd/defaulter-gen/output_tests/marker/external2"
|
||||
)
|
||||
|
||||
// RegisterDefaults adds defaulters functions to the given scheme.
|
||||
// Public to allow building arbitrary schemes.
|
||||
// All generated defaulters are covering - they call all nested defaulters.
|
||||
func RegisterDefaults(scheme *runtime.Scheme) error {
|
||||
scheme.AddTypeDefaultingFunc(&Defaulted{}, func(obj interface{}) { SetObjectDefaults_Defaulted(obj.(*Defaulted)) })
|
||||
scheme.AddTypeDefaultingFunc(&DefaultedOmitempty{}, func(obj interface{}) { SetObjectDefaults_DefaultedOmitempty(obj.(*DefaultedOmitempty)) })
|
||||
scheme.AddTypeDefaultingFunc(&DefaultedWithFunction{}, func(obj interface{}) { SetObjectDefaults_DefaultedWithFunction(obj.(*DefaultedWithFunction)) })
|
||||
scheme.AddTypeDefaultingFunc(&DefaultedWithReference{}, func(obj interface{}) { SetObjectDefaults_DefaultedWithReference(obj.(*DefaultedWithReference)) })
|
||||
return nil
|
||||
}
|
||||
|
||||
func SetObjectDefaults_Defaulted(in *Defaulted) {
|
||||
if in.StringDefault == "" {
|
||||
in.StringDefault = "bar"
|
||||
}
|
||||
if in.StringPointer == nil {
|
||||
var ptrVar1 string = "default"
|
||||
in.StringPointer = &ptrVar1
|
||||
}
|
||||
if in.Int64 == nil {
|
||||
var ptrVar1 int64 = 64
|
||||
in.Int64 = &ptrVar1
|
||||
}
|
||||
if in.Int32 == nil {
|
||||
var ptrVar1 int32 = 32
|
||||
in.Int32 = &ptrVar1
|
||||
}
|
||||
if in.IntDefault == 0 {
|
||||
in.IntDefault = 1
|
||||
}
|
||||
if in.FloatDefault == 0 {
|
||||
in.FloatDefault = 0.5
|
||||
}
|
||||
if in.List == nil {
|
||||
if err := json.Unmarshal([]byte(`["foo", "bar"]`), &in.List); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
for i := range in.List {
|
||||
if in.List[i] == nil {
|
||||
var ptrVar1 string = "apple"
|
||||
in.List[i] = &ptrVar1
|
||||
}
|
||||
}
|
||||
if in.Sub == nil {
|
||||
if err := json.Unmarshal([]byte(`{"s": "foo", "i": 5}`), &in.Sub); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
if in.Sub != nil {
|
||||
if in.Sub.I == 0 {
|
||||
in.Sub.I = 1
|
||||
}
|
||||
}
|
||||
if in.StructList == nil {
|
||||
if err := json.Unmarshal([]byte(`[{"s": "foo1", "i": 1}, {"s": "foo2"}]`), &in.StructList); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
for i := range in.StructList {
|
||||
a := &in.StructList[i]
|
||||
if a.I == 0 {
|
||||
a.I = 1
|
||||
}
|
||||
}
|
||||
if in.PtrStructList == nil {
|
||||
if err := json.Unmarshal([]byte(`[{"s": "foo1", "i": 1}, {"s": "foo2"}]`), &in.PtrStructList); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
for i := range in.PtrStructList {
|
||||
a := in.PtrStructList[i]
|
||||
if a != nil {
|
||||
if a.I == 0 {
|
||||
a.I = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
if in.StringList == nil {
|
||||
if err := json.Unmarshal([]byte(`["foo"]`), &in.StringList); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
if in.OtherSub.I == 0 {
|
||||
in.OtherSub.I = 1
|
||||
}
|
||||
if in.Map == nil {
|
||||
if err := json.Unmarshal([]byte(`{"foo": "bar"}`), &in.Map); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
for i_Map := range in.Map {
|
||||
if in.Map[i_Map] == nil {
|
||||
var ptrVar1 string = "apple"
|
||||
in.Map[i_Map] = &ptrVar1
|
||||
}
|
||||
}
|
||||
if in.StructMap == nil {
|
||||
if err := json.Unmarshal([]byte(`{"foo": {"S": "string", "I": 1}}`), &in.StructMap); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
if in.PtrStructMap == nil {
|
||||
if err := json.Unmarshal([]byte(`{"foo": {"S": "string", "I": 1}}`), &in.PtrStructMap); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
if in.AliasPtr == nil {
|
||||
var ptrVar1 string = "banana"
|
||||
in.AliasPtr = &ptrVar1
|
||||
}
|
||||
}
|
||||
|
||||
func SetObjectDefaults_DefaultedOmitempty(in *DefaultedOmitempty) {
|
||||
if in.StringDefault == "" {
|
||||
in.StringDefault = "bar"
|
||||
}
|
||||
if in.StringPointer == nil {
|
||||
var ptrVar1 string = "default"
|
||||
in.StringPointer = &ptrVar1
|
||||
}
|
||||
if in.Int64 == nil {
|
||||
var ptrVar1 int64 = 64
|
||||
in.Int64 = &ptrVar1
|
||||
}
|
||||
if in.Int32 == nil {
|
||||
var ptrVar1 int32 = 32
|
||||
in.Int32 = &ptrVar1
|
||||
}
|
||||
if in.IntDefault == 0 {
|
||||
in.IntDefault = 1
|
||||
}
|
||||
if in.FloatDefault == 0 {
|
||||
in.FloatDefault = 0.5
|
||||
}
|
||||
if in.List == nil {
|
||||
if err := json.Unmarshal([]byte(`["foo", "bar"]`), &in.List); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
for i := range in.List {
|
||||
if in.List[i] == nil {
|
||||
var ptrVar1 string = "apple"
|
||||
in.List[i] = &ptrVar1
|
||||
}
|
||||
}
|
||||
if in.Sub == nil {
|
||||
if err := json.Unmarshal([]byte(`{"s": "foo", "i": 5}`), &in.Sub); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
if in.Sub != nil {
|
||||
if in.Sub.I == 0 {
|
||||
in.Sub.I = 1
|
||||
}
|
||||
}
|
||||
if in.StructList == nil {
|
||||
if err := json.Unmarshal([]byte(`[{"s": "foo1", "i": 1}, {"s": "foo2"}]`), &in.StructList); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
for i := range in.StructList {
|
||||
a := &in.StructList[i]
|
||||
if a.I == 0 {
|
||||
a.I = 1
|
||||
}
|
||||
}
|
||||
if in.PtrStructList == nil {
|
||||
if err := json.Unmarshal([]byte(`[{"s": "foo1", "i": 1}, {"s": "foo2"}]`), &in.PtrStructList); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
for i := range in.PtrStructList {
|
||||
a := in.PtrStructList[i]
|
||||
if a != nil {
|
||||
if a.I == 0 {
|
||||
a.I = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
if in.StringList == nil {
|
||||
if err := json.Unmarshal([]byte(`["foo"]`), &in.StringList); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
if in.OtherSub.I == 0 {
|
||||
in.OtherSub.I = 1
|
||||
}
|
||||
if in.Map == nil {
|
||||
if err := json.Unmarshal([]byte(`{"foo": "bar"}`), &in.Map); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
for i_Map := range in.Map {
|
||||
if in.Map[i_Map] == nil {
|
||||
var ptrVar1 string = "apple"
|
||||
in.Map[i_Map] = &ptrVar1
|
||||
}
|
||||
}
|
||||
if in.StructMap == nil {
|
||||
if err := json.Unmarshal([]byte(`{"foo": {"S": "string", "I": 1}}`), &in.StructMap); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
if in.PtrStructMap == nil {
|
||||
if err := json.Unmarshal([]byte(`{"foo": {"S": "string", "I": 1}}`), &in.PtrStructMap); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
if in.AliasPtr == nil {
|
||||
var ptrVar1 string = "banana"
|
||||
in.AliasPtr = &ptrVar1
|
||||
}
|
||||
}
|
||||
|
||||
func SetObjectDefaults_DefaultedWithFunction(in *DefaultedWithFunction) {
|
||||
SetDefaults_DefaultedWithFunction(in)
|
||||
if in.S1 == "" {
|
||||
in.S1 = "default_marker"
|
||||
}
|
||||
if in.S2 == "" {
|
||||
in.S2 = "default_marker"
|
||||
}
|
||||
}
|
||||
|
||||
func SetObjectDefaults_DefaultedWithReference(in *DefaultedWithReference) {
|
||||
if in.AliasConvertDefaultPointer == nil {
|
||||
ptrVar1 := DefaultedValueItem(SomeValue)
|
||||
in.AliasConvertDefaultPointer = &ptrVar1
|
||||
}
|
||||
if in.PointerAliasDefault == nil {
|
||||
var ptrVar1 string = "apple"
|
||||
in.PointerAliasDefault = &ptrVar1
|
||||
}
|
||||
if in.AliasPointerInside == nil {
|
||||
ptrVar1 := string(SomeDefault)
|
||||
in.AliasPointerInside = &ptrVar1
|
||||
}
|
||||
if in.AliasOverride == nil {
|
||||
ptrVar1 := string(SomeDefault)
|
||||
in.AliasOverride = &ptrVar1
|
||||
}
|
||||
if in.AliasPointerDefault == nil {
|
||||
ptrVar1 := DefaultedValueItem(SomeValue)
|
||||
in.AliasPointerDefault = &ptrVar1
|
||||
}
|
||||
if in.AliasNonPointer == "" {
|
||||
in.AliasNonPointer = ValueItem(SomeValue)
|
||||
}
|
||||
if in.AliasPointer == nil {
|
||||
ptrVar1 := ValueItem(SomeValue)
|
||||
in.AliasPointer = &ptrVar1
|
||||
}
|
||||
if in.SymbolReference == "" {
|
||||
in.SymbolReference = string(SomeDefault)
|
||||
}
|
||||
if in.SameNamePackageSymbolReference1 == "" {
|
||||
in.SameNamePackageSymbolReference1 = string(external.AConstant)
|
||||
}
|
||||
if in.SameNamePackageSymbolReference2 == "" {
|
||||
in.SameNamePackageSymbolReference2 = string(externalexternal.AnotherConstant)
|
||||
}
|
||||
if in.PointerConversion == nil {
|
||||
ptrVar9 := string(SomeValue)
|
||||
ptrVar8 := &ptrVar9
|
||||
ptrVar7 := (*B1)(&ptrVar8)
|
||||
ptrVar6 := (*B2)(&ptrVar7)
|
||||
ptrVar5 := &ptrVar6
|
||||
ptrVar4 := &ptrVar5
|
||||
ptrVar3 := &ptrVar4
|
||||
ptrVar2 := (*B3)(&ptrVar3)
|
||||
ptrVar1 := &ptrVar2
|
||||
in.PointerConversion = (*B4)(&ptrVar1)
|
||||
}
|
||||
if in.PointerConversionValue == nil {
|
||||
ptrVar8 := string(SomeValue)
|
||||
ptrVar7 := &ptrVar8
|
||||
ptrVar6 := (*B1)(&ptrVar7)
|
||||
ptrVar5 := (*B2)(&ptrVar6)
|
||||
ptrVar4 := &ptrVar5
|
||||
ptrVar3 := &ptrVar4
|
||||
ptrVar2 := &ptrVar3
|
||||
ptrVar1 := (*B3)(&ptrVar2)
|
||||
in.PointerConversionValue = &ptrVar1
|
||||
}
|
||||
if in.FullyQualifiedLocalSymbol == "" {
|
||||
in.FullyQualifiedLocalSymbol = string(SomeValue)
|
||||
}
|
||||
if in.ImportFromAliasCast == nil {
|
||||
ptrVar1 := external2.String(SomeValue)
|
||||
in.ImportFromAliasCast = &ptrVar1
|
||||
}
|
||||
}
|
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package pointer
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
//nolint:unused
|
||||
func addDefaultingFuncs(scheme *runtime.Scheme) error {
|
||||
return RegisterDefaults(scheme)
|
||||
}
|
||||
|
||||
func SetDefaults_Tpointer(obj *Tpointer) {
|
||||
if obj.BoolField == nil {
|
||||
obj.BoolField = new(bool)
|
||||
*obj.BoolField = true
|
||||
}
|
||||
}
|
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// +k8s:defaulter-gen=TypeMeta
|
||||
|
||||
// This is a test package.
|
||||
package pointer // import "k8s.io/code-generator/cmd/defaulter-gen/output_tests/pointer"
|
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
Copyright 2023 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package pointer
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
)
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *Tpointer) DeepCopyInto(out *Tpointer) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
if in.BoolField != nil {
|
||||
in, out := &in.BoolField, &out.BoolField
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tpointer.
|
||||
func (in *Tpointer) DeepCopy() *Tpointer {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(Tpointer)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *Tpointer) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *Ttest) DeepCopyInto(out *Ttest) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.NTP.DeepCopyInto(&out.NTP)
|
||||
if in.Tp != nil {
|
||||
in, out := &in.Tp, &out.Tp
|
||||
*out = new(Tpointer)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Ttest.
|
||||
func (in *Ttest) DeepCopy() *Ttest {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(Ttest)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *Ttest) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (in *Tpointer) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
func (in *Ttest) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package pointer
|
||||
|
||||
import (
|
||||
"k8s.io/code-generator/cmd/defaulter-gen/output_tests/empty"
|
||||
)
|
||||
|
||||
type Tpointer struct {
|
||||
empty.TypeMeta
|
||||
BoolField *bool
|
||||
}
|
||||
|
||||
// Only test
|
||||
type Ttest struct {
|
||||
empty.TypeMeta
|
||||
NTP Tpointer
|
||||
Tp *Tpointer
|
||||
}
|
46
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/pointer/zz_generated.defaults.go
generated
Normal file
46
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/pointer/zz_generated.defaults.go
generated
Normal file
@@ -0,0 +1,46 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Code generated by defaulter-gen. DO NOT EDIT.
|
||||
|
||||
package pointer
|
||||
|
||||
import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// RegisterDefaults adds defaulters functions to the given scheme.
|
||||
// Public to allow building arbitrary schemes.
|
||||
// All generated defaulters are covering - they call all nested defaulters.
|
||||
func RegisterDefaults(scheme *runtime.Scheme) error {
|
||||
scheme.AddTypeDefaultingFunc(&Tpointer{}, func(obj interface{}) { SetObjectDefaults_Tpointer(obj.(*Tpointer)) })
|
||||
scheme.AddTypeDefaultingFunc(&Ttest{}, func(obj interface{}) { SetObjectDefaults_Ttest(obj.(*Ttest)) })
|
||||
return nil
|
||||
}
|
||||
|
||||
func SetObjectDefaults_Tpointer(in *Tpointer) {
|
||||
SetDefaults_Tpointer(in)
|
||||
}
|
||||
|
||||
func SetObjectDefaults_Ttest(in *Ttest) {
|
||||
SetObjectDefaults_Tpointer(&in.NTP)
|
||||
if in.Tp != nil {
|
||||
SetObjectDefaults_Tpointer(in.Tp)
|
||||
}
|
||||
}
|
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package slices
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
//nolint:unused
|
||||
func addDefaultingFuncs(scheme *runtime.Scheme) error {
|
||||
return RegisterDefaults(scheme)
|
||||
}
|
||||
|
||||
func SetDefaults_Ttest(obj *Ttest) {
|
||||
if obj.BoolField == nil {
|
||||
obj.BoolField = new(bool)
|
||||
*obj.BoolField = true
|
||||
}
|
||||
}
|
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// +k8s:defaulter-gen=TypeMeta
|
||||
|
||||
// This is a test package.
|
||||
package slices // import "k8s.io/code-generator/cmd/defaulter-gen/output_tests/slices"
|
@@ -0,0 +1,118 @@
|
||||
/*
|
||||
Copyright 2023 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package slices
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
)
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *Ttest) DeepCopyInto(out *Ttest) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
if in.BoolField != nil {
|
||||
in, out := &in.BoolField, &out.BoolField
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Ttest.
|
||||
func (in *Ttest) DeepCopy() *Ttest {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(Ttest)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *Ttest) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *TtestList) DeepCopyInto(out *TtestList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]Ttest, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TtestList.
|
||||
func (in *TtestList) DeepCopy() *TtestList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(TtestList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *TtestList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *TtestPointerList) DeepCopyInto(out *TtestPointerList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]*Ttest, len(*in))
|
||||
for i := range *in {
|
||||
if (*in)[i] != nil {
|
||||
in, out := &(*in)[i], &(*out)[i]
|
||||
*out = new(Ttest)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TtestPointerList.
|
||||
func (in *TtestPointerList) DeepCopy() *TtestPointerList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(TtestPointerList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *TtestPointerList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (in *Ttest) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
func (in *TtestList) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
func (in *TtestPointerList) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package slices
|
||||
|
||||
import (
|
||||
"k8s.io/code-generator/cmd/defaulter-gen/output_tests/empty"
|
||||
)
|
||||
|
||||
// Only test
|
||||
type Ttest struct {
|
||||
empty.TypeMeta
|
||||
BoolField *bool
|
||||
}
|
||||
|
||||
type TtestList struct {
|
||||
empty.TypeMeta
|
||||
Items []Ttest
|
||||
}
|
||||
|
||||
type TtestPointerList struct {
|
||||
empty.TypeMeta
|
||||
Items []*Ttest
|
||||
}
|
56
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/slices/zz_generated.defaults.go
generated
Normal file
56
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/slices/zz_generated.defaults.go
generated
Normal file
@@ -0,0 +1,56 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Code generated by defaulter-gen. DO NOT EDIT.
|
||||
|
||||
package slices
|
||||
|
||||
import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// RegisterDefaults adds defaulters functions to the given scheme.
|
||||
// Public to allow building arbitrary schemes.
|
||||
// All generated defaulters are covering - they call all nested defaulters.
|
||||
func RegisterDefaults(scheme *runtime.Scheme) error {
|
||||
scheme.AddTypeDefaultingFunc(&Ttest{}, func(obj interface{}) { SetObjectDefaults_Ttest(obj.(*Ttest)) })
|
||||
scheme.AddTypeDefaultingFunc(&TtestList{}, func(obj interface{}) { SetObjectDefaults_TtestList(obj.(*TtestList)) })
|
||||
scheme.AddTypeDefaultingFunc(&TtestPointerList{}, func(obj interface{}) { SetObjectDefaults_TtestPointerList(obj.(*TtestPointerList)) })
|
||||
return nil
|
||||
}
|
||||
|
||||
func SetObjectDefaults_Ttest(in *Ttest) {
|
||||
SetDefaults_Ttest(in)
|
||||
}
|
||||
|
||||
func SetObjectDefaults_TtestList(in *TtestList) {
|
||||
for i := range in.Items {
|
||||
a := &in.Items[i]
|
||||
SetObjectDefaults_Ttest(a)
|
||||
}
|
||||
}
|
||||
|
||||
func SetObjectDefaults_TtestPointerList(in *TtestPointerList) {
|
||||
for i := range in.Items {
|
||||
a := in.Items[i]
|
||||
if a != nil {
|
||||
SetObjectDefaults_Ttest(a)
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package wholepkg
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
//nolint:unused
|
||||
func addDefaultingFuncs(scheme *runtime.Scheme) error {
|
||||
return RegisterDefaults(scheme)
|
||||
}
|
||||
|
||||
func SetDefaults_StructPrimitives(obj *StructPrimitives) {
|
||||
if obj.BoolField == nil {
|
||||
obj.BoolField = new(bool)
|
||||
*obj.BoolField = true
|
||||
}
|
||||
}
|
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// +k8s:defaulter-gen=TypeMeta
|
||||
|
||||
// This is a test package.
|
||||
package wholepkg // import "k8s.io/code-generator/cmd/defaulter-gen/output_tests/wholepkg"
|
@@ -0,0 +1,315 @@
|
||||
/*
|
||||
Copyright 2023 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package wholepkg
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
)
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *StructEverything) DeepCopyInto(out *StructEverything) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
if in.BoolPtrField != nil {
|
||||
in, out := &in.BoolPtrField, &out.BoolPtrField
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
if in.IntPtrField != nil {
|
||||
in, out := &in.IntPtrField, &out.IntPtrField
|
||||
*out = new(int)
|
||||
**out = **in
|
||||
}
|
||||
if in.StringPtrField != nil {
|
||||
in, out := &in.StringPtrField, &out.StringPtrField
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.FloatPtrField != nil {
|
||||
in, out := &in.FloatPtrField, &out.FloatPtrField
|
||||
*out = new(float64)
|
||||
**out = **in
|
||||
}
|
||||
in.PointerStructField.DeepCopyInto(&out.PointerStructField)
|
||||
if in.SliceBoolField != nil {
|
||||
in, out := &in.SliceBoolField, &out.SliceBoolField
|
||||
*out = make([]bool, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.SliceByteField != nil {
|
||||
in, out := &in.SliceByteField, &out.SliceByteField
|
||||
*out = make([]byte, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.SliceIntField != nil {
|
||||
in, out := &in.SliceIntField, &out.SliceIntField
|
||||
*out = make([]int, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.SliceStringField != nil {
|
||||
in, out := &in.SliceStringField, &out.SliceStringField
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.SliceFloatField != nil {
|
||||
in, out := &in.SliceFloatField, &out.SliceFloatField
|
||||
*out = make([]float64, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
in.SlicesStructField.DeepCopyInto(&out.SlicesStructField)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StructEverything.
|
||||
func (in *StructEverything) DeepCopy() *StructEverything {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(StructEverything)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *StructEverything) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *StructPointer) DeepCopyInto(out *StructPointer) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.PointerStructPrimitivesField.DeepCopyInto(&out.PointerStructPrimitivesField)
|
||||
if in.PointerPointerStructPrimitivesField != nil {
|
||||
in, out := &in.PointerPointerStructPrimitivesField, &out.PointerPointerStructPrimitivesField
|
||||
*out = new(StructPrimitives)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
in.PointerStructPrimitivesAliasField.DeepCopyInto(&out.PointerStructPrimitivesAliasField)
|
||||
in.PointerPointerStructPrimitivesAliasField.DeepCopyInto(&out.PointerPointerStructPrimitivesAliasField)
|
||||
in.PointerStructStructPrimitives.DeepCopyInto(&out.PointerStructStructPrimitives)
|
||||
if in.PointerPointerStructStructPrimitives != nil {
|
||||
in, out := &in.PointerPointerStructStructPrimitives, &out.PointerPointerStructStructPrimitives
|
||||
*out = new(StructStructPrimitives)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StructPointer.
|
||||
func (in *StructPointer) DeepCopy() *StructPointer {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(StructPointer)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *StructPointer) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *StructPrimitives) DeepCopyInto(out *StructPrimitives) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
if in.BoolField != nil {
|
||||
in, out := &in.BoolField, &out.BoolField
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
if in.IntField != nil {
|
||||
in, out := &in.IntField, &out.IntField
|
||||
*out = new(int)
|
||||
**out = **in
|
||||
}
|
||||
if in.StringField != nil {
|
||||
in, out := &in.StringField, &out.StringField
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.FloatField != nil {
|
||||
in, out := &in.FloatField, &out.FloatField
|
||||
*out = new(float64)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StructPrimitives.
|
||||
func (in *StructPrimitives) DeepCopy() *StructPrimitives {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(StructPrimitives)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *StructPrimitives) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *StructPrimitivesAlias) DeepCopyInto(out *StructPrimitivesAlias) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
if in.BoolField != nil {
|
||||
in, out := &in.BoolField, &out.BoolField
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
if in.IntField != nil {
|
||||
in, out := &in.IntField, &out.IntField
|
||||
*out = new(int)
|
||||
**out = **in
|
||||
}
|
||||
if in.StringField != nil {
|
||||
in, out := &in.StringField, &out.StringField
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.FloatField != nil {
|
||||
in, out := &in.FloatField, &out.FloatField
|
||||
*out = new(float64)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StructPrimitivesAlias.
|
||||
func (in *StructPrimitivesAlias) DeepCopy() *StructPrimitivesAlias {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(StructPrimitivesAlias)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *StructSlices) DeepCopyInto(out *StructSlices) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
if in.SliceStructPrimitivesField != nil {
|
||||
in, out := &in.SliceStructPrimitivesField, &out.SliceStructPrimitivesField
|
||||
*out = make([]StructPrimitives, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
if in.SlicePointerStructPrimitivesField != nil {
|
||||
in, out := &in.SlicePointerStructPrimitivesField, &out.SlicePointerStructPrimitivesField
|
||||
*out = make([]*StructPrimitives, len(*in))
|
||||
for i := range *in {
|
||||
if (*in)[i] != nil {
|
||||
in, out := &(*in)[i], &(*out)[i]
|
||||
*out = new(StructPrimitives)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
}
|
||||
}
|
||||
if in.SliceStructPrimitivesAliasField != nil {
|
||||
in, out := &in.SliceStructPrimitivesAliasField, &out.SliceStructPrimitivesAliasField
|
||||
*out = make([]StructPrimitivesAlias, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
if in.SlicePointerStructPrimitivesAliasField != nil {
|
||||
in, out := &in.SlicePointerStructPrimitivesAliasField, &out.SlicePointerStructPrimitivesAliasField
|
||||
*out = make([]*StructPrimitivesAlias, len(*in))
|
||||
for i := range *in {
|
||||
if (*in)[i] != nil {
|
||||
in, out := &(*in)[i], &(*out)[i]
|
||||
*out = new(StructPrimitivesAlias)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
}
|
||||
}
|
||||
if in.SliceStructStructPrimitives != nil {
|
||||
in, out := &in.SliceStructStructPrimitives, &out.SliceStructStructPrimitives
|
||||
*out = make([]StructStructPrimitives, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
if in.SlicePointerStructStructPrimitives != nil {
|
||||
in, out := &in.SlicePointerStructStructPrimitives, &out.SlicePointerStructStructPrimitives
|
||||
*out = make([]*StructStructPrimitives, len(*in))
|
||||
for i := range *in {
|
||||
if (*in)[i] != nil {
|
||||
in, out := &(*in)[i], &(*out)[i]
|
||||
*out = new(StructStructPrimitives)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StructSlices.
|
||||
func (in *StructSlices) DeepCopy() *StructSlices {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(StructSlices)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *StructSlices) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *StructStructPrimitives) DeepCopyInto(out *StructStructPrimitives) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.StructField.DeepCopyInto(&out.StructField)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StructStructPrimitives.
|
||||
func (in *StructStructPrimitives) DeepCopy() *StructStructPrimitives {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(StructStructPrimitives)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
func (in *StructStructPrimitives) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (in *StructEverything) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
func (in *StructPointer) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
func (in *StructPrimitives) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
func (in *StructSlices) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||
func (in *StructStructPrimitives) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package wholepkg
|
||||
|
||||
import (
|
||||
"k8s.io/code-generator/cmd/defaulter-gen/output_tests/empty"
|
||||
)
|
||||
|
||||
// Only primitives
|
||||
type StructPrimitives struct {
|
||||
empty.TypeMeta
|
||||
BoolField *bool
|
||||
IntField *int
|
||||
StringField *string
|
||||
FloatField *float64
|
||||
}
|
||||
type StructPrimitivesAlias StructPrimitives
|
||||
|
||||
type StructStructPrimitives struct {
|
||||
empty.TypeMeta
|
||||
StructField StructPrimitives
|
||||
}
|
||||
|
||||
// Pointer
|
||||
type StructPointer struct {
|
||||
empty.TypeMeta
|
||||
PointerStructPrimitivesField StructPrimitives
|
||||
PointerPointerStructPrimitivesField *StructPrimitives
|
||||
PointerStructPrimitivesAliasField StructPrimitivesAlias
|
||||
PointerPointerStructPrimitivesAliasField StructPrimitivesAlias
|
||||
PointerStructStructPrimitives StructStructPrimitives
|
||||
PointerPointerStructStructPrimitives *StructStructPrimitives
|
||||
}
|
||||
|
||||
// Slices
|
||||
type StructSlices struct {
|
||||
empty.TypeMeta
|
||||
SliceStructPrimitivesField []StructPrimitives
|
||||
SlicePointerStructPrimitivesField []*StructPrimitives
|
||||
SliceStructPrimitivesAliasField []StructPrimitivesAlias
|
||||
SlicePointerStructPrimitivesAliasField []*StructPrimitivesAlias
|
||||
SliceStructStructPrimitives []StructStructPrimitives
|
||||
SlicePointerStructStructPrimitives []*StructStructPrimitives
|
||||
}
|
||||
|
||||
// Everything
|
||||
type StructEverything struct {
|
||||
empty.TypeMeta
|
||||
BoolPtrField *bool
|
||||
IntPtrField *int
|
||||
StringPtrField *string
|
||||
FloatPtrField *float64
|
||||
PointerStructField StructPointer
|
||||
SliceBoolField []bool
|
||||
SliceByteField []byte
|
||||
SliceIntField []int
|
||||
SliceStringField []string
|
||||
SliceFloatField []float64
|
||||
SlicesStructField StructSlices
|
||||
}
|
85
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/wholepkg/zz_generated.defaults.go
generated
Normal file
85
staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests/wholepkg/zz_generated.defaults.go
generated
Normal file
@@ -0,0 +1,85 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Code generated by defaulter-gen. DO NOT EDIT.
|
||||
|
||||
package wholepkg
|
||||
|
||||
import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// RegisterDefaults adds defaulters functions to the given scheme.
|
||||
// Public to allow building arbitrary schemes.
|
||||
// All generated defaulters are covering - they call all nested defaulters.
|
||||
func RegisterDefaults(scheme *runtime.Scheme) error {
|
||||
scheme.AddTypeDefaultingFunc(&StructEverything{}, func(obj interface{}) { SetObjectDefaults_StructEverything(obj.(*StructEverything)) })
|
||||
scheme.AddTypeDefaultingFunc(&StructPointer{}, func(obj interface{}) { SetObjectDefaults_StructPointer(obj.(*StructPointer)) })
|
||||
scheme.AddTypeDefaultingFunc(&StructPrimitives{}, func(obj interface{}) { SetObjectDefaults_StructPrimitives(obj.(*StructPrimitives)) })
|
||||
scheme.AddTypeDefaultingFunc(&StructSlices{}, func(obj interface{}) { SetObjectDefaults_StructSlices(obj.(*StructSlices)) })
|
||||
scheme.AddTypeDefaultingFunc(&StructStructPrimitives{}, func(obj interface{}) { SetObjectDefaults_StructStructPrimitives(obj.(*StructStructPrimitives)) })
|
||||
return nil
|
||||
}
|
||||
|
||||
func SetObjectDefaults_StructEverything(in *StructEverything) {
|
||||
SetObjectDefaults_StructPointer(&in.PointerStructField)
|
||||
SetObjectDefaults_StructSlices(&in.SlicesStructField)
|
||||
}
|
||||
|
||||
func SetObjectDefaults_StructPointer(in *StructPointer) {
|
||||
SetObjectDefaults_StructPrimitives(&in.PointerStructPrimitivesField)
|
||||
if in.PointerPointerStructPrimitivesField != nil {
|
||||
SetObjectDefaults_StructPrimitives(in.PointerPointerStructPrimitivesField)
|
||||
}
|
||||
SetObjectDefaults_StructStructPrimitives(&in.PointerStructStructPrimitives)
|
||||
if in.PointerPointerStructStructPrimitives != nil {
|
||||
SetObjectDefaults_StructStructPrimitives(in.PointerPointerStructStructPrimitives)
|
||||
}
|
||||
}
|
||||
|
||||
func SetObjectDefaults_StructPrimitives(in *StructPrimitives) {
|
||||
SetDefaults_StructPrimitives(in)
|
||||
}
|
||||
|
||||
func SetObjectDefaults_StructSlices(in *StructSlices) {
|
||||
for i := range in.SliceStructPrimitivesField {
|
||||
a := &in.SliceStructPrimitivesField[i]
|
||||
SetObjectDefaults_StructPrimitives(a)
|
||||
}
|
||||
for i := range in.SlicePointerStructPrimitivesField {
|
||||
a := in.SlicePointerStructPrimitivesField[i]
|
||||
if a != nil {
|
||||
SetObjectDefaults_StructPrimitives(a)
|
||||
}
|
||||
}
|
||||
for i := range in.SliceStructStructPrimitives {
|
||||
a := &in.SliceStructStructPrimitives[i]
|
||||
SetObjectDefaults_StructStructPrimitives(a)
|
||||
}
|
||||
for i := range in.SlicePointerStructStructPrimitives {
|
||||
a := in.SlicePointerStructStructPrimitives[i]
|
||||
if a != nil {
|
||||
SetObjectDefaults_StructStructPrimitives(a)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func SetObjectDefaults_StructStructPrimitives(in *StructStructPrimitives) {
|
||||
SetObjectDefaults_StructPrimitives(&in.StructField)
|
||||
}
|
Reference in New Issue
Block a user