This commit is contained in:
gingerBill
2022-01-03 13:48:12 +00:00
parent 12f459b5fb
commit defc1672c3
-32
View File
@@ -58,30 +58,6 @@ bool contains_deferred_call(Ast *node) {
return false;
}
Ast *last_stmt_blocking_in_list(Slice<Ast *> const &stmts) {
for_array(i, stmts) {
Ast *n = stmts[i];
switch (n->kind) {
case Ast_ReturnStmt:
return n;
case Ast_BranchStmt:
return n;
case Ast_ExprStmt:
if (is_diverging_stmt(n)) {
return n;
}
break;
case Ast_BlockStmt:
n = last_stmt_blocking_in_list(n->BlockStmt.stmts);
if (n != nullptr) {
return n;
}
break;
}
}
return nullptr;
}
void check_stmt_list(CheckerContext *ctx, Slice<Ast *> const &stmts, u32 flags) {
if (stmts.count == 0) {
return;
@@ -126,7 +102,6 @@ void check_stmt_list(CheckerContext *ctx, Slice<Ast *> const &stmts, u32 flags)
check_stmt(ctx, n, new_flags);
if (i+1 < max_non_constant_declaration) {
never_executed_error:;
switch (n->kind) {
case Ast_ReturnStmt:
error(n, "Statements after this 'return' are never executed");
@@ -141,13 +116,6 @@ void check_stmt_list(CheckerContext *ctx, Slice<Ast *> const &stmts, u32 flags)
error(n, "Statements after a diverging procedure call are never executed");
}
break;
case Ast_BlockStmt:
n = last_stmt_blocking_in_list(n->BlockStmt.stmts);
if (n != nullptr) {
goto never_executed_error;
}
break;
}
} else if (i+1 == max_non_constant_declaration) {
if (is_diverging_stmt(n)) {