diff --git a/pkg/goanalysis/pkgerrors/errors.go b/pkg/goanalysis/pkgerrors/errors.go index 05d2c5238f8b..587e72720e98 100644 --- a/pkg/goanalysis/pkgerrors/errors.go +++ b/pkg/goanalysis/pkgerrors/errors.go @@ -15,7 +15,7 @@ type IllTypedError struct { } func (e *IllTypedError) Error() string { - return fmt.Sprintf("errors in package: %v", e.Pkg.Errors) + return fmt.Sprintf("IllTypedError: errors in package: %v", e.Pkg.Errors) } func BuildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]result.Issue, error) { diff --git a/pkg/goanalysis/runner_loadingpackage.go b/pkg/goanalysis/runner_loadingpackage.go index 0bf8f3fbb362..d22dbea30d72 100644 --- a/pkg/goanalysis/runner_loadingpackage.go +++ b/pkg/goanalysis/runner_loadingpackage.go @@ -24,6 +24,9 @@ import ( const unsafePkgName = "unsafe" +// https://github.com/golang/go/blob/go1.23.8/src/internal/types/errors/codes.go#L1484 +const tooNew = 151 + type loadingPackage struct { pkg *packages.Package imports map[string]*loadingPackage @@ -436,6 +439,14 @@ func (lp *loadingPackage) convertError(err error) []packages.Error { case types.Error: // from type checker + + // https://github.com/golang/go/blob/go1.23.8/src/go/types/api.go#L52-L57 + if int(reflect.ValueOf(err).FieldByName("go116code").Int()) == tooNew { + // https://github.com/golang/go/blob/go1.23.8/src/go/types/check.go#L380 + // https://github.com/golang/go/blob/go1.23.8/src/go/types/check.go#L349 + panic(err.Msg) + } + errs = append(errs, packages.Error{ Pos: err.Fset.Position(err.Pos).String(), Msg: err.Msg,