1
2
3
4
5 package main
6
7 import "./p"
8
9 var fn0 = (*p.T0).NilCheck
10 var fn1 = (*p.T1).NilCheck
11 var valueFn0 = (*p.ValueT0).ValueNilCheck
12 var valueFn1 = (*p.ValueT1).ValueNilCheck
13
14 func main() {
15 test("offset zero", func() { fn0((*p.T0)(nil)) })
16 test("offset non-zero", func() { fn1((*p.T1)(nil)) })
17 test("value offset zero", func() { valueFn0((*p.ValueT0)(nil)) })
18 test("value offset non-zero", func() { valueFn1((*p.ValueT1)(nil)) })
19 }
20
21 func test(name string, call func()) {
22 p.Called = false
23 defer func() {
24 if recover() == nil {
25 panic(name + ": want panic")
26 }
27 if p.Called {
28 panic(name + ": called embedded method")
29 }
30 }()
31 call()
32 }
33
View as plain text