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