// run // Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Test run-time error detection for interface values containing types // that cannot be compared for equality. package main func main() { cmp(1) var ( m map[int]int s struct{ x []int } f func() ) noCmp(m) noCmp(s) noCmp(f) } func cmp(x interface{}) bool { return x == x } func noCmp(x interface{}) { shouldPanic(func() { cmp(x) }) } func shouldPanic(f func()) { defer func() { if recover() == nil { panic("function should panic") } }() f() }