golang/test/fixedbugs/issue68816.go

42 lines
566 B
Go

// run
// Copyright 2024 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
func main() {
mustPanic(func() {
f1(1)
})
f2(1, 0) // must not panic
mustPanic(func() {
f2(1, 2)
})
}
var v []func()
//go:noinline
func f1(i int) {
v = make([]func(), -2|i)
}
//go:noinline
func f2(i, j int) {
if j > 0 {
v = make([]func(), -2|i)
}
}
func mustPanic(f func()) {
defer func() {
r := recover()
if r == nil {
panic("didn't panic")
}
}()
f()
}