diff --git a/trunk/src/com/jpexs/asdec/abc/ABC.java b/trunk/src/com/jpexs/asdec/abc/ABC.java index f75ef91a8..6fe4b677e 100644 --- a/trunk/src/com/jpexs/asdec/abc/ABC.java +++ b/trunk/src/com/jpexs/asdec/abc/ABC.java @@ -533,20 +533,20 @@ public class ABC { return null; } - private String addTabs(String s, int tabs) { + private String addTabs(String s, int tabs) { String parts[] = s.split("\r\n"); if (!s.contains("\r\n")) { parts = s.split("\n"); - } + } String ret = ""; for (int i = 0; i < parts.length; i++) { for (int t = 0; t < tabs; t++) { ret += IDENT_STRING; - } + } ret += parts[i]; if (i < parts.length - 1) { ret += "\r\n"; - } + } } return ret; } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java b/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java index 031c5b98c..43be925be 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java @@ -833,7 +833,7 @@ public class AVM2Code { String ret = ""; for (int d = 0; d < stack.size(); d++) { TreeItem o = stack.get(d); - ret += o.toString(constants) + "\r\n"; + ret += o.toStringSemicoloned(constants) + "\r\n"; } return ret; } @@ -1172,7 +1172,7 @@ public HashMap getLocalRegNamesFromDebug(ABC abc){ throw new UnknownJumpException(stack, ip, output); } AVM2Instruction ins = code.get(ip); - //Ify s vice podminkama + //Ifs with multiple conditions if (ins.definition instanceof JumpIns) { if (ins.operands[0] == 0) { ip++; @@ -1468,6 +1468,12 @@ public HashMap getLocalRegNamesFromDebug(ABC abc){ if (ip - 1 >= start) { insBefore = code.get(ip - 1); } + if (insAfter.definition instanceof ConvertBIns) { //SWF compiled with debug contain convert_b + ip++; + addr=pos2adr(ip); + insAfter = code.get(ip + 1); + } + boolean isAnd = false; if (insAfter.definition instanceof IfFalseIns) { //stack.add("(" + stack.pop() + ")&&"); @@ -1847,6 +1853,12 @@ public HashMap getLocalRegNamesFromDebug(ABC abc){ } catch (Exception ex) { } for (int p = 0; p < parts.length; p++) { + if(p==parts.length-1){ + if(parts[p].equals("")) + { + continue; + } + } String strippedP = Highlighting.stripHilights(parts[p]); if (strippedP.endsWith(":") && (!strippedP.startsWith("case ")) && (!strippedP.equals("default:"))) { String loopname = strippedP.substring(0, strippedP.length() - 1); @@ -1880,7 +1892,7 @@ public HashMap getLocalRegNamesFromDebug(ABC abc){ level++; sub += tabString(level) + parts[p] + "\r\n"; level++; - } else if (strippedP.equals("}")) { + } else if (strippedP.equals("}")||strippedP.equals("};")) { level--; sub += tabString(level) + parts[p] + "\r\n"; level--; diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BreakTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BreakTreeItem.java index d59f46bff..3d97764e8 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BreakTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BreakTreeItem.java @@ -37,7 +37,7 @@ public class BreakTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - return hilight("break") + " loop" + loopPos + ";"; + return hilight("break") + " loop" + loopPos; } } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallPropertyTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallPropertyTreeItem.java index cd2897592..1e2da089f 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallPropertyTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallPropertyTreeItem.java @@ -46,7 +46,7 @@ public class CallPropertyTreeItem extends TreeItem { } args = args + arguments.get(a).toString(constants); } - return formatProperty(constants, receiver, propertyName) + hilight("(") + args + hilight(")") + (isVoid ? ";" : ""); + return formatProperty(constants, receiver, propertyName) + hilight("(") + args + hilight(")"); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallSuperTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallSuperTreeItem.java index 7d28ee802..90d0c5232 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallSuperTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallSuperTreeItem.java @@ -49,7 +49,7 @@ public class CallSuperTreeItem extends TreeItem { } String calee = receiver.toString(constants) + "."; if (Highlighting.stripHilights(calee).equals("this.")) calee = ""; - return calee + hilight("super.") + multiname.toString(constants) + hilight("(") + args + hilight(")") + (isVoid ? ";" : ""); + return calee + hilight("super.") + multiname.toString(constants) + hilight("(") + args + hilight(")"); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructSuperTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructSuperTreeItem.java index 390834475..6c24974cb 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructSuperTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructSuperTreeItem.java @@ -45,7 +45,7 @@ public class ConstructSuperTreeItem extends TreeItem { } String calee = object.toString(constants) + "."; if (Highlighting.stripHilights(calee).equals("this.")) calee = ""; - return calee + hilight("super(") + argStr + hilight(");"); + return calee + hilight("super(") + argStr + hilight(")"); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ContinueTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ContinueTreeItem.java index 52a17df37..067ef1a80 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ContinueTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ContinueTreeItem.java @@ -37,7 +37,7 @@ public class ContinueTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - return hilight("continue") + " " + (isKnown ? "loop" : "unk") + loopPos + ";"; + return hilight("continue") + " " + (isKnown ? "loop" : "unk") + loopPos; } } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecLocalTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecLocalTreeItem.java index 3feb25cc3..3cf30bdbb 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecLocalTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecLocalTreeItem.java @@ -32,7 +32,7 @@ public class DecLocalTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - return InstructionDefinition.localRegName(regIndex) + hilight("--") + ";"; + return InstructionDefinition.localRegName(regIndex) + hilight("--"); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncLocalTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncLocalTreeItem.java index 9653d2530..3da3f66a6 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncLocalTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncLocalTreeItem.java @@ -32,7 +32,7 @@ public class IncLocalTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - return InstructionDefinition.localRegName(regIndex) + hilight("++") + ";"; + return InstructionDefinition.localRegName(regIndex) + hilight("++"); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/InitPropertyTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/InitPropertyTreeItem.java index 55b992059..418ad6261 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/InitPropertyTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/InitPropertyTreeItem.java @@ -35,7 +35,7 @@ public class InitPropertyTreeItem extends TreeItem implements SetTypeTreeItem{ @Override public String toString(ConstantPool constants) { - return formatProperty(constants, object, propertyName) + hilight("=") + value.toString(constants) + ";"; + return formatProperty(constants, object, propertyName) + hilight("=") + value.toString(constants); } public TreeItem getObject() { diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewFunctionTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewFunctionTreeItem.java index 6e66e2b80..55992771d 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewFunctionTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewFunctionTreeItem.java @@ -35,7 +35,7 @@ public class NewFunctionTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - return hilight("new function(" + paramStr + "):" + returnStr + "\r\n{\r\n") + functionBody + hilight("}\r\n"); + return hilight("new function(" + paramStr + "):" + returnStr + "\r\n{\r\n") + functionBody +"\r\n"+ hilight("}"); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnValueTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnValueTreeItem.java index 0f64ef309..8b45bdd98 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnValueTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnValueTreeItem.java @@ -31,7 +31,7 @@ public class ReturnValueTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - return hilight("return ") + value.toString(constants) + ";"; + return hilight("return ") + value.toString(constants); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnVoidTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnVoidTreeItem.java index 11cfecfef..3810bad2f 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnVoidTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnVoidTreeItem.java @@ -29,7 +29,7 @@ public class ReturnVoidTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - return hilight("return") + ";"; + return hilight("return"); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetGlobalSlotTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetGlobalSlotTreeItem.java index a7b6ea6a0..65ddf1b81 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetGlobalSlotTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetGlobalSlotTreeItem.java @@ -33,7 +33,7 @@ public class SetGlobalSlotTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - return hilight("setglobalslot(" + slotId + ",") + value.toString(constants) + hilight(")") + ";"; + return hilight("setglobalslot(" + slotId + ",") + value.toString(constants) + hilight(")"); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetLocalTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetLocalTreeItem.java index 4ddf72fa5..325d538ce 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetLocalTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetLocalTreeItem.java @@ -34,7 +34,7 @@ public class SetLocalTreeItem extends TreeItem implements SetTypeTreeItem { @Override public String toString(ConstantPool constants) { - return hilight(InstructionDefinition.localRegName(regIndex) + "=") + value.toString(constants) + ";"; + return hilight(InstructionDefinition.localRegName(regIndex) + "=") + value.toString(constants); } public TreeItem getObject() { diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetPropertyTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetPropertyTreeItem.java index 2f48bbc7b..72b45fdf7 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetPropertyTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetPropertyTreeItem.java @@ -35,7 +35,7 @@ public class SetPropertyTreeItem extends TreeItem implements SetTypeTreeItem{ @Override public String toString(ConstantPool constants) { - return formatProperty(constants, object, propertyName) + hilight("=") + value.toString(constants) + ";"; + return formatProperty(constants, object, propertyName) + hilight("=") + value.toString(constants); } public TreeItem getObject() { diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSlotTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSlotTreeItem.java index cb8fa4afd..2212472bf 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSlotTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSlotTreeItem.java @@ -48,7 +48,7 @@ public class SetSlotTreeItem extends TreeItem implements SetTypeTreeItem { } } } - return ret + hilight(slotName.getName(constants)) + hilight("=") + value.toString(constants) + ";"; + return ret + hilight(slotName.getName(constants)) + hilight("=") + value.toString(constants); } public TreeItem getObject() { diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSuperTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSuperTreeItem.java index a8987902a..2f28cdc27 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSuperTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSuperTreeItem.java @@ -39,7 +39,7 @@ public class SetSuperTreeItem extends TreeItem { public String toString(ConstantPool constants) { String calee = object.toString(constants) + "."; if (Highlighting.stripHilights(calee).equals("this.")) calee = ""; - return calee + hilight("super.") + propertyName.toString(constants) + hilight("=") + value.toString(constants) + ";"; + return calee + hilight("super.") + propertyName.toString(constants) + hilight("=") + value.toString(constants); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/TreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/TreeItem.java index ac28b712c..55e00477d 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/TreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/TreeItem.java @@ -41,7 +41,7 @@ public abstract class TreeItem { public static final int PRECEDENCE_ASSIGMENT = 14; public static final int PRECEDENCE_COMMA = 15; public static final int NOPRECEDENCE = 16; - + public int precedence = NOPRECEDENCE; public AVM2Instruction instruction; @@ -53,7 +53,18 @@ public abstract class TreeItem { public abstract String toString(ConstantPool constants); + + public String toStringSemicoloned(ConstantPool constants) + { + return toString(constants)+(needsSemicolon()?";":""); + } + public boolean needsSemicolon() + { + return true; + } + + protected String hilight(String str) { if (instruction == null) diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/DoWhileTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/DoWhileTreeItem.java index 0f163c3d5..22445c717 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/DoWhileTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/DoWhileTreeItem.java @@ -31,6 +31,13 @@ public class DoWhileTreeItem extends LoopTreeItem implements Block { public List commands; public TreeItem expression; + @Override + public boolean needsSemicolon() { + return false; + } + + + public DoWhileTreeItem(AVM2Instruction instruction, int loopBreak, int loopContinue, List commands, TreeItem expression) { super(instruction, loopBreak, loopContinue); this.expression = expression; @@ -43,7 +50,7 @@ public class DoWhileTreeItem extends LoopTreeItem implements Block { ret += "loop" + loopBreak + ":\r\n"; ret += hilight("do\r\n{") + "\r\n"; for (TreeItem ti : commands) { - ret += ti.toString(constants) + "\r\n"; + ret += ti.toStringSemicoloned(constants) + "\r\n"; } ret += hilight("}\r\nwhile(") + expression.toString(constants) + hilight(");") + "\r\n"; ret += ":loop" + loopBreak; diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForEachTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForEachTreeItem.java index 8982be030..7b328e9c5 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForEachTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForEachTreeItem.java @@ -54,6 +54,11 @@ public class ForEachTreeItem extends LoopTreeItem implements Block { this.expression = expression; this.commands = commands; } + + @Override + public boolean needsSemicolon() { + return false; + } @Override public String toString(ConstantPool constants) { @@ -61,7 +66,7 @@ public class ForEachTreeItem extends LoopTreeItem implements Block { ret += "loop" + loopBreak + ":\r\n"; ret += hilight("for ") + expression.toString(constants) + "\r\n{\r\n"; for (TreeItem ti : commands) { - ret += ti.toString(constants) + "\r\n"; + ret += ti.toStringSemicoloned(constants) + "\r\n"; } ret += hilight("}") + "\r\n"; ret += ":loop" + loopBreak; diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForTreeItem.java index 2a14e1c9b..c56841dd6 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForTreeItem.java @@ -70,13 +70,18 @@ public class ForTreeItem extends LoopTreeItem implements Block { } ret += hilight(")") + "\r\n{\r\n"; for (TreeItem ti : commands) { - ret += ti.toString(constants) + "\r\n"; + ret += ti.toStringSemicoloned(constants) + "\r\n"; } ret += hilight("}") + "\r\n"; ret += ":loop" + loopBreak; return ret; } + @Override + public boolean needsSemicolon() { + return false; + } + public List getContinues() { List ret = new ArrayList(); for (TreeItem ti : commands) { diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/IfTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/IfTreeItem.java index 63b0e9ddc..b460957ff 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/IfTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/IfTreeItem.java @@ -43,19 +43,24 @@ public class IfTreeItem extends TreeItem implements Block { String ret = ""; ret = hilight("if(") + expression.toString(constants) + hilight(")\r\n{\r\n"); for (TreeItem ti : onTrue) { - ret += ti.toString(constants) + "\r\n"; + ret += ti.toStringSemicoloned(constants) + "\r\n"; } ret += hilight("}"); if (onFalse.size() > 0) { ret += hilight("\r\nelse\r\n{\r\n"); for (TreeItem ti : onFalse) { - ret += ti.toString(constants) + "\r\n"; + ret += ti.toStringSemicoloned(constants) + "\r\n"; } ret += hilight("}"); } return ret; } + @Override + public boolean needsSemicolon() { + return false; + } + public List getContinues() { List ret = new ArrayList(); for (TreeItem ti : onTrue) { diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/LoopTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/LoopTreeItem.java index d642f2ff0..f9c2f5334 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/LoopTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/LoopTreeItem.java @@ -30,4 +30,8 @@ public abstract class LoopTreeItem extends TreeItem { this.loopBreak = loopBreak; this.loopContinue = loopContinue; } + @Override + public boolean needsSemicolon() { + return false; + } } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/SwitchTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/SwitchTreeItem.java index 486bbc7db..db510fd82 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/SwitchTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/SwitchTreeItem.java @@ -51,7 +51,7 @@ public class SwitchTreeItem extends LoopTreeItem implements Block { ret += "case " + caseValues.get(i).toString(constants) + ":\r\n"; ret += AVM2Code.IDENTOPEN + "\r\n"; for (int j = 0; j < caseCommands.get(i).size(); j++) { - ret += caseCommands.get(i).get(j).toString(constants) + "\r\n"; + ret += caseCommands.get(i).get(j).toStringSemicoloned(constants) + "\r\n"; } ret += AVM2Code.IDENTCLOSE + "\r\n"; } @@ -59,7 +59,7 @@ public class SwitchTreeItem extends LoopTreeItem implements Block { ret += hilight("default") + ":\r\n"; ret += AVM2Code.IDENTOPEN + "\r\n"; for (int j = 0; j < defaultCommands.size(); j++) { - ret += defaultCommands.get(j).toString(constants) + "\r\n"; + ret += defaultCommands.get(j).toStringSemicoloned(constants) + "\r\n"; } ret += AVM2Code.IDENTCLOSE + "\r\n"; } @@ -68,6 +68,11 @@ public class SwitchTreeItem extends LoopTreeItem implements Block { return ret; } + @Override + public boolean needsSemicolon() { + return false; + } + public List getContinues() { List ret = new ArrayList(); diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TryTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TryTreeItem.java index 0af6d800e..cbffd493e 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TryTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TryTreeItem.java @@ -46,21 +46,21 @@ public class TryTreeItem extends TreeItem implements Block { String ret = ""; ret += "try\r\n{\r\n"; for (TreeItem ti : tryCommands) { - ret += ti.toString(constants) + "\r\n"; + ret += ti.toStringSemicoloned(constants) + "\r\n"; } ret += "}"; for (int e = 0; e < catchExceptions.size(); e++) { ret += "\r\ncatch(" + catchExceptions.get(e).getVarName(constants) + ":" + catchExceptions.get(e).getTypeName(constants) + ")\r\n{\r\n"; List commands = catchCommands.get(e); for (TreeItem ti : commands) { - ret += ti.toString(constants) + "\r\n"; + ret += ti.toStringSemicoloned(constants) + "\r\n"; } ret += "}"; } if (finallyCommands.size() > 0) { ret += "\r\nfinally\r\n{\r\n"; for (TreeItem ti : finallyCommands) { - ret += ti.toString(constants) + "\r\n"; + ret += ti.toStringSemicoloned(constants) + "\r\n"; } ret += "}"; } @@ -99,4 +99,9 @@ public class TryTreeItem extends TreeItem implements Block { } return ret; } + + @Override + public boolean needsSemicolon() { + return false; + } } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/WhileTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/WhileTreeItem.java index 12bba058c..3f1cd9822 100644 --- a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/WhileTreeItem.java +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/WhileTreeItem.java @@ -43,7 +43,7 @@ public class WhileTreeItem extends LoopTreeItem implements Block { ret += "loop" + loopBreak + ":\r\n"; ret += hilight("while(") + expression.toString(constants) + hilight(")") + "\r\n{\r\n"; for (TreeItem ti : commands) { - ret += ti.toString(constants) + "\r\n"; + ret += ti.toStringSemicoloned(constants) + "\r\n"; } ret += hilight("}") + "\r\n"; ret += ":loop" + loopBreak; @@ -62,4 +62,9 @@ public class WhileTreeItem extends LoopTreeItem implements Block { } return ret; } + + @Override + public boolean needsSemicolon() { + return false; + } } diff --git a/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java b/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java index cda86fe53..7cfd112e0 100644 --- a/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java +++ b/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java @@ -86,6 +86,7 @@ public class MethodBody implements Cloneable { try { HashMap localRegNames=code.getLocalRegNamesFromDebug(abc); s += code.toSource(isStatic, classIndex, abc, constants, method_info, this, hilight); + s=s.trim(); if(hilight) { s=Highlighting.hilighMethod(s, this.method_info); diff --git a/trunk/src/com/jpexs/asdec/action/treemodel/BreakTreeItem.java b/trunk/src/com/jpexs/asdec/action/treemodel/BreakTreeItem.java index 1aabf9014..593407eb6 100644 --- a/trunk/src/com/jpexs/asdec/action/treemodel/BreakTreeItem.java +++ b/trunk/src/com/jpexs/asdec/action/treemodel/BreakTreeItem.java @@ -36,7 +36,7 @@ public class BreakTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - return hilight("break") + " loop" + loopPos + ";"; + return hilight("break") + " loop" + loopPos; } } diff --git a/trunk/src/com/jpexs/asdec/action/treemodel/ContinueTreeItem.java b/trunk/src/com/jpexs/asdec/action/treemodel/ContinueTreeItem.java index f11dc02dc..9d66c9afb 100644 --- a/trunk/src/com/jpexs/asdec/action/treemodel/ContinueTreeItem.java +++ b/trunk/src/com/jpexs/asdec/action/treemodel/ContinueTreeItem.java @@ -37,7 +37,7 @@ public class ContinueTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - return hilight(isBreak ? "break" : "continue") + " " + (isKnown ? "loop" : "unk") + loopPos + ";"; + return hilight(isBreak ? "break" : "continue") + " " + (isKnown ? "loop" : "unk") + loopPos; } } diff --git a/trunk/src/com/jpexs/asdec/action/treemodel/DefineLocalTreeItem.java b/trunk/src/com/jpexs/asdec/action/treemodel/DefineLocalTreeItem.java index b71397e7a..9a30ae342 100644 --- a/trunk/src/com/jpexs/asdec/action/treemodel/DefineLocalTreeItem.java +++ b/trunk/src/com/jpexs/asdec/action/treemodel/DefineLocalTreeItem.java @@ -31,7 +31,7 @@ public class DefineLocalTreeItem extends TreeItem { @Override public String toString(ConstantPool constants) { - if (value == null) return "var " + stripQuotes(name) + ";"; - return "var " + stripQuotes(name) + "=" + value.toString(constants) + ";"; + if (value == null) return "var " + stripQuotes(name); + return "var " + stripQuotes(name) + "=" + value.toString(constants); } }