mirror of
https://github.com/golang/go
synced 2024-11-22 22:20:03 -07:00
go/types: unexport the GoVersion configuration option for Go 1.17
The GoVersion field was added to types.Config as part of the work on type parameters. Specifically, it was added to be consistent with cmd/compile/internal/types2, which requires such an option. This configuration option is useful, but is also non-trivial and did not go through the proposal process. Unexport it for Go 1.17; we can create a proposal to export it for Go 1.18. Fixes #46296 Change-Id: Id82d8a7096887dcfc404c4d6d8da9c761b316609 Reviewed-on: https://go-review.googlesource.com/c/go/+/323430 Trust: Robert Findley <rfindley@google.com> Run-TryBot: Robert Findley <rfindley@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
79bda65041
commit
1607c28172
@ -101,12 +101,12 @@ type ImporterFrom interface {
|
||||
// A Config specifies the configuration for type checking.
|
||||
// The zero value for Config is a ready-to-use default configuration.
|
||||
type Config struct {
|
||||
// GoVersion describes the accepted Go language version. The string
|
||||
// goVersion describes the accepted Go language version. The string
|
||||
// must follow the format "go%d.%d" (e.g. "go1.12") or it must be
|
||||
// empty; an empty string indicates the latest language version.
|
||||
// If the format is invalid, invoking the type checker will cause a
|
||||
// panic.
|
||||
GoVersion string
|
||||
goVersion string
|
||||
|
||||
// If IgnoreFuncBodies is set, function bodies are not
|
||||
// type-checked.
|
||||
|
@ -179,9 +179,9 @@ func NewChecker(conf *Config, fset *token.FileSet, pkg *Package, info *Info) *Ch
|
||||
info = new(Info)
|
||||
}
|
||||
|
||||
version, err := parseGoVersion(conf.GoVersion)
|
||||
version, err := parseGoVersion(conf.goVersion)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("invalid Go version %q (%v)", conf.GoVersion, err))
|
||||
panic(fmt.Sprintf("invalid Go version %q (%v)", conf.goVersion, err))
|
||||
}
|
||||
|
||||
return &Checker{
|
||||
|
@ -240,7 +240,7 @@ func checkFiles(t *testing.T, sizes Sizes, goVersion string, filenames []string,
|
||||
// typecheck and collect typechecker errors
|
||||
var conf Config
|
||||
conf.Sizes = sizes
|
||||
conf.GoVersion = goVersion
|
||||
SetGoVersion(&conf, goVersion)
|
||||
|
||||
// special case for importC.src
|
||||
if len(filenames) == 1 {
|
||||
|
@ -134,7 +134,8 @@ func testTestDir(t *testing.T, path string, ignore ...string) {
|
||||
// parse and type-check file
|
||||
file, err := parser.ParseFile(fset, filename, nil, 0)
|
||||
if err == nil {
|
||||
conf := Config{GoVersion: goVersion, Importer: stdLibImporter}
|
||||
conf := Config{Importer: stdLibImporter}
|
||||
SetGoVersion(&conf, goVersion)
|
||||
_, err = conf.Check(filename, fset, []*ast.File{file}, nil)
|
||||
}
|
||||
|
||||
|
@ -11,3 +11,9 @@ import "sync/atomic"
|
||||
// for tests where we may want to have a consistent
|
||||
// numbering for each individual test case.
|
||||
func ResetId() { atomic.StoreUint32(&lastId, 0) }
|
||||
|
||||
// SetGoVersion sets the unexported goVersion field on config, so that tests
|
||||
// which assert on behavior for older Go versions can set it.
|
||||
func SetGoVersion(config *Config, goVersion string) {
|
||||
config.goVersion = goVersion
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user