diff --git a/pkg/golinters/goanalysis/runner_loadingpackage.go b/pkg/golinters/goanalysis/runner_loadingpackage.go index 9fa396854ee0..ff1f7ffbd5f3 100644 --- a/pkg/golinters/goanalysis/runner_loadingpackage.go +++ b/pkg/golinters/goanalysis/runner_loadingpackage.go @@ -390,6 +390,7 @@ func (lp *loadingPackage) decUse(canClearTypes bool) { func (lp *loadingPackage) convertError(err error) []packages.Error { var errs []packages.Error + // taken from go/packages switch err := err.(type) { case packages.Error: @@ -416,6 +417,12 @@ func (lp *loadingPackage) convertError(err error) []packages.Error { case types.Error: // from type checker + if err.Soft { + // The meaning of soft is explained in types.Error godoc. + // We skip this kind of error because they are handle by the other linters. + return nil + } + errs = append(errs, packages.Error{ Pos: err.Fset.Position(err.Pos).String(), Msg: err.Msg, @@ -433,6 +440,7 @@ func (lp *loadingPackage) convertError(err error) []packages.Error { // If you see this error message, please file a bug. lp.log.Warnf("Internal error: error %q (%T) without position", err, err) } + return errs }