Issue: Golint failing with Can't run linter goanalysis_metalinter: goanalysis_metalinter: buildir: package \"slices\" (isInitialPkg: false, needAnalyzeSource: true): Cannot range over: func(yield func(E) bool)
Xanik opened this issue · 2 comments
Xanik commented
CI Job step:
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.53.2
# The installation mode `goinstall` always uses `CGO_ENABLED=1`.
install-mode: goinstall
args: --timeout=5m
Error Happening:
Running [/home/runner/go/bin/golangci-lint run --out-format=github-actions --timeout=5m] in [] ...
level=error msg="[linters_context/goanalysis] buildir: panic during analysis: Cannot range over: func(yield func(K, V) bool), goroutine 4231 [running]:\nruntime/debug.Stack()\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/runtime/debug/stack.go:26 +0x5e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func1()\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:105 +0x5a\npanic({0x15fc260?, 0xc0011f37e0?})\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/runtime/panic.go:785 +0x132\nhonnef.co/go/tools/go/ir.(*builder).rangeStmt(0xc001cf1968, 0xc000d8af00, 0xc0003a6a20, 0x0, {0x1a85848, 0xc0003a6a20})\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2181 +0x894\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc001cf1968, 0xc000d8af00, {0x1a8a870?, 0xc0003a6a20?})\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2394 +0x20a\nhonnef.co/go/tools/go/ir.(*builder).stmtList(...)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:847\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc001cf1968, 0xc000d8af00, {0x1a8a6f0?, 0xc0003aaf60?})\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2352 +0x1415\nhonnef.co/go/tools/go/ir.(*builder).buildFunction(0xc001cf1968, 0xc000d8af00)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2464 +0x417\nhonnef.co/go/tools/go/ir.(*builder).buildFuncDecl(0xc001cf1968, 0xc000b4f320, 0xc0003aaf90)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2501 +0x189\nhonnef.co/go/tools/go/ir.(*Package).build(0xc000b4f320)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2605 +0xb46\nsync.(*Once).doSlow(0xc0027c62a0?, 0xc0003a7020?)\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/sync/once.go:76 +0xb4\nsync.(*Once).Do(...)\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/sync/once.go:67\nhonnef.co/go/tools/go/ir.(*Package).Build(...)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2523\nhonnef.co/go/tools/internal/passes/buildir.run(0xc000a93e10)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/internal/passes/buildir/buildir.go:86 +0x18b\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyze(0xc0014cf6b0)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:195 +0x967\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func2()\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:113 +0x17\ngithub.com/golangci/golangci-lint/pkg/timeutils.(*Stopwatch).TrackStage(0xc0012050e0, {0x17fc66b, 0x7}, 0xc0018d5748)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/timeutils/stopwatch.go:111 +0x44\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe(0xc0013b58c0?)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:112 +0x6e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze.func2(0xc0014cf6b0)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_loadingpackage.go:80 +0xa5\ncreated by github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze in goroutine 2428\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_loadingpackage.go:75 +0x1e9\n"
level=error msg="[linters_context/goanalysis] buildir: panic during analysis: Cannot range over: func(yield func(E) bool), goroutine 4322 [running]:\nruntime/debug.Stack()\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/runtime/debug/stack.go:26 +0x5e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func1()\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:105 +0x5a\npanic({0x15fc260?, 0xc00242e8f0?})\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/runtime/panic.go:785 +0x132\nhonnef.co/go/tools/go/ir.(*builder).rangeStmt(0xc00005d968, 0xc0021ba140, 0xc002b759e0, 0x0, {0x1a85848, 0xc002b759e0})\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2181 +0x894\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc00005d968, 0xc0021ba140, {0x1a8a870?, 0xc002b759e0?})\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2394 +0x20a\nhonnef.co/go/tools/go/ir.(*builder).stmtList(...)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:847\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc00005d968, 0xc0021ba140, {0x1a8a6f0?, 0xc0024f5d40?})\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2352 +0x1415\nhonnef.co/go/tools/go/ir.(*builder).buildFunction(0xc00005d968, 0xc0021ba140)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2464 +0x417\nhonnef.co/go/tools/go/ir.(*builder).buildFuncDecl(0xc00005d968, 0xc000e44a20, 0xc0024f5d70)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2501 +0x189\nhonnef.co/go/tools/go/ir.(*Package).build(0xc000e44a20)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2605 +0xb46\nsync.(*Once).doSlow(0xc0013722a0?, 0xc00083cd20?)\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/sync/once.go:76 +0xb4\nsync.(*Once).Do(...)\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/sync/once.go:67\nhonnef.co/go/tools/go/ir.(*Package).Build(...)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2523\nhonnef.co/go/tools/internal/passes/buildir.run(0xc002094d00)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/internal/passes/buildir/buildir.go:86 +0x18b\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyze(0xc0014cb060)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:195 +0x967\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func2()\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:113 +0x17\ngithub.com/golangci/golangci-lint/pkg/timeutils.(*Stopwatch).TrackStage(0xc0012050e0, {0x17fc66b, 0x7}, 0xc001456748)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/timeutils/stopwatch.go:111 +0x44\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe(0xc0013b59e0?)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:112 +0x6e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze.func2(0xc0014cb060)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_loadingpackage.go:80 +0xa5\ncreated by github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze in goroutine 660\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_loadingpackage.go:75 +0x1e9\n"
level=error msg="[runner] Panic: buildir: package \"slices\" (isInitialPkg: false, needAnalyzeSource: true): Cannot range over: func(yield func(E) bool): goroutine 4322 [running]:\nruntime/debug.Stack()\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/runtime/debug/stack.go:26 +0x5e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func1()\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:109 +0x277\npanic({0x15fc260?, 0xc00242e8f0?})\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/runtime/panic.go:785 +0x132\nhonnef.co/go/tools/go/ir.(*builder).rangeStmt(0xc00005d968, 0xc0021ba140, 0xc002b759e0, 0x0, {0x1a85848, 0xc002b759e0})\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2181 +0x894\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc00005d968, 0xc0021ba140, {0x1a8a870?, 0xc002b759e0?})\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2394 +0x20a\nhonnef.co/go/tools/go/ir.(*builder).stmtList(...)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:847\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc00005d968, 0xc0021ba140, {0x1a8a6f0?, 0xc0024f5d40?})\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2352 +0x1415\nhonnef.co/go/tools/go/ir.(*builder).buildFunction(0xc00005d968, 0xc0021ba140)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2464 +0x417\nhonnef.co/go/tools/go/ir.(*builder).buildFuncDecl(0xc00005d968, 0xc000e44a20, 0xc0024f5d70)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2501 +0x189\nhonnef.co/go/tools/go/ir.(*Package).build(0xc000e44a20)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2605 +0xb46\nsync.(*Once).doSlow(0xc0013722a0?, 0xc00083cd20?)\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/sync/once.go:76 +0xb4\nsync.(*Once).Do(...)\n\t/opt/hostedtoolcache/go/1.23.1/x64/src/sync/once.go:67\nhonnef.co/go/tools/go/ir.(*Package).Build(...)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2523\nhonnef.co/go/tools/internal/passes/buildir.run(0xc002094d00)\n\t/home/runner/go/pkg/mod/honnef.co/go/tools@v0.4.3/internal/passes/buildir/buildir.go:86 +0x18b\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyze(0xc0014cb060)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:195 +0x967\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func2()\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:113 +0x17\ngithub.com/golangci/golangci-lint/pkg/timeutils.(*Stopwatch).TrackStage(0xc0012050e0, {0x17fc66b, 0x7}, 0xc001456748)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/timeutils/stopwatch.go:111 +0x44\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe(0xc0013b59e0?)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_action.go:112 +0x6e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze.func2(0xc0014cb060)\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_loadingpackage.go:80 +0xa5\ncreated by github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze in goroutine 660\n\t/home/runner/go/pkg/mod/github.com/golangci/golangci-lint@v1.53.2/pkg/golinters/goanalysis/runner_loadingpackage.go:75 +0x1e9\n"
level=warning msg="[runner] Can't run linter goanalysis_metalinter: goanalysis_metalinter: buildir: package \"slices\" (isInitialPkg: false, needAnalyzeSource: true): Cannot range over: func(yield func(E) bool)"
level=error msg="Running error: 1 error occurred:\n\t* can't run linter goanalysis_metalinter: goanalysis_metalinter: buildir: package \"slices\" (isInitialPkg: false, needAnalyzeSource: true): Cannot range over: func(yield func(E) bool)\n\n"
ldez commented
Hello,
This repository is a GitHub Action example for using plugins.
So I will transfer the issue.
ldez commented
Your problem is that you are trying to analyze go1.22+ code with an old version of golangci-lint.
You should:
- update
golangci/golangci-lint-actiontov6 - update the version of golangci-lint to
v1.61.0
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: v1.61.0
# The installation mode `goinstall` always uses `CGO_ENABLED=1`.
install-mode: goinstall
args: --timeout=5m