package golinters

import (
	"golang.org/x/tools/go/analysis"

	"github.com/golangci/golangci-lint/pkg/config"
	"github.com/golangci/golangci-lint/pkg/logutils"
)

var debugf = logutils.Debug("megacheck")

func setupStaticCheckAnalyzers(m map[string]*analysis.Analyzer, settings *config.StaticCheckSettings) []*analysis.Analyzer {
	var ret []*analysis.Analyzer
	for _, v := range m {
		setAnalyzerGoVersion(v, settings)
		ret = append(ret, v)
	}
	return ret
}

func setAnalyzerGoVersion(a *analysis.Analyzer, settings *config.StaticCheckSettings) {
	// TODO: uses "1.13" for backward compatibility, but in the future (v2) must be set by using build.Default.ReleaseTags like staticcheck.
	goVersion := "1.13"
	if settings != nil && settings.GoVersion != "" {
		goVersion = settings.GoVersion
	}

	if v := a.Flags.Lookup("go"); v != nil {
		if err := v.Value.Set(goVersion); err != nil {
			debugf("Failed to set go version: %s", err)
		}
	}
}