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:
Bob Nystrom
2014-04-05 01:24:55 +00:00
parent 4c4f32b5b2
commit 059d3e4fe6
17 changed files with 38 additions and 27 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ var closure
{
var a = "before"
fiber = Fiber.create {
fiber = new Fiber {
IO.print(a)
Fiber.yield
a = "after"
-1
View File
@@ -1 +0,0 @@
var fiber = Fiber.create("not fn") // expect runtime error: Argument must be a function.
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create {
var fiber = new Fiber {
IO.print("1")
Fiber.yield
IO.print("2")
+1
View File
@@ -0,0 +1 @@
var fiber = new Fiber("not fn") // expect runtime error: Argument must be a function.
+2 -2
View File
@@ -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
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create {
var fiber = new Fiber {
IO.print("fiber")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create {
var fiber = new Fiber {
IO.print("fiber")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create {
var fiber = new Fiber {
IO.print("fiber")
return "result"
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create {
var fiber = new Fiber {
IO.print("run")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create {
var fiber = new Fiber {
IO.print("fiber")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create {
var fiber = new Fiber {
IO.print("run")
}
+1 -1
View File
@@ -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 -1
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create {
var fiber = new Fiber {
IO.print("fiber 1")
Fiber.yield
IO.print("fiber 2")
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create {
var fiber = new Fiber {
IO.print("fiber 1")
var result = Fiber.yield
IO.print(result)
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create {
var fiber = new Fiber {
IO.print("fiber 1")
Fiber.yield("yield 1")
IO.print("fiber 2")