Home | History | Annotate | Download | only in fixedbugs
      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
      8 package main
      9 
     10 type T struct{}
     11 
     12 //go:noinline
     13 func (T) cplx() complex128 {
     14 	return complex(1, 0)
     15 }
     16 
     17 func (T) cplx2() complex128 {
     18 	return complex(0, 1)
     19 }
     20 
     21 type I interface {
     22 	cplx() complex128
     23 }
     24 
     25 func 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