Skip to content

Commit 06e2e84

Browse files
committed
Implemenent and test a bunch of integer comparision ops.
1 parent bc8e865 commit 06e2e84

File tree

3 files changed

+36
-14
lines changed

3 files changed

+36
-14
lines changed

TODO

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ We need to write tests (if they don't already exist in t/nqp)
1414
- getcodename
1515
- getlexdyn
1616
- iscclass - EASY
17-
- isge_i - EASY
18-
- isgt_i - EASY
19-
- islt_i - EASY
20-
- isne_i - EASY
2117
- istype
2218
- list_i
2319
- list_s

src/vm/js/QAST/Compiler.nqp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -301,14 +301,16 @@ class QAST::OperationsJS {
301301

302302
add_infix_op('concat', $T_STR, '+', $T_STR, $T_STR);
303303

304-
add_infix_op('isle_n', $T_NUM, '<=', $T_NUM, $T_BOOL);
305-
add_infix_op('islt_n', $T_NUM, '<', $T_NUM, $T_BOOL);
306-
add_infix_op('isgt_n', $T_NUM, '>', $T_NUM, $T_BOOL);
307-
add_infix_op('isge_n', $T_NUM, '>=', $T_NUM, $T_BOOL);
308-
add_infix_op('iseq_n', $T_NUM, '==', $T_NUM, $T_BOOL);
309-
add_infix_op('isne_n', $T_NUM, '!=', $T_NUM, $T_BOOL);
310-
311-
add_infix_op('iseq_i', $T_INT, '==', $T_INT, $T_BOOL);
304+
for ['_i', $T_INT, '_n', $T_NUM] -> $suffix, $type {
305+
add_infix_op('isle' ~ $suffix, $type, '<=', $type, $T_BOOL);
306+
add_infix_op('islt' ~ $suffix, $type, '<', $type, $T_BOOL);
307+
add_infix_op('isgt' ~ $suffix, $type, '>', $type, $T_BOOL);
308+
add_infix_op('isge' ~ $suffix, $type, '>=', $type, $T_BOOL);
309+
add_infix_op('iseq' ~ $suffix, $type, '==', $type, $T_BOOL);
310+
add_infix_op('isne' ~ $suffix, $type, '!=', $type, $T_BOOL);
311+
}
312+
313+
312314
add_infix_op('iseq_s', $T_STR, '==', $T_STR, $T_BOOL);
313315
add_infix_op('isne_s', $T_STR, '!=', $T_STR, $T_BOOL);
314316

t/nqp/59-nqpop.t

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Test nqp::op pseudo-functions.
44

5-
plan(131);
5+
plan(148);
66

77
ok( nqp::add_i(5,2) == 7, 'nqp::add_i');
88
ok( nqp::sub_i(5,2) == 3, 'nqp::sub_i');
@@ -49,7 +49,6 @@ ok( nqp::elems(@items) == 11 && @items[0] eq '' && @items[10] eq '', 'nqp::split
4949
@items := nqp::split('', 'a little lamb');
5050
ok( nqp::join('|', @items) eq 'a| |l|i|t|t|l|e| |l|a|m|b', 'nqp::split("", ...)');
5151

52-
ok( nqp::iseq_i(2, 2) == 1, 'nqp::iseq_i');
5352

5453
ok( nqp::cmp_i(2, 0) == 1, 'nqp::cmp_i');
5554
ok( nqp::cmp_i(2, 2) == 0, 'nqp::cmp_i');
@@ -201,3 +200,28 @@ ok(nqp::eqat("foobar","foobarbaz", 0) == 0, "eqat with needle argument longer th
201200
ok(nqp::join(",", $list) eq '1,2,3', 'nqp::setelems reduces list length properly');
202201
ok(nqp::join(",", $ret) eq '1,2,3', 'nqp::setelems return value');
203202
}
203+
204+
ok(nqp::isge_i(10, 10) == 1, "isge_i =");
205+
ok(nqp::isge_i(9, 10) == 0, "isge_i <");
206+
ok(nqp::isge_i(11, 10) == 1, "isge_i >");
207+
208+
ok(nqp::isgt_i(10, 10) == 0, "isge_i =");
209+
ok(nqp::isgt_i(9, 10) == 0, "isge_i <");
210+
ok(nqp::isgt_i(11, 10) == 1, "isge_i >");
211+
212+
ok(nqp::islt_i(10, 10) == 0, "islt_i =");
213+
ok(nqp::islt_i(9, 10) == 1, "islt_i <");
214+
ok(nqp::islt_i(11, 10) == 0, "islt_i >");
215+
216+
ok(nqp::isle_i(10, 10) == 1, "isle_i =");
217+
ok(nqp::isle_i(9, 10) == 1, "isle_i <");
218+
ok(nqp::isle_i(11, 10) == 0, "isle_i >");
219+
220+
ok(nqp::isne_i(10, 10) == 0, "isne_i =");
221+
ok(nqp::isne_i(9, 10) == 1, "isne_i <");
222+
ok(nqp::isne_i(11, 10) == 1, "isne_i >");
223+
224+
ok(nqp::iseq_i(10, 10) == 1, "iseq_i =");
225+
ok(nqp::iseq_i(9, 10) == 0, "iseq_i <");
226+
ok(nqp::iseq_i(11, 10) == 0, "iseq_i >");
227+

0 commit comments

Comments
 (0)