Skip to content

Commit 5e13c2d

Browse files
committed
Simplify init of new config instances
1 parent a08eacd commit 5e13c2d

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

pkg/analysis/initializer/initializer.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,16 @@ package initializer
1717

1818
import (
1919
"fmt"
20-
"reflect"
2120

2221
"golang.org/x/tools/go/analysis"
2322
"k8s.io/apimachinery/pkg/util/validation/field"
2423
)
2524

2625
// 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)
2827

2928
// 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
3130

3231
// AnalyzerInitializer is used to initialize analyzers.
3332
type AnalyzerInitializer interface {
@@ -60,7 +59,7 @@ type ConfigurableAnalyzerInitializer interface {
6059
func NewInitializer(name string, analyzer *analysis.Analyzer, isDefault bool) AnalyzerInitializer {
6160
return initializer[any]{
6261
name: name,
63-
initFunc: func(any) (*analysis.Analyzer, error) { return analyzer, nil },
62+
initFunc: func(*any) (*analysis.Analyzer, error) { return analyzer, nil },
6463
isDefault: isDefault,
6564
}
6665
}
@@ -91,7 +90,7 @@ func (i initializer[T]) Name() string {
9190

9291
// Init returns a newly initializr analyzer.
9392
func (i initializer[T]) Init(_ any) (*analysis.Analyzer, error) {
94-
var cfg T
93+
var cfg *T
9594

9695
return i.initFunc(cfg)
9796
}
@@ -109,7 +108,7 @@ type configurableInitializer[T any] struct {
109108

110109
// Init returns a newly initialized analyzer.
111110
func (i configurableInitializer[T]) Init(cfg any) (*analysis.Analyzer, error) {
112-
cfgT, ok := cfg.(T)
111+
cfgT, ok := cfg.(*T)
113112
if !ok {
114113
return nil, fmt.Errorf("failed to initialize analyzer: %w", NewIncorrectTypeError(cfg))
115114
}
@@ -119,12 +118,12 @@ func (i configurableInitializer[T]) Init(cfg any) (*analysis.Analyzer, error) {
119118

120119
// ConfigType returns the type of the config for the linter.
121120
func (i configurableInitializer[T]) ConfigType() any {
122-
return reflect.New(reflect.TypeOf(*new(T)).Elem()).Interface()
121+
return new(T)
123122
}
124123

125124
// ValidateConfig validates the configuration for the initializer.
126125
func (i configurableInitializer[T]) ValidateConfig(cfg any, fld *field.Path) field.ErrorList {
127-
cfgT, ok := cfg.(T)
126+
cfgT, ok := cfg.(*T)
128127
if !ok {
129128
return field.ErrorList{field.InternalError(fld, NewIncorrectTypeError(cfg))}
130129
}

0 commit comments

Comments
 (0)