From 116bf760f0277ecdb9d434eca0a7b9c348fdf724 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Sat, 13 Apr 2013 18:25:48 +0200 Subject: [PATCH] poptreeitem fix --- .../avm2/treemodel/clauses/ForEachInTreeItem.java | 4 +++- .../abc/avm2/treemodel/clauses/ForInTreeItem.java | 4 +++- .../abc/avm2/treemodel/clauses/TryTreeItem.java | 12 +++++++++--- .../flash/action/treemodel/PopTreeItem.java | 5 +++++ .../flash/action/treemodel/clauses/TryTreeItem.java | 12 +++++++++--- .../jpexs/decompiler/flash/graph/DoWhileItem.java | 4 +++- .../jpexs/decompiler/flash/graph/ForTreeItem.java | 4 +++- .../src/com/jpexs/decompiler/flash/graph/Graph.java | 6 ++++-- .../decompiler/flash/graph/GraphTargetItem.java | 4 ++++ .../src/com/jpexs/decompiler/flash/graph/IfItem.java | 8 ++++++-- .../com/jpexs/decompiler/flash/graph/SwitchItem.java | 8 ++++++-- .../com/jpexs/decompiler/flash/graph/WhileItem.java | 4 +++- 12 files changed, 58 insertions(+), 17 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/ForEachInTreeItem.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/ForEachInTreeItem.java index a3354ef15..4fff91621 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/ForEachInTreeItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/ForEachInTreeItem.java @@ -70,7 +70,9 @@ public class ForEachInTreeItem extends LoopItem implements Block { ret += "loop" + loop.id + ":\r\n"; ret += hilight("for each (") + expression.toString(localData) + ")\r\n{\r\n"; for (GraphTargetItem ti : commands) { - ret += ti.toStringSemicoloned(localData) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(localData) + "\r\n"; + } } ret += hilight("}") + "\r\n"; ret += ":loop" + loop.id; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/ForInTreeItem.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/ForInTreeItem.java index db3479f99..4f02a0cfd 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/ForInTreeItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/ForInTreeItem.java @@ -70,7 +70,9 @@ public class ForInTreeItem extends LoopItem implements Block { ret += "loop" + loop.id + ":\r\n"; ret += hilight("for (") + expression.toString(localData) + hilight(")") + "\r\n{\r\n"; for (GraphTargetItem ti : commands) { - ret += ti.toStringSemicoloned(localData) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(localData) + "\r\n"; + } } ret += hilight("}") + "\r\n"; ret += ":loop" + loop.id; diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/TryTreeItem.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/TryTreeItem.java index 19e81f942..506c7d6e4 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/TryTreeItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/treemodel/clauses/TryTreeItem.java @@ -56,21 +56,27 @@ public class TryTreeItem extends TreeItem implements Block { String ret = ""; ret += "try\r\n{\r\n"; for (GraphTargetItem ti : tryCommands) { - ret += ti.toStringSemicoloned(Helper.toList(constants, localRegNames, fullyQualifiedNames)) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(Helper.toList(constants, localRegNames, fullyQualifiedNames)) + "\r\n"; + } } ret += "}"; for (int e = 0; e < catchExceptions.size(); e++) { ret += "\r\ncatch(" + catchExceptions.get(e).getVarName(constants, fullyQualifiedNames) + ":" + catchExceptions.get(e).getTypeName(constants, fullyQualifiedNames) + ")\r\n{\r\n"; List commands = catchCommands.get(e); for (GraphTargetItem ti : commands) { - ret += ti.toStringSemicoloned(Helper.toList(constants, localRegNames, fullyQualifiedNames)) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(Helper.toList(constants, localRegNames, fullyQualifiedNames)) + "\r\n"; + } } ret += "}"; } if (finallyCommands.size() > 0) { ret += "\r\nfinally\r\n{\r\n"; for (GraphTargetItem ti : finallyCommands) { - ret += ti.toStringSemicoloned(Helper.toList(constants, localRegNames, fullyQualifiedNames)) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(Helper.toList(constants, localRegNames, fullyQualifiedNames)) + "\r\n"; + } } ret += "}"; } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/treemodel/PopTreeItem.java b/trunk/src/com/jpexs/decompiler/flash/action/treemodel/PopTreeItem.java index 330af5ad0..145743985 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/treemodel/PopTreeItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/treemodel/PopTreeItem.java @@ -37,4 +37,9 @@ public class PopTreeItem extends TreeItem { public boolean needsSemicolon() { return false; } + + @Override + public boolean isEmpty() { + return true; + } } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/treemodel/clauses/TryTreeItem.java b/trunk/src/com/jpexs/decompiler/flash/action/treemodel/clauses/TryTreeItem.java index 2f6615341..4627101ca 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/treemodel/clauses/TryTreeItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/treemodel/clauses/TryTreeItem.java @@ -55,21 +55,27 @@ public class TryTreeItem extends TreeItem implements Block { List localData = new ArrayList(); localData.add(constants); for (GraphTargetItem ti : tryCommands) { - ret += ti.toStringSemicoloned(localData) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(localData) + "\r\n"; + } } ret += "}"; for (int e = 0; e < catchExceptions.size(); e++) { ret += "\r\ncatch(" + catchExceptions.get(e).toStringNoQuotes(localData) + ")\r\n{\r\n"; List commands = catchCommands.get(e); for (GraphTargetItem ti : commands) { - ret += ti.toStringSemicoloned(localData) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(localData) + "\r\n"; + } } ret += "}"; } if (finallyCommands.size() > 0) { ret += "\r\nfinally\r\n{\r\n"; for (GraphTargetItem ti : finallyCommands) { - ret += ti.toStringSemicoloned(localData) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(localData) + "\r\n"; + } } ret += "}"; } diff --git a/trunk/src/com/jpexs/decompiler/flash/graph/DoWhileItem.java b/trunk/src/com/jpexs/decompiler/flash/graph/DoWhileItem.java index 52f8bf57c..fad04a3f7 100644 --- a/trunk/src/com/jpexs/decompiler/flash/graph/DoWhileItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/graph/DoWhileItem.java @@ -48,7 +48,9 @@ public class DoWhileItem extends LoopItem implements Block { ret += "loop" + loop.id + ":\r\n"; ret += hilight("do\r\n{") + "\r\n"; for (GraphTargetItem ti : commands) { - ret += ti.toStringSemicoloned(localData) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(localData) + "\r\n"; + } } ret += hilight("}\r\nwhile(") + expression.toString(localData) + hilight(");") + "\r\n"; ret += ":loop" + loop.id; diff --git a/trunk/src/com/jpexs/decompiler/flash/graph/ForTreeItem.java b/trunk/src/com/jpexs/decompiler/flash/graph/ForTreeItem.java index 1de18caf9..8e87262bb 100644 --- a/trunk/src/com/jpexs/decompiler/flash/graph/ForTreeItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/graph/ForTreeItem.java @@ -72,7 +72,9 @@ public class ForTreeItem extends LoopItem implements Block { } ret += hilight(")") + "\r\n{\r\n"; for (GraphTargetItem ti : commands) { - ret += ti.toStringSemicoloned(localData) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(localData) + "\r\n"; + } } ret += hilight("}") + "\r\n"; ret += ":loop" + loop.id; diff --git a/trunk/src/com/jpexs/decompiler/flash/graph/Graph.java b/trunk/src/com/jpexs/decompiler/flash/graph/Graph.java index b9cd9e892..96332de8f 100644 --- a/trunk/src/com/jpexs/decompiler/flash/graph/Graph.java +++ b/trunk/src/com/jpexs/decompiler/flash/graph/Graph.java @@ -1423,8 +1423,10 @@ public class Graph { localDataList.add(o); } for (GraphTargetItem ti : tree) { - ret.append(ti.toStringSemicoloned(localDataList)); - ret.append("\r\n"); + if (!ti.isEmpty()) { + ret.append(ti.toStringSemicoloned(localDataList)); + ret.append("\r\n"); + } } String parts[] = ret.toString().split("\r\n"); ret = new StringBuilder(); diff --git a/trunk/src/com/jpexs/decompiler/flash/graph/GraphTargetItem.java b/trunk/src/com/jpexs/decompiler/flash/graph/GraphTargetItem.java index def8dbc8f..fa1b82f85 100644 --- a/trunk/src/com/jpexs/decompiler/flash/graph/GraphTargetItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/graph/GraphTargetItem.java @@ -137,4 +137,8 @@ public abstract class GraphTargetItem { } return toString(localData2) + (needsNewLine() ? "\r\n" : ""); } + + public boolean isEmpty() { + return false; + } } diff --git a/trunk/src/com/jpexs/decompiler/flash/graph/IfItem.java b/trunk/src/com/jpexs/decompiler/flash/graph/IfItem.java index cda0dccac..a41697983 100644 --- a/trunk/src/com/jpexs/decompiler/flash/graph/IfItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/graph/IfItem.java @@ -50,13 +50,17 @@ public class IfItem extends GraphTargetItem implements Block { String ret; ret = hilight("if(") + expression.toString(localData) + hilight(")") + "\r\n{\r\n"; for (GraphTargetItem ti : onTrue) { - ret += ti.toStringSemicoloned(localData) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(localData) + "\r\n"; + } } ret += hilight("}"); if (onFalse.size() > 0) { ret += "\r\n" + hilight("else") + "\r\n" + hilight("{") + "\r\n"; for (GraphTargetItem ti : onFalse) { - ret += ti.toStringSemicoloned(localData) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(localData) + "\r\n"; + } } ret += hilight("}"); } diff --git a/trunk/src/com/jpexs/decompiler/flash/graph/SwitchItem.java b/trunk/src/com/jpexs/decompiler/flash/graph/SwitchItem.java index 7f3c869ed..dd9e2d41f 100644 --- a/trunk/src/com/jpexs/decompiler/flash/graph/SwitchItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/graph/SwitchItem.java @@ -57,7 +57,9 @@ public class SwitchItem extends LoopItem implements Block { } ret += Graph.INDENTOPEN + "\r\n"; for (int j = 0; j < caseCommands.get(i).size(); j++) { - ret += caseCommands.get(i).get(j).toStringSemicoloned(localData) + "\r\n"; + if (!caseCommands.get(i).get(j).isEmpty()) { + ret += caseCommands.get(i).get(j).toStringSemicoloned(localData) + "\r\n"; + } } ret += Graph.INDENTCLOSE + "\r\n"; } @@ -66,7 +68,9 @@ public class SwitchItem extends LoopItem implements Block { ret += hilight("default") + ":\r\n"; ret += Graph.INDENTOPEN + "\r\n"; for (int j = 0; j < defaultCommands.size(); j++) { - ret += defaultCommands.get(j).toStringSemicoloned(localData) + "\r\n"; + if (!defaultCommands.get(j).isEmpty()) { + ret += defaultCommands.get(j).toStringSemicoloned(localData) + "\r\n"; + } } ret += Graph.INDENTCLOSE + "\r\n"; } diff --git a/trunk/src/com/jpexs/decompiler/flash/graph/WhileItem.java b/trunk/src/com/jpexs/decompiler/flash/graph/WhileItem.java index 640a26c41..a695e3f85 100644 --- a/trunk/src/com/jpexs/decompiler/flash/graph/WhileItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/graph/WhileItem.java @@ -43,7 +43,9 @@ public class WhileItem extends LoopItem implements Block { ret += "loop" + loop.id + ":\r\n"; ret += hilight("while(") + (expression == null ? "null" : expression.toString(localData)) + hilight(")") + "\r\n{\r\n"; for (GraphTargetItem ti : commands) { - ret += ti.toStringSemicoloned(localData) + "\r\n"; + if (!ti.isEmpty()) { + ret += ti.toStringSemicoloned(localData) + "\r\n"; + } } ret += hilight("}") + "\r\n"; ret += ":loop" + loop.id;