mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-11 06:08:41 +01:00
Make IO a static class instead of a singleton.
This commit is contained in:
@ -26,7 +26,7 @@ var stretchDepth = maxDepth + 1
|
||||
|
||||
var start = OS.clock
|
||||
|
||||
io.write("stretch tree of depth " + stretchDepth.toString + " check: " +
|
||||
IO.write("stretch tree of depth " + stretchDepth.toString + " check: " +
|
||||
new Tree(0, stretchDepth).check.toString)
|
||||
|
||||
var longLivedTree = new Tree(0, maxDepth)
|
||||
@ -48,13 +48,13 @@ while (depth < stretchDepth) {
|
||||
i = i + 1
|
||||
}
|
||||
|
||||
io.write((iterations * 2).toString + " trees of depth " + depth.toString +
|
||||
IO.write((iterations * 2).toString + " trees of depth " + depth.toString +
|
||||
" check: " + check.toString)
|
||||
iterations = iterations / 4
|
||||
depth = depth + 2
|
||||
}
|
||||
|
||||
io.write("long lived tree of depth " + maxDepth.toString + " check: " +
|
||||
IO.write("long lived tree of depth " + maxDepth.toString + " check: " +
|
||||
longLivedTree.check.toString)
|
||||
|
||||
io.write("elapsed: " + (OS.clock - start).toString)
|
||||
IO.write("elapsed: " + (OS.clock - start).toString)
|
||||
|
||||
@ -9,7 +9,7 @@ var fib = fn(n) {
|
||||
var start = OS.clock
|
||||
var i = 0
|
||||
while (i < 5) {
|
||||
io.write(fib.call(28))
|
||||
IO.write(fib.call(28))
|
||||
i = i + 1
|
||||
}
|
||||
io.write("elapsed: " + (OS.clock - start).toString)
|
||||
IO.write("elapsed: " + (OS.clock - start).toString)
|
||||
|
||||
@ -39,7 +39,7 @@ while (i < n) {
|
||||
i = i + 1
|
||||
}
|
||||
|
||||
io.write(toggle.value)
|
||||
IO.write(toggle.value)
|
||||
|
||||
val = true
|
||||
var ntoggle = new NthToggle(val, 3)
|
||||
@ -50,6 +50,6 @@ while (i < n) {
|
||||
i = i + 1
|
||||
}
|
||||
|
||||
io.write(ntoggle.value)
|
||||
IO.write(ntoggle.value)
|
||||
|
||||
io.write("elapsed: " + (OS.clock - start).toString)
|
||||
IO.write("elapsed: " + (OS.clock - start).toString)
|
||||
|
||||
@ -1 +1 @@
|
||||
io.write("Hello, world!")
|
||||
IO.write("Hello, world!")
|
||||
|
||||
@ -436,6 +436,7 @@ DEF_NATIVE(string_subscript)
|
||||
|
||||
DEF_NATIVE(io_write)
|
||||
{
|
||||
// TODO: Should call toString on its argument.
|
||||
wrenPrintValue(args[1]);
|
||||
printf("\n");
|
||||
return args[1];
|
||||
@ -531,12 +532,7 @@ void wrenInitializeCore(WrenVM* vm)
|
||||
NATIVE(vm->stringClass, "[ ]", string_subscript);
|
||||
|
||||
ObjClass* ioClass = defineClass(vm, "IO", vm->objectClass);
|
||||
NATIVE(ioClass, "write ", io_write);
|
||||
|
||||
// TODO: Making this an instance is lame. The only reason we're doing it is
|
||||
// because "IO.write()" looks ugly. Maybe just get used to that?
|
||||
Value ioObject = wrenNewInstance(vm, ioClass);
|
||||
vm->globals[addSymbol(&vm->globalSymbols, "io", 2)] = ioObject;
|
||||
NATIVE(ioClass->metaclass, "write ", io_write);
|
||||
|
||||
ObjClass* osClass = defineClass(vm, "OS", vm->objectClass);
|
||||
NATIVE(osClass->metaclass, "clock", os_clock);
|
||||
|
||||
@ -1,26 +1,26 @@
|
||||
// Note: These tests implicitly depend on ints being truthy.
|
||||
// Also rely on io.write() returning its argument.
|
||||
// Also rely on IO.write() returning its argument.
|
||||
|
||||
// Return the first non-true argument.
|
||||
io.write(false && 1) // expect: false
|
||||
io.write(true && 1) // expect: 1
|
||||
io.write(1 && 2 && false) // expect: false
|
||||
IO.write(false && 1) // expect: false
|
||||
IO.write(true && 1) // expect: 1
|
||||
IO.write(1 && 2 && false) // expect: false
|
||||
|
||||
// Return the last argument if all are true.
|
||||
io.write(1 && true) // expect: true
|
||||
io.write(1 && 2 && 3) // expect: 3
|
||||
IO.write(1 && true) // expect: true
|
||||
IO.write(1 && 2 && 3) // expect: 3
|
||||
|
||||
// Short-circuit at the first false argument.
|
||||
io.write(true) && // expect: true
|
||||
io.write(false) && // expect: false
|
||||
io.write(false) // should not print
|
||||
IO.write(true) && // expect: true
|
||||
IO.write(false) && // expect: false
|
||||
IO.write(false) // should not print
|
||||
|
||||
// Swallow a trailing newline.
|
||||
io.write(true &&
|
||||
IO.write(true &&
|
||||
true) // expect: true
|
||||
|
||||
// Only false is falsy.
|
||||
io.write(0 && true) // expect: true
|
||||
io.write(null && true) // expect: true
|
||||
io.write("" && true) // expect: true
|
||||
io.write(false && true) // expect: false
|
||||
IO.write(0 && true) // expect: true
|
||||
IO.write(null && true) // expect: true
|
||||
IO.write("" && true) // expect: true
|
||||
IO.write(false && true) // expect: false
|
||||
|
||||
@ -4,6 +4,6 @@ var c = "c"
|
||||
|
||||
// Assignment is right-associative.
|
||||
a = b = c
|
||||
io.write(a) // expect: c
|
||||
io.write(b) // expect: c
|
||||
io.write(c) // expect: c
|
||||
IO.write(a) // expect: c
|
||||
IO.write(b) // expect: c
|
||||
IO.write(c) // expect: c
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
var a = "before"
|
||||
io.write(a) // expect: before
|
||||
IO.write(a) // expect: before
|
||||
|
||||
a = "after"
|
||||
io.write(a) // expect: after
|
||||
IO.write(a) // expect: after
|
||||
|
||||
io.write(a = "arg") // expect: arg
|
||||
io.write(a) // expect: arg
|
||||
IO.write(a = "arg") // expect: arg
|
||||
IO.write(a) // expect: arg
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
fn {
|
||||
var a = "before"
|
||||
io.write(a) // expect: before
|
||||
IO.write(a) // expect: before
|
||||
|
||||
a = "after"
|
||||
io.write(a) // expect: after
|
||||
IO.write(a) // expect: after
|
||||
|
||||
io.write(a = "arg") // expect: arg
|
||||
io.write(a) // expect: arg
|
||||
IO.write(a = "arg") // expect: arg
|
||||
IO.write(a) // expect: arg
|
||||
}.call
|
||||
|
||||
@ -2,10 +2,10 @@
|
||||
var a = "a"
|
||||
var b = "b"
|
||||
a = b = "chain"
|
||||
io.write(a) // expect: chain
|
||||
io.write(a) // expect: chain
|
||||
IO.write(a) // expect: chain
|
||||
IO.write(a) // expect: chain
|
||||
|
||||
// Assignment on RHS of variable.
|
||||
var c = a = "var"
|
||||
io.write(a) // expect: var
|
||||
io.write(c) // expect: var
|
||||
IO.write(a) // expect: var
|
||||
IO.write(c) // expect: var
|
||||
|
||||
@ -1,23 +1,23 @@
|
||||
io.write(true == true) // expect: true
|
||||
io.write(true == false) // expect: false
|
||||
io.write(false == true) // expect: false
|
||||
io.write(false == false) // expect: true
|
||||
IO.write(true == true) // expect: true
|
||||
IO.write(true == false) // expect: false
|
||||
IO.write(false == true) // expect: false
|
||||
IO.write(false == false) // expect: true
|
||||
|
||||
// Not equal to other types.
|
||||
io.write(true == 1) // expect: false
|
||||
io.write(false == 0) // expect: false
|
||||
io.write(true == "true") // expect: false
|
||||
io.write(false == "false") // expect: false
|
||||
io.write(false == "") // expect: false
|
||||
IO.write(true == 1) // expect: false
|
||||
IO.write(false == 0) // expect: false
|
||||
IO.write(true == "true") // expect: false
|
||||
IO.write(false == "false") // expect: false
|
||||
IO.write(false == "") // expect: false
|
||||
|
||||
io.write(true != true) // expect: false
|
||||
io.write(true != false) // expect: true
|
||||
io.write(false != true) // expect: true
|
||||
io.write(false != false) // expect: false
|
||||
IO.write(true != true) // expect: false
|
||||
IO.write(true != false) // expect: true
|
||||
IO.write(false != true) // expect: true
|
||||
IO.write(false != false) // expect: false
|
||||
|
||||
// Not equal to other types.
|
||||
io.write(true != 1) // expect: true
|
||||
io.write(false != 0) // expect: true
|
||||
io.write(true != "true") // expect: true
|
||||
io.write(false != "false") // expect: true
|
||||
io.write(false != "") // expect: true
|
||||
IO.write(true != 1) // expect: true
|
||||
IO.write(false != 0) // expect: true
|
||||
IO.write(true != "true") // expect: true
|
||||
IO.write(false != "false") // expect: true
|
||||
IO.write(false != "") // expect: true
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
io.write(!true) // expect: false
|
||||
io.write(!false) // expect: true
|
||||
io.write(!!true) // expect: true
|
||||
IO.write(!true) // expect: false
|
||||
IO.write(!false) // expect: true
|
||||
IO.write(!!true) // expect: true
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
io.write(true.toString) // expect: true
|
||||
io.write(false.toString) // expect: false
|
||||
IO.write(true.toString) // expect: true
|
||||
IO.write(false.toString) // expect: false
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
io.write(true is Bool) // expect: true
|
||||
io.write(true is Object) // expect: true
|
||||
io.write(true is Num) // expect: false
|
||||
io.write(true.type == Bool) // expect: true
|
||||
IO.write(true is Bool) // expect: true
|
||||
IO.write(true is Object) // expect: true
|
||||
IO.write(true is Num) // expect: false
|
||||
IO.write(true.type == Bool) // expect: true
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
io.write(Num == Num) // expect: true
|
||||
io.write(Num == Bool) // expect: false
|
||||
IO.write(Num == Num) // expect: true
|
||||
IO.write(Num == Bool) // expect: false
|
||||
|
||||
// Not equal to other types.
|
||||
io.write(Num == 123) // expect: false
|
||||
io.write(Num == true) // expect: false
|
||||
IO.write(Num == 123) // expect: false
|
||||
IO.write(Num == true) // expect: false
|
||||
|
||||
io.write(Num != Num) // expect: false
|
||||
io.write(Num != Bool) // expect: true
|
||||
IO.write(Num != Num) // expect: false
|
||||
IO.write(Num != Bool) // expect: true
|
||||
|
||||
// Not equal to other types.
|
||||
io.write(Num != 123) // expect: true
|
||||
io.write(Num != true) // expect: true
|
||||
IO.write(Num != 123) // expect: true
|
||||
IO.write(Num != true) // expect: true
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
class Foo {
|
||||
static sayName {
|
||||
io.write(Foo.toString)
|
||||
IO.write(Foo.toString)
|
||||
}
|
||||
|
||||
sayName {
|
||||
io.write(Foo.toString)
|
||||
IO.write(Foo.toString)
|
||||
}
|
||||
|
||||
static toString { return "Foo!" }
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
class Foo {}
|
||||
|
||||
var foo = new Foo
|
||||
io.write(foo is Foo) // expect: true
|
||||
IO.write(foo is Foo) // expect: true
|
||||
|
||||
// TODO: Test precedence and grammar of what follows "new".
|
||||
|
||||
@ -4,15 +4,15 @@ var g = null
|
||||
{
|
||||
var local = "local"
|
||||
f = fn {
|
||||
io.write(local)
|
||||
IO.write(local)
|
||||
local = "after f"
|
||||
io.write(local)
|
||||
IO.write(local)
|
||||
}
|
||||
|
||||
g = fn {
|
||||
io.write(local)
|
||||
IO.write(local)
|
||||
local = "after g"
|
||||
io.write(local)
|
||||
IO.write(local)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@ var f = null
|
||||
|
||||
fn(param) {
|
||||
f = fn {
|
||||
io.write(param)
|
||||
IO.write(param)
|
||||
}
|
||||
}.call("param")
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@ var f = null
|
||||
class Foo {
|
||||
method(param) {
|
||||
f = fn {
|
||||
io.write(param)
|
||||
IO.write(param)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@ var f = null
|
||||
{
|
||||
var local = "local"
|
||||
f = fn {
|
||||
io.write(local)
|
||||
IO.write(local)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@ var foo = null
|
||||
var local = "local"
|
||||
class Foo {
|
||||
method {
|
||||
io.write(local)
|
||||
IO.write(local)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,9 +7,9 @@ fn {
|
||||
fn {
|
||||
var c = "c"
|
||||
f = fn {
|
||||
io.write(a)
|
||||
io.write(b)
|
||||
io.write(c)
|
||||
IO.write(a)
|
||||
IO.write(b)
|
||||
IO.write(c)
|
||||
}
|
||||
}.call
|
||||
}.call
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
var local = "local"
|
||||
fn {
|
||||
io.write(local) // expect: local
|
||||
IO.write(local) // expect: local
|
||||
}.call
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
var local = "local"
|
||||
class Foo {
|
||||
method {
|
||||
io.write(local)
|
||||
IO.write(local)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,8 +3,8 @@ var f = null
|
||||
{
|
||||
var a = "a"
|
||||
f = fn {
|
||||
io.write(a)
|
||||
io.write(a)
|
||||
IO.write(a)
|
||||
IO.write(a)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
{
|
||||
var a = "a"
|
||||
f = fn io.write(a)
|
||||
f = fn IO.write(a)
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@ -2,5 +2,5 @@ var global = "global"
|
||||
// TODO: Forward reference to global declared after use.
|
||||
|
||||
fn {
|
||||
io.write(global) // expect: global
|
||||
IO.write(global) // expect: global
|
||||
}.call
|
||||
|
||||
@ -3,11 +3,11 @@ var global = "global"
|
||||
|
||||
class Foo {
|
||||
method {
|
||||
io.write(global)
|
||||
IO.write(global)
|
||||
}
|
||||
|
||||
static classMethod {
|
||||
io.write(global)
|
||||
IO.write(global)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// In middle of line.
|
||||
io.write/* ... */(/* */"ok"/* */) // expect: ok
|
||||
IO.write/* ... */(/* */"ok"/* */) // expect: ok
|
||||
|
||||
// Nested.
|
||||
io.write(/* in /* nest */ out */"ok") // expect: ok
|
||||
IO.write(/* in /* nest */ out */"ok") // expect: ok
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
io.write("ok") // expect: ok
|
||||
IO.write("ok") // expect: ok
|
||||
/* comment */
|
||||
@ -1,2 +1,2 @@
|
||||
io.write("ok") // expect: ok
|
||||
IO.write("ok") // expect: ok
|
||||
// comment
|
||||
@ -8,4 +8,4 @@
|
||||
|
||||
// TODO: What about combining characters?
|
||||
|
||||
io.write("ok") // expect: ok
|
||||
IO.write("ok") // expect: ok
|
||||
|
||||
@ -4,5 +4,5 @@ class Foo {
|
||||
|
||||
// Classes inherit the argument-less "new" one by default.
|
||||
var foo = new Foo
|
||||
io.write(foo is Foo) // expect: true
|
||||
io.write(foo.toString) // expect: Foo
|
||||
IO.write(foo is Foo) // expect: true
|
||||
IO.write(foo.toString) // expect: Foo
|
||||
|
||||
@ -2,6 +2,6 @@ class Foo {
|
||||
+ other { return "Foo " + other }
|
||||
}
|
||||
|
||||
io.write(new Foo + "value") // expect: Foo value
|
||||
IO.write(new Foo + "value") // expect: Foo value
|
||||
|
||||
// TODO: Other expressions following a constructor, like new Foo.bar("arg").
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
new { io.write("zero") }
|
||||
new(a) { io.write(a) }
|
||||
new(a, b) { io.write(a + b) }
|
||||
new { IO.write("zero") }
|
||||
new(a) { IO.write(a) }
|
||||
new(a, b) { IO.write(a + b) }
|
||||
|
||||
toString { return "Foo" }
|
||||
}
|
||||
@ -13,5 +13,5 @@ new Foo("one", "two") // expect: onetwo
|
||||
|
||||
// Returns the new instance.
|
||||
var foo = new Foo // expect: zero
|
||||
io.write(foo is Foo) // expect: true
|
||||
io.write(foo.toString) // expect: Foo
|
||||
IO.write(foo is Foo) // expect: true
|
||||
IO.write(foo.toString) // expect: Foo
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
class A {
|
||||
new(arg) {
|
||||
io.write("new A " + arg)
|
||||
IO.write("new A " + arg)
|
||||
_field = arg
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ class A {
|
||||
class B is A {
|
||||
new(arg1, arg2) {
|
||||
super(arg2)
|
||||
io.write("new B " + arg1)
|
||||
IO.write("new B " + arg1)
|
||||
_field = arg1
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@ class B is A {
|
||||
class C is B {
|
||||
new {
|
||||
super("one", "two")
|
||||
io.write("new C")
|
||||
IO.write("new C")
|
||||
_field = "c"
|
||||
}
|
||||
|
||||
@ -31,10 +31,10 @@ var c = new C
|
||||
// expect: new A two
|
||||
// expect: new B one
|
||||
// expect: new C
|
||||
io.write(c is A) // expect: true
|
||||
io.write(c is B) // expect: true
|
||||
io.write(c is C) // expect: true
|
||||
IO.write(c is A) // expect: true
|
||||
IO.write(c is B) // expect: true
|
||||
IO.write(c is C) // expect: true
|
||||
|
||||
io.write(c.aField) // expect: two
|
||||
io.write(c.bField) // expect: one
|
||||
io.write(c.cField) // expect: c
|
||||
IO.write(c.aField) // expect: two
|
||||
IO.write(c.bField) // expect: one
|
||||
IO.write(c.cField) // expect: c
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
class Foo {
|
||||
write { io.write(_field) }
|
||||
write { IO.write(_field) }
|
||||
}
|
||||
|
||||
(new Foo).write // expect: null
|
||||
|
||||
@ -7,11 +7,11 @@ class Foo {
|
||||
_e = e
|
||||
}
|
||||
write {
|
||||
io.write(_a)
|
||||
io.write(_b)
|
||||
io.write(_c)
|
||||
io.write(_d)
|
||||
io.write(_e)
|
||||
IO.write(_a)
|
||||
IO.write(_b)
|
||||
IO.write(_c)
|
||||
IO.write(_d)
|
||||
IO.write(_e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ class Node {
|
||||
_left.write
|
||||
}
|
||||
|
||||
io.write(_value)
|
||||
IO.write(_value)
|
||||
|
||||
if (_right is Node) {
|
||||
_right.write
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
class Foo {
|
||||
write { io.write(_field) } // Compile a use of the field...
|
||||
write { IO.write(_field) } // Compile a use of the field...
|
||||
init { _field = "value" } // ...before an assignment to it.
|
||||
}
|
||||
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
// Not structurally equal.
|
||||
io.write((fn 123) == (fn 123)) // expect: false
|
||||
io.write((fn 123) != (fn 123)) // expect: true
|
||||
IO.write((fn 123) == (fn 123)) // expect: false
|
||||
IO.write((fn 123) != (fn 123)) // expect: true
|
||||
|
||||
// Not equal to other types.
|
||||
io.write((fn 123) == 1) // expect: false
|
||||
io.write((fn 123) == false) // expect: false
|
||||
io.write((fn 123) == "fn 123") // expect: false
|
||||
io.write((fn 123) != 1) // expect: true
|
||||
io.write((fn 123) != false) // expect: true
|
||||
io.write((fn 123) != "fn 123") // expect: true
|
||||
IO.write((fn 123) == 1) // expect: false
|
||||
IO.write((fn 123) == false) // expect: false
|
||||
IO.write((fn 123) == "fn 123") // expect: false
|
||||
IO.write((fn 123) != 1) // expect: true
|
||||
IO.write((fn 123) != false) // expect: true
|
||||
IO.write((fn 123) != "fn 123") // expect: true
|
||||
|
||||
// Equal by identity.
|
||||
var f = fn 123
|
||||
io.write(f == f) // expect: true
|
||||
io.write(f != f) // expect: false
|
||||
IO.write(f == f) // expect: true
|
||||
IO.write(f != f) // expect: false
|
||||
|
||||
@ -1,50 +1,50 @@
|
||||
var f0 = fn 0
|
||||
io.write(f0.call) // expect: 0
|
||||
IO.write(f0.call) // expect: 0
|
||||
|
||||
var f1 = fn(a) a
|
||||
io.write(f1.call(1)) // expect: 1
|
||||
IO.write(f1.call(1)) // expect: 1
|
||||
|
||||
var f2 = fn(a, b) a + b
|
||||
io.write(f2.call(1, 2)) // expect: 3
|
||||
IO.write(f2.call(1, 2)) // expect: 3
|
||||
|
||||
var f3 = fn(a, b, c) a + b + c
|
||||
io.write(f3.call(1, 2, 3)) // expect: 6
|
||||
IO.write(f3.call(1, 2, 3)) // expect: 6
|
||||
|
||||
var f4 = fn(a, b, c, d) a + b + c + d
|
||||
io.write(f4.call(1, 2, 3, 4)) // expect: 10
|
||||
IO.write(f4.call(1, 2, 3, 4)) // expect: 10
|
||||
|
||||
var f5 = fn(a, b, c, d, e) a + b + c + d + e
|
||||
io.write(f5.call(1, 2, 3, 4, 5)) // expect: 15
|
||||
IO.write(f5.call(1, 2, 3, 4, 5)) // expect: 15
|
||||
|
||||
var f6 = fn(a, b, c, d, e, f) a + b + c + d + e + f
|
||||
io.write(f6.call(1, 2, 3, 4, 5, 6)) // expect: 21
|
||||
IO.write(f6.call(1, 2, 3, 4, 5, 6)) // expect: 21
|
||||
|
||||
var f7 = fn(a, b, c, d, e, f, g) a + b + c + d + e + f + g
|
||||
io.write(f7.call(1, 2, 3, 4, 5, 6, 7)) // expect: 28
|
||||
IO.write(f7.call(1, 2, 3, 4, 5, 6, 7)) // expect: 28
|
||||
|
||||
var f8 = fn(a, b, c, d, e, f, g, h) a + b + c + d + e + f + g + h
|
||||
io.write(f8.call(1, 2, 3, 4, 5, 6, 7, 8)) // expect: 36
|
||||
IO.write(f8.call(1, 2, 3, 4, 5, 6, 7, 8)) // expect: 36
|
||||
|
||||
var f9 = fn(a, b, c, d, e, f, g, h, i) a + b + c + d + e + f + g + h + i
|
||||
io.write(f9.call(1, 2, 3, 4, 5, 6, 7, 8, 9)) // expect: 45
|
||||
IO.write(f9.call(1, 2, 3, 4, 5, 6, 7, 8, 9)) // expect: 45
|
||||
|
||||
var f10 = fn(a, b, c, d, e, f, g, h, i, j) a + b + c + d + e + f + g + h + i + j
|
||||
io.write(f10.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) // expect: 55
|
||||
IO.write(f10.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) // expect: 55
|
||||
|
||||
var f11 = fn(a, b, c, d, e, f, g, h, i, j, k) a + b + c + d + e + f + g + h + i + j + k
|
||||
io.write(f11.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)) // expect: 66
|
||||
IO.write(f11.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)) // expect: 66
|
||||
|
||||
var f12 = fn(a, b, c, d, e, f, g, h, i, j, k, l) a + b + c + d + e + f + g + h + i + j + k + l
|
||||
io.write(f12.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)) // expect: 78
|
||||
IO.write(f12.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)) // expect: 78
|
||||
|
||||
var f13 = fn(a, b, c, d, e, f, g, h, i, j, k, l, m) a + b + c + d + e + f + g + h + i + j + k + l + m
|
||||
io.write(f13.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)) // expect: 91
|
||||
IO.write(f13.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)) // expect: 91
|
||||
|
||||
var f14 = fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n) a + b + c + d + e + f + g + h + i + j + k + l + m + n
|
||||
io.write(f14.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)) // expect: 105
|
||||
IO.write(f14.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)) // expect: 105
|
||||
|
||||
var f15 = fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) a + b + c + d + e + f + g + h + i + j + k + l + m + n + o
|
||||
io.write(f15.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) // expect: 120
|
||||
IO.write(f15.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) // expect: 120
|
||||
|
||||
var f16 = fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p
|
||||
io.write(f16.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)) // expect: 136
|
||||
IO.write(f16.call(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)) // expect: 136
|
||||
|
||||
@ -1,31 +1,31 @@
|
||||
// Single expression body.
|
||||
(fn io.write("ok")).call // expect: ok
|
||||
(fn IO.write("ok")).call // expect: ok
|
||||
|
||||
// TODO: Precedence of fn body.
|
||||
|
||||
// Curly body.
|
||||
fn {
|
||||
io.write("ok") // expect: ok
|
||||
IO.write("ok") // expect: ok
|
||||
}.call
|
||||
|
||||
// No trailing newline.
|
||||
fn {
|
||||
io.write("ok") }.call // expect: ok
|
||||
IO.write("ok") }.call // expect: ok
|
||||
|
||||
// Multiple expressions.
|
||||
fn {
|
||||
io.write("1") // expect: 1
|
||||
io.write("2") // expect: 2
|
||||
IO.write("1") // expect: 1
|
||||
IO.write("2") // expect: 2
|
||||
}.call
|
||||
|
||||
// Extra newlines.
|
||||
fn {
|
||||
|
||||
|
||||
io.write("1") // expect: 1
|
||||
IO.write("1") // expect: 1
|
||||
|
||||
|
||||
io.write("2") // expect: 2
|
||||
IO.write("2") // expect: 2
|
||||
|
||||
|
||||
}.call
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
io.write((fn 0) is Function) // expect: true
|
||||
io.write((fn 0) is Object) // expect: true
|
||||
io.write((fn 0) is String) // expect: false
|
||||
io.write((fn 0).type == Function) // expect: true
|
||||
IO.write((fn 0) is Function) // expect: true
|
||||
IO.write((fn 0) is Object) // expect: true
|
||||
IO.write((fn 0) is String) // expect: false
|
||||
IO.write((fn 0).type == Function) // expect: true
|
||||
|
||||
@ -1,31 +1,31 @@
|
||||
// * has higher precedence than +.
|
||||
io.write(2 + 3 * 4) // expect: 14
|
||||
IO.write(2 + 3 * 4) // expect: 14
|
||||
|
||||
// * has higher precedence than -.
|
||||
io.write(20 - 3 * 4) // expect: 8
|
||||
IO.write(20 - 3 * 4) // expect: 8
|
||||
|
||||
// / has higher precedence than +.
|
||||
io.write(2 + 6 / 3) // expect: 4
|
||||
IO.write(2 + 6 / 3) // expect: 4
|
||||
|
||||
// / has higher precedence than -.
|
||||
io.write(2 - 6 / 3) // expect: 0
|
||||
IO.write(2 - 6 / 3) // expect: 0
|
||||
|
||||
// < has higher precedence than ==.
|
||||
io.write(false == 2 < 1) // expect: true
|
||||
IO.write(false == 2 < 1) // expect: true
|
||||
|
||||
// > has higher precedence than ==.
|
||||
io.write(false == 1 > 2) // expect: true
|
||||
IO.write(false == 1 > 2) // expect: true
|
||||
|
||||
// <= has higher precedence than ==.
|
||||
io.write(false == 2 <= 1) // expect: true
|
||||
IO.write(false == 2 <= 1) // expect: true
|
||||
|
||||
// >= has higher precedence than ==.
|
||||
io.write(false == 1 >= 2) // expect: true
|
||||
IO.write(false == 1 >= 2) // expect: true
|
||||
|
||||
// Unary - has lower precedence than ..
|
||||
io.write(-"abc".count) // expect: -3
|
||||
IO.write(-"abc".count) // expect: -3
|
||||
|
||||
// TODO: %, associativity.
|
||||
|
||||
// Using () for grouping.
|
||||
io.write((2 * (6 - (2 + 2)))) // expect: 4
|
||||
IO.write((2 * (6 - (2 + 2)))) // expect: 4
|
||||
|
||||
26
test/if.wren
26
test/if.wren
@ -1,28 +1,28 @@
|
||||
// Evaluate the 'then' expression if the condition is true.
|
||||
if (true) io.write("good") // expect: good
|
||||
if (false) io.write("bad")
|
||||
if (true) IO.write("good") // expect: good
|
||||
if (false) IO.write("bad")
|
||||
|
||||
// Evaluate the 'else' expression if the condition is false.
|
||||
if (true) io.write("good") else io.write("bad") // expect: good
|
||||
if (false) io.write("bad") else io.write("good") // expect: good
|
||||
if (true) IO.write("good") else IO.write("bad") // expect: good
|
||||
if (false) IO.write("bad") else IO.write("good") // expect: good
|
||||
|
||||
// Allow blocks for branches.
|
||||
if (true) { io.write("block") } // expect: block
|
||||
if (false) null else { io.write("block") } // expect: block
|
||||
if (true) { IO.write("block") } // expect: block
|
||||
if (false) null else { IO.write("block") } // expect: block
|
||||
|
||||
// Assignment in if condition.
|
||||
var a = false
|
||||
if (a = true) io.write(a) // expect: true
|
||||
if (a = true) IO.write(a) // expect: true
|
||||
|
||||
// Newline after "if".
|
||||
if
|
||||
(true) io.write("good") // expect: good
|
||||
(true) IO.write("good") // expect: good
|
||||
|
||||
// Newline after "else".
|
||||
if (false) io.write("bad") else
|
||||
io.write("good") // expect: good
|
||||
if (false) IO.write("bad") else
|
||||
IO.write("good") // expect: good
|
||||
|
||||
// Only false is falsy.
|
||||
if (0) io.write(0) // expect: 0
|
||||
if (null) io.write(null) // expect: null
|
||||
if ("") io.write("empty") // expect: empty
|
||||
if (0) IO.write(0) // expect: 0
|
||||
if (null) IO.write(null) // expect: null
|
||||
if ("") IO.write("empty") // expect: empty
|
||||
|
||||
@ -5,8 +5,8 @@ class Foo {
|
||||
}
|
||||
|
||||
fooPrint {
|
||||
io.write(_field1)
|
||||
io.write(_field2)
|
||||
IO.write(_field1)
|
||||
IO.write(_field2)
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,8 +17,8 @@ class Bar is Foo {
|
||||
}
|
||||
|
||||
barPrint {
|
||||
io.write(_field1)
|
||||
io.write(_field2)
|
||||
IO.write(_field1)
|
||||
IO.write(_field2)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
class Foo {
|
||||
methodOnFoo { io.write("foo") }
|
||||
method(a) { io.write("foo") }
|
||||
method(a, b, c) { io.write("foo") }
|
||||
override { io.write("foo") }
|
||||
methodOnFoo { IO.write("foo") }
|
||||
method(a) { IO.write("foo") }
|
||||
method(a, b, c) { IO.write("foo") }
|
||||
override { IO.write("foo") }
|
||||
}
|
||||
|
||||
class Bar is Foo {
|
||||
methodOnBar { io.write("bar") }
|
||||
method(a, b) { io.write("bar") }
|
||||
method(a, b, c, d) { io.write("bar") }
|
||||
override { io.write("bar") }
|
||||
methodOnBar { IO.write("bar") }
|
||||
method(a, b) { IO.write("bar") }
|
||||
method(a, b, c, d) { IO.write("bar") }
|
||||
override { IO.write("bar") }
|
||||
}
|
||||
|
||||
var bar = new Bar
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
class Foo {
|
||||
static methodOnFoo { io.write("foo") }
|
||||
static method(a) { io.write("foo") }
|
||||
static method(a, b, c) { io.write("foo") }
|
||||
static override { io.write("foo") }
|
||||
static methodOnFoo { IO.write("foo") }
|
||||
static method(a) { IO.write("foo") }
|
||||
static method(a, b, c) { IO.write("foo") }
|
||||
static override { IO.write("foo") }
|
||||
}
|
||||
|
||||
class Bar is Foo {
|
||||
static methodOnBar { io.write("bar") }
|
||||
static method(a, b) { io.write("bar") }
|
||||
static method(a, b, c, d) { io.write("bar") }
|
||||
static override { io.write("bar") }
|
||||
static methodOnBar { IO.write("bar") }
|
||||
static method(a, b) { IO.write("bar") }
|
||||
static method(a, b, c, d) { IO.write("bar") }
|
||||
static override { IO.write("bar") }
|
||||
}
|
||||
|
||||
Bar.methodOnFoo // expect: foo
|
||||
|
||||
@ -5,12 +5,12 @@ var a = new A
|
||||
var b = new B
|
||||
var c = new C
|
||||
|
||||
io.write(a is A) // expect: true
|
||||
io.write(a is B) // expect: false
|
||||
io.write(a is C) // expect: false
|
||||
io.write(b is A) // expect: true
|
||||
io.write(b is B) // expect: true
|
||||
io.write(b is C) // expect: false
|
||||
io.write(c is A) // expect: true
|
||||
io.write(c is B) // expect: true
|
||||
io.write(c is C) // expect: true
|
||||
IO.write(a is A) // expect: true
|
||||
IO.write(a is B) // expect: false
|
||||
IO.write(a is C) // expect: false
|
||||
IO.write(b is A) // expect: true
|
||||
IO.write(b is B) // expect: true
|
||||
IO.write(b is C) // expect: false
|
||||
IO.write(c is A) // expect: true
|
||||
IO.write(c is B) // expect: true
|
||||
IO.write(c is C) // expect: true
|
||||
|
||||
48
test/is.wren
48
test/is.wren
@ -1,32 +1,32 @@
|
||||
io.write(Num is Class) // expect: true
|
||||
io.write(true is Bool) // expect: true
|
||||
io.write((fn 1) is Function) // expect: true
|
||||
io.write(123 is Num) // expect: true
|
||||
io.write(null is Null) // expect: true
|
||||
io.write("s" is String) // expect: true
|
||||
IO.write(Num is Class) // expect: true
|
||||
IO.write(true is Bool) // expect: true
|
||||
IO.write((fn 1) is Function) // expect: true
|
||||
IO.write(123 is Num) // expect: true
|
||||
IO.write(null is Null) // expect: true
|
||||
IO.write("s" is String) // expect: true
|
||||
|
||||
io.write(Num is Bool) // expect: false
|
||||
io.write(null is Class) // expect: false
|
||||
io.write(true is Function) // expect: false
|
||||
io.write((fn 1) is Num) // expect: false
|
||||
io.write("s" is Null) // expect: false
|
||||
io.write(123 is String) // expect: false
|
||||
IO.write(Num is Bool) // expect: false
|
||||
IO.write(null is Class) // expect: false
|
||||
IO.write(true is Function) // expect: false
|
||||
IO.write((fn 1) is Num) // expect: false
|
||||
IO.write("s" is Null) // expect: false
|
||||
IO.write(123 is String) // expect: false
|
||||
|
||||
// Everything extends Object.
|
||||
io.write(Num is Object) // expect: true
|
||||
io.write(null is Object) // expect: true
|
||||
io.write(true is Object) // expect: true
|
||||
io.write((fn 1) is Object) // expect: true
|
||||
io.write("s" is Object) // expect: true
|
||||
io.write(123 is Object) // expect: true
|
||||
IO.write(Num is Object) // expect: true
|
||||
IO.write(null is Object) // expect: true
|
||||
IO.write(true is Object) // expect: true
|
||||
IO.write((fn 1) is Object) // expect: true
|
||||
IO.write("s" is Object) // expect: true
|
||||
IO.write(123 is Object) // expect: true
|
||||
|
||||
// Classes extend Class.
|
||||
io.write(Num is Class) // expect: true
|
||||
io.write(null is Class) // expect: false
|
||||
io.write(true is Class) // expect: false
|
||||
io.write((fn 1) is Class) // expect: false
|
||||
io.write("s" is Class) // expect: false
|
||||
io.write(123 is Class) // expect: false
|
||||
IO.write(Num is Class) // expect: true
|
||||
IO.write(null is Class) // expect: false
|
||||
IO.write(true is Class) // expect: false
|
||||
IO.write((fn 1) is Class) // expect: false
|
||||
IO.write("s" is Class) // expect: false
|
||||
IO.write(123 is Class) // expect: false
|
||||
|
||||
// TODO: Non-class on RHS.
|
||||
// TODO: Precedence and associativity.
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
var a = []
|
||||
a.add(1)
|
||||
io.write(a) // expect: [1]
|
||||
IO.write(a) // expect: [1]
|
||||
a.add(2)
|
||||
io.write(a) // expect: [1, 2]
|
||||
IO.write(a) // expect: [1, 2]
|
||||
a.add(3)
|
||||
io.write(a) // expect: [1, 2, 3]
|
||||
IO.write(a) // expect: [1, 2, 3]
|
||||
|
||||
// Returns added element.
|
||||
io.write(a.add(4)) // expect: 4
|
||||
IO.write(a.add(4)) // expect: 4
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
var a = [1, 2, 3]
|
||||
a.clear
|
||||
io.write(a) // expect: []
|
||||
io.write(a.count) // expect: 0
|
||||
IO.write(a) // expect: []
|
||||
IO.write(a.count) // expect: 0
|
||||
|
||||
// Returns null.
|
||||
io.write([1, 2].clear) // expect: null
|
||||
IO.write([1, 2].clear) // expect: null
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
io.write([].count) // expect: 0
|
||||
io.write([1].count) // expect: 1
|
||||
io.write([1, 2, 3, 4].count) // expect: 4
|
||||
IO.write([].count) // expect: 0
|
||||
IO.write([1].count) // expect: 1
|
||||
IO.write([1, 2, 3, 4].count) // expect: 4
|
||||
|
||||
@ -4,41 +4,41 @@
|
||||
// Add to empty list.
|
||||
var a = []
|
||||
a.insert(1, 0)
|
||||
io.write(a) // expect: [1]
|
||||
IO.write(a) // expect: [1]
|
||||
|
||||
// Normal indices.
|
||||
var b = [1, 2, 3]
|
||||
b.insert(4, 0)
|
||||
io.write(b) // expect: [4, 1, 2, 3]
|
||||
IO.write(b) // expect: [4, 1, 2, 3]
|
||||
|
||||
var c = [1, 2, 3]
|
||||
c.insert(4, 1)
|
||||
io.write(c) // expect: [1, 4, 2, 3]
|
||||
IO.write(c) // expect: [1, 4, 2, 3]
|
||||
|
||||
var d = [1, 2, 3]
|
||||
d.insert(4, 2)
|
||||
io.write(d) // expect: [1, 2, 4, 3]
|
||||
IO.write(d) // expect: [1, 2, 4, 3]
|
||||
|
||||
var e = [1, 2, 3]
|
||||
e.insert(4, 3)
|
||||
io.write(e) // expect: [1, 2, 3, 4]
|
||||
IO.write(e) // expect: [1, 2, 3, 4]
|
||||
|
||||
// Negative indices.
|
||||
var f = [1, 2, 3]
|
||||
f.insert(4, -4)
|
||||
io.write(f) // expect: [4, 1, 2, 3]
|
||||
IO.write(f) // expect: [4, 1, 2, 3]
|
||||
|
||||
var g = [1, 2, 3]
|
||||
g.insert(4, -3)
|
||||
io.write(g) // expect: [1, 4, 2, 3]
|
||||
IO.write(g) // expect: [1, 4, 2, 3]
|
||||
|
||||
var h = [1, 2, 3]
|
||||
h.insert(4, -2)
|
||||
io.write(h) // expect: [1, 2, 4, 3]
|
||||
IO.write(h) // expect: [1, 2, 4, 3]
|
||||
|
||||
var i = [1, 2, 3]
|
||||
i.insert(4, -1)
|
||||
io.write(i) // expect: [1, 2, 3, 4]
|
||||
IO.write(i) // expect: [1, 2, 3, 4]
|
||||
|
||||
// Returns.inserted value.
|
||||
io.write([1, 2].insert(3, 0)) // expect: 3
|
||||
IO.write([1, 2].insert(3, 0)) // expect: 3
|
||||
|
||||
@ -8,7 +8,7 @@ var list = [
|
||||
|
||||
]
|
||||
|
||||
io.write(list[0]) // expect: a
|
||||
io.write(list[1]) // expect: b
|
||||
io.write(list[2]) // expect: c
|
||||
io.write(list[3]) // expect: d
|
||||
IO.write(list[0]) // expect: a
|
||||
IO.write(list[1]) // expect: b
|
||||
IO.write(list[2]) // expect: c
|
||||
IO.write(list[3]) // expect: d
|
||||
|
||||
@ -1,32 +1,32 @@
|
||||
var a = [1, 2, 3]
|
||||
a.removeAt(0)
|
||||
io.write(a) // expect: [2, 3]
|
||||
IO.write(a) // expect: [2, 3]
|
||||
|
||||
var b = [1, 2, 3]
|
||||
b.removeAt(1)
|
||||
io.write(b) // expect: [1, 3]
|
||||
IO.write(b) // expect: [1, 3]
|
||||
|
||||
var c = [1, 2, 3]
|
||||
c.removeAt(2)
|
||||
io.write(c) // expect: [1, 2]
|
||||
IO.write(c) // expect: [1, 2]
|
||||
|
||||
// Index backwards from end.
|
||||
var d = [1, 2, 3]
|
||||
d.removeAt(-3)
|
||||
io.write(d) // expect: [2, 3]
|
||||
IO.write(d) // expect: [2, 3]
|
||||
|
||||
var e = [1, 2, 3]
|
||||
e.removeAt(-2)
|
||||
io.write(e) // expect: [1, 3]
|
||||
IO.write(e) // expect: [1, 3]
|
||||
|
||||
var f = [1, 2, 3]
|
||||
f.removeAt(-1)
|
||||
io.write(f) // expect: [1, 2]
|
||||
IO.write(f) // expect: [1, 2]
|
||||
|
||||
// Out of bounds.
|
||||
// TODO: Signal error in better way.
|
||||
io.write([1, 2, 3].removeAt(3)) // expect: null
|
||||
io.write([1, 2, 3].removeAt(-4)) // expect: null
|
||||
IO.write([1, 2, 3].removeAt(3)) // expect: null
|
||||
IO.write([1, 2, 3].removeAt(-4)) // expect: null
|
||||
|
||||
// Return the removed value.
|
||||
io.write([3, 4, 5].removeAt(1)) // expect: 4
|
||||
IO.write([3, 4, 5].removeAt(1)) // expect: 4
|
||||
|
||||
@ -1,25 +1,25 @@
|
||||
// Returns elements.
|
||||
var list = ["a", "b", "c", "d"]
|
||||
io.write(list[0]) // expect: a
|
||||
io.write(list[1]) // expect: b
|
||||
io.write(list[2]) // expect: c
|
||||
io.write(list[3]) // expect: d
|
||||
IO.write(list[0]) // expect: a
|
||||
IO.write(list[1]) // expect: b
|
||||
IO.write(list[2]) // expect: c
|
||||
IO.write(list[3]) // expect: d
|
||||
|
||||
// Allows indexing backwards from the end.
|
||||
io.write(list[-4]) // expect: a
|
||||
io.write(list[-3]) // expect: b
|
||||
io.write(list[-2]) // expect: c
|
||||
io.write(list[-1]) // expect: d
|
||||
IO.write(list[-4]) // expect: a
|
||||
IO.write(list[-3]) // expect: b
|
||||
IO.write(list[-2]) // expect: c
|
||||
IO.write(list[-1]) // expect: d
|
||||
|
||||
// Handle out of bounds.
|
||||
// TODO: Should halt the fiber or raise an error somehow.
|
||||
io.write(list[4]) // expect: null
|
||||
io.write(list[-5]) // expect: null
|
||||
IO.write(list[4]) // expect: null
|
||||
IO.write(list[-5]) // expect: null
|
||||
|
||||
// Handle wrong argument type.
|
||||
// TODO: Should halt the fiber or raise an error somehow.
|
||||
io.write(list[true]) // expect: null
|
||||
IO.write(list[true]) // expect: null
|
||||
|
||||
// Handle non-integer index.
|
||||
// TODO: Should halt the fiber or raise an error somehow.
|
||||
io.write(list[1.5]) // expect: null
|
||||
IO.write(list[1.5]) // expect: null
|
||||
|
||||
@ -4,13 +4,13 @@
|
||||
list[0] = 5
|
||||
list[1] = 6
|
||||
list[2] = 7
|
||||
io.write(list) // expect: [5, 6, 7]
|
||||
IO.write(list) // expect: [5, 6, 7]
|
||||
}
|
||||
|
||||
// Returns right-hand side.
|
||||
{
|
||||
var list = [1, 2, 3]
|
||||
io.write(list[1] = 5) // expect: 5
|
||||
IO.write(list[1] = 5) // expect: 5
|
||||
}
|
||||
|
||||
// Negative indices.
|
||||
@ -19,7 +19,7 @@
|
||||
list[-1] = 5
|
||||
list[-2] = 6
|
||||
list[-3] = 7
|
||||
io.write(list) // expect: [7, 6, 5]
|
||||
IO.write(list) // expect: [7, 6, 5]
|
||||
}
|
||||
|
||||
// TODO: Handle out of range.
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
io.write([] is List) // expect: true
|
||||
io.write([] is Object) // expect: true
|
||||
io.write([] is Bool) // expect: false
|
||||
io.write([].type == List) // expect: true
|
||||
IO.write([] is List) // expect: true
|
||||
IO.write([] is Object) // expect: true
|
||||
IO.write([] is Bool) // expect: false
|
||||
IO.write([].type == List) // expect: true
|
||||
|
||||
@ -19,20 +19,20 @@ class Foo {
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
io.write(foo.method) // expect: 0
|
||||
io.write(foo.method(1)) // expect: 1
|
||||
io.write(foo.method(1, 2)) // expect: 3
|
||||
io.write(foo.method(1, 2, 3)) // expect: 6
|
||||
io.write(foo.method(1, 2, 3, 4)) // expect: 10
|
||||
io.write(foo.method(1, 2, 3, 4, 5)) // expect: 15
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6)) // expect: 21
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6, 7)) // expect: 28
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8)) // expect: 36
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9)) // expect: 45
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) // expect: 55
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)) // expect: 66
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)) // expect: 78
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)) // expect: 91
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)) // expect: 105
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) // expect: 120
|
||||
io.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)) // expect: 136
|
||||
IO.write(foo.method) // expect: 0
|
||||
IO.write(foo.method(1)) // expect: 1
|
||||
IO.write(foo.method(1, 2)) // expect: 3
|
||||
IO.write(foo.method(1, 2, 3)) // expect: 6
|
||||
IO.write(foo.method(1, 2, 3, 4)) // expect: 10
|
||||
IO.write(foo.method(1, 2, 3, 4, 5)) // expect: 15
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6)) // expect: 21
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6, 7)) // expect: 28
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8)) // expect: 36
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9)) // expect: 45
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) // expect: 55
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)) // expect: 66
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)) // expect: 78
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)) // expect: 91
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)) // expect: 105
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) // expect: 120
|
||||
IO.write(foo.method(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)) // expect: 136
|
||||
|
||||
@ -4,4 +4,4 @@ class Foo {
|
||||
}
|
||||
}
|
||||
|
||||
io.write((new Foo).thisHasAMethodNameThatIsExactly64CharactersLongWhichIsTheMaximum) // expect: result
|
||||
IO.write((new Foo).thisHasAMethodNameThatIsExactly64CharactersLongWhichIsTheMaximum) // expect: result
|
||||
|
||||
@ -16,16 +16,16 @@ class Foo {
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
io.write(foo + "a") // expect: infix + a
|
||||
io.write(foo - "a") // expect: infix - a
|
||||
io.write(foo * "a") // expect: infix * a
|
||||
io.write(foo / "a") // expect: infix / a
|
||||
io.write(foo % "a") // expect: infix % a
|
||||
io.write(foo < "a") // expect: infix < a
|
||||
io.write(foo > "a") // expect: infix > a
|
||||
io.write(foo <= "a") // expect: infix <= a
|
||||
io.write(foo >= "a") // expect: infix >= a
|
||||
io.write(foo == "a") // expect: infix == a
|
||||
io.write(foo != "a") // expect: infix != a
|
||||
io.write(!foo) // expect: prefix !
|
||||
io.write(-foo) // expect: prefix -
|
||||
IO.write(foo + "a") // expect: infix + a
|
||||
IO.write(foo - "a") // expect: infix - a
|
||||
IO.write(foo * "a") // expect: infix * a
|
||||
IO.write(foo / "a") // expect: infix / a
|
||||
IO.write(foo % "a") // expect: infix % a
|
||||
IO.write(foo < "a") // expect: infix < a
|
||||
IO.write(foo > "a") // expect: infix > a
|
||||
IO.write(foo <= "a") // expect: infix <= a
|
||||
IO.write(foo >= "a") // expect: infix >= a
|
||||
IO.write(foo == "a") // expect: infix == a
|
||||
IO.write(foo != "a") // expect: infix != a
|
||||
IO.write(!foo) // expect: prefix !
|
||||
IO.write(-foo) // expect: prefix -
|
||||
|
||||
@ -6,7 +6,7 @@ class Foo {
|
||||
static bar(arg) { return "on metaclass " + arg }
|
||||
}
|
||||
|
||||
io.write((new Foo).bar) // expect: on instance
|
||||
io.write(Foo.bar) // expect: on metaclass
|
||||
io.write((new Foo).bar("arg")) // expect: on instance arg
|
||||
io.write(Foo.bar("arg")) // expect: on metaclass arg
|
||||
IO.write((new Foo).bar) // expect: on instance
|
||||
IO.write(Foo.bar) // expect: on metaclass
|
||||
IO.write((new Foo).bar("arg")) // expect: on instance arg
|
||||
IO.write(Foo.bar("arg")) // expect: on metaclass arg
|
||||
|
||||
@ -1 +1 @@
|
||||
io.write(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17) // expect error
|
||||
IO.write(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17) // expect error
|
||||
|
||||
@ -1 +1 @@
|
||||
io.write("ok") // expect: ok
|
||||
IO.write("ok") // expect: ok
|
||||
@ -1 +1 @@
|
||||
io.write(null) // expect: null
|
||||
IO.write(null) // expect: null
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
io.write(null is Null) // expect: true
|
||||
io.write(null is Object) // expect: true
|
||||
io.write(null is Bool) // expect: false
|
||||
io.write(null.type == Null) // expect: true
|
||||
IO.write(null is Null) // expect: true
|
||||
IO.write(null is Object) // expect: true
|
||||
IO.write(null is Bool) // expect: false
|
||||
IO.write(null.type == Null) // expect: true
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
28
test/or.wren
28
test/or.wren
@ -1,26 +1,26 @@
|
||||
// Note: These tests implicitly depend on ints being truthy.
|
||||
// Also rely on io.write() returning its argument.
|
||||
// Also rely on IO.write() returning its argument.
|
||||
|
||||
// Return the first true argument.
|
||||
io.write(1 || true) // expect: 1
|
||||
io.write(false || 1) // expect: 1
|
||||
io.write(false || false || true) // expect: true
|
||||
IO.write(1 || true) // expect: 1
|
||||
IO.write(false || 1) // expect: 1
|
||||
IO.write(false || false || true) // expect: true
|
||||
|
||||
// Return the last argument if all are false.
|
||||
io.write(false || false) // expect: false
|
||||
io.write(false || false || false) // expect: false
|
||||
IO.write(false || false) // expect: false
|
||||
IO.write(false || false || false) // expect: false
|
||||
|
||||
// Short-circuit at the first true argument.
|
||||
io.write(false) || // expect: false
|
||||
io.write(true) || // expect: true
|
||||
io.write(true) // should not print
|
||||
IO.write(false) || // expect: false
|
||||
IO.write(true) || // expect: true
|
||||
IO.write(true) // should not print
|
||||
|
||||
// Swallow a trailing newline.
|
||||
io.write(true ||
|
||||
IO.write(true ||
|
||||
true) // expect: true
|
||||
|
||||
// Only false is falsy.
|
||||
io.write(0 || true) // expect: 0
|
||||
io.write(null || true) // expect: null
|
||||
io.write(("" || true) == "") // expect: true
|
||||
io.write(false || true) // expect: true
|
||||
IO.write(0 || true) // expect: 0
|
||||
IO.write(null || true) // expect: null
|
||||
IO.write(("" || true) == "") // expect: true
|
||||
IO.write(false || true) // expect: true
|
||||
|
||||
@ -1 +1 @@
|
||||
var a = "ok"; io.write(a) // expect: ok
|
||||
var a = "ok"; IO.write(a) // expect: ok
|
||||
|
||||
@ -13,6 +13,6 @@ var c = new Foo("c")
|
||||
|
||||
// Assignment is right-associative.
|
||||
a.bar = b.bar = c.bar = "d"
|
||||
io.write(a.toString) // expect: d
|
||||
io.write(b.toString) // expect: d
|
||||
io.write(c.toString) // expect: d
|
||||
IO.write(a.toString) // expect: d
|
||||
IO.write(b.toString) // expect: d
|
||||
IO.write(c.toString) // expect: d
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
class Foo {
|
||||
bar = value {
|
||||
io.write(value)
|
||||
IO.write(value)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,4 +3,4 @@ class Foo {
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
io.write(foo.bar = "value") // expect: result
|
||||
IO.write(foo.bar = "value") // expect: result
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
class Foo {
|
||||
bar = value { io.write("set") }
|
||||
bar { io.write("get") }
|
||||
bar = value { IO.write("set") }
|
||||
bar { IO.write("get") }
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
class Foo {
|
||||
static bar = value {
|
||||
io.write(value)
|
||||
IO.write(value)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
io.write("".contains("")) // expect: true
|
||||
io.write("anything".contains("")) // expect: true
|
||||
io.write("something".contains("meth")) // expect: true
|
||||
io.write("something".contains("some")) // expect: true
|
||||
io.write("something".contains("ing")) // expect: true
|
||||
io.write("something".contains("math")) // expect: false
|
||||
IO.write("".contains("")) // expect: true
|
||||
IO.write("anything".contains("")) // expect: true
|
||||
IO.write("something".contains("meth")) // expect: true
|
||||
IO.write("something".contains("some")) // expect: true
|
||||
IO.write("something".contains("ing")) // expect: true
|
||||
IO.write("something".contains("math")) // expect: false
|
||||
|
||||
// TODO: Passing non-string as argument.
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
io.write("".count) // expect: 0
|
||||
io.write("a string".count) // expect: 8
|
||||
IO.write("".count) // expect: 0
|
||||
IO.write("a string".count) // expect: 8
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
io.write("" == "") // expect: true
|
||||
io.write("abcd" == "abcd") // expect: true
|
||||
io.write("abcd" == "d") // expect: false
|
||||
io.write("e" == "abcd") // expect: false
|
||||
io.write("" == "abcd") // expect: false
|
||||
IO.write("" == "") // expect: true
|
||||
IO.write("abcd" == "abcd") // expect: true
|
||||
IO.write("abcd" == "d") // expect: false
|
||||
IO.write("e" == "abcd") // expect: false
|
||||
IO.write("" == "abcd") // expect: false
|
||||
|
||||
// Not equal to other types.
|
||||
io.write("1" == 1) // expect: false
|
||||
io.write("true" == true) // expect: false
|
||||
IO.write("1" == 1) // expect: false
|
||||
IO.write("true" == true) // expect: false
|
||||
|
||||
io.write("" != "") // expect: false
|
||||
io.write("abcd" != "abcd") // expect: false
|
||||
io.write("abcd" != "d") // expect: true
|
||||
io.write("e" != "abcd") // expect: true
|
||||
io.write("" != "abcd") // expect: true
|
||||
IO.write("" != "") // expect: false
|
||||
IO.write("abcd" != "abcd") // expect: false
|
||||
IO.write("abcd" != "d") // expect: true
|
||||
IO.write("e" != "abcd") // expect: true
|
||||
IO.write("" != "abcd") // expect: true
|
||||
|
||||
// Not equal to other types.
|
||||
io.write("1" != 1) // expect: true
|
||||
io.write("true" != true) // expect: true
|
||||
IO.write("1" != 1) // expect: true
|
||||
IO.write("true" != true) // expect: true
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Escape characters.
|
||||
io.write("\"") // expect: "
|
||||
io.write("\\") // expect: \
|
||||
io.write("(\n)") // expect: (
|
||||
IO.write("\"") // expect: "
|
||||
IO.write("\\") // expect: \
|
||||
IO.write("(\n)") // expect: (
|
||||
// expect: )
|
||||
|
||||
// TODO: Non-printing escapes like \t.
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
io.write("".count) // expect: 0
|
||||
io.write("a string") // expect: a string
|
||||
IO.write("".count) // expect: 0
|
||||
IO.write("a string") // expect: a string
|
||||
|
||||
@ -1,24 +1,24 @@
|
||||
// Returns characters (as strings).
|
||||
io.write("abcd"[0]) // expect: a
|
||||
io.write("abcd"[1]) // expect: b
|
||||
io.write("abcd"[2]) // expect: c
|
||||
io.write("abcd"[3]) // expect: d
|
||||
IO.write("abcd"[0]) // expect: a
|
||||
IO.write("abcd"[1]) // expect: b
|
||||
IO.write("abcd"[2]) // expect: c
|
||||
IO.write("abcd"[3]) // expect: d
|
||||
|
||||
// Allows indexing backwards from the end.
|
||||
io.write("abcd"[-4]) // expect: a
|
||||
io.write("abcd"[-3]) // expect: b
|
||||
io.write("abcd"[-2]) // expect: c
|
||||
io.write("abcd"[-1]) // expect: d
|
||||
IO.write("abcd"[-4]) // expect: a
|
||||
IO.write("abcd"[-3]) // expect: b
|
||||
IO.write("abcd"[-2]) // expect: c
|
||||
IO.write("abcd"[-1]) // expect: d
|
||||
|
||||
// Handle out of bounds.
|
||||
// TODO: Should halt the fiber or raise an error somehow.
|
||||
io.write("abcd"[4]) // expect: null
|
||||
io.write("abcd"[-5]) // expect: null
|
||||
IO.write("abcd"[4]) // expect: null
|
||||
IO.write("abcd"[-5]) // expect: null
|
||||
|
||||
// Handle wrong argument type.
|
||||
// TODO: Should halt the fiber or raise an error somehow.
|
||||
io.write("abcd"[true]) // expect: null
|
||||
IO.write("abcd"[true]) // expect: null
|
||||
|
||||
// Handle non-integer index.
|
||||
// TODO: Should halt the fiber or raise an error somehow.
|
||||
io.write("abcd"[1.5]) // expect: null
|
||||
IO.write("abcd"[1.5]) // expect: null
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
io.write("".toString == "") // expect: true
|
||||
io.write("blah".toString == "blah") // expect: true
|
||||
IO.write("".toString == "") // expect: true
|
||||
IO.write("blah".toString == "blah") // expect: true
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
io.write("s" is String) // expect: true
|
||||
io.write("s" is Object) // expect: true
|
||||
io.write("s" is Num) // expect: false
|
||||
io.write("s".type == String) // expect: true
|
||||
IO.write("s" is String) // expect: true
|
||||
IO.write("s" is Object) // expect: true
|
||||
IO.write("s" is Num) // expect: false
|
||||
IO.write("s".type == String) // expect: true
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
class Base {
|
||||
foo {
|
||||
io.write("Base.foo")
|
||||
IO.write("Base.foo")
|
||||
}
|
||||
}
|
||||
|
||||
class Derived is Base {
|
||||
bar {
|
||||
io.write("Derived.bar")
|
||||
IO.write("Derived.bar")
|
||||
super.foo
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
class Base {
|
||||
foo {
|
||||
io.write("Base.foo")
|
||||
IO.write("Base.foo")
|
||||
}
|
||||
}
|
||||
|
||||
class Derived is Base {
|
||||
foo {
|
||||
io.write("Derived.foo")
|
||||
IO.write("Derived.foo")
|
||||
super.foo
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
class A {
|
||||
foo {
|
||||
io.write("A.foo")
|
||||
IO.write("A.foo")
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ class B is A {}
|
||||
|
||||
class C is B {
|
||||
foo {
|
||||
io.write("C.foo")
|
||||
IO.write("C.foo")
|
||||
super.foo
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,4 +9,4 @@ class Foo {
|
||||
}
|
||||
|
||||
var closure = (new Foo).getClosure
|
||||
io.write(closure.call) // expect: Foo
|
||||
IO.write(closure.call) // expect: Foo
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user