From a83bbfd5c510367a194073b1db132022cacf65ed Mon Sep 17 00:00:00 2001 From: jeff Date: Tue, 30 Sep 2014 00:25:36 -0400 Subject: fixed nasty issue with renaming inner classes, but alas, more bugs remain --- src/cuchaz/enigma/analysis/EntryReference.java | 15 +++++++++++++++ src/cuchaz/enigma/analysis/JarIndex.java | 7 ++++--- src/cuchaz/enigma/analysis/SourceIndex.java | 2 -- 3 files changed, 19 insertions(+), 5 deletions(-) (limited to 'src/cuchaz/enigma/analysis') diff --git a/src/cuchaz/enigma/analysis/EntryReference.java b/src/cuchaz/enigma/analysis/EntryReference.java index 4da2f58..0cde875 100644 --- a/src/cuchaz/enigma/analysis/EntryReference.java +++ b/src/cuchaz/enigma/analysis/EntryReference.java @@ -79,6 +79,21 @@ public class EntryReference return entry; } + public String getNamableName( ) + { + if( getNameableEntry() instanceof ClassEntry ) + { + ClassEntry classEntry = (ClassEntry)getNameableEntry(); + if( classEntry.isInnerClass() ) + { + // make sure we only rename the inner class name + return classEntry.getInnerClassName(); + } + } + + return getNameableEntry().getName(); + } + @Override public int hashCode( ) { diff --git a/src/cuchaz/enigma/analysis/JarIndex.java b/src/cuchaz/enigma/analysis/JarIndex.java index 604e485..ba08206 100644 --- a/src/cuchaz/enigma/analysis/JarIndex.java +++ b/src/cuchaz/enigma/analysis/JarIndex.java @@ -164,9 +164,10 @@ public class JarIndex String outerClassName = findOuterClass( c ); if( outerClassName != null ) { - String innerClassName = Descriptor.toJvmName( c.getName() ); + String innerClassName = c.getSimpleName(); m_innerClasses.put( outerClassName, innerClassName ); - m_outerClasses.put( innerClassName, outerClassName ); + boolean innerWasAdded = m_outerClasses.put( innerClassName, outerClassName ) == null; + assert( innerWasAdded ); BehaviorEntry enclosingBehavior = isAnonymousClass( c, outerClassName ); if( enclosingBehavior != null ) @@ -188,7 +189,7 @@ public class JarIndex Map renames = Maps.newHashMap(); for( Map.Entry entry : m_outerClasses.entrySet() ) { - renames.put( entry.getKey(), entry.getValue() + "$" + new ClassEntry( entry.getKey() ).getSimpleName() ); + renames.put( Constants.NonePackage + "/" + entry.getKey(), entry.getValue() + "$" + entry.getKey() ); } EntryRenamer.renameClassesInSet( renames, m_obfClassEntries ); m_translationIndex.renameClasses( renames ); diff --git a/src/cuchaz/enigma/analysis/SourceIndex.java b/src/cuchaz/enigma/analysis/SourceIndex.java index faae1a1..21a499e 100644 --- a/src/cuchaz/enigma/analysis/SourceIndex.java +++ b/src/cuchaz/enigma/analysis/SourceIndex.java @@ -89,14 +89,12 @@ public class SourceIndex // DEBUG //System.out.println( String.format( "%s \"%s\" region: %s", node.getNodeType(), name, region ) ); - /* TODO: double check that we still need this // for tokens representing inner classes, make sure we only get the simple name int pos = node.getText().lastIndexOf( '$' ); if( pos >= 0 ) { token.end -= pos + 1; } - */ return token; } -- cgit v1.2.3