"IO" -> "System".

Get rid of the separate opt-in IO class and replace it with a core
System class.

- Remove wren_io.c, wren_io.h, and io.wren.
- Remove the flags that disable it.
- Remove the overloads for print() with different arity. (It was an
  experiment, but I don't think it's that useful.)
- Remove IO.read(). That will reappear using libuv in the CLI at some
  point.
- Remove IO.time. Doesn't seem to have been used.
- Update all of the tests, docs, etc.

I'm sorry for all the breakage this causes, but I think "System" is a
better name for this class (it makes it natural to add things like
"System.gc()") and frees up "IO" for referring to the CLI's IO module.
This commit is contained in:
Bob Nystrom
2015-09-15 07:46:09 -07:00
parent 66b89a493f
commit 58e4d26648
491 changed files with 3285 additions and 3544 deletions
+3 -3
View File
@@ -2,6 +2,6 @@ var fiber = Fiber.new {
Fiber.abort("Error message.")
}
IO.print(fiber.try()) // expect: Error message.
IO.print(fiber.isDone) // expect: true
IO.print(fiber.error) // expect: Error message.
System.print(fiber.try()) // expect: Error message.
System.print(fiber.isDone) // expect: true
System.print(fiber.error) // expect: Error message.
+3 -3
View File
@@ -1,7 +1,7 @@
var fiber = Fiber.new {
IO.print("fiber")
System.print("fiber")
}
IO.print("before") // expect: before
System.print("before") // expect: before
fiber.call() // expect: fiber
IO.print("after") // expect: after
System.print("after") // expect: after
+1 -1
View File
@@ -1,5 +1,5 @@
var fiber = Fiber.new {
IO.print("call")
System.print("call")
}
fiber.call() // expect: call
+1 -1
View File
@@ -1,6 +1,6 @@
var fiber = Fiber.new {
Fiber.abort("Error!")
IO.print("should not get here")
System.print("should not get here")
}
fiber.try()
@@ -1,5 +1,5 @@
var fiber = Fiber.new {
IO.print("fiber") // expect: fiber
System.print("fiber") // expect: fiber
}
IO.print(fiber.call()) // expect: null
System.print(fiber.call()) // expect: null
+2 -2
View File
@@ -1,6 +1,6 @@
var fiber = Fiber.new {
IO.print("fiber")
System.print("fiber")
return "result" // expect: fiber
}
IO.print(fiber.call()) // expect: result
System.print(fiber.call()) // expect: result
+4 -4
View File
@@ -1,12 +1,12 @@
var main = Fiber.current
var fiber = Fiber.new {
IO.print("transferred")
IO.print(main.transfer())
IO.print("called")
System.print("transferred")
System.print(main.transfer())
System.print("called")
}
fiber.transfer() // expect: transferred
IO.print("main") // expect: main
System.print("main") // expect: main
fiber.call() // expect: null
// expect: called
+3 -3
View File
@@ -1,9 +1,9 @@
var fiber = Fiber.new {
IO.print("fiber")
System.print("fiber")
}
// The first value passed to the fiber is ignored, since there's no yield call
// to return it.
IO.print("before") // expect: before
System.print("before") // expect: before
fiber.call("ignored") // expect: fiber
IO.print("after") // expect: after
System.print("after") // expect: after
+1 -1
View File
@@ -1,5 +1,5 @@
var fiber = Fiber.new {
IO.print("call")
System.print("call")
}
fiber.call(1) // expect: call
+1 -1
View File
@@ -1,6 +1,6 @@
var fiber = Fiber.new {
Fiber.abort("Error!")
IO.print("should not get here")
System.print("should not get here")
}
fiber.try()
@@ -1,12 +1,12 @@
var main = Fiber.current
var fiber = Fiber.new {
IO.print("transferred")
IO.print(main.transfer())
IO.print("called")
System.print("transferred")
System.print(main.transfer())
System.print("called")
}
fiber.transfer() // expect: transferred
IO.print("main") // expect: main
System.print("main") // expect: main
fiber.call("value") // expect: value
// expect: called
+3 -3
View File
@@ -2,6 +2,6 @@ var fiber = Fiber.new {
"s".unknown
}
IO.print(fiber.error) // expect: null
IO.print(fiber.try()) // expect: String does not implement 'unknown'.
IO.print(fiber.error) // expect: String does not implement 'unknown'.
System.print(fiber.error) // expect: null
System.print(fiber.try()) // expect: String does not implement 'unknown'.
System.print(fiber.error) // expect: String does not implement 'unknown'.
+5 -5
View File
@@ -1,11 +1,11 @@
var fiber = Fiber.new {
IO.print("1")
System.print("1")
Fiber.yield()
IO.print("2")
System.print("2")
}
IO.print(fiber.isDone) // expect: false
System.print(fiber.isDone) // expect: false
fiber.call() // expect: 1
IO.print(fiber.isDone) // expect: false
System.print(fiber.isDone) // expect: false
fiber.call() // expect: 2
IO.print(fiber.isDone) // expect: true
System.print(fiber.isDone) // expect: true
+1 -1
View File
@@ -3,4 +3,4 @@ var fiber = Fiber.new {
}
fiber.try()
IO.print(fiber.isDone) // expect: true
System.print(fiber.isDone) // expect: true
+5 -5
View File
@@ -1,16 +1,16 @@
var b = Fiber.new {
IO.print("fiber b")
System.print("fiber b")
}
var a = Fiber.new {
IO.print("begin fiber a")
System.print("begin fiber a")
b.call()
IO.print("end fiber a")
System.print("end fiber a")
}
IO.print("begin main")
System.print("begin main")
a.call()
IO.print("end main")
System.print("end main")
// expect: begin main
// expect: begin fiber a
+6 -6
View File
@@ -1,20 +1,20 @@
var a = Fiber.new {
IO.print("a")
System.print("a")
}
var b = Fiber.new {
IO.print("b before")
System.print("b before")
a.transfer()
IO.print("b after")
System.print("b after")
}
var c = Fiber.new {
IO.print("c before")
System.print("c before")
b.transfer()
IO.print("c after")
System.print("c after")
}
IO.print("start") // expect: start
System.print("start") // expect: start
c.transfer()
// expect: c before
+4 -4
View File
@@ -1,9 +1,9 @@
var F = Fiber.new {
IO.print(1) // expect: 1
IO.print(F.transfer()) // expect: null
IO.print(2) // expect: 2
System.print(1) // expect: 1
System.print(F.transfer()) // expect: null
System.print(2) // expect: 2
}
F.call()
// F remembers its original caller so transfers back to main.
IO.print(3) // expect: 3
System.print(3) // expect: 3
@@ -1,13 +1,13 @@
var A = Fiber.new {
IO.print(2)
System.print(2)
B.transfer()
IO.print("nope")
System.print("nope")
}
var B = Fiber.new {
IO.print(1)
System.print(1)
A.transfer()
IO.print(3)
System.print(3)
}
B.call()
@@ -15,4 +15,4 @@ B.call()
// expect: 2
// expect: 3
// B remembers its original caller so returns to main.
IO.print(4) // expect: 4
System.print(4) // expect: 4
@@ -1,23 +1,23 @@
var main = Fiber.current
var fiber = Fiber.new {
IO.print("fiber 1")
IO.print(main.transfer())
System.print("fiber 1")
System.print(main.transfer())
// Yield to bounce back to main and clear the caller so we don't get a
// double call() error below.
Fiber.yield()
IO.print(main.transfer())
System.print(main.transfer())
}
fiber.transfer() // expect: fiber 1
IO.print("main 1") // expect: main 1
System.print("main 1") // expect: main 1
fiber.call("call 1") // expect: call 1
IO.print("main 2") // expect: main 2
System.print("main 2") // expect: main 2
// Transfer back into the fiber so it has a NULL caller.
fiber.transfer()
fiber.call() // expect: null
IO.print("main 3") // expect: main 3
System.print("main 3") // expect: main 3
@@ -1,13 +1,13 @@
var main = Fiber.current
var fiber = Fiber.new {
IO.print("fiber")
IO.print(main.transfer())
System.print("fiber")
System.print(main.transfer())
}
fiber.transfer() // expect: fiber
IO.print("main") // expect: main
System.print("main") // expect: main
fiber.transfer("transfer") // expect: transfer
// This does not get run since we exit when the transferred fiber completes.
IO.print("nope")
System.print("nope")
+1 -1
View File
@@ -1,5 +1,5 @@
var a = Fiber.new {
IO.print("run")
System.print("run")
}
a.call() // expect: run
+1 -1
View File
@@ -1,6 +1,6 @@
var a = Fiber.new {
Fiber.abort("Error!")
IO.print("should not get here")
System.print("should not get here")
}
a.try()
+3 -3
View File
@@ -1,7 +1,7 @@
var fiber = Fiber.new {
IO.print("called")
IO.print(Fiber.yield())
IO.print("transferred")
System.print("called")
System.print(Fiber.yield())
System.print("transferred")
}
fiber.call() // expect: called
+6 -6
View File
@@ -1,20 +1,20 @@
var a = Fiber.new {
IO.print("a")
System.print("a")
}
var b = Fiber.new {
IO.print("b before")
System.print("b before")
a.transfer("ignored")
IO.print("b after")
System.print("b after")
}
var c = Fiber.new {
IO.print("c before")
System.print("c before")
b.transfer("ignored")
IO.print("c after")
System.print("c after")
}
IO.print("start") // expect: start
System.print("start") // expect: start
c.transfer("ignored")
// expect: c before
@@ -1,8 +1,8 @@
var F = Fiber.new {
IO.print(1) // expect: 1
IO.print(F.transfer("value")) // expect: value
IO.print(2) // expect: 2
System.print(1) // expect: 1
System.print(F.transfer("value")) // expect: value
System.print(2) // expect: 2
}
F.call()
IO.print(3) // expect: 3
System.print(3) // expect: 3
@@ -1,17 +1,17 @@
var A = Fiber.new {
IO.print(2)
System.print(2)
B.transfer("ignored")
IO.print("nope")
System.print("nope")
}
var B = Fiber.new {
IO.print(1)
System.print(1)
A.transfer("ignored")
IO.print(3)
System.print(3)
}
B.call()
// expect: 1
// expect: 2
// expect: 3
IO.print(4) // expect: 4
System.print(4) // expect: 4
@@ -1,5 +1,5 @@
var a = Fiber.new {
IO.print("run")
System.print("run")
}
a.call() // expect: run
@@ -1,6 +1,6 @@
var a = Fiber.new {
Fiber.abort("Error!")
IO.print("should not get here")
System.print("should not get here")
}
a.try()
@@ -1,7 +1,7 @@
var fiber = Fiber.new {
IO.print("called")
IO.print(Fiber.yield())
IO.print("transferred")
System.print("called")
System.print(Fiber.yield())
System.print("transferred")
}
fiber.call() // expect: called
+4 -4
View File
@@ -1,10 +1,10 @@
var fiber = Fiber.new {
IO.print("before")
System.print("before")
true.unknownMethod
IO.print("after")
System.print("after")
}
IO.print(fiber.try())
System.print(fiber.try())
// expect: before
// expect: Bool does not implement 'unknownMethod'.
IO.print("after try") // expect: after try
System.print("after try") // expect: after try
+1 -1
View File
@@ -1,5 +1,5 @@
var fiber = Fiber.new {
IO.print("try")
System.print("try")
}
fiber.try() // expect: try
+4 -4
View File
@@ -1,8 +1,8 @@
var fiber = Fiber.new {
IO.print("fiber")
System.print("fiber")
}
IO.print("before") // expect: before
IO.print(fiber.try()) // expect: fiber
System.print("before") // expect: before
System.print(fiber.try()) // expect: fiber
// expect: null
IO.print("after") // expect: after
System.print("after") // expect: after
+4 -4
View File
@@ -1,5 +1,5 @@
var fiber = Fiber.new {}
IO.print(fiber is Fiber) // expect: true
IO.print(fiber is Object) // expect: true
IO.print(fiber is Bool) // expect: false
IO.print(fiber.type == Fiber) // expect: true
System.print(fiber is Fiber) // expect: true
System.print(fiber is Object) // expect: true
System.print(fiber is Bool) // expect: false
System.print(fiber.type == Fiber) // expect: true
+6 -6
View File
@@ -1,14 +1,14 @@
var fiber = Fiber.new {
IO.print("fiber 1")
System.print("fiber 1")
Fiber.yield()
IO.print("fiber 2")
System.print("fiber 2")
Fiber.yield()
IO.print("fiber 3")
System.print("fiber 3")
}
fiber.call() // expect: fiber 1
IO.print("main 1") // expect: main 1
System.print("main 1") // expect: main 1
fiber.call() // expect: fiber 2
IO.print("main 2") // expect: main 2
System.print("main 2") // expect: main 2
fiber.call() // expect: fiber 3
IO.print("main 3") // expect: main 3
System.print("main 3") // expect: main 3
+2 -2
View File
@@ -1,3 +1,3 @@
IO.print("before") // expect: before
System.print("before") // expect: before
Fiber.yield()
IO.print("not reached")
System.print("not reached")
+6 -6
View File
@@ -1,12 +1,12 @@
var fiber = Fiber.new {
IO.print("fiber 1")
IO.print(Fiber.yield())
IO.print(Fiber.yield())
System.print("fiber 1")
System.print(Fiber.yield())
System.print(Fiber.yield())
}
fiber.call() // expect: fiber 1
IO.print("main 1") // expect: main 1
System.print("main 1") // expect: main 1
fiber.call("call 1") // expect: call 1
IO.print("main 2") // expect: main 2
System.print("main 2") // expect: main 2
fiber.call() // expect: null
IO.print("main 3") // expect: main 3
System.print("main 3") // expect: main 3
@@ -1,13 +1,13 @@
var main = Fiber.current
var a = Fiber.new {
IO.print("a")
IO.print(Fiber.yield())
System.print("a")
System.print(Fiber.yield())
}
var b = Fiber.new {
IO.print("b")
IO.print(Fiber.yield())
System.print("b")
System.print(Fiber.yield())
a.call()
a.transfer("value")
+3 -3
View File
@@ -1,7 +1,7 @@
var a = Fiber.new {
IO.print("before") // expect: before
System.print("before") // expect: before
Fiber.yield()
IO.print("not reached")
System.print("not reached")
}
// Transfer through a chain of fibers. Since none of them are called, they all
@@ -9,4 +9,4 @@ var a = Fiber.new {
var b = Fiber.new { a.transfer() }
var c = Fiber.new { b.transfer() }
c.transfer()
IO.print("not reached")
System.print("not reached")
+6 -6
View File
@@ -1,14 +1,14 @@
var fiber = Fiber.new {
IO.print("fiber 1")
System.print("fiber 1")
Fiber.yield("yield 1")
IO.print("fiber 2")
System.print("fiber 2")
Fiber.yield("yield 2")
IO.print("fiber 3")
System.print("fiber 3")
}
IO.print(fiber.call()) // expect: fiber 1
System.print(fiber.call()) // expect: fiber 1
// expect: yield 1
IO.print(fiber.call()) // expect: fiber 2
System.print(fiber.call()) // expect: fiber 2
// expect: yield 2
IO.print(fiber.call()) // expect: fiber 3
System.print(fiber.call()) // expect: fiber 3
// expect: null
@@ -1,3 +1,3 @@
IO.print("before") // expect: before
System.print("before") // expect: before
Fiber.yield(1)
IO.print("not reached")
System.print("not reached")
@@ -1,7 +1,7 @@
var a = Fiber.new {
IO.print("before") // expect: before
System.print("before") // expect: before
Fiber.yield(1)
IO.print("not reached")
System.print("not reached")
}
// Transfer through a chain of fibers. Since none of them are called, they all
@@ -9,4 +9,4 @@ var a = Fiber.new {
var b = Fiber.new { a.transfer() }
var c = Fiber.new { b.transfer() }
c.transfer()
IO.print("not reached")
System.print("not reached")