summaryrefslogtreecommitdiff
path: root/test/interface/fake.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/interface/fake.go')
-rw-r--r--test/interface/fake.go97
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()
-*/