feat: convert fiber tests to use block arguments instead of anonymous function literals

Update all fiber test files to replace `Fiber.create(fn { ... })` with `Fiber.create { ... }` block syntax, and add compiler support for parsing block bodies without requiring a newline after the opening brace. The compiler changes include removing `TOKEN_LEFT_BRACE` from the newline-discarding token list and adding `match(compiler, TOKEN_LINE)` calls in `finishBlock`, `methodCall`, `function`, and `block` to handle empty block bodies and inline expressions.
This commit is contained in:
Bob Nystrom
2014-04-03 00:31:58 +00:00
parent 5a017d17de
commit c606e93516
13 changed files with 45 additions and 27 deletions
+2 -2
View File
@@ -1,8 +1,8 @@
var fiber = Fiber.create(fn {
var fiber = Fiber.create {
IO.print("1")
Fiber.yield
IO.print("2")
})
}
IO.print(fiber.isDone) // expect: false
fiber.run // expect: 1
+4 -4
View File
@@ -1,12 +1,12 @@
var b = Fiber.create(fn {
var b = Fiber.create {
IO.print("fiber b")
})
}
var a = Fiber.create(fn {
var a = Fiber.create {
IO.print("begin fiber a")
b.run
IO.print("end fiber a")
})
}
IO.print("begin main")
a.run
+2 -2
View File
@@ -1,6 +1,6 @@
var fiber = Fiber.create(fn {
var fiber = Fiber.create {
IO.print("fiber")
})
}
IO.print("before") // expect: before
fiber.run // expect: fiber
+2 -2
View File
@@ -1,6 +1,6 @@
var fiber = Fiber.create(fn {
var fiber = Fiber.create {
IO.print("fiber")
})
}
var result = fiber.run // expect: fiber
IO.print(result) // expect: null
+2 -2
View File
@@ -1,7 +1,7 @@
var fiber = Fiber.create(fn {
var fiber = Fiber.create {
IO.print("fiber")
return "result"
})
}
var result = fiber.run // expect: fiber
IO.print(result) // expect: result
+2 -2
View File
@@ -1,6 +1,6 @@
var fiber = Fiber.create(fn {
var fiber = Fiber.create {
IO.print("run")
})
}
fiber.run // expect: run
fiber.run // expect runtime error: Cannot run a finished fiber.
+2 -2
View File
@@ -1,6 +1,6 @@
var fiber = Fiber.create(fn {
var fiber = Fiber.create {
IO.print("fiber")
})
}
// The first value passed to the fiber is ignored, since there's no yield call
// to return it.
+2 -2
View File
@@ -1,6 +1,6 @@
var fiber = Fiber.create(fn {
var fiber = Fiber.create {
IO.print("run")
})
}
fiber.run(1) // expect: run
fiber.run(2) // expect runtime error: Cannot run a finished fiber.
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = Fiber.create(fn null)
var fiber = Fiber.create {}
IO.print(fiber is Fiber) // expect: true
IO.print(fiber is Object) // expect: true
IO.print(fiber is Bool) // expect: false
+2 -2
View File
@@ -1,10 +1,10 @@
var fiber = Fiber.create(fn {
var fiber = Fiber.create {
IO.print("fiber 1")
Fiber.yield
IO.print("fiber 2")
Fiber.yield
IO.print("fiber 3")
})
}
var result = fiber.run // expect: fiber 1
IO.print("main 1") // expect: main 1
+2 -2
View File
@@ -1,10 +1,10 @@
var fiber = Fiber.create(fn {
var fiber = Fiber.create {
IO.print("fiber 1")
var result = Fiber.yield
IO.print(result)
result = Fiber.yield
IO.print(result)
})
}
fiber.run // expect: fiber 1
IO.print("main 1") // expect: main 1
+2 -2
View File
@@ -1,10 +1,10 @@
var fiber = Fiber.create(fn {
var fiber = Fiber.create {
IO.print("fiber 1")
Fiber.yield("yield 1")
IO.print("fiber 2")
Fiber.yield("yield 2")
IO.print("fiber 3")
})
}
var result = fiber.run // expect: fiber 1
IO.print(result) // expect: yield 1