refactor: convert IO from singleton instance to static class with metaclass native methods

Replace the global `io` singleton object with a static `IO` class, moving the `write` native from the instance to the metaclass. Update all benchmark, example, and test files to use `IO.write()` instead of `io.write()`.
This commit is contained in:
Bob Nystrom
2013-12-22 03:25:09 +00:00
parent 1a77a43fa0
commit 8bb1a94a25
119 changed files with 532 additions and 536 deletions
+6 -6
View File
@@ -1,6 +1,6 @@
io.write(123.abs) // expect: 123
io.write(-123.abs) // expect: 123
io.write(0.abs) // expect: 0
io.write(-0.abs) // expect: 0
io.write(-0.12.abs) // expect: 0.12
io.write(12.34.abs) // expect: 12.34
IO.write(123.abs) // expect: 123
IO.write(-123.abs) // expect: 123
IO.write(0.abs) // expect: 0
IO.write(-0.abs) // expect: 0
IO.write(-0.12.abs) // expect: 0.12
IO.write(12.34.abs) // expect: 12.34
+14 -14
View File
@@ -1,22 +1,22 @@
io.write(~0) // expect: 4294967295
io.write(~1) // expect: 4294967294
io.write(~23) // expect: 4294967272
IO.write(~0) // expect: 4294967295
IO.write(~1) // expect: 4294967294
IO.write(~23) // expect: 4294967272
// Max u32 value.
io.write(~4294967295) // expect: 0
IO.write(~4294967295) // expect: 0
// Past max u32 value.
io.write(~4294967296) // expect: 4294967295
IO.write(~4294967296) // expect: 4294967295
// Negative numbers.
io.write(~-1) // expect: 0
io.write(~-123) // expect: 122
io.write(~-4294967294) // expect: 4294967293
io.write(~-4294967295) // expect: 4294967294
io.write(~-4294967296) // expect: 4294967295
IO.write(~-1) // expect: 0
IO.write(~-123) // expect: 122
IO.write(~-4294967294) // expect: 4294967293
IO.write(~-4294967295) // expect: 4294967294
IO.write(~-4294967296) // expect: 4294967295
// Floating point values.
io.write(~1.23) // expect: 4294967294
io.write(~0.00123) // expect: 4294967295
io.write(~345.67) // expect: 4294966950
io.write(~-12.34) // expect: 11
IO.write(~1.23) // expect: 4294967294
IO.write(~0.00123) // expect: 4294967295
IO.write(~345.67) // expect: 4294966950
IO.write(~-12.34) // expect: 11
+20 -20
View File
@@ -1,27 +1,27 @@
io.write(1 < 2) // expect: true
io.write(2 < 2) // expect: false
io.write(2 < 1) // expect: false
IO.write(1 < 2) // expect: true
IO.write(2 < 2) // expect: false
IO.write(2 < 1) // expect: false
io.write(1 <= 2) // expect: true
io.write(2 <= 2) // expect: true
io.write(2 <= 1) // expect: false
IO.write(1 <= 2) // expect: true
IO.write(2 <= 2) // expect: true
IO.write(2 <= 1) // expect: false
io.write(1 > 2) // expect: false
io.write(2 > 2) // expect: false
io.write(2 > 1) // expect: true
IO.write(1 > 2) // expect: false
IO.write(2 > 2) // expect: false
IO.write(2 > 1) // expect: true
io.write(1 >= 2) // expect: false
io.write(2 >= 2) // expect: true
io.write(2 >= 1) // expect: true
IO.write(1 >= 2) // expect: false
IO.write(2 >= 2) // expect: true
IO.write(2 >= 1) // expect: true
// Zero and negative zero compare the same.
io.write(0 < -0) // expect: false
io.write(-0 < 0) // expect: false
io.write(0 > -0) // expect: false
io.write(-0 > 0) // expect: false
io.write(0 <= -0) // expect: true
io.write(-0 <= 0) // expect: true
io.write(0 >= -0) // expect: true
io.write(-0 >= 0) // expect: true
IO.write(0 < -0) // expect: false
IO.write(-0 < 0) // expect: false
IO.write(0 > -0) // expect: false
IO.write(-0 > 0) // expect: false
IO.write(0 <= -0) // expect: true
IO.write(-0 <= 0) // expect: true
IO.write(0 >= -0) // expect: true
IO.write(-0 >= 0) // expect: true
// TODO: Wrong type for RHS.
+2 -2
View File
@@ -1,5 +1,5 @@
io.write(8 / 2) // expect: 4
io.write(12.34 / -0.4) // expect: -30.85
IO.write(8 / 2) // expect: 4
IO.write(12.34 / -0.4) // expect: -30.85
// TODO: Unsupported RHS types.
// TODO: Divide by zero.
+14 -14
View File
@@ -1,19 +1,19 @@
io.write(123 == 123) // expect: true
io.write(123 == 124) // expect: false
io.write(-3 == 3) // expect: false
io.write(0 == -0) // expect: true
IO.write(123 == 123) // expect: true
IO.write(123 == 124) // expect: false
IO.write(-3 == 3) // expect: false
IO.write(0 == -0) // expect: true
// Not equal to other types.
io.write(123 == "123") // expect: false
io.write(1 == true) // expect: false
io.write(0 == false) // expect: false
IO.write(123 == "123") // expect: false
IO.write(1 == true) // expect: false
IO.write(0 == false) // expect: false
io.write(123 != 123) // expect: false
io.write(123 != 124) // expect: true
io.write(-3 != 3) // expect: true
io.write(0 != -0) // expect: false
IO.write(123 != 123) // expect: false
IO.write(123 != 124) // expect: true
IO.write(-3 != 3) // expect: true
IO.write(0 != -0) // expect: false
// Not equal to other types.
io.write(123 != "123") // expect: true
io.write(1 != true) // expect: true
io.write(0 != false) // expect: true
IO.write(123 != "123") // expect: true
IO.write(1 != true) // expect: true
IO.write(0 != false) // expect: true
+6 -6
View File
@@ -1,10 +1,10 @@
io.write(123) // expect: 123
io.write(987654) // expect: 987654
io.write(0) // expect: 0
io.write(-0) // expect: -0
IO.write(123) // expect: 123
IO.write(987654) // expect: 987654
IO.write(0) // expect: 0
IO.write(-0) // expect: -0
io.write(123.456) // expect: 123.456
io.write(-0.001) // expect: -0.001
IO.write(123.456) // expect: 123.456
IO.write(-0.001) // expect: -0.001
// TODO: Hex? Scientific notation?
// TODO: Literals at and beyond numeric limits.
+4 -4
View File
@@ -1,10 +1,10 @@
// Infix.
io.write(5 - 3) // expect: 2
io.write(3.1 - 0.24) // expect: 2.86
io.write(3 - 2 - 1) // expect: 0
IO.write(5 - 3) // expect: 2
IO.write(3.1 - 0.24) // expect: 2.86
IO.write(3 - 2 - 1) // expect: 0
// Unary negation.
var a = 3
io.write(-a) // expect: -3
IO.write(-a) // expect: -3
// TODO: Unsupported RHS types.
+9 -9
View File
@@ -1,14 +1,14 @@
io.write(5 % 3) // expect: 2
io.write(10 % 5) // expect: 0
io.write(-4 % 3) // expect: -1
io.write(4 % -3) // expect: 1
io.write(-4 % -3) // expect: -1
io.write(-4.2 % 3.1) // expect: -1.1
io.write(4.2 % -3.1) // expect: 1.1
io.write(-4.2 % -3.1) // expect: -1.1
IO.write(5 % 3) // expect: 2
IO.write(10 % 5) // expect: 0
IO.write(-4 % 3) // expect: -1
IO.write(4 % -3) // expect: 1
IO.write(-4 % -3) // expect: -1
IO.write(-4.2 % 3.1) // expect: -1.1
IO.write(4.2 % -3.1) // expect: 1.1
IO.write(-4.2 % -3.1) // expect: -1.1
// Left associative.
io.write(13 % 7 % 4) // expect: 2
IO.write(13 % 7 % 4) // expect: 2
// TODO: Unsupported RHS types.
// TODO: Error on mod by zero.
+2 -2
View File
@@ -1,4 +1,4 @@
io.write(5 * 3) // expect: 15
io.write(12.34 * 0.3) // expect: 3.702
IO.write(5 * 3) // expect: 15
IO.write(12.34 * 0.3) // expect: 3.702
// TODO: Unsupported RHS types.
+3 -3
View File
@@ -1,5 +1,5 @@
io.write(1 + 2) // expect: 3
io.write(12.34 + 0.13) // expect: 12.47
io.write(3 + 5 + 2) // expect: 10
IO.write(1 + 2) // expect: 3
IO.write(12.34 + 0.13) // expect: 12.47
IO.write(3 + 5 + 2) // expect: 10
// TODO: Unsupported RHS types.
+5 -5
View File
@@ -1,5 +1,5 @@
io.write(123.toString == "123") // expect: true
io.write(-123.toString == "-123") // expect: true
io.write(-0.toString == "-0") // expect: true
io.write(12.34.toString == "12.34") // expect: true
io.write(-0.0001.toString == "-0.0001") // expect: true
IO.write(123.toString == "123") // expect: true
IO.write(-123.toString == "-123") // expect: true
IO.write(-0.toString == "-0") // expect: true
IO.write(12.34.toString == "12.34") // expect: true
IO.write(-0.0001.toString == "-0.0001") // expect: true
+4 -4
View File
@@ -1,4 +1,4 @@
io.write(123 is Num) // expect: true
io.write(123 is Object) // expect: true
io.write(123 is String) // expect: false
io.write(123.type == Num) // expect: true
IO.write(123 is Num) // expect: true
IO.write(123 is Object) // expect: true
IO.write(123 is String) // expect: false
IO.write(123.type == Num) // expect: true