summaryrefslogtreecommitdiff
path: root/gcc/testsuite/go.test/test/complit.go
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/go.test/test/complit.go')
-rw-r--r--gcc/testsuite/go.test/test/complit.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/gcc/testsuite/go.test/test/complit.go b/gcc/testsuite/go.test/test/complit.go
new file mode 100644
index 00000000000..f3b7c9abe71
--- /dev/null
+++ b/gcc/testsuite/go.test/test/complit.go
@@ -0,0 +1,70 @@
+// $G $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 T struct { i int; f float; s string; next *T }
+
+type R struct { num int }
+
+func itor(a int) *R {
+ r := new(R)
+ r.num = a
+ return r
+}
+
+func eq(a []*R) {
+ for i := 0; i < len(a); i++ {
+ if a[i].num != i { panic("bad") }
+ }
+}
+
+type P struct { a, b int }
+func NewP(a, b int) *P {
+ return &P{a, b}
+}
+
+func main() {
+ var t T
+ t = T{0, 7.2, "hi", &t}
+
+ var tp *T
+ tp = &T{0, 7.2, "hi", &t}
+
+ a1 := []int{1,2,3}
+ if len(a1) != 3 { panic("a1") }
+ a2 := [10]int{1,2,3}
+ if len(a2) != 10 || cap(a2) != 10 { panic("a2") }
+
+ a3 := [10]int{1,2,3,}
+ if len(a3) != 10 || a2[3] != 0 { panic("a3") }
+
+ var oai []int
+ oai = []int{1,2,3}
+ if len(oai) != 3 { panic("oai") }
+
+ at := [...]*T{&t, tp, &t}
+ if len(at) != 3 { panic("at") }
+
+ c := make(chan int)
+ ac := []chan int{c, c, c}
+ if len(ac) != 3 { panic("ac") }
+
+ aat := [][len(at)]*T{at, at}
+ if len(aat) != 2 || len(aat[1]) != 3 { panic("aat") }
+
+ s := string([]byte{'h', 'e', 'l', 'l', 'o'})
+ if s != "hello" { panic("s") }
+
+ m := map[string]float{"one":1.0, "two":2.0, "pi":22./7.}
+ if len(m) != 3 { panic("m") }
+
+ eq([]*R{itor(0), itor(1), itor(2), itor(3), itor(4), itor(5)})
+
+ p1 := NewP(1, 2)
+ p2 := NewP(1, 2)
+ if p1 == p2 { panic("NewP") }
+}