diff options
Diffstat (limited to 'src/checker/expr.cpp')
| -rw-r--r-- | src/checker/expr.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/checker/expr.cpp b/src/checker/expr.cpp index a15322ceb..86c864e0e 100644 --- a/src/checker/expr.cpp +++ b/src/checker/expr.cpp @@ -1926,19 +1926,18 @@ b32 check_index_value(Checker *c, AstNode *index_value, i64 max_count, i64 *valu } if (operand.mode == Addressing_Constant) { - if (max_count >= 0) { // NOTE(bill): Do array bound checking - i64 i = exact_value_to_integer(operand.value).value_integer; - if (i < 0) { - gbString expr_str = expr_to_string(operand.expr); - error(&c->error_collector, ast_node_token(operand.expr), - "Index `%s` cannot be a negative value", expr_str); - gb_string_free(expr_str); - if (value) *value = 0; - return false; - } + i64 i = exact_value_to_integer(operand.value).value_integer; + if (i < 0) { + gbString expr_str = expr_to_string(operand.expr); + error(&c->error_collector, ast_node_token(operand.expr), + "Index `%s` cannot be a negative value", expr_str); + gb_string_free(expr_str); + if (value) *value = 0; + return false; + } + if (max_count >= 0) { // NOTE(bill): Do array bound checking if (value) *value = i; - if (i >= max_count) { gbString expr_str = expr_to_string(operand.expr); error(&c->error_collector, ast_node_token(operand.expr), |