feat: replace Fiber.create constructor with new Fiber instantiation pattern
Refactor fiber creation from a static `Fiber.create` method to a constructor-based `new Fiber` pattern. This introduces a `fiber_instantiate` native that returns the Fiber class itself, allowing `new Fiber` to invoke `fiber_new` for validation and creation. A shared `validateFn` helper is added to centralize function argument checking, replacing inline validation in both `fiber_new` and `fn_new`. All test files are updated to use the new syntax, and the old `create_wrong_arg_type` test is replaced with `new_wrong_arg_type`.
This commit is contained in:
@@ -3,7 +3,7 @@ var closure
|
||||
|
||||
{
|
||||
var a = "before"
|
||||
fiber = Fiber.create {
|
||||
fiber = new Fiber {
|
||||
IO.print(a)
|
||||
Fiber.yield
|
||||
a = "after"
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
var fiber = Fiber.create("not fn") // expect runtime error: Argument must be a function.
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {
|
||||
var fiber = new Fiber {
|
||||
IO.print("1")
|
||||
Fiber.yield
|
||||
IO.print("2")
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
var fiber = new Fiber("not fn") // expect runtime error: Argument must be a function.
|
||||
@@ -1,8 +1,8 @@
|
||||
var b = Fiber.create {
|
||||
var b = new Fiber {
|
||||
IO.print("fiber b")
|
||||
}
|
||||
|
||||
var a = Fiber.create {
|
||||
var a = new Fiber {
|
||||
IO.print("begin fiber a")
|
||||
b.run
|
||||
IO.print("end fiber a")
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
return "result"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {
|
||||
var fiber = new Fiber {
|
||||
IO.print("run")
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {
|
||||
var fiber = new Fiber {
|
||||
IO.print("run")
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {}
|
||||
var fiber = new Fiber {}
|
||||
IO.print(fiber is Fiber) // expect: true
|
||||
IO.print(fiber is Object) // expect: true
|
||||
IO.print(fiber is Bool) // expect: false
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber 1")
|
||||
Fiber.yield
|
||||
IO.print("fiber 2")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber 1")
|
||||
var result = Fiber.yield
|
||||
IO.print(result)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = Fiber.create {
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber 1")
|
||||
Fiber.yield("yield 1")
|
||||
IO.print("fiber 2")
|
||||
|
||||
Reference in New Issue
Block a user