8000 analysis/facts/nilness: use Const.IsNil when detecting nil comparisons by aragon999 · Pull Request #1740 · dominikh/go-tools · GitHub
[go: up one dir, main page]

Skip to content

analysis/facts/nilness: use Const.IsNil when detecting nil comparisons - #1740

Open
aragon999 wants to merge 1 commit into
dominikh:masterfrom
aragon999:fix/nilness-in-comparisons
Open

aragon999 wants to merge 1 commit into
dominikh:masterfrom
aragon999:fix/nilness-in-comparisons

Conversation

@aragon999
@aragon999 aragon999 commented Aug 29, 2026 •
Copy link
Copy Markdown
Contributor

First thanks a lot for the project, see the test case for the code which panicked (used in golangci-lint):

ERRO [linters_context/goanalysis] nilness: panic during analysis: internal error: unhandled token <=, goroutine 22621 [running]:
runtime/debug.Stack()
    /usr/lib/go/src/runtime/debug/stack.go:26 +0x5e
github.com/golangci/golangci-lint/v2/pkg/goanalysis.(*action).analyzeSafe.func1()
    golangci-lint/src/golangci-lint/pkg/goanalysis/runner_action.go:51 +0x4f
panic({0x562037aade18?, 0x3d7af3c98230?})
    /usr/lib/go/src/runtime/panic.go:859 +0x125
honnef.co/go/tools/analysis/facts/nilness.impl.func1(0x3d7af08a0cc0, 0x3d7af08a0b40, {0x0, {0x3d7af19b8050, 0x6, 0x8}, 0x3d7af68e3da0})
    golangci-lint/src/golangci-lint/vendor/honnef.co/go/tools/analysis/facts/nilness/nilness.go:494 +0x1f65
honnef.co/go/tools/analysis/facts/nilness.impl.func3(0x3d7af68e3e90?, 0x7f2ddc7775c8?, {0x3d7af19b8050?, 0x3d7af0363f40?, 0x3d7aecbe7008?})
    golangci-lint/src/golangci-lint/vendor/honnef.co/go/tools/analysis/facts/nilness/nilness.go:724 +0x77
honnef.co/go/tools/analysis/dfa/dense.(*fwdBuilder[...]).propagate-range1()
    golangci-lint/src/golangci-lint/vendor/honnef.co/go/tools/analysis/dfa/dense/forward.go:253 +0xce
honnef.co/go/tools/internal/xtools-internal/graph.(*compactGraph[...]).Out.func1-range1()
    golangci-lint/src/golangci-lint/vendor/honnef.co/go/tools/internal/xtools-internal/graph/compact.go:82 +0x58
honnef.co/go/tools/go/ir.(*Function).Out.func1(0x3d7b238625a0)
    golangci-lint/src/golangci-lint/vendor/honnef.co/go/tools/go/ir/ssa.go:1809 +0x7f
honnef.co/go/tools/internal/xtools-internal/graph.(*compactGraph[...]).Out.func1()
    golangci-lint/src/golangci-lint/vendor/honnef.co/go/tools/internal/xtools-internal/graph/compact.go:81 +0xea
honnef.co/go/tools/analysis/dfa/dense.(*fwdBuilder[...]).propagate(0x562037796240)
    golangci-lint/src/golangci-lint/vendor/honnef.co/go/tools/analysis/dfa/dense/forward.go:252 +0x426
honnef.co/go/tools/analysis/dfa/dense.Forward[...]({0x562037c4c2c8, 0x3d7b0ceea008?}, 0x3d7b02135ad8?, 0x3d7af68e3e60)
    golangci-lint/src/golangci-lint/vendor/honnef.co/go/tools/analysis/dfa/dense/forward.go:75 +0x53e
honnef.co/go/tools/analysis/facts/nilness.impl(0x3d7aeff682a0, 0x3d7b0ceea008, 0x3d7af2fac3c0)
    golangci-lint/src/golangci-lint/vendor/honnef.co/go/tools/analysis/facts/nilness/nilness.go:717 +0x86f
honnef.co/go/tools/analysis/facts/nilness.run(0x3d7aeff682a0)
    golangci-lint/src/golangci-lint/vendor/honnef.co/go/tools/analysis/facts/nilness/nilness.go:100 +0xdb
github.com/golangci/golangci-lint/v2/pkg/goanalysis.(*action).analyze.func3(...)
    golangci-lint/src/golangci-lint/pkg/goanalysis/runner_checker.go:180
github.com/golangci/golangci-lint/v2/pkg/goanalysis.(*action).analyze(0x3d7af21829c0)
    golangci-lint/src/golangci-lint/pkg/goanalysis/runner_checker.go:206 +0xbde
github.com/golangci/golangci-lint/v2/pkg/timeutils.(*Stopwatch).TrackStage(0x3d7aeee076d0, {0x56203666a919, 0x7}, 0x3d7aef62ef10)
    golangci-lint/src/golangci-lint/pkg/timeutils/stopwatch.go:111 +0x44
github.com/golangci/golangci-lint/v2/pkg/goanalysis.(*action).analyzeSafe(0x3d7af21829c0?)
    golangci-lint/src/golangci-lint/pkg/goanalysis/runner_action.go:59 +0x71
github.com/golangci/golangci-lint/v2/pkg/goanalysis.(*loadingPackage).analyze.func2()
    golangci-lint/src/golangci-lint/pkg/goanalysis/runner_loadingpackage.go:107 +0x65
golang.org/x/sync/errgroup.(*Group).Go.func1()
    golangci-lint/src/golangci-lint/vendor/golang.org/x/sync/errgroup/errgroup.go:93 +0x50
created by golang.org/x/sync/errgroup.(*Group).Go in goroutine 329
    golangci-lint/src/golangci-lint/vendor/golang.org/x/sync/errgroup/errgroup.go:78 +0xa5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0