]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/func5.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / func5.go
index 556d94d29130ca840f94fa6004dcbc4c873b9a05..2e058be7e6e19526fb24502964b5466d6e3fa86a 100644 (file)
@@ -1,19 +1,21 @@
-// $G $D/$F.go && $L $F.$A && ./$A.out
+// run
 
 // 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.
 
+// Test functions and goroutines.
+
 package main
 
 func caller(f func(int, int) int, a, b int, c chan int) {
-       c <- f(a,b)
+       c <- f(a, b)
 }
-       
+
 func gocall(f func(int, int) int, a, b int) int {
-       c := make(chan int);
-       go caller(f, a, b, c);
-       return <-c;
+       c := make(chan int)
+       go caller(f, a, b, c)
+       return <-c
 }
 
 func call(f func(int, int) int, a, b int) int {
@@ -30,7 +32,7 @@ func add(x, y int) int {
        return x + y
 }
 
-func fn() (func(int, int) int) {
+func fn() func(int, int) int {
        return f
 }
 
@@ -40,38 +42,50 @@ func addc(x, y int, c chan int) {
        c <- x+y
 }
 
-func fnc() (func(int, int, chan int)) {
+func fnc() func(int, int, chan int) {
        return fc
 }
 
 func three(x int) {
        if x != 3 {
-               panic("wrong val", x)
+               println("wrong val", x)
+               panic("fail")
        }
 }
 
 var notmain func()
 
+func emptyresults() {}
+func noresults()    {}
+
+var nothing func()
+
 func main() {
-       three(call(add, 1, 2));
-       three(call1(add, 1, 2));
-       f = add;
-       three(call(f, 1, 2));
-       three(call1(f, 1, 2));
-       three(call(fn(), 1, 2));
-       three(call1(fn(), 1, 2));
-       three(call(func(a,b int) int {return a+b}, 1, 2));
-       three(call1(func(a,b int) int {return a+b}, 1, 2));
-
-       fc = addc;
-       c := make(chan int);
-       go addc(1, 2, c);
-       three(<-c);
-       go fc(1, 2, c);
-       three(<-c);
-       go fnc()(1, 2, c);
-       three(<-c);
-       go func(a, b int, c chan int){c <- a+b}(1, 2, c);
-       three(<-c);
+       three(call(add, 1, 2))
+       three(call1(add, 1, 2))
+       f = add
+       three(call(f, 1, 2))
+       three(call1(f, 1, 2))
+       three(call(fn(), 1, 2))
+       three(call1(fn(), 1, 2))
+       three(call(func(a, b int) int { return a + b }, 1, 2))
+       three(call1(func(a, b int) int { return a + b }, 1, 2))
+
+       fc = addc
+       c := make(chan int)
+       go addc(1, 2, c)
+       three(<-c)
+       go fc(1, 2, c)
+       three(<-c)
+       go fnc()(1, 2, c)
+       three(<-c)
+       go func(a, b int, c chan int) { c <- a+b }(1, 2, c)
+       three(<-c)
+
+       emptyresults()
+       noresults()
+       nothing = emptyresults
+       nothing()
+       nothing = noresults
+       nothing()
 }
-