go: go/types, types2: panic: infinite recursion in unification with go1.21.0
gopls version
golang.org/x/tools/gopls v0.13.1
golang.org/x/tools/gopls@v0.13.1 h1:Q0cfPbEG1WVfgxcRZ9uKTA6/ckIRNXx6Ym7KgT/VFE4=
go env
GO111MODULE=''
GOARCH='arm64'
GOBIN=''
GOCACHE='/Users/lavch/Library/Caches/go-build'
GOENV='/Users/lavch/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/lavch/go/pkg/mod'
GOOS='darwin'
GOPATH='/Users/lavch/go'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.google.cn'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='go1.21.0'
GCCGO='gccgo'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='0'
GOMOD='/Users/lavch/repo/work/orm/base/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 -arch arm64 -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/6d/3ws4l1qx5jn9crwf_j_1x2hw0000gp/T/go-build531596626=/tmp/go-build -gno-record-gcc-switches -fno-common'
What did you do?
Updagrade go version to 1.21.0,and upgrade gopls to v0.13.1
What did you expect to see?
gopls function normally
What did you see instead?
gopls panic
Editor and settings
VSCode
"gopls": {
// "build.expandWorkspaceToModule": true,
// "build.experimentalWorkspaceModule": true,
"ui.semanticTokens": true
}
Logs
[Info - 11:00:24]
true
[Info - 11:00:24] 2023/08/09 11:00:24 go info for /Users/lavch/repo/work/orm/base
(go dir /Users/lavch/repo/work/orm/base)
(go version go version go1.21.0 darwin/arm64)
(valid build configuration = true)
(build flags: [])
(selected go env: [GO111MODULE=, GOCACHE=/Users/lavch/Library/Caches/go-build, GOFLAGS=, GOMODCACHE=/Users/lavch/go/pkg/mod, GOPATH=/Users/lavch/go, GOPRIVATE=*.everphoto.cn,git.smartisan.com, GOROOT=/usr/local/go, GOWORK=])
[Info - 11:00:25] 2023/08/09 11:00:25 go/packages.Load #1
snapshot=0
directory=file:///Users/lavch/repo/work/orm/base
query=[/Users/lavch/repo/work/orm/base/... builtin]
packages=216
[Info - 11:00:25] 2023/08/09 11:00:25 go/packages.Load #1: updating metadata for 2307 packages
panic: unification reached recursion depth limit
panic: unification reached recursion depth limit
panic: unification reached recursion depth limit [recovered]
panic: unification reached recursion depth limit
goroutine 19762 [running]:
go/types.(*Checker).handleBailout(0x14074a750e0, 0x1407ed3f568)
/usr/local/go/src/go/types/check.go:336 +0x9c
panic({0x102e97de0?, 0x102ff3cb0?})
/usr/local/go/src/runtime/panic.go:914 +0x218
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89fe40}, {0x102ff85c8, 0x1407e89e800}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:311 +0x1770
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd500}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3728}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89fec0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd500}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3728}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89fec0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd500}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3728}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89fec0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd500}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3728}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89fec0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd500}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3728}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89fec0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd500}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3728}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89fec0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd500}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3728}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89fec0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd500}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3728}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89fec0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd500}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3728}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89fec0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd500}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3728}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89fec0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd500}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3728}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89fec0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd500}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3728}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89fec0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd500}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3728}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89fec0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd500}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3728}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89fec0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd500}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3728}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89fec0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd500}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89ca70, {0x102ff8a50, 0x1407e3f3728}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
...112 frames elided...
go/types.(*unifier).nify(0x1407e89c730, {0x102ff85c8, 0x1407e89f5c0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8550, 0x140781bd420}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3548}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89c730, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89f5c0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd420}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8a50, 0x1407e3f3548}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89c730, {0x102ff85c8, 0x1407e89f5c0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8550, 0x140781bd420}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3548}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89c730, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89f5c0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd420}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8a50, 0x1407e3f3548}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89c730, {0x102ff85c8, 0x1407e89f5c0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8550, 0x140781bd420}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8a50, 0x1407e3f3338}, {0x102ff8a50, 0x1407e3f3548}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89c730, {0x102ff85c8, 0x1407e89e880}, {0x102ff85c8, 0x1407e89f5c0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8550, 0x140781bd3b0}, {0x102ff8550, 0x140781bd420}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8a50, 0x1407e3f3548}, {0x102ff8a50, 0x1407e3f3338}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:615 +0x1338
go/types.(*unifier).nify(0x1407e89c730, {0x102ff85c8, 0x1407e89f5c0}, {0x102ff85c8, 0x1407e89e880}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:633 +0xb5c
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8550, 0x140781bd420}, {0x102ff8550, 0x140781bd3b0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:510 +0x1724
go/types.(*unifier).nify(0x1407e89c730, {0x102ff8bb8, 0x1407e3bd4c0}, {0x102ff8bb8, 0x1407e3bd5c0}, 0x0, 0x0)
/usr/local/go/src/go/types/unify.go:701 +0xcf8
go/types.(*unifier).unify(...)
/usr/local/go/src/go/types/unify.go:147
go/types.(*Checker).infer(0x14074a750e0, {0x102ff6468, 0x14075bd53c0}, {0x1407e3f34b8?, 0x3, 0x3}, {0x1407e89f380, 0x3, 0x4}, 0x1407e3f3518, ...)
/usr/local/go/src/go/types/infer.go:235 +0x788
go/types.(*Checker).arguments(0x14074a750e0, 0x14075bd53c0, 0x1401536f800, {0x0, 0x0, 0x0}, {0x0, 0x0, 0x0}, {0x1407e89c620?, ...}, ...)
/usr/local/go/src/go/types/call.go:606 +0xd68
go/types.(*Checker).callExpr(0x14074a750e0, 0x1407e89f240, 0x14075bd53c0)
/usr/local/go/src/go/types/call.go:302 +0x6a4
go/types.(*Checker).exprInternal(0x14074a750e0, {0x0, 0x0}, 0x1407e89f240, {0x102ffb660, 0x14075bd53c0?}, {0x0?, 0x0?})
/usr/local/go/src/go/types/expr.go:1359 +0x12dc
go/types.(*Checker).rawExpr(0x14074a750e0, {0x0, 0x0}, 0x1407e89f240, {0x102ffb660?, 0x14075bd53c0?}, {0x0?, 0x0?}, 0x0)
/usr/local/go/src/go/types/expr.go:965 +0x134
go/types.(*Checker).multiExpr(0x14066ff8018?, {0x102ffb660?, 0x14075bd53c0}, 0x0)
/usr/local/go/src/go/types/expr.go:1517 +0x68
go/types.(*Checker).initVars(0x0?, {0x1407e8aa108?, 0x1, 0x1}, {0x14075bcc940?, 0x1, 0x1}, {0x102ffb6f0, 0x14075bd7ac0})
/usr/local/go/src/go/types/assignments.go:398 +0x100
go/types.(*Checker).stmt(0x14074a750e0, 0x0, {0x102ffb6f0?, 0x14075bd7ac0?})
/usr/local/go/src/go/types/stmt.go:527 +0xfd8
go/types.(*Checker).stmtList(0x0?, 0x0, {0x14075bcc950?, 0x1025aa964?, 0x14066ff8fe8?})
/usr/local/go/src/go/types/stmt.go:124 +0x88
go/types.(*Checker).funcBody(0x14074a750e0, 0x140387f48a0, {0x102ba6059?, 0x1400004acd0?}, 0x1407e89f040, 0x14075bd8660, {0x0, 0x0})
/usr/local/go/src/go/types/stmt.go:44 +0x244
go/types.(*Checker).exprInternal.func1()
/usr/local/go/src/go/types/expr.go:1073 +0x44
go/types.(*Checker).processDelayed(0x14074a750e0, 0xd8f)
/usr/local/go/src/go/types/check.go:439 +0x12c
go/types.(*Checker).shortVarDecl(0x14074a750e0, {0x102ff6048, 0x1407e38f308}, {0x14075bcc900, 0x1, 0x102ff8870?}, {0x14075bcc980?, 0x1, 0x1})
/usr/local/go/src/go/types/assignments.go:549 +0x8b8
go/types.(*Checker).stmt(0x14074a750e0, 0x0, {0x102ffb780?, 0x14075bd54c0?})
/usr/local/go/src/go/types/stmt.go:476 +0xb70
go/types.(*Checker).simpleStmt(...)
/usr/local/go/src/go/types/stmt.go:102
go/types.(*Checker).stmt(0x14074a750e0, 0x0, {0x102ffb630?, 0x14075bd55c0?})
/usr/local/go/src/go/types/stmt.go:571 +0x12e4
go/types.(*Checker).stmtList(0x14038aba060?, 0x0, {0x140758b3200?, 0x0?, 0x8?})
/usr/local/go/src/go/types/stmt.go:124 +0x88
go/types.(*Checker).funcBody(0x14074a750e0, 0x140387f48a0, {0x14075b98ee8?, 0x14020d9d090?}, 0x1407cec3700, 0x14075bd8840, {0x0, 0x0})
/usr/local/go/src/go/types/stmt.go:44 +0x244
go/types.(*Checker).funcDecl.func1()
/usr/local/go/src/go/types/decl.go:826 +0x44
go/types.(*Checker).processDelayed(0x14074a750e0, 0x0)
/usr/local/go/src/go/types/check.go:439 +0x12c
go/types.(*Checker).checkFiles(0x14074a750e0, {0x1407aab0200, 0x17, 0x20})
/usr/local/go/src/go/types/check.go:383 +0x1fc
go/types.(*Checker).Files(...)
/usr/local/go/src/go/types/check.go:341
golang.org/x/tools/gopls/internal/lsp/cache.doTypeCheck({0x102ffccc8, 0x14075134780}, 0x1403fc47f80, {{0x14001c12540, 0x20}, {0x14001c12540, 0x20}, {0x14001bf4c3c, 0x4}, {0x140002c3380, ...}, ...})
/Users/lavch/go/pkg/mod/golang.org/x/tools/gopls@v0.13.1/internal/lsp/cache/check.go:1559 +0x6d8
golang.org/x/tools/gopls/internal/lsp/cache.typeCheckImpl({0x102ffccc8, 0x14075134600}, 0x1023bc390?, {{0x14001c12540, 0x20}, {0x14001c12540, 0x20}, {0x14001bf4c3c, 0x4}, {0x140002c3380, ...}, ...})
/Users/lavch/go/pkg/mod/golang.org/x/tools/gopls@v0.13.1/internal/lsp/cache/check.go:1420 +0x16c
golang.org/x/tools/gopls/internal/lsp/cache.(*typeCheckBatch).checkPackage(0x14041e9cec8?, {0x102ffccc8, 0x14017859b30}, 0x14041564900)
/Users/lavch/go/pkg/mod/golang.org/x/tools/gopls@v0.13.1/internal/lsp/cache/check.go:674 +0x184
golang.org/x/tools/gopls/internal/lsp/cache.(*typeCheckBatch).handleSyntaxPackage(0x1403fc47f80, {0x102ffccc8, 0x14017859b30}, 0x0?, {0x14001c12540, 0x20})
/Users/lavch/go/pkg/mod/golang.org/x/tools/gopls@v0.13.1/internal/lsp/cache/check.go:532 +0x3e0
golang.org/x/tools/gopls/internal/lsp/cache.(*snapshot).forEachPackageInternal.func2()
/Users/lavch/go/pkg/mod/golang.org/x/tools/gopls@v0.13.1/internal/lsp/cache/check.go:394 +0x34
golang.org/x/sync/errgroup.(*Group).Go.func1()
/Users/lavch/go/pkg/mod/golang.org/x/sync@v0.3.0/errgroup/errgroup.go:75 +0x58
created by golang.org/x/sync/errgroup.(*Group).Go in goroutine 9176
/Users/lavch/go/pkg/mod/golang.org/x/sync@v0.3.0/errgroup/errgroup.go:72 +0x98
[Error - 11:00:26] Connection to server got closed. Server will not be restarted.
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 27 (10 by maintainers)
@LAShZ amazing! That also reproduces via playground compilation: https://go.dev/play/p/S2M6Qm_ExrI
Huge thanks. Tracking down a reproducer is critical to fixing the compiler.
@findleyr yes. gopls doesn’t depend on types2.
we got an ICE. while using go 1.21 compile our program.
but I think it maybe the same to the gopls issue.
I patched src/cmd/compile/internal/types2/unify.go and confirmed that, it’s an ICE
@findleyr Here is the reproducer
And I’ve noticed that although
[T comparable]
is never used in this snippet, it’s neccessary to reproduce this panicI have located the package that caused the panic. Let me try to provide a reproducer.