Go version

go version go1.25.0 linux/amd64

Output of go env in your module/workspace:

AR='ar'
CC='gcc'
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_ENABLED='1'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
CXX='g++'
GCCGO='gccgo'
GO111MODULE=''
GOAMD64='v1'
GOARCH='amd64'
GOAUTH='netrc'
GOBIN=''
GOCACHE='<SNIP>/.cache/go-build'
GOCACHEPROG=''
GODEBUG=''
GOENV='<SNIP>/.config/go/env'
GOEXE=''
GOEXPERIMENT='jsonv2'
GOFIPS140='off'
GOFLAGS=''
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build1839351821=/tmp/go-build -gno-record-gcc-switches'
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMOD='/dev/null'
GOMODCACHE='<SNIP>/work/go/pkg/mod'
GONOPROXY='<SNIP>'
GONOSUMDB='<SNIP>'
GOOS='linux'
GOPATH='<SNIP>/work/go'
GOPRIVATE='<SNIP>'
GOPROXY='https://proxy.golang.org,direct'
GOROOT='<SNIP>/go_static/go'
GOSUMDB='sum.golang.org'
GOTELEMETRY='local'
GOTELEMETRYDIR='<SNIP>/.config/go/telemetry'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='<SNIP>/go_static/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.25.0'
GOWORK=''
PKG_CONFIG='pkg-config'

What did you do?

I added jsonv2 to GOEXPERIMENT and then ran deadcode -test ./...

What did you see happen?

deadcode panics if encoding/json is used. It can be reproduced with something as simple as

package main

import (
    "encoding/json"
)

func main() {
    json.Marshal("hello")
}
panic: got encoding/json/jsontext.Value, want variadic parameter of unnamed slice or string type

goroutine 7558 gp=0xc00397d340 m=14 mp=0xc000560808 [running]:
panic({0x96abe0?, 0xc07110dd00?})
        /home/link/go_static/go/src/runtime/panic.go:802 +0x168 fp=0xc02f9728a0 sp=0xc02f9727f0 pc=0x47df08
go/types.NewSignatureType(0x0, {0x0, 0x0, 0x0}, {0x0, 0x0, 0x0}, 0xc06ef6d728, 0xc006e85620, 0x1)
        /home/link/go_static/go/src/go/types/signature.go:81 +0x354 fp=0xc02f972918 sp=0xc02f9728a0 pc=0x64f094
golang.org/x/tools/go/ssa.(*subster).signature(0xc071100fc0, 0xc007351d40)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/subst.go:566 +0xc5 fp=0xc02f972988 sp=0xc02f972918 pc=0x88e405
golang.org/x/tools/go/ssa.(*subster).typ(0xc071100fc0, {0xb119e8, 0xc007351d40})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/subst.go:139 +0x2db fp=0xc02f972a90 sp=0xc02f972988 pc=0x88b61b
golang.org/x/tools/go/ssa.(*Function).typ(...)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/func.go:45
golang.org/x/tools/go/ssa.(*Function).typeOf(0xc07110a200, {0xb12fc0, 0xc0084725a0})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/func.go:37 +0x65 fp=0xc02f972b38 sp=0xc02f972a90 pc=0x875265
golang.org/x/tools/go/ssa.(*Function).instanceType(...)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/func.go:54
golang.org/x/tools/go/ssa.(*builder).expr0(0xc06f59bf20, 0xc07110a200, {0xb12fc0?, 0xc0084725a0}, {0x2, {0xb119e8, 0xc007351d40}, {0x0, 0x0}})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:807 +0x1a65 fp=0xc02f972e78 sp=0xc02f972b38 pc=0x859405
golang.org/x/tools/go/ssa.(*builder).expr(0xc06f59bf20, 0xc07110a200, {0xb12fc0, 0xc0084725a0})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:635 +0x17b fp=0xc02f972f30 sp=0xc02f972e78 pc=0x85789b
golang.org/x/tools/go/ssa.(*builder).setCallFunc(0x78?, 0x9cbac0?, 0x5f?, 0xc0711157c0)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:1060 +0x2b6 fp=0xc02f972fb8 sp=0xc02f972f30 pc=0x85a8d6
golang.org/x/tools/go/ssa.(*builder).setCall(0xc06f59bf20, 0xc07110a200, 0xc003d88d00, 0xc0711157c0)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:1138 +0x2b fp=0xc02f973010 sp=0xc02f972fb8 pc=0x85b48b
golang.org/x/tools/go/ssa.(*builder).expr0(0xc06f59bf20, 0xc07110a200, {0xb13830?, 0xc003d88d00}, {0x7, {0xb11948, 0xc003c7dda0}, {0x0, 0x0}})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:718 +0x2105 fp=0xc02f973350 sp=0xc02f973010 pc=0x859aa5
golang.org/x/tools/go/ssa.(*builder).expr(0xc06f59bf20, 0xc07110a200, {0xb13830, 0xc003d88d00})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:635 +0x17b fp=0xc02f973408 sp=0xc02f973350 pc=0x85789b
golang.org/x/tools/go/ssa.(*builder).assign(0xc06f59bf20?, 0xc07110a200, {0xb140a0, 0xc071117500}, {0xb13830?, 0xc003d88d00?}, 0x0?, 0xc02f973560)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:608 +0x3a5 fp=0xc02f9734c8 sp=0xc02f973408 pc=0x8574c5
golang.org/x/tools/go/ssa.(*builder).assignStmt(0xc06f59bf20, 0xc07110a200, {0xc003d05ab0, 0x1, 0xc0084723a0?}, {0xc003d05b40, 0x1, 0xc02f973678?}, 0x0)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:1223 +0x468 fp=0xc02f9735d0 sp=0xc02f9734c8 pc=0x85bf88
golang.org/x/tools/go/ssa.(*builder).stmt(0xc06f59bf20, 0xc07110a200, {0xb134a0?, 0xc003d88d40?})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:2714 +0x5b5 fp=0xc02f973700 sp=0xc02f9735d0 pc=0x868275
golang.org/x/tools/go/ssa.(*builder).stmtList(...)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:966
golang.org/x/tools/go/ssa.(*builder).stmt(0xc06f59bf20, 0xc07110a200, {0xb135c0?, 0xc0049fd9e0?})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:2747 +0x1109 fp=0xc02f973830 sp=0xc02f973700 pc=0x868dc9
golang.org/x/tools/go/ssa.(*builder).stmt(0xc06f59bf20, 0xc07110a200, {0xb135f0?, 0xc003d88dc0?})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:2761 +0xb8c fp=0xc02f973960 sp=0xc02f973830 pc=0x86884c
golang.org/x/tools/go/ssa.(*builder).stmtList(...)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:966
golang.org/x/tools/go/ssa.(*builder).stmt(0xc06f59bf20, 0xc07110a200, {0xb135c0?, 0xc005c18270?})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:2747 +0x1109 fp=0xc02f973a90 sp=0xc02f973960 pc=0x868dc9
golang.org/x/tools/go/ssa.(*builder).forStmt(0xc06f59bf20, 0xc07110a200, 0xc003f07480, 0x0)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:1854 +0x6d6 fp=0xc02f973b08 sp=0xc02f973a90 pc=0x861436
golang.org/x/tools/go/ssa.(*builder).stmt(0xc06f59bf20, 0xc07110a200, {0xb13710?, 0xc003f07480?})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:2782 +0x4b4 fp=0xc02f973c38 sp=0xc02f973b08 pc=0x868174
golang.org/x/tools/go/ssa.(*builder).stmtList(...)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:966
golang.org/x/tools/go/ssa.(*builder).stmt(0xc06f59bf20, 0xc07110a200, {0xb135c0?, 0xc005c182a0?})
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:2747 +0x1109 fp=0xc02f973d68 sp=0xc02f973c38 pc=0x868dc9
golang.org/x/tools/go/ssa.(*builder).buildFromSyntax(0xc06f59bf20, 0xc07110a200)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:2956 +0x25a fp=0xc02f973de0 sp=0xc02f973d68 pc=0x86a7da
golang.org/x/tools/go/ssa.(*builder).buildFunction(0x9db840?, 0xc07110a200)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:2906 +0x183 fp=0xc02f973ea0 sp=0xc02f973de0 pc=0x86a403
golang.org/x/tools/go/ssa.(*builder).iterate(0xc06f59bf20)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:2891 +0x25 fp=0xc02f973ec0 sp=0xc02f973ea0 pc=0x86a225
golang.org/x/tools/go/ssa.(*Package).build(0xc034a7c200)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:3177 +0xce fp=0xc02f973f20 sp=0xc02f973ec0 pc=0x86c00e
golang.org/x/tools/go/ssa.(*Package).build-fm()
        <autogenerated>:1 +0x25 fp=0xc02f973f38 sp=0xc02f973f20 pc=0x898065
sync.(*Once).doSlow(0xc053f461c0?, 0x6ed660?)
        /home/link/go_static/go/src/sync/once.go:78 +0xac fp=0xc02f973f90 sp=0xc02f973f38 pc=0x49028c
sync.(*Once).Do(...)
        /home/link/go_static/go/src/sync/once.go:69
golang.org/x/tools/go/ssa.(*Package).Build(...)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:3166
golang.org/x/tools/go/ssa.(*Program).Build.func1(0xc03d44a798?)
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:3145 +0x45 fp=0xc02f973fc8 sp=0xc02f973f90 pc=0x86bea5
golang.org/x/tools/go/ssa.(*Program).Build.gowrap1()
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:3148 +0x24 fp=0xc02f973fe0 sp=0xc02f973fc8 pc=0x86be24
runtime.goexit({})
        /home/link/go_static/go/src/runtime/asm_amd64.s:1693 +0x1 fp=0xc02f973fe8 sp=0xc02f973fe0 pc=0x486281
created by golang.org/x/tools/go/ssa.(*Program).Build in goroutine 1
        /home/link/work/go/pkg/mod/golang.org/x/tools@v0.36.0/go/ssa/builder.go:3144 +0x196

What did you expect to see?

deadcode runs without panics