From b83c3f265b72a5971e55b76ddf81cf33c68a2b57 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 10 Apr 2018 20:18:16 +0100 Subject: Fix #209 #assert bug --- src/parser.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src/parser.cpp') diff --git a/src/parser.cpp b/src/parser.cpp index f94a66cad..b050433e7 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -3748,7 +3748,7 @@ AstNode *parse_stmt(AstFile *f) { return s; } else if (tag == "assert") { AstNode *t = ast_basic_directive(f, hash_token, tag); - return parse_call_expr(f, t); + return ast_expr_stmt(f, parse_call_expr(f, t)); } if (tag == "include") { @@ -4077,11 +4077,14 @@ void parse_setup_file_decls(Parser *p, AstFile *f, String base_dir, Arraykind != AstNode_WhenStmt) { // NOTE(bill): Sanity check - if (node->kind == AstNode_CallExpr && - node->CallExpr.proc->kind == AstNode_BasicDirective && - node->CallExpr.proc->BasicDirective.name == "assert") { - // NOTE(bill): Okay! - continue; + if (node->kind == AstNode_ExprStmt) { + AstNode *expr = node->ExprStmt.expr; + if (expr->kind == AstNode_CallExpr && + expr->CallExpr.proc->kind == AstNode_BasicDirective && + expr->CallExpr.proc->BasicDirective.name == "assert") { + // NOTE(bill): Okay! + continue; + } } syntax_error(node, "Only declarations are allowed at file scope, got %.*s", LIT(ast_node_strings[node->kind])); -- cgit v1.2.3