Skip to content

Commit 8bbbb5b

Browse files
committed
Drop IsConfigurable from initializer interface
1 parent 6c3100b commit 8bbbb5b

File tree

2 files changed

+13
-32
lines changed

2 files changed

+13
-32
lines changed

pkg/analysis/initializer/initializer.go

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@ type AnalyzerInitializer interface {
3535
// It will be passed the complete LintersConfig and is expected to rely only on its own configuration.
3636
Init(any) (*analysis.Analyzer, error)
3737

38-
// IsConfigurable determines whether or not the initializer expects to be provided a config.
39-
// When true, the initializer should also match the ConfigurableAnalyzerInitializer interface.
40-
IsConfigurable() bool
41-
4238
// Default determines whether the inializer intializes an analyzer that should be
4339
// on by default, or not.
4440
Default() bool
@@ -96,12 +92,6 @@ func (i initializer) Init(_ any) (*analysis.Analyzer, error) {
9692
return i.initFunc(nil)
9793
}
9894

99-
// IsConfigurable determines whether or not to expect this initializer to
100-
// be able to be configured with custom configuration.
101-
func (i initializer) IsConfigurable() bool {
102-
return false
103-
}
104-
10595
// Default determines whether this initializer should be enabled by default or not.
10696
func (i initializer) Default() bool {
10797
return i.isDefault
@@ -119,12 +109,6 @@ func (i configurableInitializer) Init(cfg any) (*analysis.Analyzer, error) {
119109
return i.initFunc(cfg)
120110
}
121111

122-
// IsConfigurable determines whether or not to expect this initializer to
123-
// be able to be configured with custom configuration.
124-
func (i configurableInitializer) IsConfigurable() bool {
125-
return true
126-
}
127-
128112
// ConfigType returns the type of the config for the linter.
129113
func (i configurableInitializer) ConfigType() any {
130114
return i.configTypeFunc()

pkg/analysis/registry.go

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,10 @@ func (r *registry) InitializeLinters(cfg config.Linters, lintersCfg config.Linte
126126
for _, init := range r.getEnabledInitializers(cfg) {
127127
var linterConfig any
128128

129-
if init.IsConfigurable() {
129+
if ci, ok := isConfigurable(init); ok {
130130
var err error
131131

132-
linterConfig, err = getLinterTypedConfig(init, lintersCfg)
132+
linterConfig, err = getLinterTypedConfig(ci, lintersCfg)
133133
if err != nil {
134134
errs = append(errs, fmt.Errorf("failed to get linter config: %w", err))
135135
}
@@ -154,18 +154,13 @@ func (r *registry) validateLintersConfig(cfg config.Linters, lintersCfg config.L
154154
validatedLinters := sets.New[string]()
155155

156156
for _, init := range r.getEnabledInitializers(cfg) {
157-
if init.IsConfigurable() {
158-
linterConfig, err := getLinterTypedConfig(init, lintersCfg)
157+
if ci, ok := isConfigurable(init); ok {
158+
linterConfig, err := getLinterTypedConfig(ci, lintersCfg)
159159
if err != nil {
160160
fieldErrors = append(fieldErrors, field.Invalid(fieldPath.Child(init.Name()), linterConfig, err.Error()))
161161
continue
162162
}
163163

164-
ci, ok := init.(initializer.ConfigurableAnalyzerInitializer)
165-
if !ok {
166-
panic(fmt.Sprintf("Analyzer %s claims to be configurable but does not implement the ConfigurableAnalyzerInitializer interface", init.Name()))
167-
}
168-
169164
fieldErrors = append(fieldErrors, ci.ValidateConfig(linterConfig, fieldPath.Child(init.Name()))...)
170165

171166
validatedLinters.Insert(init.Name())
@@ -198,13 +193,8 @@ func (r *registry) getEnabledInitializers(cfg config.Linters) []initializer.Anal
198193
}
199194

200195
// getLinterTypedConfig returns the typed config for a linter.
201-
func getLinterTypedConfig(init initializer.AnalyzerInitializer, lintersCfg config.LintersConfig) (any, error) {
202-
ci, ok := init.(initializer.ConfigurableAnalyzerInitializer)
203-
if !ok {
204-
panic(fmt.Sprintf("Analyzer %s claims to be configurable but does not implement the ConfigurableAnalyzerInitializer interface", init.Name()))
205-
}
206-
207-
rawConfig, ok := getConfigByName(init.Name(), lintersCfg)
196+
func getLinterTypedConfig(ci initializer.ConfigurableAnalyzerInitializer, lintersCfg config.LintersConfig) (any, error) {
197+
rawConfig, ok := getConfigByName(ci.Name(), lintersCfg)
208198
if !ok {
209199
return ci.ConfigType(), nil
210200
}
@@ -257,3 +247,10 @@ func validateUnusedLinters(lintersCfg config.LintersConfig, validatedLinters set
257247

258248
return fieldErrors
259249
}
250+
251+
// isConfigurable determines whether or not the initializer expects to be provided a config.
252+
// When true, the initializer should also match the ConfigurableAnalyzerInitializer interface.
253+
func isConfigurable(init initializer.AnalyzerInitializer) (initializer.ConfigurableAnalyzerInitializer, bool) {
254+
ci, ok := init.(initializer.ConfigurableAnalyzerInitializer)
255+
return ci, ok
256+
}

0 commit comments

Comments
 (0)