Files
wren/test/logical_operator/or.wren
T
Bob Nystrom a5c4918a75 feat: treat null as falsey in conditional and logical operator branches
Update the VM interpreter to treat null as falsey alongside false in if, while, for, and logical AND/OR operations. Remove the TODO comment and adjust short-circuit logic in OP_JUMP_IF and OP_JUMP_IF_NOT branches. Refactor existing test files into subdirectories (if/, logical_operator/, while/) and add dedicated truthiness tests for each construct. Remove old test/if.wren and update and/or tests to exclude null/0/"" truthiness checks now that null is falsey.
2014-01-21 02:12:55 +00:00

21 lines
644 B
Plaintext

// Note: These tests implicitly depend on ints being truthy.
// Also rely on IO.print() returning its argument.
// Return the first true argument.
IO.print(1 || true) // expect: 1
IO.print(false || 1) // expect: 1
IO.print(false || false || true) // expect: true
// Return the last argument if all are false.
IO.print(false || false) // expect: false
IO.print(false || false || false) // expect: false
// Short-circuit at the first true argument.
IO.print(false) || // expect: false
IO.print(true) || // expect: true
IO.print(true) // should not print
// Swallow a trailing newline.
IO.print(true ||
true) // expect: true