diff options
Diffstat (limited to 'test/interface/receiver.go')
-rw-r--r-- | test/interface/receiver.go | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/test/interface/receiver.go b/test/interface/receiver.go deleted file mode 100644 index f53daf8da..000000000 --- a/test/interface/receiver.go +++ /dev/null @@ -1,121 +0,0 @@ -// $G $D/$F.go && $L $F.$A && ./$A.out - -// Copyright 2009 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. - -// Implicit methods for embedded types. -// Mixed pointer and non-pointer receivers. - -package main - -type T int - -var nv, np int - -func (t T) V() { - if t != 42 { - panic(t) - } - nv++ -} - -func (t *T) P() { - if *t != 42 { - println(t, *t) - panic("fail") - } - np++ -} - -type V interface { - V() -} -type P interface { - P() - V() -} - -type S struct { - T -} - -type SP struct { - *T -} - -func main() { - var t T - var v V - var p P - - t = 42 - - t.P() - t.V() - - v = t - v.V() - - p = &t - p.P() - p.V() - - v = &t - v.V() - - // p = t // ERROR - var i interface{} = t - if _, ok := i.(P); ok { - println("dynamic i.(P) succeeded incorrectly") - panic("fail") - } - - // println("--struct--"); - var s S - s.T = 42 - s.P() - s.V() - - v = s - s.V() - - p = &s - p.P() - p.V() - - v = &s - v.V() - - // p = s // ERROR - var j interface{} = s - if _, ok := j.(P); ok { - println("dynamic j.(P) succeeded incorrectly") - panic("fail") - } - - // println("--struct pointer--"); - var sp SP - sp.T = &t - sp.P() - sp.V() - - v = sp - sp.V() - - p = &sp - p.P() - p.V() - - v = &sp - v.V() - - p = sp // not error - p.P() - p.V() - - if nv != 13 || np != 7 { - println("bad count", nv, np) - panic("fail") - } -} |