aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2011-06-27 21:26:17 +1000
committerSteve Bennett <steveb@workware.net.au>2011-07-08 05:41:59 +1000
commit3c2e76f21f3bc3c154018135b4352ef5c694f113 (patch)
tree29c60701870b59e25eed4a2e2f3ff0ddab9718da
parentbd5bdcbe8a88570d1ac23511443563bc4454504d (diff)
downloadjimtcl-3c2e76f21f3bc3c154018135b4352ef5c694f113.zip
jimtcl-3c2e76f21f3bc3c154018135b4352ef5c694f113.tar.gz
jimtcl-3c2e76f21f3bc3c154018135b4352ef5c694f113.tar.bz2
Fix missing expr error message with || and &&
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jim.c10
-rw-r--r--tests/misc.test5
2 files changed, 12 insertions, 3 deletions
diff --git a/jim.c b/jim.c
index 708d244..ccf120f 100644
--- a/jim.c
+++ b/jim.c
@@ -8209,16 +8209,20 @@ static int ExprAddLazyOperator(Jim_Interp *interp, ExprByteCode * expr, ParseTok
static int ExprAddOperator(Jim_Interp *interp, ExprByteCode * expr, ParseToken *t)
{
struct ScriptToken *token = &expr->token[expr->len];
+ const struct Jim_ExprOperator *op = JimExprOperatorInfoByOpcode(t->type);
- if (JimExprOperatorInfoByOpcode(t->type)->lazy == LAZY_OP) {
- return ExprAddLazyOperator(interp, expr, t);
+ if (op->lazy == LAZY_OP) {
+ if (ExprAddLazyOperator(interp, expr, t) != JIM_OK) {
+ Jim_SetResultFormatted(interp, "Expression has bad operands to %s", op->name);
+ return JIM_ERR;
+ }
}
else {
token->objPtr = interp->emptyObj;
token->type = t->type;
expr->len++;
- return JIM_OK;
}
+ return JIM_OK;
}
/**
diff --git a/tests/misc.test b/tests/misc.test
index 4557773..c5a389e 100644
--- a/tests/misc.test
+++ b/tests/misc.test
@@ -541,4 +541,9 @@ test lmap-1.1 {lmap} {
lmap p {1 2 3} {incr p}
} {2 3 4}
+test exprerr-1.1 {Error message with bad expr} {
+ catch {expr {5 ||}} msg
+ set msg
+} {Expression has bad operands to ||}
+
testreport