This fixes the new loop variable behavior in Go 1.22.
Specifically:
* The compiler (actually, the x/tools/go/ssa package) now correctly
picks up the Go version.
* If a module doesn't specify the Go version, the current Go version
(from the `go` tool and standard library) is used. This fixes
`go run`.
* The tests in testdata/ that use a separate directory are now
actually run in that directory. This makes it possible to use a
go.mod file there.
* There is a test to make sure old Go modules still work with the old
Go behavior, even on a newer Go version.
17 строки
289 Б
Go
17 строки
289 Б
Go
//go:build go1.22
|
|
|
|
// types.Info.FileVersions was added in Go 1.22, so we can only initialize it
|
|
// when built with Go 1.22.
|
|
|
|
package loader
|
|
|
|
import (
|
|
"go/ast"
|
|
"go/types"
|
|
)
|
|
|
|
func init() {
|
|
initFileVersions = func(info *types.Info) {
|
|
info.FileVersions = make(map[*ast.File]string)
|
|
}
|
|
}
|