From 08ca1d13d09b62765e6945ae7f1e33df3a156997 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Thu, 18 Jan 2024 20:05:14 +0100 Subject: [PATCH] loader: enforce Go language version in the type checker This means for example that ranging over integers will only work when setting the Go version to go1.22 or later in the go.mod file. --- loader/loader.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/loader/loader.go b/loader/loader.go index 9b46aa61..60d0f7eb 100644 --- a/loader/loader.go +++ b/loader/loader.go @@ -378,6 +378,12 @@ func (p *Package) Check() error { typeErrors = append(typeErrors, err) } checker.Importer = p + if p.Module.GoVersion != "" { + // Setting the Go version for a module makes sure the type checker + // errors out on language features not supported in that particular + // version. + checker.GoVersion = "go" + p.Module.GoVersion + } // Do typechecking of the package. packageName := p.ImportPath