mirror of
https://github.com/CPunch/Cosmo.git
synced 2024-11-22 15:30:06 +00:00
Add optional custom error message to assert
This commit is contained in:
parent
2050359d2f
commit
1200e2d512
@ -24,18 +24,23 @@ int cosmoB_print(CState *state, int nargs, CValue *args) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int cosmoB_assert(CState *state, int nargs, CValue *args) {
|
int cosmoB_assert(CState *state, int nargs, CValue *args) {
|
||||||
if (nargs != 1) {
|
if (nargs < 1 || nargs > 2) {
|
||||||
cosmoV_error(state, "assert() expected 1 argument, got %d!", nargs);
|
cosmoV_error(state, "assert() expected 1 or 2 arguments, got %d!", nargs);
|
||||||
return 0; // nothing pushed onto the stack to return
|
return 0; // nothing pushed onto the stack to return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IS_BOOLEAN(args[0])) {
|
if (!IS_BOOLEAN(args[0]) || (nargs == 2 && !IS_STRING(args[1]))) {
|
||||||
cosmoV_typeError(state, "assert()", "<boolean>", "%s", cosmoV_typeStr(args[0]));
|
cosmoV_typeError(state, "assert()", "<boolean>, <string>", "%s, %s", cosmoV_typeStr(args[0]), cosmoV_typeStr(args[1]));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cosmoV_readBoolean(args[0])) { // expression passed was false, error!
|
if (!cosmoV_readBoolean(args[0])) { // expression passed was false, error!
|
||||||
cosmoV_error(state, "assert() failed!");
|
if (nargs == 2) {
|
||||||
|
cosmoV_error(state, "%s", cosmoV_readCString(args[1]));
|
||||||
|
}
|
||||||
|
else { // optional custom error message
|
||||||
|
cosmoV_error(state, "%s", "assert() failed!");
|
||||||
|
}
|
||||||
} // else do nothing :)
|
} // else do nothing :)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user