Make null falsey.
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
// False and null are false.
|
||||
if (false) IO.print("bad") else IO.print("false") // expect: false
|
||||
if (null) IO.print("bad") else IO.print("null") // expect: null
|
||||
|
||||
// Everything else is true.
|
||||
if (true) IO.print(true) // expect: true
|
||||
if (0) IO.print(0) // expect: 0
|
||||
if ("") IO.print("empty") // expect: empty
|
||||
@@ -1,28 +0,0 @@
|
||||
// Evaluate the 'then' expression if the condition is true.
|
||||
if (true) IO.print("good") // expect: good
|
||||
if (false) IO.print("bad")
|
||||
|
||||
// Evaluate the 'else' expression if the condition is false.
|
||||
if (true) IO.print("good") else IO.print("bad") // expect: good
|
||||
if (false) IO.print("bad") else IO.print("good") // expect: good
|
||||
|
||||
// Allow blocks for branches.
|
||||
if (true) { IO.print("block") } // expect: block
|
||||
if (false) null else { IO.print("block") } // expect: block
|
||||
|
||||
// Assignment in if condition.
|
||||
var a = false
|
||||
if (a = true) IO.print(a) // expect: true
|
||||
|
||||
// Newline after "if".
|
||||
if
|
||||
(true) IO.print("good") // expect: good
|
||||
|
||||
// Newline after "else".
|
||||
if (false) IO.print("bad") else
|
||||
IO.print("good") // expect: good
|
||||
|
||||
// Only false is falsy.
|
||||
if (0) IO.print(0) // expect: 0
|
||||
if (null) IO.print(null) // expect: null
|
||||
if ("") IO.print("empty") // expect: empty
|
||||
@@ -0,0 +1,3 @@
|
||||
// A dangling else binds to the right-most if.
|
||||
if (true) if (false) IO.print("bad") else IO.print("good") // expect: good
|
||||
if (false) if (true) IO.print("bad") else IO.print("bad")
|
||||
@@ -0,0 +1,10 @@
|
||||
// Evaluate the 'else' expression if the condition is false.
|
||||
if (true) IO.print("good") else IO.print("bad") // expect: good
|
||||
if (false) IO.print("bad") else IO.print("good") // expect: good
|
||||
|
||||
// Allow block body.
|
||||
if (false) null else { IO.print("block") } // expect: block
|
||||
|
||||
// Newline after "else".
|
||||
if (false) IO.print("bad") else
|
||||
IO.print("good") // expect: good
|
||||
@@ -0,0 +1,14 @@
|
||||
// Evaluate the 'then' expression if the condition is true.
|
||||
if (true) IO.print("good") // expect: good
|
||||
if (false) IO.print("bad")
|
||||
|
||||
// Allow block body.
|
||||
if (true) { IO.print("block") } // expect: block
|
||||
|
||||
// Assignment in if condition.
|
||||
var a = false
|
||||
if (a = true) IO.print(a) // expect: true
|
||||
|
||||
// Newline after "if".
|
||||
if
|
||||
(true) IO.print("good") // expect: good
|
||||
@@ -0,0 +1,32 @@
|
||||
class Iter {
|
||||
new(value) { _value = value }
|
||||
iterate(iterator) { return _value }
|
||||
iteratorValue(iterator) { return "value" }
|
||||
}
|
||||
|
||||
// False and null are false.
|
||||
for (n in new Iter(false)) {
|
||||
IO.print("bad")
|
||||
break
|
||||
}
|
||||
|
||||
for (n in new Iter(null)) {
|
||||
IO.print("bad")
|
||||
break
|
||||
}
|
||||
|
||||
// Everything else is true.
|
||||
for (n in new Iter(true)) {
|
||||
IO.print("true") // expect: true
|
||||
break
|
||||
}
|
||||
|
||||
for (n in new Iter(0)) {
|
||||
IO.print(0) // expect: 0
|
||||
break
|
||||
}
|
||||
|
||||
for (n in new Iter("")) {
|
||||
IO.print("string") // expect: string
|
||||
break
|
||||
}
|
||||
@@ -18,9 +18,3 @@ IO.print(true) && // expect: true
|
||||
// Swallow a trailing newline.
|
||||
IO.print(true &&
|
||||
true) // expect: true
|
||||
|
||||
// Only false is falsy.
|
||||
IO.print(0 && true) // expect: true
|
||||
IO.print(null && true) // expect: true
|
||||
IO.print("" && true) // expect: true
|
||||
IO.print(false && true) // expect: false
|
||||
@@ -0,0 +1,8 @@
|
||||
// False and null are false.
|
||||
IO.print(false && "bad") // expect: false
|
||||
IO.print(null && "bad") // expect: null
|
||||
|
||||
// Everything else is true.
|
||||
IO.print(true && "ok") // expect: ok
|
||||
IO.print(0 && "ok") // expect: ok
|
||||
IO.print("" && "ok") // expect: ok
|
||||
@@ -18,9 +18,3 @@ IO.print(false) || // expect: false
|
||||
// Swallow a trailing newline.
|
||||
IO.print(true ||
|
||||
true) // expect: true
|
||||
|
||||
// Only false is falsy.
|
||||
IO.print(0 || true) // expect: 0
|
||||
IO.print(null || true) // expect: null
|
||||
IO.print(("" || true) == "") // expect: true
|
||||
IO.print(false || true) // expect: true
|
||||
@@ -0,0 +1,8 @@
|
||||
// False and null are false.
|
||||
IO.print(false || "ok") // expect: ok
|
||||
IO.print(null || "ok") // expect: ok
|
||||
|
||||
// Everything else is true.
|
||||
IO.print(true || "ok") // expect: true
|
||||
IO.print(0 || "ok") // expect: 0
|
||||
IO.print("s" || "ok") // expect: s
|
||||
@@ -0,0 +1,26 @@
|
||||
// False and null are false.
|
||||
while (false) {
|
||||
IO.print("bad")
|
||||
break
|
||||
}
|
||||
|
||||
while (null) {
|
||||
IO.print("bad")
|
||||
break
|
||||
}
|
||||
|
||||
// Everything else is true.
|
||||
while (true) {
|
||||
IO.print("true") // expect: true
|
||||
break
|
||||
}
|
||||
|
||||
while (0) {
|
||||
IO.print(0) // expect: 0
|
||||
break
|
||||
}
|
||||
|
||||
while ("") {
|
||||
IO.print("string") // expect: string
|
||||
break
|
||||
}
|
||||
Reference in New Issue
Block a user