diff options
author | Thinkofdeath <thinkofdeath@spigotmc.org> | 2014-12-09 10:17:27 +0000 |
---|---|---|
committer | Thinkofdeath <thinkofdeath@spigotmc.org> | 2014-12-11 14:50:16 +0000 |
commit | 1f6417624639de346ffa74351d30b58d30f9e80b (patch) | |
tree | 036118b0c09135e1bc579e0a3a51bc0a3ecd861d /src/org/jetbrains/java/decompiler/modules/decompiler/ExprProcessor.java | |
parent | b98e02e557eb7c30d6425ffd9cfa8b7b71b164dc (diff) | |
download | fernflower-1f6417624639de346ffa74351d30b58d30f9e80b.tar fernflower-1f6417624639de346ffa74351d30b58d30f9e80b.tar.gz fernflower-1f6417624639de346ffa74351d30b58d30f9e80b.tar.lz fernflower-1f6417624639de346ffa74351d30b58d30f9e80b.tar.xz fernflower-1f6417624639de346ffa74351d30b58d30f9e80b.zip |
Mavenized and fixed formatting to match jacobeformatting
Diffstat (limited to 'src/org/jetbrains/java/decompiler/modules/decompiler/ExprProcessor.java')
-rw-r--r-- | src/org/jetbrains/java/decompiler/modules/decompiler/ExprProcessor.java | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/ExprProcessor.java b/src/org/jetbrains/java/decompiler/modules/decompiler/ExprProcessor.java index 7b2f3a2..2450475 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/ExprProcessor.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/ExprProcessor.java @@ -42,6 +42,7 @@ import org.jetbrains.java.decompiler.util.InterpreterUtil; import java.util.*; import org.jetbrains.java.decompiler.util.SortUtil; +import org.jetbrains.java.decompiler.util.Util; public class ExprProcessor implements CodeConstants { @@ -758,10 +759,18 @@ public class ExprProcessor implements CodeConstants { } public static String jmpWrapper(Statement stat, int indent, boolean semicolon, BytecodeMappingTracer tracer) { - StringBuilder buf = new StringBuilder(stat.toJava(indent, tracer)); - String new_line_separator = DecompilerContext.getNewLineSeparator(); + StringBuilder buf = new StringBuilder(); + String content = stat.toJava(indent, tracer); + if (!(stat instanceof IfStatement) && !(stat instanceof DoStatement) && !(stat instanceof SequenceStatement)) { + content = Util.rtrim(content); + } + buf.append(content); + if (!(stat instanceof IfStatement) && !(stat instanceof DoStatement) && !(stat instanceof SequenceStatement) && buf.length() != 0) { + buf.append(new_line_separator); + } + List<StatEdge> lstSuccs = stat.getSuccessorEdges(Statement.STATEDGE_DIRECT_ALL); if (lstSuccs.size() == 1) { StatEdge edge = lstSuccs.get(0); @@ -815,12 +824,39 @@ public class ExprProcessor implements CodeConstants { String new_line_separator = DecompilerContext.getNewLineSeparator(); StringBuilder buf = new StringBuilder(); - // Spigot Start + // Spigot Start + boolean inVar = false; + boolean bloodySpecialCaseForNewAssignments = false; for (Iterator<Exprent> iter = SortUtil.sortIndexed(lst.iterator()); iter.hasNext();) { Exprent expr = iter.next(); // Spigot End String content = expr.toJava(indent, tracer); if (content.length() > 0) { + + if (expr instanceof VarExprent || expr instanceof AssignmentExprent) { + inVar = true; + boolean wasASpecialLittleFlower = bloodySpecialCaseForNewAssignments; + bloodySpecialCaseForNewAssignments = expr instanceof VarExprent; + if (expr instanceof AssignmentExprent && ((AssignmentExprent) expr).getLeft() instanceof VarExprent) { + AssignmentExprent assignmentExprent = (AssignmentExprent) expr; + VarExprent var = (VarExprent) assignmentExprent.getLeft(); + bloodySpecialCaseForNewAssignments = var.isDefinition(); + } + if (wasASpecialLittleFlower && !bloodySpecialCaseForNewAssignments) { + buf.append(new_line_separator); + } + } else if (inVar) { + inVar = false; + if (!(expr instanceof InvocationExprent + || expr instanceof ExitExprent + || expr instanceof FunctionExprent + ) + || bloodySpecialCaseForNewAssignments) { + bloodySpecialCaseForNewAssignments = false; + buf.append(new_line_separator); + } + } + if (expr.type != Exprent.EXPRENT_VAR || !((VarExprent)expr).isClassdef()) { buf.append(indstr); } @@ -832,6 +868,7 @@ public class ExprProcessor implements CodeConstants { buf.append(";"); } buf.append(new_line_separator); + tracer.incrementCurrentSourceLine(); } } @@ -895,7 +932,7 @@ public class ExprProcessor implements CodeConstants { res = "(" + res + ")"; } - res = "(" + getCastTypeName(leftType) + ")" + res; + res = "(" + getCastTypeName(leftType) + ") " + res; ret = true; } |