summaryrefslogtreecommitdiff
path: root/gcc/testsuite/go.test/test/ken/intervar.go
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/go.test/test/ken/intervar.go')
-rw-r--r--gcc/testsuite/go.test/test/ken/intervar.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/gcc/testsuite/go.test/test/ken/intervar.go b/gcc/testsuite/go.test/test/ken/intervar.go
new file mode 100644
index 000000000..c2aaaa870
--- /dev/null
+++ b/gcc/testsuite/go.test/test/ken/intervar.go
@@ -0,0 +1,64 @@
+// $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 Iputs interface {
+ puts (s string);
+}
+
+// ---------
+
+type Print struct {
+ whoami int;
+ put Iputs;
+}
+
+func (p *Print) dop() {
+ print(" print ", p.whoami);
+ p.put.puts("abc");
+}
+
+// ---------
+
+type Bio struct {
+ whoami int;
+ put Iputs;
+}
+
+func (b *Bio) puts(s string) {
+ print(" bio ", b.whoami);
+ b.put.puts(s);
+}
+
+// ---------
+
+type File struct {
+ whoami int;
+ put Iputs;
+}
+
+func (f *File) puts(s string) {
+ print(" file ", f.whoami, " -- ", s);
+}
+
+func
+main() {
+ p := new(Print);
+ b := new(Bio);
+ f := new(File);
+
+ p.whoami = 1;
+ p.put = b;
+
+ b.whoami = 2;
+ b.put = f;
+
+ f.whoami = 3;
+
+ p.dop();
+ print("\n");
+}