From 725da3d2b3c4e4410ccbd661e83230b357428fab Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 18 Sep 2014 23:03:19 -0400 Subject: fixed issue with inner class detection --- src/cuchaz/enigma/analysis/JarIndex.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/cuchaz/enigma/analysis/JarIndex.java b/src/cuchaz/enigma/analysis/JarIndex.java index f4843164..6c955bcd 100644 --- a/src/cuchaz/enigma/analysis/JarIndex.java +++ b/src/cuchaz/enigma/analysis/JarIndex.java @@ -417,12 +417,11 @@ public class JarIndex continue; } + ClassEntry classEntry = new ClassEntry( Descriptor.toJvmName( c.getName() ) ); + ConstructorEntry constructorEntry = new ConstructorEntry( classEntry, constructor.getMethodInfo().getDescriptor() ); + // who calls this constructor? Set callerClasses = Sets.newHashSet(); - ConstructorEntry constructorEntry = new ConstructorEntry( - new ClassEntry( Descriptor.toJvmName( c.getName() ) ), - constructor.getMethodInfo().getDescriptor() - ); for( EntryReference reference : getBehaviorReferences( constructorEntry ) ) { callerClasses.add( reference.context.getClassEntry() ); @@ -431,7 +430,13 @@ public class JarIndex // is this called by exactly one class? if( callerClasses.size() == 1 ) { - return callerClasses.iterator().next().getName(); + ClassEntry callerClassEntry = callerClasses.iterator().next(); + + // does this class make sense as an outer class? + if( !callerClassEntry.equals( classEntry ) ) + { + return callerClassEntry.getName(); + } } else if( callerClasses.size() > 1 ) { -- cgit v1.2.3