aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-05-16 12:34:35 +0100
committergingerBill <bill@gingerbill.org>2021-05-16 12:34:35 +0100
commitce08e832f7dcdeeae37cf0e432648efa2f27f2a7 (patch)
tree5fce8a8f71efe50d85831bd0c27cb344c2aee4ea /src/check_expr.cpp
parent24c89b3eeed9d36fd6adfdc2f4a412b39fc59c6b (diff)
Allow `..=` alongside `..` as a "full range" operator; Update `core:odin/parser` etc
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index fb3a51415..61cfd7d6e 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -5940,8 +5940,9 @@ bool check_range(CheckerContext *c, Ast *node, Operand *x, Operand *y, ExactValu
TokenKind op = Token_Lt;
switch (ie->op.kind) {
- case Token_Ellipsis: op = Token_LtEq; break;
- case Token_RangeHalf: op = Token_Lt; break;
+ case Token_Ellipsis: op = Token_LtEq; break; // ..
+ case Token_RangeFull: op = Token_LtEq; break; // ..=
+ case Token_RangeHalf: op = Token_Lt; break; // ..<
default: error(ie->op, "Invalid range operator"); break;
}
bool ok = compare_exact_values(op, a, b);
@@ -5952,7 +5953,7 @@ bool check_range(CheckerContext *c, Ast *node, Operand *x, Operand *y, ExactValu
}
ExactValue inline_for_depth = exact_value_sub(b, a);
- if (ie->op.kind == Token_Ellipsis) {
+ if (ie->op.kind != Token_RangeHalf) {
inline_for_depth = exact_value_increment_one(inline_for_depth);
}