]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: allow ineffectual //go:linkname in -lang=go1.17 and older
authorMatthew Dempsky <mdempsky@google.com>
Thu, 3 Nov 2022 18:56:43 +0000 (11:56 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 3 Nov 2022 20:35:31 +0000 (20:35 +0000)
commitaa6240a445d2478f29add6218b19147f5bf2204f
tree688b2e2abf4d1d82429c137e30a1a464df1e9184
parent48ff5c1042af780dade9f539368e8bc2259d2679
cmd/compile: allow ineffectual //go:linkname in -lang=go1.17 and older

Prior to Go 1.18, ineffectual //go:linkname directives (i.e.,
directives referring to an undeclared name, or to a declared type or
constant) were treated as noops. In Go 1.18, we changed this into a
compiler error to mitigate accidental misuse.

However, the x/sys repo contained ineffectual //go:linkname directives
up until go.dev/cl/274573, which has caused a lot of user confusion.

It seems a bit late to worry about now, but to at least prevent
further user pain, this CL changes the error message to only apply to
modules using "go 1.18" or newer. (The x/sys repo declared "go 1.12"
at the time go.dev/cl/274573 was submitted.)

Fixes #55889.

Change-Id: Id762fff96fd13ba0f1e696929a9e276dfcba2620
Reviewed-on: https://go-review.googlesource.com/c/go/+/447755
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
src/cmd/compile/internal/noder/noder.go
src/cmd/compile/internal/noder/writer.go
test/fixedbugs/issue55889.go [new file with mode: 0644]