Files
cogo/main.go
2022-10-28 01:04:47 +04:00

71 lines
1008 B
Go
Executable File

//go:generate go run inliner/main.go
package main
import (
"fmt"
"runtime"
"runtime/debug"
"github.com/bloeys/cogo/cogo"
)
func test(c *cogo.Coroutine[int, int]) (out int) {
if cogo.HasGen() {
return test_cogo(c)
}
c.Begin()
println("\nTick 1")
c.Yield(1)
if c.In > 1 {
println("\nTick 1.5")
c.Yield(c.In)
}
println("\nTick 2")
c.Yield(2)
println("\nTick 3")
c.Yield(3)
println("\nTick 4")
c.Yield(4)
println("\nTick before end")
return out
}
func main() {
c := &cogo.Coroutine[int, int]{
Func: test,
In: 0,
}
c.In = 5
for out, done := c.Tick(); !done; out, done = c.Tick() {
println(out)
}
}
func FileLine() int {
_, _, lineNum, ok := runtime.Caller(1)
if !ok {
panic("failed to get line number. Stack trace: " + string(debug.Stack()))
}
return lineNum
}
func FileLineString() string {
_, _, lineNum, ok := runtime.Caller(1)
if !ok {
panic("failed to get line number. Stack trace: " + string(debug.Stack()))
}
return fmt.Sprint(lineNum)
}