diff options
author | Benoit Giannangeli <benoit.giannangeli@boursorama.fr> | 2017-02-22 13:54:30 +0100 |
---|---|---|
committer | Benoit Giannangeli <benoit.giannangeli@boursorama.fr> | 2017-02-22 13:54:30 +0100 |
commit | b31cc0420e77d34465e4cf7d7ab75df7755b44d6 (patch) | |
tree | 6d908904fc1679549293bbe314550ec7dff82a2a /src/lbaselib.js | |
parent | 290ec54e13d1dff301465cbfa2fd7b4e1e52962f (diff) | |
download | fengari-b31cc0420e77d34465e4cf7d7ab75df7755b44d6.tar.gz fengari-b31cc0420e77d34465e4cf7d7ab75df7755b44d6.tar.bz2 fengari-b31cc0420e77d34465e4cf7d7ab75df7755b44d6.zip |
assert
Diffstat (limited to 'src/lbaselib.js')
-rw-r--r-- | src/lbaselib.js | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lbaselib.js b/src/lbaselib.js index 9cc4fb1..fa0349b 100644 --- a/src/lbaselib.js +++ b/src/lbaselib.js @@ -165,6 +165,18 @@ const luaB_error = function(L) { return lapi.lua_error(L); }; +const luaB_assert = function(L) { + if (lapi.lua_toboolean(L, 1)) /* condition is true? */ + return lapi.lua_gettop(L); /* return all arguments */ + else { + lauxlib.luaL_checkany(L, 1); /* there must be a condition */ + lapi.lua_remove(L, 1); /* remove it */ + lapi.lua_pushliteral(L, "assertion failed!"); /* default message */ + lapi.lua_settop(L, 1); /* leave only message (default if no other one) */ + return luaB_error(L); /* call 'error' */ + } +}; + const luaB_select = function(L) { let n = lapi.lua_gettop(L); if (lapi.lua_type(L, 1) === CT.LUA_TSTRING && lapi.lua_tostring(L, 1) === "#") { @@ -220,6 +232,7 @@ const luaB_xpcall = function(L) { const base_funcs = { "collectgarbage": function () {}, + "assert": luaB_assert, "print": luaB_print, "tostring": luaB_tostring, "tonumber": luaB_tonumber, |