From c3681e9a1bb4d41b768d8b44816abd5c5c3c12bb Mon Sep 17 00:00:00 2001 From: Buraq Date: Sat, 5 Mar 2016 14:28:13 +0100 Subject: [PATCH] implement comparison of boolean values --- lib/interpreter.dart | 3 +++ test/interpreter_test.dart | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/lib/interpreter.dart b/lib/interpreter.dart index 1f32598..0af0251 100644 --- a/lib/interpreter.dart +++ b/lib/interpreter.dart @@ -539,6 +539,9 @@ class InterpreterImpl extends InterpreterInterface { case Primitive.EQUALS: final arg0 = args[0]; final arg1 = args[1]; + if (arg0.isPrim && arg1.isPrim) { // boolean values + return new ListNode.cons(boolToNode(arg0 == arg1), nodes); + } if (arg0.isNum && arg1.isNum) { return evalBinCmp(p, ensureNum(arg0), ensureNum(arg1), nodes, primEqualsNum); } diff --git a/test/interpreter_test.dart b/test/interpreter_test.dart index 3855dc2..2f310f7 100644 --- a/test/interpreter_test.dart +++ b/test/interpreter_test.dart @@ -221,6 +221,14 @@ class InterpreterTest { new NumberNode.float(19.0) ])), equals(Primitive.TRUE)); + expect( + interpreter.evalSequence( + ListNode.makeList([ + Primitive.EQUALS, + Primitive.FALSE, + Primitive.FALSE + ])), + equals(Primitive.TRUE)); }); test("eval first butfirst", () { makeInterpreter();