summaryrefslogtreecommitdiff
path: root/test/closure.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/closure.go')
-rw-r--r--test/closure.go112
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()) {
-}