Added silent cmd args

Fixed #145
This commit is contained in:
2024-11-10 10:27:50 +11:00
parent 1608a13b43
commit 436bd3ffca
4 changed files with 102 additions and 29 deletions

View File

@@ -659,12 +659,18 @@ static void makeAssertStmt(Toy_Bucket** bucketHandle, Toy_Parser* parser, Toy_As
Toy_Ast* ast = NULL; //assert's emit function is a bit different
makeExpr(bucketHandle, parser, &ast);
//NOTE: if it's a compound, then it's got a second arg
if (ast->type == TOY_AST_COMPOUND) {
Toy_private_emitAstAssert(bucketHandle, rootHandle, ast->compound.left, ast->compound.right);
//if assert is disabled, don't emit the assert
if (parser->removeAssert) {
Toy_private_emitAstPass(bucketHandle, rootHandle);
}
else {
Toy_private_emitAstAssert(bucketHandle, rootHandle, ast, NULL);
//NOTE: if it's a compound, then it's got a second arg
if (ast->type == TOY_AST_COMPOUND) {
Toy_private_emitAstAssert(bucketHandle, rootHandle, ast->compound.left, ast->compound.right);
}
else {
Toy_private_emitAstAssert(bucketHandle, rootHandle, ast, NULL);
}
}
consume(parser, TOY_TOKEN_OPERATOR_SEMICOLON, "Expected ';' at the end of assert statement");
@@ -836,4 +842,10 @@ void Toy_resetParser(Toy_Parser* parser) {
parser->error = false;
parser->panic = false;
parser->removeAssert = false;
}
void Toy_configureParser(Toy_Parser* parser, bool removeAssert) {
parser->removeAssert = removeAssert;
}