--- /dev/null
+package main
+
+// Tests of panic/recover.
+
+import "fmt"
+
+func fortyTwo() (r int) {
+ r = 42
+ // The next two statements simulate a 'return' statement.
+ defer func() { recover() }()
+ panic(nil)
+}
+
+func zero() int {
+ defer func() { recover() }()
+ panic(1)
+}
+
+func zeroEmpty() (int, string) {
+ defer func() { recover() }()
+ panic(1)
+}
+
+func main() {
+ if r := fortyTwo(); r != 42 {
+ panic(r)
+ }
+ if r := zero(); r != 0 {
+ panic(r)
+ }
+ if r, s := zeroEmpty(); r != 0 || s != "" {
+ panic(fmt.Sprint(r, s))
+ }
+}