From af1c009c3ea97cb4ec79b54c8b208198230e3ffb Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 22 Jun 2020 12:06:43 +0100 Subject: 46079: Ignore double quotes in math expressions. Treat as white space. This is required for compatibility and previously had no use in zsh as it generated an error. --- ChangeLog | 5 +++++ Src/math.c | 2 ++ Test/C01arith.ztst | 10 ++++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index bf139ed0c..11829e3a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2020-06-22 Peter Stephenson + + * 46079: Src/math.c, Test/C01arith.ztst: Ignore double quotes in + math expression: treat as white space. + 2020-06-22 Manuel Jacob * 46091: Doc/Zsh/contrib.yo, diff --git a/Src/math.c b/Src/math.c index 905b910ec..b57ba42d4 100644 --- a/Src/math.c +++ b/Src/math.c @@ -831,6 +831,8 @@ zzlex(void) case ' ': /* Fall through! */ case '\t': case '\n': + case '"': /* POSIX says ignore these */ + case Dnull: break; default: if (idigit(*--ptr) || *ptr == '.') diff --git a/Test/C01arith.ztst b/Test/C01arith.ztst index 419f45292..d0092fefa 100644 --- a/Test/C01arith.ztst +++ b/Test/C01arith.ztst @@ -180,9 +180,10 @@ 1:bases beyond 36 don't work ?(eval):1: invalid base (must be 2 to 36 inclusive): 37 + fail=39 print $(( 3 + "fail" )) -1:parse failure in arithmetic -?(eval):1: bad math expression: operand expected at `"fail" ' +0:Double quotes are not treated specially in arithmetic +>42 alias 3=echo print $(( 3 + "OK"); echo "Worked") @@ -487,3 +488,8 @@ let noexist==0 ) 1:Arithmetic, NO_UNSET part 3 ?(eval):2: noexist: parameter not set + + print $(( "6+2" / "1+3" )) +0:Double quotes are not treated specially in arithmetic (POSIX) +# and do not do grouping! this is 6 + (2/1) + 3 +>11 -- cgit 1.4.1