modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/reflectmethod2.go (about) 1 // run 2 3 // Copyright 2016 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 // The linker can prune methods that are not directly called or 8 // assigned to interfaces, but only if reflect.Type.MethodByName is 9 // never used. Test it here. 10 11 package main 12 13 import reflect1 "reflect" 14 15 var called = false 16 17 type M int 18 19 func (m M) UniqueMethodName() { 20 called = true 21 } 22 23 var v M 24 25 type MyType interface { 26 MethodByName(string) (reflect1.Method, bool) 27 } 28 29 func main() { 30 var t MyType = reflect1.TypeOf(v) 31 m, _ := t.MethodByName("UniqueMethodName") 32 m.Func.Interface().(func(M))(v) 33 if !called { 34 panic("UniqueMethodName not called") 35 } 36 }