0
1
mirror of https://github.com/golang/go synced 2025-05-13 04:32:48 +00:00
Files
Michael Matloob 7afe17bbdb [release-branch.go1.23] go/types, types2: use max(fileVersion, go1.21) if fileVersion present
Change the rules for how //go:build "file versions" are applied: instead
of considering whether a file version is an upgrade or downgrade from
the -lang version, always use max(fileVersion, go1.21). This prevents
file versions from downgrading the version below go1.21.  Before Go 1.21
the //go:build version did not have the meaning of setting the file's
langage version.

This fixes an issue that was appearing in GOPATH builds: Go 1.23.0
started providing -lang versions to the compiler in GOPATH mode (among
other places) which it wasn't doing before, and it set -lang to the
toolchain version (1.23). Because the -lang version was greater than
go1.21, language version used to compile the file would be set to the
//go:build file version. //go:build file versions below 1.21 could cause
files that could previously build to stop building.

For example, take a Go file with a //go:build line specifying go1.10.
If that file used a 1.18 feature, that use would compile fine with a Go
1.22 toolchain. But it would produce an error when compiling with the
1.23.0 toolchain because it set the language version to 1.10 and
disallowed the 1.18 feature. This breaks backwards compatibility: when
the build tag was added, it did not have the meaning of restricting the
language version.

For 
Fixes 

Change-Id: I6cedda81a55bcccffaa3501eef9e2be6541b6ece
Reviewed-on: https://go-review.googlesource.com/c/go/+/607955
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Griesemer <gri@google.com>
(cherry picked from commit aeac0b6cbf)
Reviewed-on: https://go-review.googlesource.com/c/go/+/608935
2024-08-28 15:43:17 +00:00
..
2023-03-28 18:13:13 +00:00
2023-03-28 18:13:13 +00:00
2023-03-28 18:13:13 +00:00
2023-03-28 18:13:13 +00:00
2023-03-28 18:13:13 +00:00
2023-03-28 18:13:13 +00:00
2022-05-18 00:47:29 +00:00
2023-03-28 18:13:13 +00:00
2021-02-22 22:53:51 +00:00
2023-04-11 20:56:32 +00:00
2021-04-21 20:24:34 +00:00
2021-02-22 20:00:00 +00:00
2020-11-21 16:46:05 +00:00
2021-05-22 00:51:17 +00:00
2023-02-07 20:59:40 +00:00