aboutsummaryrefslogtreecommitdiff
path: root/src/checker/statements.cpp
diff options
context:
space:
mode:
authorgingerBill <ginger.bill.22@gmail.com>2016-08-02 20:53:18 +0100
committergingerBill <ginger.bill.22@gmail.com>2016-08-02 20:53:18 +0100
commit41e7cadb8df4b9833bc3dd827cac32fd3b01ddbd (patch)
tree81272c3361a9f19e97caa8a760553b3e700b31bc /src/checker/statements.cpp
parentbf3283c889ce387fd252b48e12e090fab7446048 (diff)
ret, unreachable, param, deref
Diffstat (limited to 'src/checker/statements.cpp')
-rw-r--r--src/checker/statements.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/checker/statements.cpp b/src/checker/statements.cpp
index bf6f0d87b..8910e7d3d 100644
--- a/src/checker/statements.cpp
+++ b/src/checker/statements.cpp
@@ -724,7 +724,6 @@ void check_stmt(Checker *c, AstNode *node, u32 flags) {
case_end;
case_ast_node(fs, ForStmt, node);
- flags |= Statement_BreakAllowed | Statement_ContinueAllowed;
check_open_scope(c, node);
defer (check_close_scope(c));
@@ -739,9 +738,9 @@ void check_stmt(Checker *c, AstNode *node, u32 flags) {
"Non-boolean condition in `for` statement");
}
}
- if (fs->end != NULL)
- check_stmt(c, fs->end, 0);
- check_stmt(c, fs->body, flags);
+ if (fs->post != NULL)
+ check_stmt(c, fs->post, 0);
+ check_stmt(c, fs->body, flags | Statement_BreakAllowed | Statement_ContinueAllowed);
case_end;
case_ast_node(ds, DeferStmt, node);
@@ -752,6 +751,7 @@ void check_stmt(Checker *c, AstNode *node, u32 flags) {
c->in_defer = true;
check_stmt(c, ds->stmt, 0);
c->in_defer = out_in_defer;
+ check_add_deferred_stmt(c, ds->stmt);
}
case_end;