java-decompiler: better diagnostic
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>
Wed, 12 Nov 2014 11:21:42 +0000 (12:21 +0100)
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>
Wed, 12 Nov 2014 11:21:42 +0000 (12:21 +0100)
plugins/java-decompiler/engine/src/org/jetbrains/java/decompiler/main/rels/ClassWrapper.java
plugins/java-decompiler/plugin/src/org/jetbrains/java/decompiler/IdeaDecompiler.java
plugins/java-decompiler/plugin/src/org/jetbrains/java/decompiler/IdeaLogger.java

index fcc1a5dd022561e0bab69dcce2266d3cc4a2effc..55f7dd39ac510749096efc1aea19fdfadf9b3616 100644 (file)
@@ -61,6 +61,7 @@ public class ClassWrapper {
     }
 
     int maxSec = Integer.parseInt(DecompilerContext.getProperty(IFernflowerPreferences.MAX_PROCESSING_METHOD).toString());
+    boolean testMode = DecompilerContext.getOption(IFernflowerPreferences.UNIT_TEST_MODE);
 
     for (StructMethod mt : classStruct.getMethods()) {
       DecompilerContext.getLogger().startMethod(mt.getName() + " " + mt.getDescriptor());
@@ -83,7 +84,7 @@ public class ClassWrapper {
 
       try {
         if (mt.containsCode()) {
-          if (maxSec == 0) {
+          if (maxSec == 0 || testMode) {
             root = MethodProcessorRunnable.codeToJava(mt, varProc);
           }
           else {
index 130acb7ec7da26f666c9422f1ab890fe67e9b4f3..b67f88b8b1ed514d17d22833f9b3302d011c2de7 100644 (file)
@@ -109,6 +109,10 @@ public class IdeaDecompiler extends ClassFileDecompilers.Light {
         }
       });
     }
+
+    if (app.isUnitTestMode()) {
+      myOptions.put(IFernflowerPreferences.UNIT_TEST_MODE, "1");
+    }
   }
 
   private void showLegalNotice(final Project project, final VirtualFile file) {
index c9adb6c7417da0ec4ba7c035210b8a58eb3fa0ba..53fe6ed1dbaea9c6e46fae47c8628beb4a655438 100644 (file)
@@ -44,7 +44,8 @@ public class IdeaLogger extends IFernflowerLogger {
     if (t instanceof InternalException) throw (InternalException)t;
     else if (t instanceof ProcessCanceledException) throw (ProcessCanceledException)t;
     else if (t instanceof InterruptedException) throw new ProcessCanceledException(t);
-    else throw new InternalException(message, t);
+    if (myClass != null) message = message + " [" + myClass + "]";
+    throw new InternalException(message, t);
   }
 
   @Override