Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/tools/go/ssa: emitConv doesn't ignore struct tags, panics #19646

Closed
dominikh opened this issue Mar 21, 2017 · 2 comments
Closed

x/tools/go/ssa: emitConv doesn't ignore struct tags, panics #19646

dominikh opened this issue Mar 21, 2017 · 2 comments

Comments

@dominikh
Copy link
Member

What did you do?

Input file: https://play.golang.org/p/tlRthTtvF9

$ go build /tmp/foo.go 
$ ssadump -build=F /tmp/foo.go
panic: in pkg.fn: cannot convert *t0 (pkg.T1) to pkg.T2

goroutine 1 [running]:
golang.org/x/tools/go/ssa.emitConv(0xc42012e140, 0x87ef00, 0xc420120240, 0x87a600, 0xc4200d2e10, 0xc420120240, 0xe1ac4f7600000000)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/emit.go:242 +0x9e5
golang.org/x/tools/go/ssa.(*builder).expr0(0xc4200e99e8, 0xc42012e140, 0x87b480, 0xc4200d6780, 0x7, 0x87a600, 0xc4200d2e10, 0x0, 0x0, 0xc4201286d8, ...)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:573 +0x30f0
golang.org/x/tools/go/ssa.(*builder).expr(0xc4200e99e8, 0xc42012e140, 0x87b480, 0xc4200d6780, 0x6e1160, 0xc4200d30b0)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:530 +0x299
golang.org/x/tools/go/ssa.(*builder).assign(0xc4200e99e8, 0xc42012e140, 0x87c5c0, 0xc4200d30e0, 0x87b480, 0xc4200d6780, 0xc4200d3001, 0x0)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:502 +0x137
golang.org/x/tools/go/ssa.(*builder).localValueSpec(0xc4200e99e8, 0xc42012e140, 0xc4200d05a0)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:991 +0x4ca
golang.org/x/tools/go/ssa.(*builder).stmt(0xc4200e99e8, 0xc42012e140, 0x87b5c0, 0xc4200d46a0)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:1972 +0x1dd1
golang.org/x/tools/go/ssa.(*builder).stmtList(0xc4200e99e8, 0xc42012e140, 0xc4200f6200, 0x5, 0x8)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:790 +0x61
golang.org/x/tools/go/ssa.(*builder).stmt(0xc4200e99e8, 0xc42012e140, 0x87b400, 0xc4200d2ae0)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:2102 +0x2df7
golang.org/x/tools/go/ssa.(*builder).buildFunction(0xc4200e99e8, 0xc42012e140)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:2195 +0x35c
golang.org/x/tools/go/ssa.(*builder).buildFuncDecl(0xc4200e99e8, 0xc4201200c0, 0xc4200d2b10)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:2225 +0x12e
golang.org/x/tools/go/ssa.(*Package).build(0xc4201200c0)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:2341 +0x684
golang.org/x/tools/go/ssa.(*Package).(golang.org/x/tools/go/ssa.build)-fm()
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:2260 +0x2a
sync.(*Once).Do(0xc4201200ec, 0xc4200e9c80)
	/usr/lib/go/src/sync/once.go:44 +0xbe
golang.org/x/tools/go/ssa.(*Package).Build(0xc4201200c0)
	/home/dominikh/prj/src/golang.org/x/tools/go/ssa/builder.go:2260 +0x55
main.doMain(0x0, 0x0)
	/home/dominikh/prj/src/golang.org/x/tools/cmd/ssadump/main.go:139 +0x450
main.main()
	/home/dominikh/prj/src/golang.org/x/tools/cmd/ssadump/main.go:63 +0x26

What did you expect to see?

No panic in emitConv.

This is caused by Go 1.8's more lax conversion rules with regard to struct tags.

/cc @alandonovan

@mvdan mvdan added this to the Unreleased milestone Mar 21, 2017
@cespare cespare changed the title x/tools/go/ssa: emitConv doesn't ignore strugt tags, panics x/tools/go/ssa: emitConv doesn't ignore struct tags, panics Mar 21, 2017
@spenczar
Copy link
Contributor

I've mailed https://go-review.googlesource.com/c/38452/ to fix this. Dunno why the normal bots didn't plop a link here.

@gopherbot
Copy link

CL https://golang.org/cl/38452 mentions this issue.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants