summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/mapping/MappingsReader.java
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/mapping/MappingsReader.java
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/mapping/MappingsReader.java')
-rw-r--r--src/cuchaz/enigma/mapping/MappingsReader.java41
1 files changed, 23 insertions, 18 deletions
diff --git a/src/cuchaz/enigma/mapping/MappingsReader.java b/src/cuchaz/enigma/mapping/MappingsReader.java
index 5cbad59..4bd9f12 100644
--- a/src/cuchaz/enigma/mapping/MappingsReader.java
+++ b/src/cuchaz/enigma/mapping/MappingsReader.java
@@ -78,10 +78,11 @@ public class MappingsReader
78 78
79 if( token.equalsIgnoreCase( "CLASS" ) ) 79 if( token.equalsIgnoreCase( "CLASS" ) )
80 { 80 {
81 ClassMapping classMapping = readClass( parts ); 81 ClassMapping classMapping;
82 if( indent == 0 ) 82 if( indent == 0 )
83 { 83 {
84 // outer class 84 // outer class
85 classMapping = readClass( parts, false );
85 mappings.addClassMapping( classMapping ); 86 mappings.addClassMapping( classMapping );
86 } 87 }
87 else if( indent == 1 ) 88 else if( indent == 1 )
@@ -91,11 +92,13 @@ public class MappingsReader
91 { 92 {
92 throw new MappingParseException( lineNumber, "Unexpected CLASS entry here!" ); 93 throw new MappingParseException( lineNumber, "Unexpected CLASS entry here!" );
93 } 94 }
95
96 classMapping = readClass( parts, true );
94 ((ClassMapping)mappingStack.getFirst()).addInnerClassMapping( classMapping ); 97 ((ClassMapping)mappingStack.getFirst()).addInnerClassMapping( classMapping );
95 } 98 }
96 else 99 else
97 { 100 {
98 throw new MappingParseException( lineNumber, "Unexpected CLASS entry here!" ); 101 throw new MappingParseException( lineNumber, "Unexpected CLASS entry nesting!" );
99 } 102 }
100 mappingStack.push( classMapping ); 103 mappingStack.push( classMapping );
101 } 104 }
@@ -140,28 +143,30 @@ public class MappingsReader
140 return new ArgumentMapping( Integer.parseInt( parts[1] ), parts[2] ); 143 return new ArgumentMapping( Integer.parseInt( parts[1] ), parts[2] );
141 } 144 }
142 145
143 private ClassMapping readClass( String[] parts ) 146 private ClassMapping readClass( String[] parts, boolean makeSimple )
144 { 147 {
145 if( parts.length == 2 ) 148 if( parts.length == 2 )
146 { 149 {
147 String obfName = parts[1]; 150 String obfName = processName( parts[1], makeSimple );
148 return new ClassMapping( moveClassOutOfDefaultPackage( obfName, Constants.NonePackage ) ); 151 return new ClassMapping( obfName );
149 } 152 }
150 else 153 else
151 { 154 {
152 String obfName = parts[1]; 155 String obfName = processName( parts[1], makeSimple );
153 String deobfName = parts[2]; 156 String deobfName = processName( parts[2], makeSimple );
154 if( obfName.equals( deobfName ) ) 157 return new ClassMapping( obfName, deobfName );
155 { 158 }
156 return new ClassMapping( moveClassOutOfDefaultPackage( obfName, Constants.NonePackage ) ); 159 }
157 } 160
158 else 161 private String processName( String name, boolean makeSimple )
159 { 162 {
160 return new ClassMapping( 163 if( makeSimple )
161 moveClassOutOfDefaultPackage( parts[1], Constants.NonePackage ), 164 {
162 moveClassOutOfDefaultPackage( parts[2], Constants.NonePackage ) 165 return new ClassEntry( name ).getSimpleName();
163 ); 166 }
164 } 167 else
168 {
169 return moveClassOutOfDefaultPackage( name, Constants.NonePackage );
165 } 170 }
166 } 171 }
167 172