Clean up text handling a bit:

- Rename IO.write -> IO.print.
- Make IO.write not print a newline.
- Support \u Unicode escapes in strings.
This commit is contained in:
Bob Nystrom
2014-01-05 12:27:12 -08:00
parent 870f3b8b93
commit b979272305
159 changed files with 1690 additions and 1599 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.print(123.abs) // expect: 123
IO.print(-123.abs) // expect: 123
IO.print(0.abs) // expect: 0
IO.print(-0.abs) // expect: 0
IO.print(-0.12.abs) // expect: 0.12
IO.print(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.print(~0) // expect: 4294967295
IO.print(~1) // expect: 4294967294
IO.print(~23) // expect: 4294967272
// Max u32 value.
IO.write(~4294967295) // expect: 0
IO.print(~4294967295) // expect: 0
// Past max u32 value.
IO.write(~4294967296) // expect: 4294967295
IO.print(~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.print(~-1) // expect: 0
IO.print(~-123) // expect: 122
IO.print(~-4294967294) // expect: 4294967293
IO.print(~-4294967295) // expect: 4294967294
IO.print(~-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.print(~1.23) // expect: 4294967294
IO.print(~0.00123) // expect: 4294967295
IO.print(~345.67) // expect: 4294966950
IO.print(~-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.print(1 < 2) // expect: true
IO.print(2 < 2) // expect: false
IO.print(2 < 1) // expect: false
IO.write(1 <= 2) // expect: true
IO.write(2 <= 2) // expect: true
IO.write(2 <= 1) // expect: false
IO.print(1 <= 2) // expect: true
IO.print(2 <= 2) // expect: true
IO.print(2 <= 1) // expect: false
IO.write(1 > 2) // expect: false
IO.write(2 > 2) // expect: false
IO.write(2 > 1) // expect: true
IO.print(1 > 2) // expect: false
IO.print(2 > 2) // expect: false
IO.print(2 > 1) // expect: true
IO.write(1 >= 2) // expect: false
IO.write(2 >= 2) // expect: true
IO.write(2 >= 1) // expect: true
IO.print(1 >= 2) // expect: false
IO.print(2 >= 2) // expect: true
IO.print(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.print(0 < -0) // expect: false
IO.print(-0 < 0) // expect: false
IO.print(0 > -0) // expect: false
IO.print(-0 > 0) // expect: false
IO.print(0 <= -0) // expect: true
IO.print(-0 <= 0) // expect: true
IO.print(0 >= -0) // expect: true
IO.print(-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.print(8 / 2) // expect: 4
IO.print(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.print(123 == 123) // expect: true
IO.print(123 == 124) // expect: false
IO.print(-3 == 3) // expect: false
IO.print(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.print(123 == "123") // expect: false
IO.print(1 == true) // expect: false
IO.print(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.print(123 != 123) // expect: false
IO.print(123 != 124) // expect: true
IO.print(-3 != 3) // expect: true
IO.print(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.print(123 != "123") // expect: true
IO.print(1 != true) // expect: true
IO.print(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.print(123) // expect: 123
IO.print(987654) // expect: 987654
IO.print(0) // expect: 0
IO.print(-0) // expect: -0
IO.write(123.456) // expect: 123.456
IO.write(-0.001) // expect: -0.001
IO.print(123.456) // expect: 123.456
IO.print(-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.print(5 - 3) // expect: 2
IO.print(3.1 - 0.24) // expect: 2.86
IO.print(3 - 2 - 1) // expect: 0
// Unary negation.
var a = 3
IO.write(-a) // expect: -3
IO.print(-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.print(5 % 3) // expect: 2
IO.print(10 % 5) // expect: 0
IO.print(-4 % 3) // expect: -1
IO.print(4 % -3) // expect: 1
IO.print(-4 % -3) // expect: -1
IO.print(-4.2 % 3.1) // expect: -1.1
IO.print(4.2 % -3.1) // expect: 1.1
IO.print(-4.2 % -3.1) // expect: -1.1
// Left associative.
IO.write(13 % 7 % 4) // expect: 2
IO.print(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.print(5 * 3) // expect: 15
IO.print(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.print(1 + 2) // expect: 3
IO.print(12.34 + 0.13) // expect: 12.47
IO.print(3 + 5 + 2) // expect: 10
// TODO: Unsupported RHS types.
+6 -6
View File
@@ -1,12 +1,12 @@
var inclusive = 2..5
IO.write(inclusive is Range) // expect: true
IO.write(inclusive.min) // expect: 2
IO.write(inclusive.max) // expect: 5
IO.print(inclusive is Range) // expect: true
IO.print(inclusive.min) // expect: 2
IO.print(inclusive.max) // expect: 5
var exclusive = 2...5
IO.write(exclusive is Range) // expect: true
IO.write(exclusive.min) // expect: 2
IO.write(exclusive.max) // expect: 4
IO.print(exclusive is Range) // expect: true
IO.print(exclusive.min) // expect: 2
IO.print(exclusive.max) // expect: 4
// TODO: Non-number RHS.
// TODO: Non-integer RHS.
+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.print(123.toString == "123") // expect: true
IO.print(-123.toString == "-123") // expect: true
IO.print(-0.toString == "-0") // expect: true
IO.print(12.34.toString == "12.34") // expect: true
IO.print(-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.print(123 is Num) // expect: true
IO.print(123 is Object) // expect: true
IO.print(123 is String) // expect: false
IO.print(123.type == Num) // expect: true