feat: allow empty argument list methods in calls, definitions, and docs
- Compile empty `()` as a valid method signature distinct from no parentheses - Update `call()`, `clear()`, `run()`, `try()`, and `yield()` to use empty argument lists - Revise documentation across multiple files to reflect new signature semantics
This commit is contained in:
@@ -2,6 +2,6 @@ var fiber = new Fiber {
|
||||
Fiber.abort("Error message.")
|
||||
}
|
||||
|
||||
IO.print(fiber.try) // expect: Error message.
|
||||
IO.print(fiber.try()) // expect: Error message.
|
||||
IO.print(fiber.isDone) // expect: true
|
||||
IO.print(fiber.error) // expect: Error message.
|
||||
|
||||
@@ -3,5 +3,5 @@ var fiber = new Fiber {
|
||||
}
|
||||
|
||||
IO.print("before") // expect: before
|
||||
fiber.call // expect: fiber
|
||||
fiber.call() // expect: fiber
|
||||
IO.print("after") // expect: after
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
var fiber
|
||||
|
||||
fiber = new Fiber {
|
||||
fiber.call // expect runtime error: Fiber has already been called.
|
||||
fiber.call() // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
fiber.call
|
||||
fiber.call()
|
||||
|
||||
@@ -2,11 +2,11 @@ var a
|
||||
var b
|
||||
|
||||
a = new Fiber {
|
||||
b.call // expect runtime error: Fiber has already been called.
|
||||
b.call() // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
b = new Fiber {
|
||||
a.call
|
||||
a.call()
|
||||
}
|
||||
|
||||
b.call
|
||||
b.call()
|
||||
|
||||
@@ -2,5 +2,5 @@ var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
var result = fiber.call // expect: fiber
|
||||
IO.print(result) // expect: null
|
||||
var result = fiber.call() // expect: fiber
|
||||
IO.print(result) // expect: null
|
||||
|
||||
@@ -3,5 +3,5 @@ var fiber = new Fiber {
|
||||
return "result"
|
||||
}
|
||||
|
||||
var result = fiber.call // expect: fiber
|
||||
IO.print(result) // expect: result
|
||||
var result = fiber.call() // expect: fiber
|
||||
IO.print(result) // expect: result
|
||||
|
||||
@@ -2,5 +2,5 @@ var fiber = new Fiber {
|
||||
IO.print("call")
|
||||
}
|
||||
|
||||
fiber.call // expect: call
|
||||
fiber.call // expect runtime error: Cannot call a finished fiber.
|
||||
fiber.call() // expect: call
|
||||
fiber.call() // expect runtime error: Cannot call a finished fiber.
|
||||
|
||||
@@ -5,9 +5,9 @@ var closure
|
||||
var a = "before"
|
||||
fiber = new Fiber {
|
||||
IO.print(a)
|
||||
Fiber.yield
|
||||
Fiber.yield()
|
||||
a = "after"
|
||||
Fiber.yield
|
||||
Fiber.yield()
|
||||
IO.print(a)
|
||||
a = "final"
|
||||
}
|
||||
@@ -17,9 +17,9 @@ var closure
|
||||
}
|
||||
}
|
||||
|
||||
fiber.call // expect: before
|
||||
closure.call // expect: before
|
||||
fiber.call
|
||||
closure.call // expect: after
|
||||
fiber.call // expect: after
|
||||
closure.call // expect: final
|
||||
fiber.call() // expect: before
|
||||
closure.call() // expect: before
|
||||
fiber.call()
|
||||
closure.call() // expect: after
|
||||
fiber.call() // expect: after
|
||||
closure.call() // expect: final
|
||||
|
||||
@@ -3,5 +3,5 @@ var fiber = new Fiber {
|
||||
}
|
||||
|
||||
IO.print(fiber.error) // expect: null
|
||||
IO.print(fiber.try) // expect: String does not implement 'unknown'.
|
||||
IO.print(fiber.try()) // expect: String does not implement 'unknown'.
|
||||
IO.print(fiber.error) // expect: String does not implement 'unknown'.
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("1")
|
||||
Fiber.yield
|
||||
Fiber.yield()
|
||||
IO.print("2")
|
||||
}
|
||||
|
||||
IO.print(fiber.isDone) // expect: false
|
||||
fiber.call // expect: 1
|
||||
fiber.call() // expect: 1
|
||||
IO.print(fiber.isDone) // expect: false
|
||||
fiber.call // expect: 2
|
||||
fiber.call() // expect: 2
|
||||
IO.print(fiber.isDone) // expect: true
|
||||
|
||||
@@ -2,5 +2,5 @@ var fiber = new Fiber {
|
||||
"s".unknown
|
||||
}
|
||||
|
||||
fiber.try
|
||||
fiber.try()
|
||||
IO.print(fiber.isDone) // expect: true
|
||||
|
||||
@@ -4,12 +4,12 @@ var b = new Fiber {
|
||||
|
||||
var a = new Fiber {
|
||||
IO.print("begin fiber a")
|
||||
b.call
|
||||
b.call()
|
||||
IO.print("end fiber a")
|
||||
}
|
||||
|
||||
IO.print("begin main")
|
||||
a.call
|
||||
a.call()
|
||||
IO.print("end main")
|
||||
|
||||
// expect: begin main
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ var fiber = new Fiber {
|
||||
}
|
||||
|
||||
IO.print("before") // expect: before
|
||||
fiber.run // expect: fiber
|
||||
fiber.run() // expect: fiber
|
||||
|
||||
// This does not get run since we exit when the run fiber completes.
|
||||
IO.print("nope")
|
||||
|
||||
@@ -2,9 +2,9 @@ var fiber
|
||||
|
||||
fiber = new Fiber {
|
||||
IO.print(1) // expect: 1
|
||||
fiber.run
|
||||
fiber.run()
|
||||
IO.print(2) // expect: 2
|
||||
}
|
||||
|
||||
fiber.call
|
||||
fiber.call()
|
||||
IO.print(3) // expect: 3
|
||||
@@ -3,17 +3,17 @@ var b
|
||||
|
||||
a = new Fiber {
|
||||
IO.print(2)
|
||||
b.run
|
||||
b.run()
|
||||
IO.print("nope")
|
||||
}
|
||||
|
||||
b = new Fiber {
|
||||
IO.print(1)
|
||||
a.run
|
||||
a.run()
|
||||
IO.print(3)
|
||||
}
|
||||
|
||||
b.call
|
||||
b.call()
|
||||
// expect: 1
|
||||
// expect: 2
|
||||
// expect: 3
|
||||
|
||||
@@ -5,9 +5,9 @@ var a = new Fiber {
|
||||
// Run a through an intermediate fiber since it will get discarded and we need
|
||||
// to return to the main one after a completes.
|
||||
var b = new Fiber {
|
||||
a.run
|
||||
a.run()
|
||||
IO.print("nope")
|
||||
}
|
||||
|
||||
b.call // expect: run
|
||||
a.run // expect runtime error: Cannot run a finished fiber.
|
||||
b.call() // expect: run
|
||||
a.run() // expect runtime error: Cannot run a finished fiber.
|
||||
|
||||
@@ -6,5 +6,5 @@ fiber = new Fiber {
|
||||
IO.print(2) // expect: 2
|
||||
}
|
||||
|
||||
fiber.call
|
||||
fiber.call()
|
||||
IO.print(3) // expect: 3
|
||||
@@ -13,7 +13,7 @@ b = new Fiber {
|
||||
IO.print(3)
|
||||
}
|
||||
|
||||
b.call
|
||||
b.call()
|
||||
// expect: 1
|
||||
// expect: 2
|
||||
// expect: 3
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ var fiber = new Fiber {
|
||||
IO.print("after")
|
||||
}
|
||||
|
||||
IO.print(fiber.try)
|
||||
IO.print(fiber.try())
|
||||
// expect: before
|
||||
// expect: Bool does not implement 'unknownMethod'.
|
||||
IO.print("after try") // expect: after try
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
var fiber
|
||||
|
||||
fiber = new Fiber {
|
||||
fiber.try // expect runtime error: Fiber has already been called.
|
||||
fiber.try() // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
fiber.call
|
||||
fiber.call()
|
||||
|
||||
@@ -2,11 +2,11 @@ var a
|
||||
var b
|
||||
|
||||
a = new Fiber {
|
||||
b.try // expect runtime error: Fiber has already been called.
|
||||
b.try() // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
b = new Fiber {
|
||||
a.call
|
||||
a.call()
|
||||
}
|
||||
|
||||
b.call
|
||||
b.call()
|
||||
|
||||
@@ -2,5 +2,5 @@ var fiber = new Fiber {
|
||||
IO.print("try")
|
||||
}
|
||||
|
||||
fiber.try // expect: try
|
||||
fiber.try // expect runtime error: Cannot try a finished fiber.
|
||||
fiber.try() // expect: try
|
||||
fiber.try() // expect runtime error: Cannot try a finished fiber.
|
||||
|
||||
@@ -2,7 +2,7 @@ var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
IO.print("before") // expect: before
|
||||
IO.print(fiber.try) // expect: fiber
|
||||
// expect: null
|
||||
IO.print("after") // expect: after
|
||||
IO.print("before") // expect: before
|
||||
IO.print(fiber.try()) // expect: fiber
|
||||
// expect: null
|
||||
IO.print("after") // expect: after
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber 1")
|
||||
Fiber.yield
|
||||
Fiber.yield()
|
||||
IO.print("fiber 2")
|
||||
Fiber.yield
|
||||
Fiber.yield()
|
||||
IO.print("fiber 3")
|
||||
}
|
||||
|
||||
var result = fiber.call // expect: fiber 1
|
||||
IO.print("main 1") // expect: main 1
|
||||
result = fiber.call // expect: fiber 2
|
||||
IO.print("main 2") // expect: main 2
|
||||
result = fiber.call // expect: fiber 3
|
||||
IO.print("main 3") // expect: main 3
|
||||
var result = fiber.call() // expect: fiber 1
|
||||
IO.print("main 1") // expect: main 1
|
||||
result = fiber.call() // expect: fiber 2
|
||||
IO.print("main 2") // expect: main 2
|
||||
result = fiber.call() // expect: fiber 3
|
||||
IO.print("main 3") // expect: main 3
|
||||
|
||||
@@ -1 +1 @@
|
||||
Fiber.yield // expect runtime error: No fiber to yield to.
|
||||
Fiber.yield() // expect runtime error: No fiber to yield to.
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber 1")
|
||||
var result = Fiber.yield
|
||||
var result = Fiber.yield()
|
||||
IO.print(result)
|
||||
result = Fiber.yield
|
||||
result = Fiber.yield()
|
||||
IO.print(result)
|
||||
}
|
||||
|
||||
fiber.call // expect: fiber 1
|
||||
fiber.call() // expect: fiber 1
|
||||
IO.print("main 1") // expect: main 1
|
||||
fiber.call("call 1") // expect: call 1
|
||||
IO.print("main 2") // expect: main 2
|
||||
fiber.call // expect: null
|
||||
fiber.call() // expect: null
|
||||
IO.print("main 3") // expect: main 3
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
var result = Fiber.yield
|
||||
var result = Fiber.yield()
|
||||
IO.print(result)
|
||||
}
|
||||
|
||||
fiber.call // expect: fiber
|
||||
fiber.call() // expect: fiber
|
||||
IO.print("main") // expect: main
|
||||
fiber.run("run") // expect: run
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
var a = new Fiber {
|
||||
Fiber.yield // expect runtime error: No fiber to yield to.
|
||||
Fiber.yield() // expect runtime error: No fiber to yield to.
|
||||
}
|
||||
|
||||
// Run a chain of fibers. Since none of them are called, they all get discarded
|
||||
// and there is no remaining caller.
|
||||
var b = new Fiber { a.run }
|
||||
var c = new Fiber { b.run }
|
||||
c.run
|
||||
var b = new Fiber { a.run() }
|
||||
var c = new Fiber { b.run() }
|
||||
c.run()
|
||||
|
||||
@@ -6,9 +6,9 @@ var fiber = new Fiber {
|
||||
IO.print("fiber 3")
|
||||
}
|
||||
|
||||
var result = fiber.call // expect: fiber 1
|
||||
var result = fiber.call() // expect: fiber 1
|
||||
IO.print(result) // expect: yield 1
|
||||
result = fiber.call // expect: fiber 2
|
||||
result = fiber.call() // expect: fiber 2
|
||||
IO.print(result) // expect: yield 2
|
||||
result = fiber.call // expect: fiber 3
|
||||
result = fiber.call() // expect: fiber 3
|
||||
IO.print(result) // expect: null
|
||||
|
||||
@@ -4,6 +4,6 @@ var a = new Fiber {
|
||||
|
||||
// Run a chain of fibers. Since none of them are called, they all get discarded
|
||||
// and there is no remaining caller.
|
||||
var b = new Fiber { a.run }
|
||||
var c = new Fiber { b.run }
|
||||
c.run
|
||||
var b = new Fiber { a.run() }
|
||||
var c = new Fiber { b.run() }
|
||||
c.run()
|
||||
|
||||
Reference in New Issue
Block a user