// run | |
// Copyright 2014 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 | |
import ( | |
"fmt" | |
) | |
type Foo int64 | |
func (f *Foo) F() int64 { | |
return int64(*f) | |
} | |
type Bar int64 | |
func (b Bar) F() int64 { | |
return int64(b) | |
} | |
type Baz int32 | |
func (b Baz) F() int64 { | |
return int64(b) | |
} | |
func main() { | |
foo := Foo(123) | |
f := foo.F | |
if foo.F() != f() { | |
bug() | |
fmt.Println("foo.F", foo.F(), f()) | |
} | |
bar := Bar(123) | |
f = bar.F | |
if bar.F() != f() { | |
bug() | |
fmt.Println("bar.F", bar.F(), f()) // duh! | |
} | |
baz := Baz(123) | |
f = baz.F | |
if baz.F() != f() { | |
bug() | |
fmt.Println("baz.F", baz.F(), f()) | |
} | |
} | |
var bugged bool | |
func bug() { | |
if !bugged { | |
bugged = true | |
fmt.Println("BUG") | |
} | |
} |