Skip to content

Commit

Permalink
test: add test coverage for type-switch hash collisions
Browse files Browse the repository at this point in the history
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: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
  • Loading branch information
mdempsky committed Sep 16, 2019
1 parent c1000c5 commit 115e4c9
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions test/fixedbugs/issue29612.dir/main.go
Expand Up @@ -10,6 +10,8 @@
package main

import (
"fmt"

ssa1 "./p1/ssa"
ssa2 "./p2/ssa"
)
Expand All @@ -21,4 +23,27 @@ func main() {
v2 := &ssa2.T{}
ssa2.Works(v2)
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))
}
}

0 comments on commit 115e4c9

Please sign in to comment.