Source file test/fixedbugs/issue68816.go

     1  // run
     2  
     3  // Copyright 2024 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  func main() {
    10  	mustPanic(func() {
    11  		f1(1)
    12  	})
    13  	f2(1, 0) // must not panic
    14  	mustPanic(func() {
    15  		f2(1, 2)
    16  	})
    17  }
    18  
    19  var v []func()
    20  
    21  //go:noinline
    22  func f1(i int) {
    23  	v = make([]func(), -2|i)
    24  }
    25  
    26  //go:noinline
    27  func f2(i, j int) {
    28  	if j > 0 {
    29  		v = make([]func(), -2|i)
    30  	}
    31  }
    32  
    33  func mustPanic(f func()) {
    34  	defer func() {
    35  		r := recover()
    36  		if r == nil {
    37  			panic("didn't panic")
    38  		}
    39  	}()
    40  	f()
    41  }
    42  

View as plain text