summaryrefslogtreecommitdiff
path: root/gcc/testsuite/go.test/test/method.go
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/go.test/test/method.go')
-rw-r--r--gcc/testsuite/go.test/test/method.go111
1 files changed, 111 insertions, 0 deletions
diff --git a/gcc/testsuite/go.test/test/method.go b/gcc/testsuite/go.test/test/method.go
new file mode 100644
index 000000000..c751c1f1b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/method.go
@@ -0,0 +1,111 @@
+// $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.
+
+package main
+
+type S string
+type S1 string
+type I int
+type I1 int
+type T struct {
+ x int
+}
+type T1 T
+
+func (s S) val() int { return 1 }
+func (s *S1) val() int { return 2 }
+func (i I) val() int { return 3 }
+func (i *I1) val() int { return 4 }
+//func (t T) val() int { return 7 }
+func (t *T1) val() int { return 8 }
+
+type Val interface {
+ val() int
+}
+
+func val(v Val) int { return v.val() }
+
+func main() {
+ var s S
+ var ps *S1
+ var i I
+ var pi *I1
+ var pt *T1
+
+ if s.val() != 1 {
+ println("s.val:", s.val())
+ panic("fail")
+ }
+ if S.val(s) != 1 {
+ println("S.val(s):", S.val(s))
+ panic("fail")
+ }
+ if (*S).val(&s) != 1 {
+ println("(*S).val(s):", (*S).val(&s))
+ panic("fail")
+ }
+ if ps.val() != 2 {
+ println("ps.val:", ps.val())
+ panic("fail")
+ }
+ if (*S1).val(ps) != 2 {
+ println("(*S1).val(ps):", (*S1).val(ps))
+ panic("fail")
+ }
+ if i.val() != 3 {
+ println("i.val:", i.val())
+ panic("fail")
+ }
+ if I.val(i) != 3 {
+ println("I.val(i):", I.val(i))
+ panic("fail")
+ }
+ if (*I).val(&i) != 3 {
+ println("(*I).val(&i):", (*I).val(&i))
+ panic("fail")
+ }
+ if pi.val() != 4 {
+ println("pi.val:", pi.val())
+ panic("fail")
+ }
+ if (*I1).val(pi) != 4 {
+ println("(*I1).val(pi):", (*I1).val(pi))
+ panic("fail")
+ }
+ // if t.val() != 7 { prinln("t.val:", t.val()); panic("fail") }
+ if pt.val() != 8 {
+ println("pt.val:", pt.val())
+ panic("fail")
+ }
+ if (*T1).val(pt) != 8 {
+ println("(*T1).val(pt):", (*T1).val(pt))
+ panic("fail")
+ }
+
+ if val(s) != 1 {
+ println("s.val:", val(s))
+ panic("fail")
+ }
+ if val(ps) != 2 {
+ println("ps.val:", val(ps))
+ panic("fail")
+ }
+ if val(i) != 3 {
+ println("i.val:", val(i))
+ panic("fail")
+ }
+ if val(pi) != 4 {
+ println("pi.val:", val(pi))
+ panic("fail")
+ }
+ // if val(t) != 7 { println("t.val:", val(t)); panic("fail") }
+ if val(pt) != 8 {
+ println("pt.val:", val(pt))
+ panic("fail")
+ }
+
+ // if Val.val(i) != 3 { println("Val.val(i):", Val.val(i)); panic("fail") }
+}