blob: 871307bf89a4e9eb35ae13e31ab851b706bb0cdf [file] [log] [blame]
// run
// Copyright 2025 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.
package main
import (
"errors"
"fmt"
"os"
)
type S struct{ a, b int }
func crashOnErr1(err error) S {
if err != nil {
panic(err)
}
return S{} // zero value struct
}
func f1() {
defer func() {
if recover() == nil {
fmt.Println("failed to have expected panic")
os.Exit(1)
}
}()
fmt.Println(crashOnErr1(errors.New("test error")))
}
func crashOnErr2(err error) S {
if err != nil {
panic(err)
}
return S{1, 2} // not zero value struct
}
func f2() {
defer func() {
if recover() == nil {
fmt.Println("failed to have expected panic")
os.Exit(1)
}
}()
fmt.Println(crashOnErr2(errors.New("test error")))
}
func main() {
f1()
f2()
}