diff --git a/pkg/golinters/importas/importas.go b/pkg/golinters/importas/importas.go index 45117c9a488b..b7c6c35aeaa6 100644 --- a/pkg/golinters/importas/importas.go +++ b/pkg/golinters/importas/importas.go @@ -51,8 +51,11 @@ func New(settings *config.ImportAsSettings) *goanalysis.Linter { uniqPackages[a.Pkg] = a } - // skip the duplication check when the alias is a regular expression replacement pattern (ie. contains `$`). - if v, ok := uniqAliases[a.Alias]; ok && !strings.Contains(a.Alias, "$") { + // Skips the duplication check when: + // - the alias is empty. + // - the alias is a regular expression replacement pattern (ie. contains `$`). + v, ok := uniqAliases[a.Alias] + if ok && a.Alias != "" && !strings.Contains(a.Alias, "$") { lintCtx.Log.Errorf("invalid configuration, multiple packages with the same alias: alias=%s packages=[%s,%s]", a.Alias, a.Pkg, v.Pkg) } else { uniqAliases[a.Alias] = a diff --git a/pkg/golinters/importas/testdata/importas_several_empty_aliases.go b/pkg/golinters/importas/testdata/importas_several_empty_aliases.go new file mode 100644 index 000000000000..0253f38deb43 --- /dev/null +++ b/pkg/golinters/importas/testdata/importas_several_empty_aliases.go @@ -0,0 +1,16 @@ +//golangcitest:args -Eimportas +//golangcitest:config_path testdata/importas_several_empty_aliases.yml +//golangcitest:expected_exitcode 0 +package testdata + +import ( + "fmt" + "math" + "os" +) + +func _() { + fmt.Println("a") + fmt.Fprint(os.Stderr, "b") + println(math.MaxInt) +} diff --git a/pkg/golinters/importas/testdata/importas_several_empty_aliases.yml b/pkg/golinters/importas/testdata/importas_several_empty_aliases.yml new file mode 100644 index 000000000000..1f6b9a77e7f4 --- /dev/null +++ b/pkg/golinters/importas/testdata/importas_several_empty_aliases.yml @@ -0,0 +1,9 @@ +linters-settings: + importas: + alias: + - pkg: fmt + alias: '' + - pkg: os + alias: '' + - pkg: math + alias: ''