1// run 2 3// Copyright 2011 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// Issue 2582 8package main 9 10type T struct{} 11 12//go:noinline 13func (T) cplx() complex128 { 14 return complex(1, 0) 15} 16 17func (T) cplx2() complex128 { 18 return complex(0, 1) 19} 20 21type I interface { 22 cplx() complex128 23} 24 25func main() { 26 27 var t T 28 29 if v := real(t.cplx()); v != 1 { 30 panic("not-inlined complex call failed") 31 } 32 _ = imag(t.cplx()) 33 34 _ = real(t.cplx2()) 35 if v := imag(t.cplx2()); v != 1 { 36 panic("potentially inlined complex call failed") 37 } 38 39 var i I 40 i = t 41 if v := real(i.cplx()); v != 1 { 42 panic("potentially inlined complex call failed") 43 } 44 _ = imag(i.cplx()) 45} 46