aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-02-05 14:07:17 +0000
committergingerBill <bill@gingerbill.org>2022-02-05 14:07:17 +0000
commitdd84b61cc83c6bb3a179375f0a37adf6782b3be8 (patch)
treec5192025fd9f6b7bd5fc19b75720952e8c50b032 /src/check_expr.cpp
parentb8c4bf2afb39ca2980b2827aa1775b35728bb195 (diff)
Correct `add_to_seen_map` logic
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 40777df2a..b2ce6c897 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -7018,7 +7018,7 @@ void add_to_seen_map(CheckerContext *ctx, SeenMap *seen, TokenKind upper_op, Ope
Type *bt = base_type(x.type);
GB_ASSERT(bt->kind == Type_Enum);
for (i64 vi = v0; vi <= v1; vi++) {
- if (upper_op != Token_GtEq && vi == v1) {
+ if (upper_op != Token_LtEq && vi == v1) {
break;
}
@@ -7040,7 +7040,7 @@ void add_to_seen_map(CheckerContext *ctx, SeenMap *seen, TokenKind upper_op, Ope
}
} else {
add_constant_switch_case(ctx, seen, lhs);
- if (upper_op == Token_GtEq) {
+ if (upper_op == Token_LtEq) {
add_constant_switch_case(ctx, seen, rhs);
}
}
@@ -8036,7 +8036,11 @@ ExprKind check_expr_base_internal(CheckerContext *c, Operand *o, Ast *node, Type
is_constant = is_constant && operand.mode == Addressing_Constant;
- add_to_seen_map(c, &seen, op.kind, x, x, y);
+ TokenKind upper_op = Token_LtEq;
+ if (op.kind == Token_RangeHalf) {
+ upper_op = Token_Lt;
+ }
+ add_to_seen_map(c, &seen, upper_op, x, x, y);
} else {
Operand op_index = {};
check_expr_with_type_hint(c, &op_index, fv->field, index_type);