writing line separators fixed

This commit is contained in:
Roman Shevchenko 2014-06-23 13:17:22 +02:00
parent c5c596b164
commit 5e68e6346c
4 changed files with 51 additions and 47 deletions

View File

@ -184,7 +184,7 @@ public class ClassWriter {
// closing up class definition
writer.write(" {");
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
writer.write(strwriter.toString());
@ -230,7 +230,7 @@ public class ClassWriter {
(!isBridge || !DecompilerContext.getOption(IFernflowerPreferences.REMOVE_BRIDGE)) &&
!wrapper.getHideMembers().contains(InterpreterUtil.makeUniqueKey(mt.getName(), mt.getDescriptor()))) {
if(!mthidden && (!firstmt || node.type != ClassNode.CLASS_ANONYMOUS)) {
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
firstmt = false;
}
@ -257,14 +257,14 @@ public class ClassWriter {
if(isEnum) {
if(enumfields) {
bufstrwriter1.write(",");
bufstrwriter1.newLine();
bufstrwriter1.write(DecompilerContext.getNewLineSeparator());
} else {
enumfields = true;
}
} else {
if(enumfields) {
bufstrwriter1.write(";");
bufstrwriter1.newLine();
bufstrwriter1.write(DecompilerContext.getNewLineSeparator());
enumfields = false;
}
}
@ -276,15 +276,15 @@ public class ClassWriter {
if(enumfields) {
bufstrwriter1.write(";");
bufstrwriter1.newLine();
bufstrwriter1.write(DecompilerContext.getNewLineSeparator());
}
bufstrwriter1.flush();
if(fields_count > 0) {
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
writer.write(strwriter1.toString());
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
@ -299,7 +299,7 @@ public class ClassWriter {
boolean isSynthetic = (innercl.access_flags & CodeConstants.ACC_SYNTHETIC) != 0 || innercl.getAttributes().containsKey("Synthetic");
if((!isSynthetic || !DecompilerContext.getOption(IFernflowerPreferences.REMOVE_SYNTHETIC))
&& !wrapper.getHideMembers().contains(innercl.qualifiedName)) {
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
classToJava(inner, writer, indent+1);
}
}
@ -308,7 +308,7 @@ public class ClassWriter {
writer.write(InterpreterUtil.getIndentString(indent));
writer.write("}");
if(node.type != ClassNode.CLASS_ANONYMOUS) {
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
writer.flush();
@ -321,7 +321,7 @@ public class ClassWriter {
if(node.type == ClassNode.CLASS_ANONYMOUS) {
writer.write(" {");
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
} else {
String indstr = InterpreterUtil.getIndentString(indent);
@ -341,21 +341,21 @@ public class ClassWriter {
if(oldname != null) {
writer.write(indstr);
writer.write("// $FF: renamed from: "+getDescriptorPrintOut(oldname, 0));
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
}
if(isDeprecated) {
writer.write(indstr);
writer.write("/** @deprecated */");
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
// class annotations
List<AnnotationExprent> lstAnn = getAllAnnotations(cl.getAttributes());
for(AnnotationExprent annexpr : lstAnn) {
writer.write(annexpr.toJava(indent));
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
boolean isSynthetic = (flags & CodeConstants.ACC_SYNTHETIC) != 0 || cl.getAttributes().containsKey("Synthetic");
@ -363,7 +363,7 @@ public class ClassWriter {
if(isSynthetic) {
writer.write(indstr);
writer.write("// $FF: synthetic class");
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
writer.write(indstr);
@ -456,7 +456,7 @@ public class ClassWriter {
}
writer.write("{");
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
}
@ -475,7 +475,7 @@ public class ClassWriter {
writer.write(indstr);
writer.write("// $FF: renamed from: "+element[1]+" "+getDescriptorPrintOut(element[2], 1));
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
}
@ -484,14 +484,14 @@ public class ClassWriter {
if(isDeprecated) {
writer.write(indstr);
writer.write("/** @deprecated */");
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
// field annotations
List<AnnotationExprent> lstAnn = getAllAnnotations(fd.getAttributes());
for(AnnotationExprent annexpr : lstAnn) {
writer.write(annexpr.toJava(indent));
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
boolean isSynthetic = (flags & CodeConstants.ACC_SYNTHETIC) != 0 || fd.getAttributes().containsKey("Synthetic");
@ -500,7 +500,7 @@ public class ClassWriter {
if(isSynthetic) {
writer.write(indstr);
writer.write("// $FF: synthetic field");
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
writer.write(indstr);
@ -563,7 +563,7 @@ public class ClassWriter {
if(!isEnum) {
writer.write(";");
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
}
@ -627,7 +627,7 @@ public class ClassWriter {
bufstrwriter.write(")");
bufstrwriter.write(" ");
bufstrwriter.write("{");
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
}
RootStatement root = wrapper.getMethodWrapper(mt.getName(), mt.getDescriptor()).root;
@ -645,12 +645,12 @@ public class ClassWriter {
if(meth.decompiledWithErrors) {
bufstrwriter.write(InterpreterUtil.getIndentString(indent+1));
bufstrwriter.write("// $FF: Couldn't be decompiled");
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
}
if(!code_only) {
bufstrwriter.write(indstr+"}");
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
}
bufstrwriter.flush();
@ -701,21 +701,21 @@ public class ClassWriter {
bufstrwriter.write(indstr);
bufstrwriter.write("// $FF: renamed from: "+element[1]+" "+getDescriptorPrintOut(element[2], 2));
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
}
}
if(isDeprecated) {
writer.write(indstr);
writer.write("/** @deprecated */");
writer.newLine();
writer.write(DecompilerContext.getNewLineSeparator());
}
// method annotations
List<AnnotationExprent> lstAnn = getAllAnnotations(mt.getAttributes());
for(AnnotationExprent annexpr : lstAnn) {
bufstrwriter.write(annexpr.toJava(indent));
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
}
boolean isSynthetic = (flags & CodeConstants.ACC_SYNTHETIC) != 0 || mt.getAttributes().containsKey("Synthetic");
@ -724,13 +724,13 @@ public class ClassWriter {
if(isSynthetic) {
bufstrwriter.write(indstr);
bufstrwriter.write("// $FF: synthetic method");
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
}
if(isBridge) {
bufstrwriter.write(indstr);
bufstrwriter.write("// $FF: bridge method");
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
}
bufstrwriter.write(indstr);
@ -843,7 +843,7 @@ public class ClassWriter {
for(int j=0;j<annotations.size();j++) {
AnnotationExprent annexpr = annotations.get(j);
if(annexpr.getAnnotationType() == AnnotationExprent.ANNOTATION_NORMAL) {
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
bufstrwriter.write(annexpr.toJava(indent+1));
} else {
bufstrwriter.write(annexpr.toJava(0));
@ -945,13 +945,13 @@ public class ClassWriter {
}
bufstrwriter.write(";");
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
} else {
if(!clinit && !dinit) {
bufstrwriter.write(" ");
}
bufstrwriter.write("{");
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
RootStatement root = wrapper.getMethodWrapper(mt.getName(), mt.getDescriptor()).root;
@ -982,11 +982,11 @@ public class ClassWriter {
if(meth.decompiledWithErrors) {
bufstrwriter.write(InterpreterUtil.getIndentString(indent+1));
bufstrwriter.write("// $FF: Couldn't be decompiled");
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
}
bufstrwriter.write(indstr+"}");
bufstrwriter.newLine();
bufstrwriter.write(DecompilerContext.getNewLineSeparator());
}
bufstrwriter.flush();

View File

@ -268,29 +268,30 @@ public class ClassesProcessor {
if(DecompilerContext.getOption(IFernflowerPreferences.OUTPUT_COPYRIGHT_COMMENT)) {
outwriter.write("// Decompiled by: Fernflower "+Fernflower.version);
outwriter.newLine();
outwriter.write(DecompilerContext.getNewLineSeparator());
outwriter.write("// Date: "+new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date()));
outwriter.newLine();
outwriter.write(DecompilerContext.getNewLineSeparator());
outwriter.write("// Copyright: 2008-2010, Stiver");
outwriter.newLine();
outwriter.write(DecompilerContext.getNewLineSeparator());
outwriter.write("// Home page: http://www.reversed-java.com");
outwriter.newLine();
outwriter.newLine();
outwriter.write(DecompilerContext.getNewLineSeparator());
outwriter.write(DecompilerContext.getNewLineSeparator());
}
int index = cl.qualifiedName.lastIndexOf("/");
if(index >= 0) {
String strpackage = cl.qualifiedName.substring(0, index).replaceAll("/",".");
outwriter.write("package "+strpackage+";");
outwriter.newLine();
outwriter.newLine();
String packageName = cl.qualifiedName.substring(0, index).replaceAll("/",".");
outwriter.write("package ");
outwriter.write(packageName);
outwriter.write(";");
outwriter.write(DecompilerContext.getNewLineSeparator());
outwriter.write(DecompilerContext.getNewLineSeparator());
}
DecompilerContext.setProperty(DecompilerContext.CURRENT_CLASSNODE, root);
DecompilerContext.getImpcollector().writeImports(outwriter);
outwriter.newLine();
outwriter.write(DecompilerContext.getNewLineSeparator());
outwriter.write(strwriter.toString());
outwriter.flush();

View File

@ -190,6 +190,7 @@ public class DecompilerContext {
}
public static String getNewLineSeparator() {
return getOption(IFernflowerPreferences.NEW_LINE_SEPARATOR) ? IFernflowerPreferences.LINE_SEPARATOR_LIN : IFernflowerPreferences.LINE_SEPARATOR_WIN ;
return getOption(IFernflowerPreferences.NEW_LINE_SEPARATOR) ?
IFernflowerPreferences.LINE_SEPARATOR_LIN : IFernflowerPreferences.LINE_SEPARATOR_WIN ;
}
}

View File

@ -117,8 +117,10 @@ public class ImportCollector {
public void writeImports(BufferedWriter writer) throws IOException {
for(String s: packImports()) {
writer.write("import "+s+";");
writer.newLine();
writer.write("import ");
writer.write(s);
writer.write(";");
writer.write(DecompilerContext.getNewLineSeparator());
}
}