Closed
Description
Go version
go version devel go1.23-2ab9218c86 Mon Mar 11 22:10:38 2024 +0000 linux/amd64
Output of go env
in your module/workspace:
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/home/rogpeppe/.cache/go-build'
GOENV='/home/rogpeppe/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/rogpeppe/src/go/pkg/mod'
GONOPROXY='github.com/cue-unity'
GONOSUMDB='github.com/cue-unity'
GOOS='linux'
GOPATH='/home/rogpeppe/src/go'
GOPRIVATE='github.com/cue-unity'
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/home/rogpeppe/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/home/rogpeppe/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='devel go1.23-1653833811 Fri Jan 19 19:23:40 2024 +0000'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/home/rogpeppe/go/src/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build3220629220=/tmp/go-build -gno-record-gcc-switches'
/tmp/go1.23-2ab9218c86 env
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/home/rogpeppe/.cache/go-build'
GOENV='/home/rogpeppe/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/rogpeppe/src/go/pkg/mod'
GONOPROXY='github.com/cue-unity'
GONOSUMDB='github.com/cue-unity'
GOOS='linux'
GOPATH='/home/rogpeppe/src/go'
GOPRIVATE='github.com/cue-unity'
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/home/rogpeppe/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/home/rogpeppe/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='devel go1.23-2ab9218c86 Mon Mar 11 22:10:38 2024 +0000'
GODEBUG=''
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/home/rogpeppe/go/src/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build1992602758=/tmp/go-build -gno-record-gcc-switches'
What did you do?
I ran the following testscript script:
exec go build
-- go.mod --
module test
go 1.20
-- x.go --
package x
-- x_iter.go --
//go:build go1.23 || goexperiment.rangefunc
package x
func f() {
for _ = range func(func(int) bool) {} {}
}
What did you see happen?
> exec go build
[stderr]
# test
./x_iter.go:6:16: cannot range over func(func(int) bool) {} (value of type func(func(int) bool))
[exit status 1]
FAIL: /tmp/testscript4277131041/x.txtar/script.txtar:1: unexpected command failure
What did you expect to see?
A passing test. It seems that something about the devel version causes the build logic to ignore the usual build tag conventions that suppress the error even though the go version declared in go.mod
is less than the guarded version in the x_iter.go
file.
If I build go from a tagged version such as go1.22.1, the test passes fine.
I verified that a commit very shortly after go1.22.1 was tagged (1653833) fails in the same way.
Activity
rogpeppe commentedon Mar 14, 2024
Ooops, I just realised the problem is obvious: iteration over functions is not (yet) enabled in Go tip! Sorry for the noise.
prove.go:addLocalFacts
ft.update
propagates limits depends on value ordering and can't propagateft.update
→ft.flowLimit
dependencies #68857