diff options
Diffstat (limited to 'test/closure.go')
| -rw-r--r-- | test/closure.go | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/test/closure.go b/test/closure.go deleted file mode 100644 index 3033c02ed..000000000 --- a/test/closure.go +++ /dev/null @@ -1,112 +0,0 @@ -// $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 - -var c = make(chan int) - -func check(a []int) { - for i := 0; i < len(a); i++ { - n := <-c - if n != a[i] { - println("want", a[i], "got", n, "at", i) - panic("fail") - } - } -} - -func f() { - var i, j int - - i = 1 - j = 2 - f := func() { - c <- i - i = 4 - g := func() { - c <- i - c <- j - } - g() - c <- i - } - j = 5 - f() -} - -// Accumulator generator -func accum(n int) func(int) int { - return func(i int) int { - n += i - return n - } -} - -func g(a, b func(int) int) { - c <- a(2) - c <- b(3) - c <- a(4) - c <- b(5) -} - -func h() { - var x8 byte = 100 - var x64 int64 = 200 - - c <- int(x8) - c <- int(x64) - f := func(z int) { - g := func() { - c <- int(x8) - c <- int(x64) - c <- z - } - g() - c <- int(x8) - c <- int(x64) - c <- int(z) - } - x8 = 101 - x64 = 201 - f(500) -} - -func newfunc() func(int) int { return func(x int) int { return x } } - - -func main() { - go f() - check([]int{1, 4, 5, 4}) - - a := accum(0) - b := accum(1) - go g(a, b) - check([]int{2, 4, 6, 9}) - - go h() - check([]int{100, 200, 101, 201, 500, 101, 201, 500}) - - x, y := newfunc(), newfunc() - if x == y { - println("newfunc returned same func") - panic("fail") - } - if x(1) != 1 || y(2) != 2 { - println("newfunc returned broken funcs") - panic("fail") - } - - ff(1) -} - -func ff(x int) { - call(func() { - _ = x - }) -} - -func call(func()) { -} |
