diff options
author | Roman Shevchenko <roman.shevchenko@jetbrains.com> | 2014-06-26 12:42:49 +0200 |
---|---|---|
committer | Roman Shevchenko <roman.shevchenko@jetbrains.com> | 2014-06-26 12:42:49 +0200 |
commit | 95476dc36b6560b86994b58c07931157b67388fa (patch) | |
tree | 11c06c32b1033bcafeab3ad3f979be94355590fe | |
parent | 879330b55589d3b6b4ccf8f37673718002cdd017 (diff) | |
download | fernflower-95476dc36b6560b86994b58c07931157b67388fa.tar fernflower-95476dc36b6560b86994b58c07931157b67388fa.tar.gz fernflower-95476dc36b6560b86994b58c07931157b67388fa.tar.lz fernflower-95476dc36b6560b86994b58c07931157b67388fa.tar.xz fernflower-95476dc36b6560b86994b58c07931157b67388fa.zip |
better filtering of synthetic inner classes
-rw-r--r-- | src/de/fernflower/main/ClassWriter.java | 2 | ||||
-rw-r--r-- | src/de/fernflower/main/rels/NestedClassProcessor.java | 9 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/de/fernflower/main/ClassWriter.java b/src/de/fernflower/main/ClassWriter.java index 72dcf97..6a12cc5 100644 --- a/src/de/fernflower/main/ClassWriter.java +++ b/src/de/fernflower/main/ClassWriter.java @@ -296,7 +296,7 @@ public class ClassWriter { if(inner.type == ClassNode.CLASS_MEMBER) { StructClass innercl = inner.classStruct; - boolean isSynthetic = (innercl.access_flags & CodeConstants.ACC_SYNTHETIC) != 0 || innercl.getAttributes().containsKey("Synthetic"); + boolean isSynthetic = ((inner.access | innercl.access_flags) & CodeConstants.ACC_SYNTHETIC) != 0 || innercl.getAttributes().containsKey("Synthetic"); if((!isSynthetic || !DecompilerContext.getOption(IFernflowerPreferences.REMOVE_SYNTHETIC)) && !wrapper.getHideMembers().contains(innercl.qualifiedName)) { writer.write(DecompilerContext.getNewLineSeparator()); diff --git a/src/de/fernflower/main/rels/NestedClassProcessor.java b/src/de/fernflower/main/rels/NestedClassProcessor.java index 4b7a466..6667f02 100644 --- a/src/de/fernflower/main/rels/NestedClassProcessor.java +++ b/src/de/fernflower/main/rels/NestedClassProcessor.java @@ -80,11 +80,12 @@ public class NestedClassProcessor { for(ClassNode child : node.nested) { // ensure not-empty class name if((child.type == ClassNode.CLASS_LOCAL || child.type == ClassNode.CLASS_MEMBER) && child.simpleName == null) { - if((child.classStruct.access_flags & CodeConstants.ACC_SYNTHETIC) == 0) { - DecompilerContext.getLogger().writeMessage("Nameless local or member class " + child.classStruct.qualifiedName + "!", IFernflowerLogger.WARNING); - child.simpleName = "NamelessClass_" + (++nameless); - } else { + StructClass cl = child.classStruct; + if(((child.access | cl.access_flags) & CodeConstants.ACC_SYNTHETIC) != 0 || cl.getAttributes().containsKey("Synthetic")) { child.simpleName = "SyntheticClass_" + (++synthetics); + } else { + DecompilerContext.getLogger().writeMessage("Nameless local or member class " + cl.qualifiedName + "!", IFernflowerLogger.WARNING); + child.simpleName = "NamelessClass_" + (++nameless); } } } |