diff --git a/evaluate_expression.go b/evaluate_expression.go index d2cc9f7..9a2f6ff 100644 --- a/evaluate_expression.go +++ b/evaluate_expression.go @@ -378,6 +378,7 @@ var lessThanTable [4](map[_lessThanResult]bool) = [4](map[_lessThanResult]bool){ func (self *_runtime) calculateComparison(comparator string, left Value, right Value) bool { + // TODO This might be redundant now (with regards to evaluateComparison) x := self.GetValue(left) y := self.GetValue(right) @@ -463,8 +464,8 @@ ERROR: func (self *_runtime) evaluateComparison(node *_comparisonNode) Value { - left := self.evaluate(node.Left) - right := self.evaluate(node.Right) + left := self.GetValue(self.evaluate(node.Left)) + right := self.GetValue(self.evaluate(node.Right)) return toValue(self.calculateComparison(node.Comparator, left, right)) } diff --git a/runtime_test.go b/runtime_test.go index 6615b6f..8ddc140 100644 --- a/runtime_test.go +++ b/runtime_test.go @@ -1156,6 +1156,16 @@ func Test_toString(t *testing.T) { test := runTest() test(` - [undefined+""] + [undefined+""] `, "undefined") } + +func TestEvaluationOrder(t *testing.T) { + Terst(t) + + test := runTest() + test(` + var abc = 0; + abc < (abc = 1) === true; + `, "true") +}