From f099d5e667aa7c76dbf2822a4bd6f743469b010a Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Tue, 4 Feb 2014 20:27:05 -0600 Subject: [PATCH] Add constant evaluation for ~ - When this operator was added to the language, it never got added to the constant expression path, so you could only use it in expressions evaluated at runtime. --- parse.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/parse.c b/parse.c index 09c14b4..8ba13f7 100644 --- a/parse.c +++ b/parse.c @@ -3746,6 +3746,11 @@ static void ConstExprFactor(void) ConstExprFactor(); SendExprCommand(PCD_NEGATELOGICAL); break; + case TK_TILDE: + TK_NextToken(); + ConstExprFactor(); + SendExprCommand(PCD_NEGATEBINARY); + break; default: ERR_Error(ERR_BAD_CONST_EXPR, YES); PushExStk(0); @@ -3842,6 +3847,9 @@ static void SendExprCommand(pcd_t pcd) case PCD_NEGATELOGICAL: PushExStk(!PopExStk()); break; + case PCD_NEGATEBINARY: + PushExStk(~PopExStk()); + break; case PCD_LSHIFT: operand2 = PopExStk(); PushExStk(PopExStk()<