summaryrefslogtreecommitdiff
path: root/test/interface/convert.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/interface/convert.go')
-rw-r--r--test/interface/convert.go147
1 files changed, 0 insertions, 147 deletions
diff --git a/test/interface/convert.go b/test/interface/convert.go
deleted file mode 100644
index 7f429f703..000000000
--- a/test/interface/convert.go
+++ /dev/null
@@ -1,147 +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.
-
-// Check uses of all the different interface
-// conversion runtime functions.
-
-package main
-
-type Stringer interface {
- String() string
-}
-type StringLengther interface {
- String() string
- Length() int
-}
-type Empty interface{}
-
-type T string
-
-func (t T) String() string {
- return string(t)
-}
-func (t T) Length() int {
- return len(t)
-}
-
-type U string
-
-func (u U) String() string {
- return string(u)
-}
-
-var t = T("hello")
-var u = U("goodbye")
-var e Empty
-var s Stringer = t
-var sl StringLengther = t
-var i int
-var ok bool
-
-func hello(s string) {
- if s != "hello" {
- println("not hello: ", s)
- panic("fail")
- }
-}
-
-func five(i int) {
- if i != 5 {
- println("not 5: ", i)
- panic("fail")
- }
-}
-
-func true(ok bool) {
- if !ok {
- panic("not true")
- }
-}
-
-func false(ok bool) {
- if ok {
- panic("not false")
- }
-}
-
-func main() {
- // T2I
- s = t
- hello(s.String())
-
- // I2T
- t = s.(T)
- hello(t.String())
-
- // T2E
- e = t
-
- // E2T
- t = e.(T)
- hello(t.String())
-
- // T2I again
- sl = t
- hello(sl.String())
- five(sl.Length())
-
- // I2I static
- s = sl
- hello(s.String())
-
- // I2I dynamic
- sl = s.(StringLengther)
- hello(sl.String())
- five(sl.Length())
-
- // I2E (and E2T)
- e = s
- hello(e.(T).String())
-
- // E2I
- s = e.(Stringer)
- hello(s.String())
-
- // I2T2 true
- t, ok = s.(T)
- true(ok)
- hello(t.String())
-
- // I2T2 false
- _, ok = s.(U)
- false(ok)
-
- // I2I2 true
- sl, ok = s.(StringLengther)
- true(ok)
- hello(sl.String())
- five(sl.Length())
-
- // I2I2 false (and T2I)
- s = u
- sl, ok = s.(StringLengther)
- false(ok)
-
- // E2T2 true
- t, ok = e.(T)
- true(ok)
- hello(t.String())
-
- // E2T2 false
- i, ok = e.(int)
- false(ok)
-
- // E2I2 true
- sl, ok = e.(StringLengther)
- true(ok)
- hello(sl.String())
- five(sl.Length())
-
- // E2I2 false (and T2E)
- e = u
- sl, ok = e.(StringLengther)
- false(ok)
-}