aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.c
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2017-05-09 16:21:31 +0100
committerGinger Bill <bill@gingerbill.org>2017-05-09 16:21:31 +0100
commitc6d531df9597253ee95593c56e61039fe4e40ba2 (patch)
tree8469ee00657577f4909891e8773231351f54b3cd /src/check_expr.c
parent8677c81da7ca8af37c49a203a18fd7beab74f023 (diff)
Add %% operator (divisor modulo)
Diffstat (limited to 'src/check_expr.c')
-rw-r--r--src/check_expr.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/check_expr.c b/src/check_expr.c
index 089f706e4..4dcb04c07 100644
--- a/src/check_expr.c
+++ b/src/check_expr.c
@@ -1864,8 +1864,10 @@ bool check_binary_op(Checker *c, Operand *o, Token op) {
break;
case Token_Mod:
+ case Token_ModMod:
case Token_AndNot:
case Token_ModEq:
+ case Token_ModModEq:
case Token_AndNotEq:
if (!is_type_integer(type)) {
error(op, "Operator `%.*s` is only allowed with integers", LIT(op.string));
@@ -2669,8 +2671,10 @@ void check_binary_expr(Checker *c, Operand *x, AstNode *node) {
switch (op.kind) {
case Token_Quo:
case Token_Mod:
+ case Token_ModMod:
case Token_QuoEq:
case Token_ModEq:
+ case Token_ModModEq:
if ((x->mode == Addressing_Constant || is_type_integer(x->type)) &&
y->mode == Addressing_Constant) {
bool fail = false;