summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-03-30 08:43:45 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-03-30 08:43:45 -0700
commite819894211d50c40ac7c7519528aa6f62940c6d2 (patch)
tree52fc4f0f1f55f87d0b5f99421331391885d6c0b3
parent0f8c0340958faf0c7819936107e905931f4b4725 (diff)
downloadtxr-e819894211d50c40ac7c7519528aa6f62940c6d2.tar.gz
txr-e819894211d50c40ac7c7519528aa6f62940c6d2.tar.bz2
txr-e819894211d50c40ac7c7519528aa6f62940c6d2.zip
u-d-arithmetic: forgotten dispatch cases.
* arith.c (plus, minus, mul, mod, floordiv): Dispatch reverse operaton for PTR/COBJ combination.
-rw-r--r--arith.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/arith.c b/arith.c
index dbbc041c..aa00a2da 100644
--- a/arith.c
+++ b/arith.c
@@ -650,6 +650,10 @@ tail:
case TYPE_PAIR(COBJ, RNG):
case TYPE_PAIR(COBJ, COBJ):
return do_binary_method(self, self, anum, bnum);
+ case TYPE_PAIR(BGNUM, COBJ):
+ case TYPE_PAIR(FLNUM, COBJ):
+ case TYPE_PAIR(RNG, COBJ):
+ return do_binary_method(self, self, bnum, anum);
default:
break;
}
@@ -818,6 +822,10 @@ tail:
case TYPE_PAIR(COBJ, RNG):
case TYPE_PAIR(COBJ, COBJ):
return do_binary_method(self, self, anum, bnum);
+ case TYPE_PAIR(BGNUM, COBJ):
+ case TYPE_PAIR(FLNUM, COBJ):
+ case TYPE_PAIR(RNG, COBJ):
+ return do_binary_method(self, inv_minus_s, bnum, anum);
default:
break;
}
@@ -1065,6 +1073,10 @@ tail:
case TYPE_PAIR(COBJ, RNG):
case TYPE_PAIR(COBJ, COBJ):
return do_binary_method(self, self, anum, bnum);
+ case TYPE_PAIR(BGNUM, COBJ):
+ case TYPE_PAIR(FLNUM, COBJ):
+ case TYPE_PAIR(RNG, COBJ):
+ return do_binary_method(self, self, bnum, anum);
default:
break;
}
@@ -1380,6 +1392,9 @@ tail:
case TYPE_PAIR(COBJ, FLNUM):
case TYPE_PAIR(COBJ, COBJ):
return do_binary_method(self, self, anum, bnum);
+ case TYPE_PAIR(BGNUM, COBJ):
+ case TYPE_PAIR(FLNUM, COBJ):
+ return do_binary_method(self, r_mod_s, bnum, anum);
}
}
invalid_ops(self, anum, bnum);
@@ -1544,8 +1559,13 @@ tail:
return rcons(floordiv(from(anum), bnum), floordiv(to(anum), bnum));
case TYPE_PAIR(COBJ, BGNUM):
case TYPE_PAIR(COBJ, FLNUM):
+ case TYPE_PAIR(COBJ, RNG):
case TYPE_PAIR(COBJ, COBJ):
return do_binary_method(self, self, anum, bnum);
+ case TYPE_PAIR(BGNUM, COBJ):
+ case TYPE_PAIR(FLNUM, COBJ):
+ case TYPE_PAIR(RNG, COBJ):
+ return do_binary_method(self, r_floor_s, bnum, anum);
}
}
invalid_ops(self, anum, bnum);