Commit 115e4c9c authored by Matthew Dempsky's avatar Matthew Dempsky

test: add test coverage for type-switch hash collisions

This CL expands the test for #29612 to check that type switches also
work correctly when type hashes collide.

Change-Id: Ia153743e6ea0736c1a33191acfe4d8ba890be527
Reviewed-on: https://go-review.googlesource.com/c/go/+/195782
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: default avatarKeith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent c1000c50
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
package main package main
import ( import (
"fmt"
ssa1 "./p1/ssa" ssa1 "./p1/ssa"
ssa2 "./p2/ssa" ssa2 "./p2/ssa"
) )
...@@ -21,4 +23,27 @@ func main() { ...@@ -21,4 +23,27 @@ func main() {
v2 := &ssa2.T{} v2 := &ssa2.T{}
ssa2.Works(v2) ssa2.Works(v2)
ssa2.Panics(v2) // This call must not panic ssa2.Panics(v2) // This call must not panic
swt(v1, 1)
swt(v2, 2)
}
//go:noinline
func swt(i interface{}, want int) {
var got int
switch i.(type) {
case *ssa1.T:
got = 1
case *ssa2.T:
got = 2
case int8, int16, int32, int64:
got = 3
case uint8, uint16, uint32, uint64:
got = 4
}
if got != want {
panic(fmt.Sprintf("switch %v: got %d, want %d", i, got, want))
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment