mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	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
 | 
						// build script dependencies
 | 
				
			||||||
	_ "github.com/onsi/ginkgo/v2/ginkgo"
 | 
						_ "github.com/onsi/ginkgo/v2/ginkgo"
 | 
				
			||||||
	_ "k8s.io/code-generator/cmd/deepcopy-gen"
 | 
						_ "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"
 | 
				
			||||||
	_ "k8s.io/code-generator/cmd/go-to-protobuf/protoc-gen-gogo"
 | 
						_ "k8s.io/code-generator/cmd/go-to-protobuf/protoc-gen-gogo"
 | 
				
			||||||
	_ "k8s.io/code-generator/cmd/import-boss"
 | 
						_ "k8s.io/code-generator/cmd/import-boss"
 | 
				
			||||||
	_ "k8s.io/gengo/v2/examples/defaulter-gen/generators"
 | 
					 | 
				
			||||||
	_ "k8s.io/kube-openapi/cmd/openapi-gen"
 | 
						_ "k8s.io/kube-openapi/cmd/openapi-gen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// submodule test dependencies
 | 
						// submodule test dependencies
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,6 +51,7 @@
 | 
				
			|||||||
- baseImportPath: "./staging/src/k8s.io/code-generator"
 | 
					- baseImportPath: "./staging/src/k8s.io/code-generator"
 | 
				
			||||||
  ignoredSubTrees:
 | 
					  ignoredSubTrees:
 | 
				
			||||||
  - "./staging/src/k8s.io/code-generator/examples"
 | 
					  - "./staging/src/k8s.io/code-generator/examples"
 | 
				
			||||||
 | 
					  - "./staging/src/k8s.io/code-generator/cmd/defaulter-gen/output_tests"
 | 
				
			||||||
  allowedImports:
 | 
					  allowedImports:
 | 
				
			||||||
  - k8s.io/gengo
 | 
					  - k8s.io/gengo
 | 
				
			||||||
  - k8s.io/code-generator
 | 
					  - k8s.io/code-generator
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,17 +21,20 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/spf13/pflag"
 | 
						"github.com/spf13/pflag"
 | 
				
			||||||
	"k8s.io/gengo/v2/args"
 | 
						"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.
 | 
					// 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.
 | 
					// NewDefaults returns default arguments for the generator.
 | 
				
			||||||
func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
 | 
					func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
 | 
				
			||||||
	genericArgs := args.Default()
 | 
						genericArgs := args.Default()
 | 
				
			||||||
	customArgs := &CustomArgs{}
 | 
						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
 | 
						return genericArgs, customArgs
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -47,7 +50,7 @@ func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Validate checks the given arguments.
 | 
					// Validate checks the given arguments.
 | 
				
			||||||
func Validate(genericArgs *args.GeneratorArgs) error {
 | 
					func Validate(genericArgs *args.GeneratorArgs) error {
 | 
				
			||||||
	custom := genericArgs.CustomArgs.(*generators.CustomArgs)
 | 
						custom := genericArgs.CustomArgs.(*CustomArgs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(custom.OutputFile) == 0 {
 | 
						if len(custom.OutputFile) == 0 {
 | 
				
			||||||
		return fmt.Errorf("--output-file must be specified")
 | 
							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"
 | 
						"github.com/spf13/pflag"
 | 
				
			||||||
	generatorargs "k8s.io/code-generator/cmd/defaulter-gen/args"
 | 
						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/args"
 | 
				
			||||||
	"k8s.io/gengo/v2/examples/defaulter-gen/generators"
 | 
					 | 
				
			||||||
	"k8s.io/klog/v2"
 | 
						"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