AS3: string concatenate and subtract needs parentheses

This commit is contained in:
Jindra Petk
2013-01-02 11:10:52 +01:00
parent 88273e540c
commit 604b4d3ad0

View File

@@ -16,12 +16,32 @@
*/
package com.jpexs.asdec.abc.avm2.treemodel.operations;
import com.jpexs.asdec.abc.avm2.ConstantPool;
import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.asdec.abc.avm2.treemodel.TreeItem;
import java.util.HashMap;
import java.util.List;
public class AddTreeItem extends BinaryOpTreeItem {
public AddTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) {
super(instruction, PRECEDENCE_ADDITIVE, leftSide, rightSide, "+");
}
@Override
public String toString(ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
if(rightSide instanceof SubtractTreeItem){ //Subtract must use parentheses because + can concatenate strings
String ret = "";
if (leftSide.precedence > precedence) {
ret += "(" + leftSide.toString(constants, localRegNames, fullyQualifiedNames) + ")";
} else {
ret += leftSide.toString(constants, localRegNames, fullyQualifiedNames);
}
ret += hilight(operator);
ret += "(" + rightSide.toString(constants, localRegNames, fullyQualifiedNames) + ")";
return ret;
}else{
return super.toString(constants, localRegNames, fullyQualifiedNames);
}
}
}