diff options
Diffstat (limited to 'test/interface/fake.go')
| -rw-r--r-- | test/interface/fake.go | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/test/interface/fake.go b/test/interface/fake.go deleted file mode 100644 index bdc5b9072..000000000 --- a/test/interface/fake.go +++ /dev/null @@ -1,97 +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. - -// Interface comparisons using types hidden -// inside reflected-on structs. - -package main - -import "reflect" - -type T struct { - f float32 - g float32 - - s string - t string - - u uint32 - v uint32 - - w uint32 - x uint32 - - y uint32 - z uint32 -} - -func add(s, t string) string { - return s + t -} - -func assert(b bool) { - if !b { - panic("assert") - } -} - -func main() { - var x T - x.f = 1.0 - x.g = x.f - x.s = add("abc", "def") - x.t = add("abc", "def") - x.u = 1 - x.v = 2 - x.w = 1 << 28 - x.x = 2 << 28 - x.y = 0x12345678 - x.z = x.y - - // check mem and string - v := reflect.ValueOf(x) - i := v.Field(0) - j := v.Field(1) - assert(i.Interface() == j.Interface()) - - s := v.Field(2) - t := v.Field(3) - assert(s.Interface() == t.Interface()) - - // make sure different values are different. - // make sure whole word is being compared, - // not just a single byte. - i = v.Field(4) - j = v.Field(5) - assert(i.Interface() != j.Interface()) - - i = v.Field(6) - j = v.Field(7) - assert(i.Interface() != j.Interface()) - - i = v.Field(8) - j = v.Field(9) - assert(i.Interface() == j.Interface()) -} - -/* -comparing uncomparable type float32 -throw: interface compare - -panic PC=0x28ceb8 [1] -throw+0x41 /Users/rsc/goX/src/runtime/runtime.c:54 - throw(0x3014a, 0x0) -ifaceeq+0x15c /Users/rsc/goX/src/runtime/iface.c:501 - ifaceeq(0x2aa7c0, 0x0, 0x0, 0x0, 0x2aa7c0, ...) -sys·ifaceeq+0x48 /Users/rsc/goX/src/runtime/iface.c:527 - sys·ifaceeq(0x2aa7c0, 0x0, 0x0, 0x0, 0x2aa7c0, ...) -main·main+0x190 /Users/rsc/goX/src/cmd/gc/x.go:10 - main·main() -mainstart+0xf /Users/rsc/goX/src/runtime/amd64/asm.s:53 - mainstart() -sys·Goexit /Users/rsc/goX/src/runtime/proc.c:124 - sys·Goexit() -*/ |
