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
7package main
8
9type Value struct {
10	X interface{}
11	Y int
12}
13
14type Struct struct {
15	X complex128
16}
17
18const magic = 1 + 2i
19
20func (Value) Complex(x complex128) {
21	if x != magic {
22		println(x)
23		panic("bad complex magic")
24	}
25}
26
27func f(x *byte, y, z int) complex128 {
28	return magic
29}
30
31func (Value) Struct(x Struct) {
32	if x.X != magic {
33		println(x.X)
34		panic("bad struct magic")
35	}
36}
37
38func f1(x *byte, y, z int) Struct {
39	return Struct{magic}
40}
41
42func main() {
43	var v Value
44	v.Struct(f1(nil, 0, 0)) // ok
45	v.Complex(f(nil, 0, 0)) // used to fail
46}
47