| // Copyright 2026 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 "./p" | |
| var fn0 = (*p.T0).NilCheck | |
| var fn1 = (*p.T1).NilCheck | |
| var valueFn0 = (*p.ValueT0).ValueNilCheck | |
| var valueFn1 = (*p.ValueT1).ValueNilCheck | |
| func main() { | |
| test("offset zero", func() { fn0((*p.T0)(nil)) }) | |
| test("offset non-zero", func() { fn1((*p.T1)(nil)) }) | |
| test("value offset zero", func() { valueFn0((*p.ValueT0)(nil)) }) | |
| test("value offset non-zero", func() { valueFn1((*p.ValueT1)(nil)) }) | |
| } | |
| func test(name string, call func()) { | |
| p.Called = false | |
| defer func() { | |
| if recover() == nil { | |
| panic(name + ": want panic") | |
| } | |
| if p.Called { | |
| panic(name + ": called embedded method") | |
| } | |
| }() | |
| call() | |
| } |