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
gochecksumtype doesn't report missing cases if the sum type is declared in one package and the type switch is in a different package (see #3671 (comment)).
Version of golangci-lint
$ golangci-lint --versiongolangci-lint has version v1.55.0 built with go1.21.3 from de1c3919 on 2023-10-20T11:56:32Z
Configuration
# paste configuration file or CLI flags here
Go environment
$ go version && go envgo version go1.21.3 linux/amd64GO111MODULE=''GOARCH='amd64'GOBIN=''GOCACHE='/root/.cache/go-build'GOENV='/root/.config/go/env'GOEXE=''GOEXPERIMENT=''GOFLAGS=''GOHOSTARCH='amd64'GOHOSTOS='linux'GOINSECURE=''GOMODCACHE='/go/pkg/mod'GONOPROXY=''GONOSUMDB=''GOOS='linux'GOPATH='/go'GOPRIVATE=''GOPROXY='https://proxy.golang.org,direct'GOROOT='/usr/local/go'GOSUMDB='sum.golang.org'GOTMPDIR=''GOTOOLCHAIN='local'GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'GOVCS=''GOVERSION='go1.21.3'GCCGO='gccgo'GOAMD64='v1'AR='ar'CC='gcc'CXX='g++'CGO_ENABLED='1'GOMOD='/app/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-build2772357518=/tmp/go-build -gno-record-gcc-switches'
Verbose output of running
$ golangci-lint cache clean
$ golangci-lint run -v
# paste output here
A minimal reproducible example or link to a public repository
package usage
import"decl"funcDoSomething(x decl.MySumType) {
switchx.(type) { // <-- here is expected a report about missing VariantBcase*decl.VariantA:
}
}
Validation
Yes, I've included all information above (version, config, etc.).
The text was updated successfully, but these errors were encountered:
Analysis drivers like golangci-lint may leverage the analysis framework's fact interface to avoid rerunning analysis on packages that are not either directly or indirectly modified since the last run. What this means is that an analyzer should:
not strongly (caching might be fine for some drivers) rely on any kind of statefulness across packages, except for state exported using the facts API
store all information that is required across packages and not available natively from Go's type system as facts
It looks like go-check-sumtype does not leverage facts at all. So it seems incompatible golangci-lint's caching mechanism unless rewritten appropriately such as in exhaustive.
Welcome
Description of the problem
gochecksumtype
doesn't report missing cases if the sum type is declared in one package and the type switch is in a different package (see #3671 (comment)).Version of golangci-lint
Configuration
# paste configuration file or CLI flags here
Go environment
Verbose output of running
A minimal reproducible example or link to a public repository
/decl/decl.go
/usage/usage.go
Validation
The text was updated successfully, but these errors were encountered: