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  }