// Copyright 2020 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. // Like ifacemethod2.go, this tests that a method *is* live // if the type is "indirectly" converted to an interface // using reflection with a method descriptor as intermediate. package main import "reflect" type S int func (s S) M() { println("S.M") } type I interface{ M() } type T float64 func (t T) F(s S) {} func main() { var t T ft := reflect.TypeOf(t).Method(0).Type at := ft.In(1) v := reflect.New(at).Elem() v.Interface().(I).M() }