// 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.
package main
type Value struct {
	X interface{}
	Y int
}
type Struct struct {
	X complex128
}
const magic = 1 + 2i
func (Value) Complex(x complex128) {
	if x != magic {
		println(x)
		panic("bad complex magic")
	}
}
func f(x *byte, y, z int) complex128 {
	return magic
}
func (Value) Struct(x Struct) {
	if x.X != magic {
		println(x.X)
		panic("bad struct magic")
	}
}
func f1(x *byte, y, z int) Struct {
	return Struct{magic}
}
func main() {
	var v Value
	v.Struct(f1(nil, 0, 0)) // ok
	v.Complex(f(nil, 0, 0)) // used to fail
}