Logical "||" operator.
This commit is contained in:
@@ -18,3 +18,9 @@ io.write(true) && // expect: true
|
||||
// Swallow a trailing newline.
|
||||
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
|
||||
|
||||
@@ -44,3 +44,8 @@ if (true) class Foo {} // no error
|
||||
// Definition in else arm.
|
||||
if (false) null else var a = io.write("ok") // expect: ok
|
||||
if (true) null else class Foo {} // no error
|
||||
|
||||
// Only false is falsy.
|
||||
if (0) io.write(0) // expect: 0
|
||||
if (null) io.write(null) // expect: null
|
||||
if ("") io.write("empty") // expect: empty
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
// Note: These tests implicitly depend on ints being truthy.
|
||||
// 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
|
||||
|
||||
// Return the last argument if all are 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
|
||||
|
||||
// Swallow a trailing newline.
|
||||
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
|
||||
Reference in New Issue
Block a user