From 545b9a6aba38a3df451508f6bdf0bee02b35c5e5 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Sat, 16 Oct 2021 10:27:32 +0200 Subject: [PATCH] Fix cascaded assignment --- oscar64/Parser.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/oscar64/Parser.cpp b/oscar64/Parser.cpp index ba36501..5c0a632 100644 --- a/oscar64/Parser.cpp +++ b/oscar64/Parser.cpp @@ -1565,13 +1565,14 @@ Expression* Parser::ParseAssignmentExpression(void) { Expression* exp = ParseConditionalExpression(); - while (mScanner->mToken >= TK_ASSIGN && mScanner->mToken <= TK_ASSIGN_OR) + if (mScanner->mToken >= TK_ASSIGN && mScanner->mToken <= TK_ASSIGN_OR) { Expression* nexp = new Expression(mScanner->mLocation, EX_ASSIGNMENT); nexp->mToken = mScanner->mToken; nexp->mLeft = exp; mScanner->NextToken(); - nexp->mRight = ParseConditionalExpression(); + nexp->mRight = ParseAssignmentExpression(); + nexp->mDecType = exp->mDecType; exp = nexp; }