Add static and runtime assert

This commit is contained in:
Krzosa Karol
2022-06-15 10:30:33 +02:00
parent e984049429
commit aab89ffada
6 changed files with 76 additions and 10 deletions

View File

@@ -365,6 +365,18 @@ function void
gen_ast(Ast *ast){
switch(ast->kind){
CASE(RUNTIME_ASSERT, Builtin){
if(node->assert_message.len == 0) gen("assert");
else gen("assert_msg");
gen("(");
gen_expr(node->expr);
if(node->assert_message.len){
gen(", \"%s\"", node->assert_message.str);
}
gen(");");
BREAK();
}
CASE(RETURN, Return){
gen("return");
if(node->expr){
@@ -504,6 +516,7 @@ gen_ast(Ast *ast){
BREAK();
}
case AST_CONSTANT_ASSERT:
case AST_MODULE_NAMESPACE:
CASE(FILE_NAMESPACE, File_Namespace){unused(node); BREAK();}