aboutsummaryrefslogtreecommitdiff
path: root/src/check_stmt.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2019-12-15 11:41:21 +0000
committergingerBill <bill@gingerbill.org>2019-12-15 11:41:21 +0000
commit4ba579bc25ab2bbde370231d090588c237552c76 (patch)
treef2fb2615250d719446848d98f0c0f5b55583bf28 /src/check_stmt.cpp
parent58d4d424c6db749c10d723844ec5a847243bee39 (diff)
Also allow #no_bounds_check on an expression #499
Diffstat (limited to 'src/check_stmt.cpp')
-rw-r--r--src/check_stmt.cpp25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp
index a2c158638..7d5648018 100644
--- a/src/check_stmt.cpp
+++ b/src/check_stmt.cpp
@@ -335,27 +335,26 @@ Type *check_assignment_variable(CheckerContext *ctx, Operand *lhs, Operand *rhs)
void check_stmt_internal(CheckerContext *ctx, Ast *node, u32 flags);
void check_stmt(CheckerContext *ctx, Ast *node, u32 flags) {
- u32 prev_stmt_state_flags = ctx->stmt_state_flags;
+ u32 prev_state_flags = ctx->state_flags;
- if (node->stmt_state_flags != 0) {
- u32 in = node->stmt_state_flags;
- u32 out = ctx->stmt_state_flags;
+ if (node->state_flags != 0) {
+ u32 in = node->state_flags;
+ u32 out = ctx->state_flags;
- if (in & StmtStateFlag_no_bounds_check) {
- out |= StmtStateFlag_no_bounds_check;
- out &= ~StmtStateFlag_bounds_check;
- } else {
- // if (in & StmtStateFlag_bounds_check) {
- out |= StmtStateFlag_bounds_check;
- out &= ~StmtStateFlag_no_bounds_check;
+ if (in & StateFlag_no_bounds_check) {
+ out |= StateFlag_no_bounds_check;
+ out &= ~StateFlag_bounds_check;
+ } else if (in & StateFlag_bounds_check) {
+ out |= StateFlag_bounds_check;
+ out &= ~StateFlag_no_bounds_check;
}
- ctx->stmt_state_flags = out;
+ ctx->state_flags = out;
}
check_stmt_internal(ctx, node, flags);
- ctx->stmt_state_flags = prev_stmt_state_flags;
+ ctx->state_flags = prev_state_flags;
}