modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/fixedbugs/issue8613.go (about)

     1  // run
     2  
     3  // Copyright 2016 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  package main
     8  
     9  var out int
    10  var zero int
    11  
    12  func main() {
    13  	wantPanic("test1", func() {
    14  		out = 1 / zero
    15  	})
    16  	wantPanic("test2", func() {
    17  		_ = 1 / zero
    18  	})
    19  	wantPanic("test3", func() {
    20  		v := 0
    21  		_ = 1 / v
    22  	})
    23  	wantPanic("test4", func() { divby(0) })
    24  }
    25  
    26  func wantPanic(test string, fn func()) {
    27  	defer func() {
    28  		if e := recover(); e == nil {
    29  			panic(test + ": expected panic")
    30  		}
    31  	}()
    32  	fn()
    33  }
    34  
    35  //go:noinline
    36  func divby(v int) {
    37  	_ = 1 / v
    38  }