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