From afe2709757e57d06c0835cab650522049d40f073 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Sun, 27 Jul 2025 18:19:54 -0400 Subject: [PATCH] xo-expression: less-than-or-equal --- src/reader/exprstate.cpp | 2 ++ src/reader/progress_xs.cpp | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/reader/exprstate.cpp b/src/reader/exprstate.cpp index 00fb7b78..f7d25dcc 100644 --- a/src/reader/exprstate.cpp +++ b/src/reader/exprstate.cpp @@ -418,6 +418,8 @@ namespace xo { case tokentype::tk_leftangle: case tokentype::tk_rightangle: + case tokentype::tk_lessequal: + case tokentype::tk_greatequal: this->on_operator_token(tk, p_psm); return; diff --git a/src/reader/progress_xs.cpp b/src/reader/progress_xs.cpp index b3c7490a..8e90b8e5 100644 --- a/src/reader/progress_xs.cpp +++ b/src/reader/progress_xs.cpp @@ -218,6 +218,15 @@ namespace xo { break; case optype::op_great_equal: + // TODO: upconvert integer->double + if (lhs_->valuetype()->is_i64() && rhs_->valuetype()->is_i64()) { + return Apply::make_cmp_ge_i64(lhs_, rhs_); + } else { + this->apply_type_error(c_self_name, + op_type_, lhs_, rhs_, p_psm); + return nullptr; + } + assert(false); case optype::op_add: @@ -563,8 +572,12 @@ namespace xo { return optype::op_not_equal; case tokentype::tk_leftangle: return optype::op_less; + case tokentype::tk_lessequal: + return optype::op_less_equal; case tokentype::tk_rightangle: return optype::op_great; + case tokentype::tk_greatequal: + return optype::op_great_equal; default: assert(false); return optype::invalid;