From 7c0a4a68ad6b6c780eb41249c6627b8dd7b42524 Mon Sep 17 00:00:00 2001 From: Dan Fabulich Date: Tue, 7 Nov 2017 07:44:02 -0800 Subject: [PATCH] Better error message when value missing after operator --- tests/scenetest.js | 7 +++++++ web/scene.js | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/tests/scenetest.js b/tests/scenetest.js index 758e7d54..85656584 100644 --- a/tests/scenetest.js +++ b/tests/scenetest.js @@ -1141,6 +1141,13 @@ test("errorMissingOperator", function() { doh.is([{"value":"3","name":"NUMBER","pos":1},{"value":"3","name":"NUMBER","pos":3}], stack, "stack"); doh.assertError(Error, scene, "evaluateExpr", stack, "Invalid expression"); }) +test("errorMissingValueAfterOperator", function() { + var scene = new Scene(); + var stack = scene.tokenizeExpr("3 ="); + //print(toJson(stack)) + doh.is([{"name":"NUMBER","value":"3","pos":1},{"name":"EQUALITY","value":"=","pos":3}], stack, "stack"); + doh.assertError(Error, scene, "evaluateExpr", stack, "Invalid expression"); +}) test("errorEmptyStack", function() { var scene = new Scene(); doh.assertError(Error, scene, "evaluateExpr", [], "Invalid expression"); diff --git a/web/scene.js b/web/scene.js index 2b4ea181..9adb59af 100644 --- a/web/scene.js +++ b/web/scene.js @@ -3473,6 +3473,10 @@ Scene.prototype.evaluateExpr = function evaluateExpr(stack, parenthetical) { this.warning("For more details on modulo, see: https://forum.choiceofgames.com/t/21176"); } + if (!stack[0]) { + throw new Error(this.lineMsg() + "Invalid expression at char "+token.pos+", expected something after a "+token.value); + } + if (stack[0].func == "auto") { value2 = this.autobalance(stack, token, value1); } else {