]> Cypherpunks.ru repositories - gostls13.git/blob - test/defer.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / defer.go
1 // run
2
3 // Copyright 2009 The Go Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
6
7 // Test defer.
8
9 package main
10
11 import "fmt"
12
13 var result string
14
15 func addInt(i int) { result += fmt.Sprint(i) }
16
17 func test1helper() {
18         for i := 0; i < 10; i++ {
19                 defer addInt(i)
20         }
21 }
22
23 func test1() {
24         result = ""
25         test1helper()
26         if result != "9876543210" {
27                 fmt.Printf("test1: bad defer result (should be 9876543210): %q\n", result)
28                 panic("defer")
29         }
30 }
31
32 func addDotDotDot(v ...interface{}) { result += fmt.Sprint(v...) }
33
34 func test2helper() {
35         for i := 0; i < 10; i++ {
36                 defer addDotDotDot(i)
37         }
38 }
39
40 func test2() {
41         result = ""
42         test2helper()
43         if result != "9876543210" {
44                 fmt.Printf("test2: bad defer result (should be 9876543210): %q\n", result)
45                 panic("defer")
46         }
47 }
48
49 func main() {
50         test1()
51         test2()
52 }