github.com/galaxyobe/gen@v0.0.0-20220910125335-392fa8f0990f/cmd/deepcopy-gen/output_tests/aliases/doc.go (about)

     1  /*
     2  Copyright 2018 The Kubernetes Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  // +gen:deepcopy=package
    18  
    19  // This is a test package.
    20  package aliases
    21  
    22  // Note: the following AliasInterface and AliasAliasInterface +gen:deepcopy:interfaces tags
    23  // are necessary because Golang flattens interface alias in the type system. I.e. an alias J of
    24  // an interface I is actually equivalent to I. So support deepcopies of those aliases, we have
    25  // to implement all aliases of that interface.
    26  
    27  // +gen:deepcopy:interfaces=github.com/galaxyobe/gen/cmd/deepcopy-gen/output_tests/aliases.Interface
    28  // +gen:deepcopy:interfaces=github.com/galaxyobe/gen/cmd/deepcopy-gen/output_tests/aliases.AliasInterface
    29  // +gen:deepcopy:interfaces=github.com/galaxyobe/gen/cmd/deepcopy-gen/output_tests/aliases.AliasAliasInterface
    30  type Foo struct {
    31  	X int
    32  }
    33  
    34  type Interface interface {
    35  	DeepCopyInterface() Interface
    36  	DeepCopyAliasInterface() AliasInterface
    37  	DeepCopyAliasAliasInterface() AliasAliasInterface
    38  }
    39  
    40  type Builtin int
    41  type Slice []int
    42  type Pointer *int
    43  type PointerAlias *Builtin
    44  type Struct Foo
    45  type Map map[string]int
    46  
    47  type FooAlias Foo
    48  type FooSlice []Foo
    49  type FooPointer *Foo
    50  type FooMap map[string]Foo
    51  
    52  type AliasBuiltin Builtin
    53  type AliasSlice Slice
    54  type AliasPointer Pointer
    55  type AliasStruct Struct
    56  type AliasMap Map
    57  
    58  type AliasInterface Interface
    59  type AliasAliasInterface AliasInterface
    60  type AliasInterfaceMap map[string]AliasInterface
    61  type AliasInterfaceSlice []AliasInterface
    62  
    63  // Aliases
    64  type Ttest struct {
    65  	Builtin      Builtin
    66  	Slice        Slice
    67  	Pointer      Pointer
    68  	PointerAlias PointerAlias
    69  	Struct       Struct
    70  	Map          Map
    71  	SliceSlice   []Slice
    72  	MapSlice     map[string]Slice
    73  
    74  	FooAlias   FooAlias
    75  	FooSlice   FooSlice
    76  	FooPointer FooPointer
    77  	FooMap     FooMap
    78  
    79  	AliasBuiltin AliasBuiltin
    80  	AliasSlice   AliasSlice
    81  	AliasPointer AliasPointer
    82  	AliasStruct  AliasStruct
    83  	AliasMap     AliasMap
    84  
    85  	AliasInterface      AliasInterface
    86  	AliasAliasInterface AliasAliasInterface
    87  	AliasInterfaceMap   AliasInterfaceMap
    88  	AliasInterfaceSlice AliasInterfaceSlice
    89  }