]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programparser.cpp
Overhaul assignment tracking to work properly with conditionals
[libs/gl.git] / source / programparser.cpp
index 11c9a9fe4060acd391b390cbb36749b82f998d6f..f003a835b56b0352e7abe2387bcaff24792d87ce 100644 (file)
@@ -522,7 +522,7 @@ Expression *ProgramParser::parse_expression(unsigned precedence)
 
 BinaryExpression *ProgramParser::parse_binary(Expression *left, const Operator *oper)
 {
-       RefPtr<BinaryExpression> binary = new BinaryExpression;
+       RefPtr<BinaryExpression> binary = (oper->precedence==16 ? new Assignment : new BinaryExpression);
        binary->left = left;
        binary->oper = parse_token();
        if(binary->oper=="[")
@@ -533,7 +533,6 @@ BinaryExpression *ProgramParser::parse_binary(Expression *left, const Operator *
        }
        else
                binary->right = parse_expression(oper->precedence+(oper->assoc==RIGHT_TO_LEFT));
-       binary->assignment = (oper->precedence==16);
        return binary.release();
 }