Skip to content

Commit 70dd326

Browse files
committed
Add compare VInt64, VBool
1 parent 3913067 commit 70dd326

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

hld/Eval.hx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -494,15 +494,28 @@ class Eval {
494494
}
495495
}
496496

497+
function getInt64( v : Value ) : haxe.Int64 {
498+
return switch( v.v ) {
499+
case VInt64(i): i;
500+
case VInt(i): i;
501+
default: throw valueStr(v)+" should be a number";
502+
}
503+
}
504+
497505
function compare(a:Value,b:Value) : Int {
498506
switch [a.v, b.v] {
507+
case [VInt(_) | VFloat(_), VInt(_) | VFloat(_)]:
508+
var d = getNum(a) - getNum(b);
509+
return d == 0 ? 0 : d > 0 ? 1 : -1;
510+
case [VInt(_) | VInt64(_), VInt(_) | VInt64(_)]:
511+
var d = getInt64(a) - getInt64(b);
512+
return d == 0 ? 0 : d > 0 ? 1 : -1;
513+
case [VBool(ab), VBool((bb))]:
514+
return ab == bb ? 0 : ab ? 1 : -1;
499515
case [VPointer(aptr), VPointer(bptr)]:
500516
return aptr.sub(bptr);
501517
case [VString(as,_), VString(bs,_)]:
502518
return Reflect.compare(as, bs);
503-
case [VInt(_) | VFloat(_), VInt(_) | VFloat(_)]:
504-
var d = getNum(a) - getNum(b);
505-
return d == 0 ? 0 : d > 0 ? 1 : -1;
506519
default:
507520
throw "Don't know how to compare " + a.v.getName() + " and " + b.v.getName();
508521
}

0 commit comments

Comments
 (0)