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.
This commit is contained in:
Bob Nystrom
2014-01-21 02:12:55 +00:00
parent a696c060fc
commit a5c4918a75
13 changed files with 118 additions and 58 deletions
+8
View File
@@ -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