feat: allow yielding main fiber and expose current fiber reference
- Change Fiber.yield() to exit interpreter when no parent fiber exists instead of raising runtime error - Add Fiber.current primitive to return the currently executing fiber object - Update interpreter loop to stop execution when PRIM_RUN_FIBER receives null value - Modify test expectations to reflect new yielding behavior from main fiber
This commit is contained in:
@@ -1 +1,3 @@
|
||||
Fiber.yield() // expect runtime error: No fiber to yield to.
|
||||
IO.print("before") // expect: before
|
||||
Fiber.yield()
|
||||
IO.print("not reached")
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
var a = new Fiber {
|
||||
Fiber.yield() // expect runtime error: No fiber to yield to.
|
||||
IO.print("before") // expect: before
|
||||
Fiber.yield()
|
||||
}
|
||||
|
||||
// Run a chain of fibers. Since none of them are called, they all get discarded
|
||||
@@ -7,3 +8,4 @@ var a = new Fiber {
|
||||
var b = new Fiber { a.run() }
|
||||
var c = new Fiber { b.run() }
|
||||
c.run()
|
||||
IO.print("not reached")
|
||||
@@ -1 +1,3 @@
|
||||
Fiber.yield(1) // expect runtime error: No fiber to yield to.
|
||||
IO.print("before") // expect: before
|
||||
Fiber.yield(1)
|
||||
IO.print("not reached")
|
||||
@@ -1,5 +1,6 @@
|
||||
var a = new Fiber {
|
||||
Fiber.yield(1) // expect runtime error: No fiber to yield to.
|
||||
IO.print("before") // expect: before
|
||||
Fiber.yield(1)
|
||||
}
|
||||
|
||||
// Run a chain of fibers. Since none of them are called, they all get discarded
|
||||
@@ -7,3 +8,4 @@ var a = new Fiber {
|
||||
var b = new Fiber { a.run() }
|
||||
var c = new Fiber { b.run() }
|
||||
c.run()
|
||||
IO.print("not reached")
|
||||
|
||||
Reference in New Issue
Block a user