From 8123ff83a3ff7836a5abc7f28c63646f41a038e5 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 13 Mar 2021 15:01:23 +0000 Subject: Fix `is_diverging_stmt` for invalid statements --- src/check_stmt.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/check_stmt.cpp') diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index a9c88d930..c539da99b 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -1,4 +1,4 @@ -bool is_divigering_stmt(Ast *stmt) { +bool is_diverging_stmt(Ast *stmt) { if (stmt->kind != Ast_ExprStmt) { return false; } @@ -12,7 +12,7 @@ bool is_divigering_stmt(Ast *stmt) { } Type *t = type_of_expr(expr->CallExpr.proc); t = base_type(t); - return t->kind == Type_Proc && t->Proc.diverging; + return t != nullptr && t->kind == Type_Proc && t->Proc.diverging; } void check_stmt_list(CheckerContext *ctx, Slice const &stmts, u32 flags) { @@ -69,7 +69,7 @@ void check_stmt_list(CheckerContext *ctx, Slice const &stmts, u32 flags) break; case Ast_ExprStmt: - if (is_divigering_stmt(n)) { + if (is_diverging_stmt(n)) { error(n, "Statements after a diverging procedure call are never executed"); } break; @@ -86,7 +86,7 @@ bool check_is_terminating_list(Slice const &stmts, String const &label) { // Okay } else if (stmt->kind == Ast_ValueDecl && !stmt->ValueDecl.is_mutable) { // Okay - } else if (is_divigering_stmt(stmt)) { + } else if (is_diverging_stmt(stmt)) { return true; } else { return check_is_terminating(stmt, label); -- cgit v1.2.3