Implement __bool__, add if builtin, vtable imporvements

* `if` builtin is the big one here - branching! Yay!
* The `if` builtin requires __bool__ to be implemented for things. This
  is added for all builtin objects.
* Vtables have slightly better ergonomics.

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2022-02-04 17:29:41 -08:00
parent 5ec955d544
commit cb9e09064a
9 changed files with 168 additions and 68 deletions

View File

@@ -1,7 +1,7 @@
0 [ "fail - 0 is not truthy" println! ] [ "OK" println! ] if!
1 [ "OK" println! ] [ "fail - 1 is truthy" println! ] if!
1.1 [ "OK" println! ] [ "fail - 1.1 is truthy" println! ] if!
0.1 [ "OK" println! ] [ "fail - 0.1 is truthy" println! ] if!
-0.1 [ "OK" println! ] [ "fail - -0.1 is truthy" println! ] if!
-0.0 [ "fail - -0.0 is not truthy" println! ] [ "OK" println! ] if!
0.0 [ "fail - 0.0 is not truthy" println! ] [ "OK" println! ] if!
[ "fail - 0 is not truthy" println! ] [ "OK" println! ] 0 if!
[ "OK" println! ] [ "fail - 1 is truthy" println! ] 1 if!
[ "OK" println! ] [ "fail - 1.1 is truthy" println! ] 1.1 if!
[ "OK" println! ] [ "fail - 0.1 is truthy" println! ] 0.1 if!
[ "OK" println! ] [ "fail - -0.1 is truthy" println! ] -0.1 if!
[ "fail - -0.0 is not truthy" println! ] [ "OK" println! ] -0.0 if!
[ "fail - 0.0 is not truthy" println! ] [ "OK" println! ] 0.0 if!