Add a new `isDone` native method to the Fiber class that returns true when the fiber has no remaining frames. Replace TODO comments with proper runtime error handling in `fiber_run`, `fiber_run1`, `fiber_yield`, and `fiber_yield1` to prevent running finished fibers or yielding from the main fiber. Include test cases verifying the new property and error conditions.
12 lines
276 B
Plaintext
12 lines
276 B
Plaintext
var fiber = Fiber.create(fn {
|
|
IO.print("1")
|
|
Fiber.yield
|
|
IO.print("2")
|
|
})
|
|
|
|
IO.print(fiber.isDone) // expect: false
|
|
fiber.run // expect: 1
|
|
IO.print(fiber.isDone) // expect: false
|
|
fiber.run // expect: 2
|
|
IO.print(fiber.isDone) // expect: true
|