// run | |
// Copyright 2022 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 | |
type I interface{ M() } | |
type T struct { | |
x int | |
} | |
func (T) M() {} | |
var pt *T | |
func f() (r int) { | |
defer func() { recover() }() | |
var i I = pt | |
defer i.M() | |
r = 1 | |
return | |
} | |
func main() { | |
if got := f(); got != 1 { | |
panic(got) | |
} | |
} |