@@ -17,17 +17,16 @@ package initializer
17
17
18
18
import (
19
19
"fmt"
20
- "reflect"
21
20
22
21
"golang.org/x/tools/go/analysis"
23
22
"k8s.io/apimachinery/pkg/util/validation/field"
24
23
)
25
24
26
25
// InitializerFunc is a function that initializes an Analyzer.
27
- type InitializerFunc [T any ] func (T ) (* analysis.Analyzer , error )
26
+ type InitializerFunc [T any ] func (* T ) (* analysis.Analyzer , error )
28
27
29
28
// ValidateFunc is a function that validates the configuration for an Analyzer.
30
- type ValidateFunc [T any ] func (T , * field.Path ) field.ErrorList
29
+ type ValidateFunc [T any ] func (* T , * field.Path ) field.ErrorList
31
30
32
31
// AnalyzerInitializer is used to initialize analyzers.
33
32
type AnalyzerInitializer interface {
@@ -60,7 +59,7 @@ type ConfigurableAnalyzerInitializer interface {
60
59
func NewInitializer (name string , analyzer * analysis.Analyzer , isDefault bool ) AnalyzerInitializer {
61
60
return initializer [any ]{
62
61
name : name ,
63
- initFunc : func (any ) (* analysis.Analyzer , error ) { return analyzer , nil },
62
+ initFunc : func (* any ) (* analysis.Analyzer , error ) { return analyzer , nil },
64
63
isDefault : isDefault ,
65
64
}
66
65
}
@@ -91,7 +90,7 @@ func (i initializer[T]) Name() string {
91
90
92
91
// Init returns a newly initializr analyzer.
93
92
func (i initializer [T ]) Init (_ any ) (* analysis.Analyzer , error ) {
94
- var cfg T
93
+ var cfg * T
95
94
96
95
return i .initFunc (cfg )
97
96
}
@@ -109,7 +108,7 @@ type configurableInitializer[T any] struct {
109
108
110
109
// Init returns a newly initialized analyzer.
111
110
func (i configurableInitializer [T ]) Init (cfg any ) (* analysis.Analyzer , error ) {
112
- cfgT , ok := cfg .(T )
111
+ cfgT , ok := cfg .(* T )
113
112
if ! ok {
114
113
return nil , fmt .Errorf ("failed to initialize analyzer: %w" , NewIncorrectTypeError (cfg ))
115
114
}
@@ -119,12 +118,12 @@ func (i configurableInitializer[T]) Init(cfg any) (*analysis.Analyzer, error) {
119
118
120
119
// ConfigType returns the type of the config for the linter.
121
120
func (i configurableInitializer [T ]) ConfigType () any {
122
- return reflect . New ( reflect . TypeOf ( * new (T )). Elem ()). Interface ( )
121
+ return new (T )
123
122
}
124
123
125
124
// ValidateConfig validates the configuration for the initializer.
126
125
func (i configurableInitializer [T ]) ValidateConfig (cfg any , fld * field.Path ) field.ErrorList {
127
- cfgT , ok := cfg .(T )
126
+ cfgT , ok := cfg .(* T )
128
127
if ! ok {
129
128
return field.ErrorList {field .InternalError (fld , NewIncorrectTypeError (cfg ))}
130
129
}
0 commit comments