diff options
Diffstat (limited to 'test/fixedbugs/bug148.go')
| -rw-r--r-- | test/fixedbugs/bug148.go | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/test/fixedbugs/bug148.go b/test/fixedbugs/bug148.go index daedff105..251020c96 100644 --- a/test/fixedbugs/bug148.go +++ b/test/fixedbugs/bug148.go @@ -1,4 +1,4 @@ -// $G $D/$F.go && $L $F.$A && ! ./$A.out || echo BUG: should crash +// $G $D/$F.go && $L $F.$A && ./$A.out // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style @@ -8,6 +8,8 @@ package main type T struct {a, b int}; +func println(x, y int) { } + func f(x interface{}) interface{} { type T struct {a, b int}; @@ -24,16 +26,29 @@ func main() { inner_T := f(nil); f(inner_T); + shouldPanic(p1) +} + +func p1() { outer_T := T{5, 7}; f(outer_T); } +func shouldPanic(f func()) { + defer func() { + if recover() == nil { + panic("function should panic") + } + }() + f() +} + /* This prints: 2 3 5 7 -but it should crash: The type assertion on line 14 should fail +but it should crash: The type assertion on line 18 should fail for the 2nd call to f with outer_T. */ |
