github.com/karrick/go@v0.0.0-20170817181416-d5b0ec858b37/test/reflectmethod3.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.Method is 9 // never used. Test it here. 10 11 package main 12 13 import "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 Method(int) reflect.Method 27 } 28 29 func main() { 30 var t MyType = reflect.TypeOf(v) 31 t.Method(0).Func.Interface().(func(M))(v) 32 if !called { 33 panic("UniqueMethodName not called") 34 } 35 }