You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
unparam is broken again since updating golang.org/x/tools to v0.4.0 (#3411). It seems that with tools v0.3.0, the generic functions never got passed to this linter. But with v0.4.0, they do, the code unparam has to check the sizes of parameters panics when the parameter uses a type parameter.
Running unparam standalone doesn't hit this because it uses x/tools v0.1.x
Version of golangci-lint
$ golangci-lint --versiongolangci-lint has version v1.50.2-0.20221218170326-1926748b44fb built from (unknown, mod sum: "h1:Ufcq4g/u6bCKnDFwedDJwlv3q5a+V11yG0ZwoqSnhpk=") on (unknown)
Configuration file
None, just enable unparam on the command line
Go environment
$ go version && go envgo version go1.19.4 linux/amd64GO111MODULE=""GOARCH="amd64"GOBIN=""GOCACHE="/home/mgl/.cache/go-build"GOENV="/home/mgl/.config/go/env"GOEXE=""GOEXPERIMENT=""GOFLAGS=""GOHOSTARCH="amd64"GOHOSTOS="linux"GOINSECURE=""GOMODCACHE="/home/mgl/.go/pkg/mod"GONOPROXY="go.6river.tech/*,github.com/6RiverSystems/*"GONOSUMDB="go.6river.tech/*,github.com/6RiverSystems/*"GOOS="linux"GOPATH="/home/mgl/.go"GOPRIVATE="go.6river.tech/*,github.com/6RiverSystems/*"GOPROXY="https://proxy.golang.org,direct"GOROOT="/usr/lib/go-1.19"GOSUMDB="sum.golang.org"GOTMPDIR=""GOTOOLDIR="/usr/lib/go-1.19/pkg/tool/linux_amd64"GOVCS=""GOVERSION="go1.19.4"GCCGO="gccgo"GOAMD64="v1"AR="ar"CC="gcc"CXX="g++"CGO_ENABLED="1"GOMOD="/tmp/tmp.oKMDP6sSNO/go.mod"GOWORK=""CGO_CFLAGS="-g -O2"CGO_CPPFLAGS=""CGO_CXXFLAGS="-g -O2"CGO_FFLAGS="-g -O2"CGO_LDFLAGS="-g -O2"PKG_CONFIG="pkg-config"GOGCCFLAGS="-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3052654776=/tmp/go-build -gno-record-gcc-switches"
Verbose output of running
$ golangci-lint cache clean
$ golangci-lint run -v --enable unparam INFO [config_reader] Config search paths: [./ /tmp/tmp.oKMDP6sSNO /tmp / /home/mgl] INFO [lintersdb] Active 8 linters: [errcheck gosimple govet ineffassign staticcheck typecheck unparam unused] INFO [loader] Go packages loading at mode 575 (compiled_files|deps|exports_file|files|imports|name|types_sizes) took 28.410091ms INFO [runner/filename_unadjuster] Pre-built 0 adjustments in 131.981µs INFO [linters_context/goanalysis] analyzers took 660.329986ms with top 10 stages: buildir: 520.245685ms, inspect: 33.324979ms, ctrlflow: 22.029599ms, fact_deprecated: 17.627415ms, printf: 17.454851ms, SA5012: 14.74235ms, fact_purity: 10.153983ms, nilness: 7.838822ms, typedness: 6.710241ms, buildssa: 6.457902ms ERRO [runner] Panic: unparam: package "example" (isInitialPkg: true, needAnalyzeSource: true): /usr/lib/go-1.19/src/go/types/sizes.go:181: assertion failed: goroutine 804 [running]:runtime/debug.Stack() /usr/lib/go-1.19/src/runtime/debug/stack.go:24 +0x65jiasu.xzqcsaa.nyc.mn/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func1() /home/mgl/.go/pkg/mod/github.com/golangci/[email protected]/pkg/golinters/goanalysis/runner_action.go:102 +0x155panic({0x150daa0, 0xc0079b6220}) /usr/lib/go-1.19/src/runtime/panic.go:884 +0x212go/types.assert(0xf0?) /usr/lib/go-1.19/src/go/types/errors.go:27 +0x5bgo/types.(*StdSizes).Sizeof(0xc000045230, {0x195e1f0?, 0xc00196a930}) /usr/lib/go-1.19/src/go/types/sizes.go:181 +0x32emvdan.cc/unparam/check.(*Checker).checkFunc(0xc001601720, 0xc000ed9200, 0xc000e17ae0?) /home/mgl/.go/pkg/mod/mvdan.cc/[email protected]/check/check.go:598 +0x989mvdan.cc/unparam/check.(*Checker).Check(0xc001601720) /home/mgl/.go/pkg/mod/mvdan.cc/[email protected]/check/check.go:378 +0x78bjiasu.xzqcsaa.nyc.mn/golangci/golangci-lint/pkg/golinters.runUnparam(0xc00273e780, 0xc000260ac0) /home/mgl/.go/pkg/mod/github.com/golangci/[email protected]/pkg/golinters/unparam.go:75 +0x1dcjiasu.xzqcsaa.nyc.mn/golangci/golangci-lint/pkg/golinters.NewUnparam.func1(0x15771e0?) /home/mgl/.go/pkg/mod/github.com/golangci/[email protected]/pkg/golinters/unparam.go:28 +0x33jiasu.xzqcsaa.nyc.mn/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyze(0xc0004c6bd0) /home/mgl/.go/pkg/mod/github.com/golangci/[email protected]/pkg/golinters/goanalysis/runner_action.go:188 +0x9dfjiasu.xzqcsaa.nyc.mn/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func2() /home/mgl/.go/pkg/mod/github.com/golangci/[email protected]/pkg/golinters/goanalysis/runner_action.go:106 +0x1djiasu.xzqcsaa.nyc.mn/golangci/golangci-lint/pkg/timeutils.(*Stopwatch).TrackStage(0xc000176d20, {0x16de461, 0x7}, 0xc0017a6f48) /home/mgl/.go/pkg/mod/github.com/golangci/[email protected]/pkg/timeutils/stopwatch.go:111 +0x4ajiasu.xzqcsaa.nyc.mn/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe(0x1?) /home/mgl/.go/pkg/mod/github.com/golangci/[email protected]/pkg/golinters/goanalysis/runner_action.go:105 +0x85jiasu.xzqcsaa.nyc.mn/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze.func2(0xc0004c6bd0) /home/mgl/.go/pkg/mod/github.com/golangci/[email protected]/pkg/golinters/goanalysis/runner_loadingpackage.go:80 +0xb4created by github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze /home/mgl/.go/pkg/mod/github.com/golangci/[email protected]/pkg/golinters/goanalysis/runner_loadingpackage.go:75 +0x1eb WARN [runner] Can't run linter goanalysis_metalinter: goanalysis_metalinter: unparam: package "example" (isInitialPkg: true, needAnalyzeSource: true): /usr/lib/go-1.19/src/go/types/sizes.go:181: assertion failed INFO [runner] processing took 11.036µs with stages: source_code: 3.631µs, max_same_issues: 1.402µs, skip_dirs: 849ns, max_from_linter: 642ns, nolint: 591ns, cgo: 455ns, filename_unadjuster: 404ns, autogenerated_exclude: 330ns, skip_files: 325ns, identifier_marker: 324ns, uniq_by_line: 302ns, exclude: 291ns, path_prettifier: 287ns, sort_results: 207ns, path_shortener: 180ns, diff: 166ns, max_per_file_from_linter: 164ns, exclude-rules: 164ns, severity-rules: 161ns, path_prefixer: 161ns INFO [runner] linters took 601.417117ms with stages: goanalysis_metalinter: 601.293255ms ERRO Running error: 1 error occurred: * can't run linter goanalysis_metalinter: goanalysis_metalinter: unparam: package "example" (isInitialPkg: true, needAnalyzeSource: true): /usr/lib/go-1.19/src/go/types/sizes.go:181: assertion failedINFO Memory: 8 samples, avg is 150.7MB, max is 226.3MB INFO Execution took 633.937881ms
Code example or link to a public repository
Lightly adapted from the real code that is panicking for me. Verbose output above is from running against this example code.
Welcome
Description of the problem
unparam
is broken again since updatinggolang.org/x/tools
to v0.4.0 (#3411). It seems that with tools v0.3.0, the generic functions never got passed to this linter. But with v0.4.0, they do, the code unparam has to check the sizes of parameters panics when the parameter uses a type parameter.Running unparam standalone doesn't hit this because it uses x/tools v0.1.x
Version of golangci-lint
Configuration file
None, just enable unparam on the command line
Go environment
Verbose output of running
Code example or link to a public repository
The text was updated successfully, but these errors were encountered: