summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis
diff options
context:
space:
mode:
authorGravatar jeff2014-09-30 00:25:36 -0400
committerGravatar jeff2014-09-30 00:25:36 -0400
commita83bbfd5c510367a194073b1db132022cacf65ed (patch)
treeabfd7520b79ef1e64b7430bd81e75a30353b7f14 /src/cuchaz/enigma/analysis
parentfixed recognition of static initializer tokens (diff)
downloadenigma-fork-a83bbfd5c510367a194073b1db132022cacf65ed.tar.gz
enigma-fork-a83bbfd5c510367a194073b1db132022cacf65ed.tar.xz
enigma-fork-a83bbfd5c510367a194073b1db132022cacf65ed.zip
fixed nasty issue with renaming inner classes, but alas, more bugs remain
Diffstat (limited to 'src/cuchaz/enigma/analysis')
-rw-r--r--src/cuchaz/enigma/analysis/EntryReference.java15
-rw-r--r--src/cuchaz/enigma/analysis/JarIndex.java7
-rw-r--r--src/cuchaz/enigma/analysis/SourceIndex.java2
3 files changed, 19 insertions, 5 deletions
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<E extends Entry, C extends Entry>
79 return entry; 79 return entry;
80 } 80 }
81 81
82 public String getNamableName( )
83 {
84 if( getNameableEntry() instanceof ClassEntry )
85 {
86 ClassEntry classEntry = (ClassEntry)getNameableEntry();
87 if( classEntry.isInnerClass() )
88 {
89 // make sure we only rename the inner class name
90 return classEntry.getInnerClassName();
91 }
92 }
93
94 return getNameableEntry().getName();
95 }
96
82 @Override 97 @Override
83 public int hashCode( ) 98 public int hashCode( )
84 { 99 {
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
164 String outerClassName = findOuterClass( c ); 164 String outerClassName = findOuterClass( c );
165 if( outerClassName != null ) 165 if( outerClassName != null )
166 { 166 {
167 String innerClassName = Descriptor.toJvmName( c.getName() ); 167 String innerClassName = c.getSimpleName();
168 m_innerClasses.put( outerClassName, innerClassName ); 168 m_innerClasses.put( outerClassName, innerClassName );
169 m_outerClasses.put( innerClassName, outerClassName ); 169 boolean innerWasAdded = m_outerClasses.put( innerClassName, outerClassName ) == null;
170 assert( innerWasAdded );
170 171
171 BehaviorEntry enclosingBehavior = isAnonymousClass( c, outerClassName ); 172 BehaviorEntry enclosingBehavior = isAnonymousClass( c, outerClassName );
172 if( enclosingBehavior != null ) 173 if( enclosingBehavior != null )
@@ -188,7 +189,7 @@ public class JarIndex
188 Map<String,String> renames = Maps.newHashMap(); 189 Map<String,String> renames = Maps.newHashMap();
189 for( Map.Entry<String,String> entry : m_outerClasses.entrySet() ) 190 for( Map.Entry<String,String> entry : m_outerClasses.entrySet() )
190 { 191 {
191 renames.put( entry.getKey(), entry.getValue() + "$" + new ClassEntry( entry.getKey() ).getSimpleName() ); 192 renames.put( Constants.NonePackage + "/" + entry.getKey(), entry.getValue() + "$" + entry.getKey() );
192 } 193 }
193 EntryRenamer.renameClassesInSet( renames, m_obfClassEntries ); 194 EntryRenamer.renameClassesInSet( renames, m_obfClassEntries );
194 m_translationIndex.renameClasses( renames ); 195 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
89 // DEBUG 89 // DEBUG
90 //System.out.println( String.format( "%s \"%s\" region: %s", node.getNodeType(), name, region ) ); 90 //System.out.println( String.format( "%s \"%s\" region: %s", node.getNodeType(), name, region ) );
91 91
92 /* TODO: double check that we still need this
93 // for tokens representing inner classes, make sure we only get the simple name 92 // for tokens representing inner classes, make sure we only get the simple name
94 int pos = node.getText().lastIndexOf( '$' ); 93 int pos = node.getText().lastIndexOf( '$' );
95 if( pos >= 0 ) 94 if( pos >= 0 )
96 { 95 {
97 token.end -= pos + 1; 96 token.end -= pos + 1;
98 } 97 }
99 */
100 98
101 return token; 99 return token;
102 } 100 }