Fix cascaded assignment

This commit is contained in:
drmortalwombat 2021-10-16 10:27:32 +02:00
parent 438a926b88
commit 545b9a6aba

View File

@ -1565,13 +1565,14 @@ Expression* Parser::ParseAssignmentExpression(void)
{ {
Expression* exp = ParseConditionalExpression(); 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); Expression* nexp = new Expression(mScanner->mLocation, EX_ASSIGNMENT);
nexp->mToken = mScanner->mToken; nexp->mToken = mScanner->mToken;
nexp->mLeft = exp; nexp->mLeft = exp;
mScanner->NextToken(); mScanner->NextToken();
nexp->mRight = ParseConditionalExpression(); nexp->mRight = ParseAssignmentExpression();
nexp->mDecType = exp->mDecType;
exp = nexp; exp = nexp;
} }