summaryrefslogtreecommitdiff
path: root/gcc/testsuite/go.test/test/complit.go
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/go.test/test/complit.go
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/go.test/test/complit.go')
-rw-r--r--gcc/testsuite/go.test/test/complit.go102
1 files changed, 102 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 000000000..f5f7aca9d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/complit.go
@@ -0,0 +1,102 @@
+// $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 float64
+ 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]float64{"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")
+ }
+}