| // run | 
 |  | 
 | // Copyright 2011 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. | 
 |  | 
 | // Issue 2582 | 
 | package main | 
 |  | 
 | type T struct{} | 
 |  | 
 | //go:noinline | 
 | func (T) cplx() complex128 { | 
 | 	return complex(1, 0) | 
 | } | 
 |  | 
 | func (T) cplx2() complex128 { | 
 | 	return complex(0, 1) | 
 | } | 
 |  | 
 | type I interface { | 
 | 	cplx() complex128 | 
 | } | 
 |  | 
 | func main() { | 
 |  | 
 | 	var t T | 
 |  | 
 | 	if v := real(t.cplx()); v != 1 { | 
 | 		panic("not-inlined complex call failed") | 
 | 	} | 
 | 	_ = imag(t.cplx()) | 
 |  | 
 | 	_ = real(t.cplx2()) | 
 | 	if v := imag(t.cplx2()); v != 1 { | 
 | 		panic("potentially inlined complex call failed") | 
 | 	} | 
 |  | 
 | 	var i I | 
 | 	i = t | 
 | 	if v := real(i.cplx()); v != 1 { | 
 | 		panic("potentially inlined complex call failed") | 
 | 	} | 
 | 	_ = imag(i.cplx()) | 
 | } |