mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: handle go.mod error msg reference in noder, not type checker
Currently, for version errors, types2 adds the helpful hint (-lang was set to go1.xx; check go.mod) where 1.xx is the respective language version, to the error message. This requires that the type checker knows that it was invoked by the compiler, which is done through the Config.CompilerErrorMessages flag. This change looks for version errors being returned by the type checker and then adds the hint at that point, external to the type checker. This removes a dependency on the Config.CompilerErrorMessages. Once we have removed all dependencies on Config.CompilerErrorMessages we can remove it. For #55326. Change-Id: I1f9b2e472c49fe785a2075e26c4b3d9b8fcdbf4d Reviewed-on: https://go-review.googlesource.com/c/go/+/432559 Reviewed-by: Robert Griesemer <gri@google.com> Run-TryBot: Robert Griesemer <gri@google.com> Auto-Submit: Robert Griesemer <gri@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
parent
2f3008386f
commit
5d213a3dc7
5 changed files with 11 additions and 25 deletions
|
|
@ -6,6 +6,7 @@ package noder
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"sort"
|
||||
|
||||
"cmd/compile/internal/base"
|
||||
|
|
@ -18,6 +19,8 @@ import (
|
|||
"cmd/internal/src"
|
||||
)
|
||||
|
||||
var versionErrorRx = regexp.MustCompile(`requires go[0-9]+\.[0-9]+ or later`)
|
||||
|
||||
// checkFiles configures and runs the types2 checker on the given
|
||||
// parsed source files and then returns the result.
|
||||
func checkFiles(noders []*noder) (posMap, *types2.Package, *types2.Info) {
|
||||
|
|
@ -46,7 +49,12 @@ func checkFiles(noders []*noder) (posMap, *types2.Package, *types2.Info) {
|
|||
CompilerErrorMessages: true, // use error strings matching existing compiler errors
|
||||
Error: func(err error) {
|
||||
terr := err.(types2.Error)
|
||||
base.ErrorfAt(m.makeXPos(terr.Pos), "%s", terr.Msg)
|
||||
msg := terr.Msg
|
||||
// if we have a version error, hint at the -lang setting
|
||||
if versionErrorRx.MatchString(msg) {
|
||||
msg = fmt.Sprintf("%s (-lang was set to %s; check go.mod)", msg, base.Flag.Lang)
|
||||
}
|
||||
base.ErrorfAt(m.makeXPos(terr.Pos), "%s", msg)
|
||||
},
|
||||
Importer: &importer,
|
||||
Sizes: &gcSizes{},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue