github.com/yunabe/lgo@v0.0.0-20190709125917-42c42d410fdf/converter/testdata/autoexit.golden (about) 1 package lgo_exec 2 3 import pkg0 "github.com/yunabe/lgo/core" 4 func light(x int) int { 5 pkg0.ExitIfCtxDone() 6 y := x * x 7 return y 8 } 9 func fcall(x int) int { 10 pkg0.ExitIfCtxDone() 11 x = light(x) 12 x += 10 13 pkg0.ExitIfCtxDone() 14 x = light(x) 15 x -= 10 16 pkg0.ExitIfCtxDone() 17 return light(x) 18 } 19 func ifstmt() { 20 pkg0.ExitIfCtxDone() 21 x := light(2) 22 if x > 10 { 23 } 24 pkg0.ExitIfCtxDone() 25 26 x = light(3) 27 pkg0.ExitIfCtxDone() 28 x += light(4) 29 pkg0.ExitIfCtxDone() 30 if y := light(10); x-y < 0 { 31 } 32 pkg0.ExitIfCtxDone() 33 34 x = light(4) 35 pkg0.ExitIfCtxDone() 36 if x < light(10) { 37 } 38 } 39 func forstmt() { 40 pkg0.ExitIfCtxDone() 41 x := light(1) 42 for i := 0; i < 10; i++ { 43 pkg0.ExitIfCtxDone() 44 x += i 45 } 46 pkg0.ExitIfCtxDone() 47 y := light(0) 48 pkg0.ExitIfCtxDone() 49 for i := light(y); ; { 50 pkg0.ExitIfCtxDone() 51 y += i 52 } 53 } 54 func switchstmt() int { 55 pkg0.ExitIfCtxDone() 56 x := light(2) 57 switch x { 58 case x * x: 59 x = 10 60 } 61 pkg0.ExitIfCtxDone() 62 63 x = light(3) 64 pkg0.ExitIfCtxDone() 65 switch x { 66 case light(4): 67 x = 10 68 } 69 pkg0.ExitIfCtxDone() 70 71 switch x := light(10); x { 72 case 10: 73 pkg0.ExitIfCtxDone() 74 light(x) 75 pkg0.ExitIfCtxDone() 76 light(x + 1) 77 default: 78 pkg0.ExitIfCtxDone() 79 light(x + 2) 80 pkg0.ExitIfCtxDone() 81 light(x + 3) 82 } 83 84 switch { 85 case x > 0: 86 light(x + 10) 87 } 88 return x 89 } 90 func deferstmt() int { 91 pkg0.ExitIfCtxDone() 92 x := light(2) 93 defer light(light(4)) 94 pkg0.ExitIfCtxDone() 95 y := light(3) 96 defer light(5) 97 pkg0.ExitIfCtxDone() 98 z := light(10) 99 defer func() { 100 z += light(20) 101 for i := 0; i < x; i++ { 102 z += light(30) 103 } 104 f := func() { 105 z += 1 106 } 107 f() 108 f() 109 }() 110 return x*y + z 111 } 112 func chanFunc() (ret int) { 113 pkg0.ExitIfCtxDone() 114 c := make(chan int) 115 select { 116 case i := <-c: 117 ret = i 118 case <-pkg0.GetExecContext().Done(): 119 panic(pkg0.Bailout) 120 } 121 select { 122 case <-c: 123 ret = ret * ret 124 default: 125 } 126 select { 127 case c <- 10: 128 case <-pkg0.GetExecContext().Done(): 129 panic(pkg0.Bailout) 130 } 131 return 132 } 133 func lgo_init() { 134 pkg0.ExitIfCtxDone() 135 136 for i := 0; i < 100; i++ { 137 pkg0.ExitIfCtxDone() 138 } 139 for { 140 pkg0.ExitIfCtxDone() 141 } 142 }