From 9dd59158e14ea3264d3b04eae8f6cbc7d8f6b8cd Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 30 Apr 2017 10:08:12 -0400 Subject: [PATCH] InitializerProcessor: disable static and dynamic initializers This makes it harder for the mapper since it can't look at initialization order of field initializers. This also causes the initialization order of fields to be dependent on the order they are in the class file, which can produce broken code. See IDEA-172187. --- .../jetbrains/java/decompiler/main/InitializerProcessor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/jetbrains/java/decompiler/main/InitializerProcessor.java b/src/org/jetbrains/java/decompiler/main/InitializerProcessor.java index d9a0a3d..a6f157d 100644 --- a/src/org/jetbrains/java/decompiler/main/InitializerProcessor.java +++ b/src/org/jetbrains/java/decompiler/main/InitializerProcessor.java @@ -38,10 +38,10 @@ public class InitializerProcessor { MethodWrapper meth = wrapper.getMethodWrapper(CodeConstants.CLINIT_NAME, "()V"); if (meth != null && meth.root != null) { // successfully decompiled static constructor - extractStaticInitializers(wrapper, meth); + //extractStaticInitializers(wrapper, meth); } - extractDynamicInitializers(wrapper); + //extractDynamicInitializers(wrapper); // required e.g. if anonymous class is being decompiled as a standard one. // This can happen if InnerClasses attributes are erased