|  | // 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()) | 
|  | } |