summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar asiekierka2016-10-18 17:35:11 +0200
committerGravatar asiekierka2016-10-18 17:35:11 +0200
commiteb93bc2cb083409c123463a20844f7e1ed58deab (patch)
tree3a7ded44c9b24ef92a5c07a63ce04212b4606393
parentRevert "apply similar fix to fields" (diff)
downloadenigma-eb93bc2cb083409c123463a20844f7e1ed58deab.tar.gz
enigma-eb93bc2cb083409c123463a20844f7e1ed58deab.tar.xz
enigma-eb93bc2cb083409c123463a20844f7e1ed58deab.zip
remove none/ prefix
-rw-r--r--src/main/java/cuchaz/enigma/Constants.java1
-rw-r--r--src/main/java/cuchaz/enigma/Deobfuscator.java2
-rw-r--r--src/main/java/cuchaz/enigma/TranslatingTypeLoader.java8
-rw-r--r--src/main/java/cuchaz/enigma/analysis/JarIndex.java12
-rw-r--r--src/main/java/cuchaz/enigma/convert/ClassIdentity.java2
-rw-r--r--src/main/java/cuchaz/enigma/convert/MappingsConverter.java2
-rw-r--r--src/main/java/cuchaz/enigma/gui/Gui.java8
-rw-r--r--src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java5
-rw-r--r--src/main/java/cuchaz/enigma/mapping/MappingsSRGWriter.java12
-rw-r--r--src/test/java/cuchaz/enigma/TestDeobfed.java88
-rw-r--r--src/test/java/cuchaz/enigma/TestDeobfuscator.java4
-rw-r--r--src/test/java/cuchaz/enigma/TestInnerClasses.java28
-rw-r--r--src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java10
-rw-r--r--src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java8
-rw-r--r--src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java62
-rw-r--r--src/test/java/cuchaz/enigma/TestTokensConstructors.java54
-rw-r--r--src/test/java/cuchaz/enigma/TestTranslator.java86
-rw-r--r--src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java2
-rw-r--r--src/test/java/cuchaz/enigma/inputs/constructors/Caller.java16
-rw-r--r--src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java6
-rw-r--r--src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java4
-rw-r--r--src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java2
-rw-r--r--src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java4
-rw-r--r--src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java6
-rw-r--r--src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java8
-rw-r--r--src/test/java/cuchaz/enigma/resources/translation.mappings28
26 files changed, 224 insertions, 244 deletions
diff --git a/src/main/java/cuchaz/enigma/Constants.java b/src/main/java/cuchaz/enigma/Constants.java
index 5bdb3af7..04730480 100644
--- a/src/main/java/cuchaz/enigma/Constants.java
+++ b/src/main/java/cuchaz/enigma/Constants.java
@@ -16,5 +16,4 @@ public class Constants {
16 public static final String URL = "http://www.cuchazinteractive.com/enigma"; 16 public static final String URL = "http://www.cuchazinteractive.com/enigma";
17 public static final int MiB = 1024 * 1024; // 1 mebibyte 17 public static final int MiB = 1024 * 1024; // 1 mebibyte
18 public static final int KiB = 1024; // 1 kebibyte 18 public static final int KiB = 1024; // 1 kebibyte
19 public static final String NONE_PACKAGE = "none";
20} 19}
diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java
index 2207999d..e9a998da 100644
--- a/src/main/java/cuchaz/enigma/Deobfuscator.java
+++ b/src/main/java/cuchaz/enigma/Deobfuscator.java
@@ -146,7 +146,7 @@ public class Deobfuscator {
146 if (!deobfClassEntry.equals(obfClassEntry)) { 146 if (!deobfClassEntry.equals(obfClassEntry)) {
147 // if the class has a mapping, clearly it's deobfuscated 147 // if the class has a mapping, clearly it's deobfuscated
148 deobfClasses.add(deobfClassEntry); 148 deobfClasses.add(deobfClassEntry);
149 } else if (!obfClassEntry.getPackageName().equals(Constants.NONE_PACKAGE)) { 149 } else if (obfClassEntry.getPackageName() != null) {
150 // also call it deobufscated if it's not in the none package 150 // also call it deobufscated if it's not in the none package
151 deobfClasses.add(obfClassEntry); 151 deobfClasses.add(obfClassEntry);
152 } else { 152 } else {
diff --git a/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java b/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java
index 13efbd51..e4c162da 100644
--- a/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java
+++ b/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java
@@ -187,10 +187,6 @@ public class TranslatingTypeLoader implements ITypeLoader {
187 public List<String> getClassNamesToTry(ClassEntry obfClassEntry) { 187 public List<String> getClassNamesToTry(ClassEntry obfClassEntry) {
188 List<String> classNamesToTry = Lists.newArrayList(); 188 List<String> classNamesToTry = Lists.newArrayList();
189 classNamesToTry.add(obfClassEntry.getName()); 189 classNamesToTry.add(obfClassEntry.getName());
190 if (obfClassEntry.getPackageName().equals(Constants.NONE_PACKAGE)) {
191 // taking off the none package, if any
192 classNamesToTry.add(obfClassEntry.getSimpleName());
193 }
194 if (obfClassEntry.isInnerClass()) { 190 if (obfClassEntry.isInnerClass()) {
195 // try just the inner class name 191 // try just the inner class name
196 classNamesToTry.add(obfClassEntry.getInnermostClassName()); 192 classNamesToTry.add(obfClassEntry.getInnermostClassName());
@@ -201,10 +197,6 @@ public class TranslatingTypeLoader implements ITypeLoader {
201 public CtClass transformClass(CtClass c) 197 public CtClass transformClass(CtClass c)
202 throws IOException, NotFoundException, CannotCompileException { 198 throws IOException, NotFoundException, CannotCompileException {
203 199
204 // we moved a lot of classes out of the default package into the none package
205 // make sure all the class references are consistent
206 ClassRenamer.moveAllClassesOutOfDefaultPackage(c, Constants.NONE_PACKAGE);
207
208 // reconstruct inner classes 200 // reconstruct inner classes
209 new InnerClassWriter(this.jarIndex).write(c); 201 new InnerClassWriter(this.jarIndex).write(c);
210 202
diff --git a/src/main/java/cuchaz/enigma/analysis/JarIndex.java b/src/main/java/cuchaz/enigma/analysis/JarIndex.java
index e501540d..619d862c 100644
--- a/src/main/java/cuchaz/enigma/analysis/JarIndex.java
+++ b/src/main/java/cuchaz/enigma/analysis/JarIndex.java
@@ -59,17 +59,10 @@ public class JarIndex {
59 public void indexJar(JarFile jar, boolean buildInnerClasses) { 59 public void indexJar(JarFile jar, boolean buildInnerClasses) {
60 60
61 // step 1: read the class names 61 // step 1: read the class names
62 for (ClassEntry classEntry : JarClassIterator.getClassEntries(jar)) { 62 this.obfClassEntries.addAll(JarClassIterator.getClassEntries(jar));
63 if (classEntry.isInDefaultPackage()) {
64 // move out of default package
65 classEntry = new ClassEntry(Constants.NONE_PACKAGE + "/" + classEntry.getName());
66 }
67 this.obfClassEntries.add(classEntry);
68 }
69 63
70 // step 2: index field/method/constructor access 64 // step 2: index field/method/constructor access
71 for (CtClass c : JarClassIterator.classes(jar)) { 65 for (CtClass c : JarClassIterator.classes(jar)) {
72 ClassRenamer.moveAllClassesOutOfDefaultPackage(c, Constants.NONE_PACKAGE);
73 for (CtField field : c.getDeclaredFields()) { 66 for (CtField field : c.getDeclaredFields()) {
74 FieldEntry fieldEntry = EntryFactory.getFieldEntry(field); 67 FieldEntry fieldEntry = EntryFactory.getFieldEntry(field);
75 this.access.put(fieldEntry, Access.get(field)); 68 this.access.put(fieldEntry, Access.get(field));
@@ -84,7 +77,6 @@ public class JarIndex {
84 77
85 // step 3: index extends, implements, fields, and methods 78 // step 3: index extends, implements, fields, and methods
86 for (CtClass c : JarClassIterator.classes(jar)) { 79 for (CtClass c : JarClassIterator.classes(jar)) {
87 ClassRenamer.moveAllClassesOutOfDefaultPackage(c, Constants.NONE_PACKAGE);
88 this.translationIndex.indexClass(c); 80 this.translationIndex.indexClass(c);
89 String className = Descriptor.toJvmName(c.getName()); 81 String className = Descriptor.toJvmName(c.getName());
90 for (String interfaceName : c.getClassFile().getInterfaces()) { 82 for (String interfaceName : c.getClassFile().getInterfaces()) {
@@ -101,7 +93,6 @@ public class JarIndex {
101 93
102 // step 4: index field, method, constructor references 94 // step 4: index field, method, constructor references
103 for (CtClass c : JarClassIterator.classes(jar)) { 95 for (CtClass c : JarClassIterator.classes(jar)) {
104 ClassRenamer.moveAllClassesOutOfDefaultPackage(c, Constants.NONE_PACKAGE);
105 for (CtBehavior behavior : c.getDeclaredBehaviors()) { 96 for (CtBehavior behavior : c.getDeclaredBehaviors()) {
106 indexBehaviorReferences(behavior); 97 indexBehaviorReferences(behavior);
107 } 98 }
@@ -111,7 +102,6 @@ public class JarIndex {
111 102
112 // step 5: index inner classes and anonymous classes 103 // step 5: index inner classes and anonymous classes
113 for (CtClass c : JarClassIterator.classes(jar)) { 104 for (CtClass c : JarClassIterator.classes(jar)) {
114 ClassRenamer.moveAllClassesOutOfDefaultPackage(c, Constants.NONE_PACKAGE);
115 ClassEntry innerClassEntry = EntryFactory.getClassEntry(c); 105 ClassEntry innerClassEntry = EntryFactory.getClassEntry(c);
116 ClassEntry outerClassEntry = findOuterClass(c); 106 ClassEntry outerClassEntry = findOuterClass(c);
117 if (outerClassEntry != null) { 107 if (outerClassEntry != null) {
diff --git a/src/main/java/cuchaz/enigma/convert/ClassIdentity.java b/src/main/java/cuchaz/enigma/convert/ClassIdentity.java
index 0960c86b..4d1b3caa 100644
--- a/src/main/java/cuchaz/enigma/convert/ClassIdentity.java
+++ b/src/main/java/cuchaz/enigma/convert/ClassIdentity.java
@@ -58,7 +58,7 @@ public class ClassIdentity {
58 58
59 // classes not in the none package can be passed through 59 // classes not in the none package can be passed through
60 ClassEntry classEntry = new ClassEntry(className); 60 ClassEntry classEntry = new ClassEntry(className);
61 if (!classEntry.getPackageName().equals(Constants.NONE_PACKAGE)) { 61 if (!classEntry.getClassName().contains("/")) {
62 return className; 62 return className;
63 } 63 }
64 64
diff --git a/src/main/java/cuchaz/enigma/convert/MappingsConverter.java b/src/main/java/cuchaz/enigma/convert/MappingsConverter.java
index a80d9ce1..01de9a51 100644
--- a/src/main/java/cuchaz/enigma/convert/MappingsConverter.java
+++ b/src/main/java/cuchaz/enigma/convert/MappingsConverter.java
@@ -235,7 +235,7 @@ public class MappingsConverter {
235 235
236 // non obfuscated classes can be migrated 236 // non obfuscated classes can be migrated
237 ClassEntry classEntry = oldObfType.getClassEntry(); 237 ClassEntry classEntry = oldObfType.getClassEntry();
238 if (!classEntry.getPackageName().equals(Constants.NONE_PACKAGE)) { 238 if (!classEntry.getClassName().contains("/")) {
239 return true; 239 return true;
240 } 240 }
241 241
diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java
index 0ccb3f79..a81ad066 100644
--- a/src/main/java/cuchaz/enigma/gui/Gui.java
+++ b/src/main/java/cuchaz/enigma/gui/Gui.java
@@ -574,8 +574,7 @@ public class Gui {
574 574
575 int offset = text.getText().lastIndexOf('/') + 1; 575 int offset = text.getText().lastIndexOf('/') + 1;
576 // If it's a class and isn't in the default package, assume that it's deobfuscated. 576 // If it's a class and isn't in the default package, assume that it's deobfuscated.
577 if (m_reference.getNameableEntry() instanceof ClassEntry && !text.getText().startsWith(Constants.NONE_PACKAGE) 577 if (m_reference.getNameableEntry() instanceof ClassEntry && text.getText().contains("/") && offset != 0)
578 && offset != 0)
579 text.select(offset, text.getText().length()); 578 text.select(offset, text.getText().length());
580 else 579 else
581 text.selectAll(); 580 text.selectAll();
@@ -778,9 +777,8 @@ public class Gui {
778 { 777 {
779 String oldEntry = deobfReference.entry.getClassEntry().getPackageName(); 778 String oldEntry = deobfReference.entry.getClassEntry().getPackageName();
780 String newEntry = new ClassEntry(Descriptor.toJvmName(newName)).getPackageName(); 779 String newEntry = new ClassEntry(Descriptor.toJvmName(newName)).getPackageName();
781 if (oldEntry != null && newEntry != null) 780 moveClassTree(deobfReference, newName, oldEntry == null,
782 moveClassTree(deobfReference, newName, oldEntry.equals(Constants.NONE_PACKAGE), 781 newEntry == null);
783 newEntry.equals(Constants.NONE_PACKAGE));
784 } 782 }
785 783
786 public void moveClassTree(EntryReference<Entry, Entry> deobfReference, String newName, boolean isOldOb, boolean isNewOb) 784 public void moveClassTree(EntryReference<Entry, Entry> deobfReference, String newName, boolean isOldOb, boolean isNewOb)
diff --git a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java b/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java
index d2e421e7..30d8a9ca 100644
--- a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java
+++ b/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java
@@ -10,6 +10,7 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.gui.node; 11package cuchaz.enigma.gui.node;
12 12
13import com.strobel.annotations.Nullable;
13import javassist.bytecode.Descriptor; 14import javassist.bytecode.Descriptor;
14 15
15import javax.swing.tree.DefaultMutableTreeNode; 16import javax.swing.tree.DefaultMutableTreeNode;
@@ -18,8 +19,8 @@ public class ClassSelectorPackageNode extends DefaultMutableTreeNode {
18 19
19 private String packageName; 20 private String packageName;
20 21
21 public ClassSelectorPackageNode(String packageName) { 22 public ClassSelectorPackageNode(@Nullable String packageName) {
22 this.packageName = packageName; 23 this.packageName = packageName != null ? packageName : "(none)";
23 } 24 }
24 25
25 public String getPackageName() { 26 public String getPackageName() {
diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsSRGWriter.java b/src/main/java/cuchaz/enigma/mapping/MappingsSRGWriter.java
index 229bf464..4d0c2610 100644
--- a/src/main/java/cuchaz/enigma/mapping/MappingsSRGWriter.java
+++ b/src/main/java/cuchaz/enigma/mapping/MappingsSRGWriter.java
@@ -34,25 +34,25 @@ public class MappingsSRGWriter {
34 if(innerClassMapping.getDeobfName() == null || innerClassMapping.getObfSimpleName() == null || innerClassMapping.getDeobfName() == null){ 34 if(innerClassMapping.getDeobfName() == null || innerClassMapping.getObfSimpleName() == null || innerClassMapping.getDeobfName() == null){
35 continue; 35 continue;
36 } 36 }
37 String innerClassName = classMapping.getObfSimpleName() + "$" + innerClassMapping.getObfSimpleName().replace("none/", ""); 37 String innerClassName = classMapping.getObfSimpleName() + "$" + innerClassMapping.getObfSimpleName();
38 String innerDebofClassName = classMapping.getDeobfName() + "$" + innerClassMapping.getDeobfName().replace("none/", ""); 38 String innerDeobfClassName = classMapping.getDeobfName() + "$" + innerClassMapping.getDeobfName();
39 writer.write("CL: " + innerClassName + " " + classMapping.getDeobfName() + "$" + innerClassMapping.getDeobfName()); 39 writer.write("CL: " + innerClassName + " " + classMapping.getDeobfName() + "$" + innerClassMapping.getDeobfName());
40 writer.write(System.lineSeparator()); 40 writer.write(System.lineSeparator());
41 for (FieldMapping fieldMapping : sorted(innerClassMapping.fields())) { 41 for (FieldMapping fieldMapping : sorted(innerClassMapping.fields())) {
42 fieldMappings.add("FD: " + innerClassName + "/" + fieldMapping.getObfName() + " " + innerDebofClassName + "/" + fieldMapping.getDeobfName()); 42 fieldMappings.add("FD: " + innerClassName + "/" + fieldMapping.getObfName() + " " + innerDeobfClassName + "/" + fieldMapping.getDeobfName());
43 } 43 }
44 44
45 for (MethodMapping methodMapping : sorted(innerClassMapping.methods())) { 45 for (MethodMapping methodMapping : sorted(innerClassMapping.methods())) {
46 methodMappings.add("MD: " + innerClassName + "/" + methodMapping.getObfName() + " " + methodMapping.getObfSignature().toString().replace("none/", "") + " " + innerDebofClassName + "/" + methodMapping.getDeobfName() + " " + mappings.getTranslator(TranslationDirection.Deobfuscating, index).translateSignature(methodMapping.getObfSignature())); 46 methodMappings.add("MD: " + innerClassName + "/" + methodMapping.getObfName() + " " + methodMapping.getObfSignature().toString() + " " + innerDeobfClassName + "/" + methodMapping.getDeobfName() + " " + mappings.getTranslator(TranslationDirection.Deobfuscating, index).translateSignature(methodMapping.getObfSignature()));
47 } 47 }
48 } 48 }
49 49
50 for (FieldMapping fieldMapping : sorted(classMapping.fields())) { 50 for (FieldMapping fieldMapping : sorted(classMapping.fields())) {
51 fieldMappings.add("FD: " + classMapping.getObfFullName().replace("none/", "") + "/" + fieldMapping.getObfName() + " " + classMapping.getDeobfName() + "/" + fieldMapping.getDeobfName()); 51 fieldMappings.add("FD: " + classMapping.getObfFullName() + "/" + fieldMapping.getObfName() + " " + classMapping.getDeobfName() + "/" + fieldMapping.getDeobfName());
52 } 52 }
53 53
54 for (MethodMapping methodMapping : sorted(classMapping.methods())) { 54 for (MethodMapping methodMapping : sorted(classMapping.methods())) {
55 methodMappings.add("MD: " + classMapping.getObfFullName().replace("none/", "") + "/" + methodMapping.getObfName() + " " + methodMapping.getObfSignature().toString().replace("none/", "") + " " + classMapping.getDeobfName() + "/" + methodMapping.getDeobfName() + " " + mappings.getTranslator(TranslationDirection.Deobfuscating, index).translateSignature(methodMapping.getObfSignature())); 55 methodMappings.add("MD: " + classMapping.getObfFullName() + "/" + methodMapping.getObfName() + " " + methodMapping.getObfSignature().toString() + " " + classMapping.getDeobfName() + "/" + methodMapping.getDeobfName() + " " + mappings.getTranslator(TranslationDirection.Deobfuscating, index).translateSignature(methodMapping.getObfSignature()));
56 } 56 }
57 } 57 }
58 for(String fd : fieldMappings){ 58 for(String fd : fieldMappings){
diff --git a/src/test/java/cuchaz/enigma/TestDeobfed.java b/src/test/java/cuchaz/enigma/TestDeobfed.java
index 5f3ef8cf..2f318c80 100644
--- a/src/test/java/cuchaz/enigma/TestDeobfed.java
+++ b/src/test/java/cuchaz/enigma/TestDeobfed.java
@@ -40,28 +40,28 @@ public class TestDeobfed {
40 public void obfEntries() { 40 public void obfEntries() {
41 assertThat(m_index.getObfClassEntries(), containsInAnyOrder( 41 assertThat(m_index.getObfClassEntries(), containsInAnyOrder(
42 newClass("cuchaz/enigma/inputs/Keep"), 42 newClass("cuchaz/enigma/inputs/Keep"),
43 newClass("none/a"), 43 newClass("a"),
44 newClass("none/b"), 44 newClass("b"),
45 newClass("none/c"), 45 newClass("c"),
46 newClass("none/d"), 46 newClass("d"),
47 newClass("none/d$1"), 47 newClass("d$1"),
48 newClass("none/e"), 48 newClass("e"),
49 newClass("none/f"), 49 newClass("f"),
50 newClass("none/g"), 50 newClass("g"),
51 newClass("none/g$a"), 51 newClass("g$a"),
52 newClass("none/g$a$a"), 52 newClass("g$a$a"),
53 newClass("none/g$b"), 53 newClass("g$b"),
54 newClass("none/g$b$a"), 54 newClass("g$b$a"),
55 newClass("none/h"), 55 newClass("h"),
56 newClass("none/h$a"), 56 newClass("h$a"),
57 newClass("none/h$a$a"), 57 newClass("h$a$a"),
58 newClass("none/h$b"), 58 newClass("h$b"),
59 newClass("none/h$b$a"), 59 newClass("h$b$a"),
60 newClass("none/h$b$a$a"), 60 newClass("h$b$a$a"),
61 newClass("none/h$b$a$b"), 61 newClass("h$b$a$b"),
62 newClass("none/i"), 62 newClass("i"),
63 newClass("none/i$a"), 63 newClass("i$a"),
64 newClass("none/i$b") 64 newClass("i$b")
65 )); 65 ));
66 } 66 }
67 67
@@ -69,27 +69,27 @@ public class TestDeobfed {
69 public void decompile() 69 public void decompile()
70 throws Exception { 70 throws Exception {
71 Deobfuscator deobfuscator = new Deobfuscator(m_jar); 71 Deobfuscator deobfuscator = new Deobfuscator(m_jar);
72 deobfuscator.getSourceTree("none/a"); 72 deobfuscator.getSourceTree("a");
73 deobfuscator.getSourceTree("none/b"); 73 deobfuscator.getSourceTree("b");
74 deobfuscator.getSourceTree("none/c"); 74 deobfuscator.getSourceTree("c");
75 deobfuscator.getSourceTree("none/d"); 75 deobfuscator.getSourceTree("d");
76 deobfuscator.getSourceTree("none/d$1"); 76 deobfuscator.getSourceTree("d$1");
77 deobfuscator.getSourceTree("none/e"); 77 deobfuscator.getSourceTree("e");
78 deobfuscator.getSourceTree("none/f"); 78 deobfuscator.getSourceTree("f");
79 deobfuscator.getSourceTree("none/g"); 79 deobfuscator.getSourceTree("g");
80 deobfuscator.getSourceTree("none/g$a"); 80 deobfuscator.getSourceTree("g$a");
81 deobfuscator.getSourceTree("none/g$a$a"); 81 deobfuscator.getSourceTree("g$a$a");
82 deobfuscator.getSourceTree("none/g$b"); 82 deobfuscator.getSourceTree("g$b");
83 deobfuscator.getSourceTree("none/g$b$a"); 83 deobfuscator.getSourceTree("g$b$a");
84 deobfuscator.getSourceTree("none/h"); 84 deobfuscator.getSourceTree("h");
85 deobfuscator.getSourceTree("none/h$a"); 85 deobfuscator.getSourceTree("h$a");
86 deobfuscator.getSourceTree("none/h$a$a"); 86 deobfuscator.getSourceTree("h$a$a");
87 deobfuscator.getSourceTree("none/h$b"); 87 deobfuscator.getSourceTree("h$b");
88 deobfuscator.getSourceTree("none/h$b$a"); 88 deobfuscator.getSourceTree("h$b$a");
89 deobfuscator.getSourceTree("none/h$b$a$a"); 89 deobfuscator.getSourceTree("h$b$a$a");
90 deobfuscator.getSourceTree("none/h$b$a$b"); 90 deobfuscator.getSourceTree("h$b$a$b");
91 deobfuscator.getSourceTree("none/i"); 91 deobfuscator.getSourceTree("i");
92 deobfuscator.getSourceTree("none/i$a"); 92 deobfuscator.getSourceTree("i$a");
93 deobfuscator.getSourceTree("none/i$b"); 93 deobfuscator.getSourceTree("i$b");
94 } 94 }
95} 95}
diff --git a/src/test/java/cuchaz/enigma/TestDeobfuscator.java b/src/test/java/cuchaz/enigma/TestDeobfuscator.java
index 1b0aa74d..8c97ff34 100644
--- a/src/test/java/cuchaz/enigma/TestDeobfuscator.java
+++ b/src/test/java/cuchaz/enigma/TestDeobfuscator.java
@@ -43,7 +43,7 @@ public class TestDeobfuscator {
43 List<ClassEntry> deobfClasses = Lists.newArrayList(); 43 List<ClassEntry> deobfClasses = Lists.newArrayList();
44 deobfuscator.getSeparatedClasses(obfClasses, deobfClasses); 44 deobfuscator.getSeparatedClasses(obfClasses, deobfClasses);
45 assertEquals(1, obfClasses.size()); 45 assertEquals(1, obfClasses.size());
46 assertEquals("none/a", obfClasses.get(0).getName()); 46 assertEquals("a", obfClasses.get(0).getName());
47 assertEquals(1, deobfClasses.size()); 47 assertEquals(1, deobfClasses.size());
48 assertEquals("cuchaz/enigma/inputs/Keep", deobfClasses.get(0).getName()); 48 assertEquals("cuchaz/enigma/inputs/Keep", deobfClasses.get(0).getName());
49 } 49 }
@@ -52,6 +52,6 @@ public class TestDeobfuscator {
52 public void decompileClass() 52 public void decompileClass()
53 throws Exception { 53 throws Exception {
54 Deobfuscator deobfuscator = getDeobfuscator(); 54 Deobfuscator deobfuscator = getDeobfuscator();
55 deobfuscator.getSource(deobfuscator.getSourceTree("none/a")); 55 deobfuscator.getSource(deobfuscator.getSourceTree("a"));
56 } 56 }
57} 57}
diff --git a/src/test/java/cuchaz/enigma/TestInnerClasses.java b/src/test/java/cuchaz/enigma/TestInnerClasses.java
index a4f90217..70765e32 100644
--- a/src/test/java/cuchaz/enigma/TestInnerClasses.java
+++ b/src/test/java/cuchaz/enigma/TestInnerClasses.java
@@ -27,20 +27,20 @@ public class TestInnerClasses {
27 private JarIndex m_index; 27 private JarIndex m_index;
28 private Deobfuscator m_deobfuscator; 28 private Deobfuscator m_deobfuscator;
29 29
30 private static final ClassEntry AnonymousOuter = newClass("none/a"); 30 private static final ClassEntry AnonymousOuter = newClass("a");
31 private static final ClassEntry AnonymousInner = newClass("none/a$1"); 31 private static final ClassEntry AnonymousInner = newClass("a$1");
32 private static final ClassEntry SimpleOuter = newClass("none/d"); 32 private static final ClassEntry SimpleOuter = newClass("d");
33 private static final ClassEntry SimpleInner = newClass("none/d$a"); 33 private static final ClassEntry SimpleInner = newClass("d$a");
34 private static final ClassEntry ConstructorArgsOuter = newClass("none/c"); 34 private static final ClassEntry ConstructorArgsOuter = newClass("c");
35 private static final ClassEntry ConstructorArgsInner = newClass("none/c$a"); 35 private static final ClassEntry ConstructorArgsInner = newClass("c$a");
36 private static final ClassEntry AnonymousWithScopeArgsOuter = newClass("none/b"); 36 private static final ClassEntry AnonymousWithScopeArgsOuter = newClass("b");
37 private static final ClassEntry AnonymousWithScopeArgsInner = newClass("none/b$1"); 37 private static final ClassEntry AnonymousWithScopeArgsInner = newClass("b$1");
38 private static final ClassEntry AnonymousWithOuterAccessOuter = newClass("none/e"); 38 private static final ClassEntry AnonymousWithOuterAccessOuter = newClass("e");
39 private static final ClassEntry AnonymousWithOuterAccessInner = newClass("none/e$1"); 39 private static final ClassEntry AnonymousWithOuterAccessInner = newClass("e$1");
40 private static final ClassEntry ClassTreeRoot = newClass("none/f"); 40 private static final ClassEntry ClassTreeRoot = newClass("f");
41 private static final ClassEntry ClassTreeLevel1 = newClass("none/f$a"); 41 private static final ClassEntry ClassTreeLevel1 = newClass("f$a");
42 private static final ClassEntry ClassTreeLevel2 = newClass("none/f$a$a"); 42 private static final ClassEntry ClassTreeLevel2 = newClass("f$a$a");
43 private static final ClassEntry ClassTreeLevel3 = newClass("none/f$a$a$a"); 43 private static final ClassEntry ClassTreeLevel3 = newClass("f$a$a$a");
44 44
45 public TestInnerClasses() 45 public TestInnerClasses()
46 throws Exception { 46 throws Exception {
diff --git a/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java b/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java
index 606801bd..cb65cd07 100644
--- a/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java
+++ b/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java
@@ -29,11 +29,11 @@ public class TestJarIndexConstructorReferences {
29 29
30 private JarIndex m_index; 30 private JarIndex m_index;
31 31
32 private ClassEntry m_baseClass = newClass("none/a"); 32 private ClassEntry m_baseClass = newClass("a");
33 private ClassEntry m_subClass = newClass("none/d"); 33 private ClassEntry m_subClass = newClass("d");
34 private ClassEntry m_subsubClass = newClass("none/e"); 34 private ClassEntry m_subsubClass = newClass("e");
35 private ClassEntry m_defaultClass = newClass("none/c"); 35 private ClassEntry m_defaultClass = newClass("c");
36 private ClassEntry m_callerClass = newClass("none/b"); 36 private ClassEntry m_callerClass = newClass("b");
37 37
38 public TestJarIndexConstructorReferences() 38 public TestJarIndexConstructorReferences()
39 throws Exception { 39 throws Exception {
diff --git a/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java b/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
index 84d21158..28408f2a 100644
--- a/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
+++ b/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
@@ -44,10 +44,10 @@ public class TestJarIndexInheritanceTree {
44 private JarIndex m_index; 44 private JarIndex m_index;
45 45
46 private ClassEntry m_objectClass = newClass("java/lang/Object"); 46 private ClassEntry m_objectClass = newClass("java/lang/Object");
47 private ClassEntry m_baseClass = newClass("none/a"); 47 private ClassEntry m_baseClass = newClass("a");
48 private ClassEntry m_subClassA = newClass("none/b"); 48 private ClassEntry m_subClassA = newClass("b");
49 private ClassEntry m_subClassAA = newClass("none/d"); 49 private ClassEntry m_subClassAA = newClass("d");
50 private ClassEntry m_subClassB = newClass("none/c"); 50 private ClassEntry m_subClassB = newClass("c");
51 private FieldEntry m_nameField = newField(m_baseClass, "a", "Ljava/lang/String;"); 51 private FieldEntry m_nameField = newField(m_baseClass, "a", "Ljava/lang/String;");
52 private FieldEntry m_numThingsField = newField(m_subClassB, "a", "I"); 52 private FieldEntry m_numThingsField = newField(m_subClassB, "a", "I");
53 53
diff --git a/src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java b/src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java
index bd7b03a0..65af6d83 100644
--- a/src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java
+++ b/src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java
@@ -46,39 +46,39 @@ public class TestJarIndexLoneClass {
46 public void obfEntries() { 46 public void obfEntries() {
47 assertThat(m_index.getObfClassEntries(), containsInAnyOrder( 47 assertThat(m_index.getObfClassEntries(), containsInAnyOrder(
48 newClass("cuchaz/enigma/inputs/Keep"), 48 newClass("cuchaz/enigma/inputs/Keep"),
49 newClass("none/a") 49 newClass("a")
50 )); 50 ));
51 } 51 }
52 52
53 @Test 53 @Test
54 public void translationIndex() { 54 public void translationIndex() {
55 assertThat(m_index.getTranslationIndex().getSuperclass(new ClassEntry("none/a")), is(new ClassEntry("java/lang/Object"))); 55 assertThat(m_index.getTranslationIndex().getSuperclass(new ClassEntry("a")), is(new ClassEntry("java/lang/Object")));
56 assertThat(m_index.getTranslationIndex().getSuperclass(new ClassEntry("cuchaz/enigma/inputs/Keep")), is(new ClassEntry("java/lang/Object"))); 56 assertThat(m_index.getTranslationIndex().getSuperclass(new ClassEntry("cuchaz/enigma/inputs/Keep")), is(new ClassEntry("java/lang/Object")));
57 assertThat(m_index.getTranslationIndex().getAncestry(new ClassEntry("none/a")), contains(new ClassEntry("java/lang/Object"))); 57 assertThat(m_index.getTranslationIndex().getAncestry(new ClassEntry("a")), contains(new ClassEntry("java/lang/Object")));
58 assertThat(m_index.getTranslationIndex().getAncestry(new ClassEntry("cuchaz/enigma/inputs/Keep")), contains(new ClassEntry("java/lang/Object"))); 58 assertThat(m_index.getTranslationIndex().getAncestry(new ClassEntry("cuchaz/enigma/inputs/Keep")), contains(new ClassEntry("java/lang/Object")));
59 assertThat(m_index.getTranslationIndex().getSubclass(new ClassEntry("none/a")), is(empty())); 59 assertThat(m_index.getTranslationIndex().getSubclass(new ClassEntry("a")), is(empty()));
60 assertThat(m_index.getTranslationIndex().getSubclass(new ClassEntry("cuchaz/enigma/inputs/Keep")), is(empty())); 60 assertThat(m_index.getTranslationIndex().getSubclass(new ClassEntry("cuchaz/enigma/inputs/Keep")), is(empty()));
61 } 61 }
62 62
63 @Test 63 @Test
64 public void access() { 64 public void access() {
65 assertThat(m_index.getAccess(newField("none/a", "a", "Ljava/lang/String;")), is(Access.Private)); 65 assertThat(m_index.getAccess(newField("a", "a", "Ljava/lang/String;")), is(Access.Private));
66 assertThat(m_index.getAccess(newMethod("none/a", "a", "()Ljava/lang/String;")), is(Access.Public)); 66 assertThat(m_index.getAccess(newMethod("a", "a", "()Ljava/lang/String;")), is(Access.Public));
67 assertThat(m_index.getAccess(newField("none/a", "b", "Ljava/lang/String;")), is(nullValue())); 67 assertThat(m_index.getAccess(newField("a", "b", "Ljava/lang/String;")), is(nullValue()));
68 assertThat(m_index.getAccess(newField("none/a", "a", "LFoo;")), is(nullValue())); 68 assertThat(m_index.getAccess(newField("a", "a", "LFoo;")), is(nullValue()));
69 } 69 }
70 70
71 @Test 71 @Test
72 public void classInheritance() { 72 public void classInheritance() {
73 ClassInheritanceTreeNode node = m_index.getClassInheritance(new Translator(), newClass("none/a")); 73 ClassInheritanceTreeNode node = m_index.getClassInheritance(new Translator(), newClass("a"));
74 assertThat(node, is(not(nullValue()))); 74 assertThat(node, is(not(nullValue())));
75 assertThat(node.getObfClassName(), is("none/a")); 75 assertThat(node.getObfClassName(), is("a"));
76 assertThat(node.getChildCount(), is(0)); 76 assertThat(node.getChildCount(), is(0));
77 } 77 }
78 78
79 @Test 79 @Test
80 public void methodInheritance() { 80 public void methodInheritance() {
81 MethodEntry source = newMethod("none/a", "a", "()Ljava/lang/String;"); 81 MethodEntry source = newMethod("a", "a", "()Ljava/lang/String;");
82 MethodInheritanceTreeNode node = m_index.getMethodInheritance(new Translator(), source); 82 MethodInheritanceTreeNode node = m_index.getMethodInheritance(new Translator(), source);
83 assertThat(node, is(not(nullValue()))); 83 assertThat(node, is(not(nullValue())));
84 assertThat(node.getMethodEntry(), is(source)); 84 assertThat(node.getMethodEntry(), is(source));
@@ -87,43 +87,43 @@ public class TestJarIndexLoneClass {
87 87
88 @Test 88 @Test
89 public void classImplementations() { 89 public void classImplementations() {
90 ClassImplementationsTreeNode node = m_index.getClassImplementations(new Translator(), newClass("none/a")); 90 ClassImplementationsTreeNode node = m_index.getClassImplementations(new Translator(), newClass("a"));
91 assertThat(node, is(nullValue())); 91 assertThat(node, is(nullValue()));
92 } 92 }
93 93
94 @Test 94 @Test
95 public void methodImplementations() { 95 public void methodImplementations() {
96 MethodEntry source = newMethod("none/a", "a", "()Ljava/lang/String;"); 96 MethodEntry source = newMethod("a", "a", "()Ljava/lang/String;");
97 assertThat(m_index.getMethodImplementations(new Translator(), source), is(empty())); 97 assertThat(m_index.getMethodImplementations(new Translator(), source), is(empty()));
98 } 98 }
99 99
100 @Test 100 @Test
101 public void relatedMethodImplementations() { 101 public void relatedMethodImplementations() {
102 Set<MethodEntry> entries = m_index.getRelatedMethodImplementations(newMethod("none/a", "a", "()Ljava/lang/String;")); 102 Set<MethodEntry> entries = m_index.getRelatedMethodImplementations(newMethod("a", "a", "()Ljava/lang/String;"));
103 assertThat(entries, containsInAnyOrder( 103 assertThat(entries, containsInAnyOrder(
104 newMethod("none/a", "a", "()Ljava/lang/String;") 104 newMethod("a", "a", "()Ljava/lang/String;")
105 )); 105 ));
106 } 106 }
107 107
108 @Test 108 @Test
109 @SuppressWarnings("unchecked") 109 @SuppressWarnings("unchecked")
110 public void fieldReferences() { 110 public void fieldReferences() {
111 FieldEntry source = newField("none/a", "a", "Ljava/lang/String;"); 111 FieldEntry source = newField("a", "a", "Ljava/lang/String;");
112 Collection<EntryReference<FieldEntry,BehaviorEntry>> references = m_index.getFieldReferences(source); 112 Collection<EntryReference<FieldEntry,BehaviorEntry>> references = m_index.getFieldReferences(source);
113 assertThat(references, containsInAnyOrder( 113 assertThat(references, containsInAnyOrder(
114 newFieldReferenceByConstructor(source, "none/a", "(Ljava/lang/String;)V"), 114 newFieldReferenceByConstructor(source, "a", "(Ljava/lang/String;)V"),
115 newFieldReferenceByMethod(source, "none/a", "a", "()Ljava/lang/String;") 115 newFieldReferenceByMethod(source, "a", "a", "()Ljava/lang/String;")
116 )); 116 ));
117 } 117 }
118 118
119 @Test 119 @Test
120 public void behaviorReferences() { 120 public void behaviorReferences() {
121 assertThat(m_index.getBehaviorReferences(newMethod("none/a", "a", "()Ljava/lang/String;")), is(empty())); 121 assertThat(m_index.getBehaviorReferences(newMethod("a", "a", "()Ljava/lang/String;")), is(empty()));
122 } 122 }
123 123
124 @Test 124 @Test
125 public void innerClasses() { 125 public void innerClasses() {
126 assertThat(m_index.getInnerClasses(newClass("none/a")), is(empty())); 126 assertThat(m_index.getInnerClasses(newClass("a")), is(empty()));
127 } 127 }
128 128
129 @Test 129 @Test
@@ -133,32 +133,32 @@ public class TestJarIndexLoneClass {
133 133
134 @Test 134 @Test
135 public void isAnonymousClass() { 135 public void isAnonymousClass() {
136 assertThat(m_index.isAnonymousClass(newClass("none/a")), is(false)); 136 assertThat(m_index.isAnonymousClass(newClass("a")), is(false));
137 } 137 }
138 138
139 @Test 139 @Test
140 public void interfaces() { 140 public void interfaces() {
141 assertThat(m_index.getInterfaces("none/a"), is(empty())); 141 assertThat(m_index.getInterfaces("a"), is(empty()));
142 } 142 }
143 143
144 @Test 144 @Test
145 public void implementingClasses() { 145 public void implementingClasses() {
146 assertThat(m_index.getImplementingClasses("none/a"), is(empty())); 146 assertThat(m_index.getImplementingClasses("a"), is(empty()));
147 } 147 }
148 148
149 @Test 149 @Test
150 public void isInterface() { 150 public void isInterface() {
151 assertThat(m_index.isInterface("none/a"), is(false)); 151 assertThat(m_index.isInterface("a"), is(false));
152 } 152 }
153 153
154 @Test 154 @Test
155 public void testContains() { 155 public void testContains() {
156 assertThat(m_index.containsObfClass(newClass("none/a")), is(true)); 156 assertThat(m_index.containsObfClass(newClass("a")), is(true));
157 assertThat(m_index.containsObfClass(newClass("none/b")), is(false)); 157 assertThat(m_index.containsObfClass(newClass("b")), is(false));
158 assertThat(m_index.containsObfField(newField("none/a", "a", "Ljava/lang/String;")), is(true)); 158 assertThat(m_index.containsObfField(newField("a", "a", "Ljava/lang/String;")), is(true));
159 assertThat(m_index.containsObfField(newField("none/a", "b", "Ljava/lang/String;")), is(false)); 159 assertThat(m_index.containsObfField(newField("a", "b", "Ljava/lang/String;")), is(false));
160 assertThat(m_index.containsObfField(newField("none/a", "a", "LFoo;")), is(false)); 160 assertThat(m_index.containsObfField(newField("a", "a", "LFoo;")), is(false));
161 assertThat(m_index.containsObfBehavior(newMethod("none/a", "a", "()Ljava/lang/String;")), is(true)); 161 assertThat(m_index.containsObfBehavior(newMethod("a", "a", "()Ljava/lang/String;")), is(true));
162 assertThat(m_index.containsObfBehavior(newMethod("none/a", "b", "()Ljava/lang/String;")), is(false)); 162 assertThat(m_index.containsObfBehavior(newMethod("a", "b", "()Ljava/lang/String;")), is(false));
163 } 163 }
164} 164}
diff --git a/src/test/java/cuchaz/enigma/TestTokensConstructors.java b/src/test/java/cuchaz/enigma/TestTokensConstructors.java
index 66c6fd1b..890a4fd3 100644
--- a/src/test/java/cuchaz/enigma/TestTokensConstructors.java
+++ b/src/test/java/cuchaz/enigma/TestTokensConstructors.java
@@ -29,107 +29,107 @@ public class TestTokensConstructors extends TokenChecker {
29 29
30 @Test 30 @Test
31 public void baseDeclarations() { 31 public void baseDeclarations() {
32 assertThat(getDeclarationToken(newConstructor("none/a", "()V")), is("a")); 32 assertThat(getDeclarationToken(newConstructor("a", "()V")), is("a"));
33 assertThat(getDeclarationToken(newConstructor("none/a", "(I)V")), is("a")); 33 assertThat(getDeclarationToken(newConstructor("a", "(I)V")), is("a"));
34 } 34 }
35 35
36 @Test 36 @Test
37 public void subDeclarations() { 37 public void subDeclarations() {
38 assertThat(getDeclarationToken(newConstructor("none/d", "()V")), is("d")); 38 assertThat(getDeclarationToken(newConstructor("d", "()V")), is("d"));
39 assertThat(getDeclarationToken(newConstructor("none/d", "(I)V")), is("d")); 39 assertThat(getDeclarationToken(newConstructor("d", "(I)V")), is("d"));
40 assertThat(getDeclarationToken(newConstructor("none/d", "(II)V")), is("d")); 40 assertThat(getDeclarationToken(newConstructor("d", "(II)V")), is("d"));
41 assertThat(getDeclarationToken(newConstructor("none/d", "(III)V")), is("d")); 41 assertThat(getDeclarationToken(newConstructor("d", "(III)V")), is("d"));
42 } 42 }
43 43
44 @Test 44 @Test
45 public void subsubDeclarations() { 45 public void subsubDeclarations() {
46 assertThat(getDeclarationToken(newConstructor("none/e", "(I)V")), is("e")); 46 assertThat(getDeclarationToken(newConstructor("e", "(I)V")), is("e"));
47 } 47 }
48 48
49 @Test 49 @Test
50 public void defaultDeclarations() { 50 public void defaultDeclarations() {
51 assertThat(getDeclarationToken(newConstructor("none/c", "()V")), nullValue()); 51 assertThat(getDeclarationToken(newConstructor("c", "()V")), nullValue());
52 } 52 }
53 53
54 @Test 54 @Test
55 public void baseDefaultReferences() { 55 public void baseDefaultReferences() {
56 BehaviorEntry source = newConstructor("none/a", "()V"); 56 BehaviorEntry source = newConstructor("a", "()V");
57 assertThat( 57 assertThat(
58 getReferenceTokens(newBehaviorReferenceByMethod(source, "none/b", "a", "()V")), 58 getReferenceTokens(newBehaviorReferenceByMethod(source, "b", "a", "()V")),
59 containsInAnyOrder("a") 59 containsInAnyOrder("a")
60 ); 60 );
61 assertThat( 61 assertThat(
62 getReferenceTokens(newBehaviorReferenceByConstructor(source, "none/d", "()V")), 62 getReferenceTokens(newBehaviorReferenceByConstructor(source, "d", "()V")),
63 is(empty()) // implicit call, not decompiled to token 63 is(empty()) // implicit call, not decompiled to token
64 ); 64 );
65 assertThat( 65 assertThat(
66 getReferenceTokens(newBehaviorReferenceByConstructor(source, "none/d", "(III)V")), 66 getReferenceTokens(newBehaviorReferenceByConstructor(source, "d", "(III)V")),
67 is(empty()) // implicit call, not decompiled to token 67 is(empty()) // implicit call, not decompiled to token
68 ); 68 );
69 } 69 }
70 70
71 @Test 71 @Test
72 public void baseIntReferences() { 72 public void baseIntReferences() {
73 BehaviorEntry source = newConstructor("none/a", "(I)V"); 73 BehaviorEntry source = newConstructor("a", "(I)V");
74 assertThat( 74 assertThat(
75 getReferenceTokens(newBehaviorReferenceByMethod(source, "none/b", "b", "()V")), 75 getReferenceTokens(newBehaviorReferenceByMethod(source, "b", "b", "()V")),
76 containsInAnyOrder("a") 76 containsInAnyOrder("a")
77 ); 77 );
78 } 78 }
79 79
80 @Test 80 @Test
81 public void subDefaultReferences() { 81 public void subDefaultReferences() {
82 BehaviorEntry source = newConstructor("none/d", "()V"); 82 BehaviorEntry source = newConstructor("d", "()V");
83 assertThat( 83 assertThat(
84 getReferenceTokens(newBehaviorReferenceByMethod(source, "none/b", "c", "()V")), 84 getReferenceTokens(newBehaviorReferenceByMethod(source, "b", "c", "()V")),
85 containsInAnyOrder("d") 85 containsInAnyOrder("d")
86 ); 86 );
87 assertThat( 87 assertThat(
88 getReferenceTokens(newBehaviorReferenceByConstructor(source, "none/d", "(I)V")), 88 getReferenceTokens(newBehaviorReferenceByConstructor(source, "d", "(I)V")),
89 containsInAnyOrder("this") 89 containsInAnyOrder("this")
90 ); 90 );
91 } 91 }
92 92
93 @Test 93 @Test
94 public void subIntReferences() { 94 public void subIntReferences() {
95 BehaviorEntry source = newConstructor("none/d", "(I)V"); 95 BehaviorEntry source = newConstructor("d", "(I)V");
96 assertThat(getReferenceTokens( 96 assertThat(getReferenceTokens(
97 newBehaviorReferenceByMethod(source, "none/b", "d", "()V")), 97 newBehaviorReferenceByMethod(source, "b", "d", "()V")),
98 containsInAnyOrder("d") 98 containsInAnyOrder("d")
99 ); 99 );
100 assertThat(getReferenceTokens( 100 assertThat(getReferenceTokens(
101 newBehaviorReferenceByConstructor(source, "none/d", "(II)V")), 101 newBehaviorReferenceByConstructor(source, "d", "(II)V")),
102 containsInAnyOrder("this") 102 containsInAnyOrder("this")
103 ); 103 );
104 assertThat(getReferenceTokens( 104 assertThat(getReferenceTokens(
105 newBehaviorReferenceByConstructor(source, "none/e", "(I)V")), 105 newBehaviorReferenceByConstructor(source, "e", "(I)V")),
106 containsInAnyOrder("super") 106 containsInAnyOrder("super")
107 ); 107 );
108 } 108 }
109 109
110 @Test 110 @Test
111 public void subIntIntReferences() { 111 public void subIntIntReferences() {
112 BehaviorEntry source = newConstructor("none/d", "(II)V"); 112 BehaviorEntry source = newConstructor("d", "(II)V");
113 assertThat( 113 assertThat(
114 getReferenceTokens(newBehaviorReferenceByMethod(source, "none/b", "e", "()V")), 114 getReferenceTokens(newBehaviorReferenceByMethod(source, "b", "e", "()V")),
115 containsInAnyOrder("d") 115 containsInAnyOrder("d")
116 ); 116 );
117 } 117 }
118 118
119 @Test 119 @Test
120 public void subsubIntReferences() { 120 public void subsubIntReferences() {
121 BehaviorEntry source = newConstructor("none/e", "(I)V"); 121 BehaviorEntry source = newConstructor("e", "(I)V");
122 assertThat( 122 assertThat(
123 getReferenceTokens(newBehaviorReferenceByMethod(source, "none/b", "f", "()V")), 123 getReferenceTokens(newBehaviorReferenceByMethod(source, "b", "f", "()V")),
124 containsInAnyOrder("e") 124 containsInAnyOrder("e")
125 ); 125 );
126 } 126 }
127 127
128 @Test 128 @Test
129 public void defaultConstructableReferences() { 129 public void defaultConstructableReferences() {
130 BehaviorEntry source = newConstructor("none/c", "()V"); 130 BehaviorEntry source = newConstructor("c", "()V");
131 assertThat( 131 assertThat(
132 getReferenceTokens(newBehaviorReferenceByMethod(source, "none/b", "g", "()V")), 132 getReferenceTokens(newBehaviorReferenceByMethod(source, "b", "g", "()V")),
133 containsInAnyOrder("c") 133 containsInAnyOrder("c")
134 ); 134 );
135 } 135 }
diff --git a/src/test/java/cuchaz/enigma/TestTranslator.java b/src/test/java/cuchaz/enigma/TestTranslator.java
index dddfb704..c8af307b 100644
--- a/src/test/java/cuchaz/enigma/TestTranslator.java
+++ b/src/test/java/cuchaz/enigma/TestTranslator.java
@@ -42,108 +42,108 @@ public class TestTranslator {
42 42
43 @Test 43 @Test
44 public void basicClasses() { 44 public void basicClasses() {
45 assertMapping(newClass("none/a"), newClass("deobf/A_Basic")); 45 assertMapping(newClass("a"), newClass("deobf/A_Basic"));
46 assertMapping(newClass("none/b"), newClass("deobf/B_BaseClass")); 46 assertMapping(newClass("b"), newClass("deobf/B_BaseClass"));
47 assertMapping(newClass("none/c"), newClass("deobf/C_SubClass")); 47 assertMapping(newClass("c"), newClass("deobf/C_SubClass"));
48 } 48 }
49 49
50 @Test 50 @Test
51 public void basicFields() { 51 public void basicFields() {
52 assertMapping(newField("none/a", "a", "I"), newField("deobf/A_Basic", "f1", "I")); 52 assertMapping(newField("a", "a", "I"), newField("deobf/A_Basic", "f1", "I"));
53 assertMapping(newField("none/a", "a", "F"), newField("deobf/A_Basic", "f2", "F")); 53 assertMapping(newField("a", "a", "F"), newField("deobf/A_Basic", "f2", "F"));
54 assertMapping(newField("none/a", "a", "Ljava/lang/String;"), newField("deobf/A_Basic", "f3", "Ljava/lang/String;")); 54 assertMapping(newField("a", "a", "Ljava/lang/String;"), newField("deobf/A_Basic", "f3", "Ljava/lang/String;"));
55 } 55 }
56 56
57 @Test 57 @Test
58 public void basicMethods() { 58 public void basicMethods() {
59 assertMapping(newMethod("none/a", "a", "()V"), newMethod("deobf/A_Basic", "m1", "()V")); 59 assertMapping(newMethod("a", "a", "()V"), newMethod("deobf/A_Basic", "m1", "()V"));
60 assertMapping(newMethod("none/a", "a", "()I"), newMethod("deobf/A_Basic", "m2", "()I")); 60 assertMapping(newMethod("a", "a", "()I"), newMethod("deobf/A_Basic", "m2", "()I"));
61 assertMapping(newMethod("none/a", "a", "(I)V"), newMethod("deobf/A_Basic", "m3", "(I)V")); 61 assertMapping(newMethod("a", "a", "(I)V"), newMethod("deobf/A_Basic", "m3", "(I)V"));
62 assertMapping(newMethod("none/a", "a", "(I)I"), newMethod("deobf/A_Basic", "m4", "(I)I")); 62 assertMapping(newMethod("a", "a", "(I)I"), newMethod("deobf/A_Basic", "m4", "(I)I"));
63 } 63 }
64 64
65 // TODO: basic constructors 65 // TODO: basic constructors
66 66
67 @Test 67 @Test
68 public void inheritanceFields() { 68 public void inheritanceFields() {
69 assertMapping(newField("none/b", "a", "I"), newField("deobf/B_BaseClass", "f1", "I")); 69 assertMapping(newField("b", "a", "I"), newField("deobf/B_BaseClass", "f1", "I"));
70 assertMapping(newField("none/b", "a", "C"), newField("deobf/B_BaseClass", "f2", "C")); 70 assertMapping(newField("b", "a", "C"), newField("deobf/B_BaseClass", "f2", "C"));
71 assertMapping(newField("none/c", "b", "I"), newField("deobf/C_SubClass", "f3", "I")); 71 assertMapping(newField("c", "b", "I"), newField("deobf/C_SubClass", "f3", "I"));
72 assertMapping(newField("none/c", "c", "I"), newField("deobf/C_SubClass", "f4", "I")); 72 assertMapping(newField("c", "c", "I"), newField("deobf/C_SubClass", "f4", "I"));
73 } 73 }
74 74
75 @Test 75 @Test
76 public void inheritanceFieldsShadowing() { 76 public void inheritanceFieldsShadowing() {
77 assertMapping(newField("none/c", "b", "C"), newField("deobf/C_SubClass", "f2", "C")); 77 assertMapping(newField("c", "b", "C"), newField("deobf/C_SubClass", "f2", "C"));
78 } 78 }
79 79
80 @Test 80 @Test
81 public void inheritanceFieldsBySubClass() { 81 public void inheritanceFieldsBySubClass() {
82 assertMapping(newField("none/c", "a", "I"), newField("deobf/C_SubClass", "f1", "I")); 82 assertMapping(newField("c", "a", "I"), newField("deobf/C_SubClass", "f1", "I"));
83 // NOTE: can't reference b.C by subclass since it's shadowed 83 // NOTE: can't reference b.C by subclass since it's shadowed
84 } 84 }
85 85
86 @Test 86 @Test
87 public void inheritanceMethods() { 87 public void inheritanceMethods() {
88 assertMapping(newMethod("none/b", "a", "()I"), newMethod("deobf/B_BaseClass", "m1", "()I")); 88 assertMapping(newMethod("b", "a", "()I"), newMethod("deobf/B_BaseClass", "m1", "()I"));
89 assertMapping(newMethod("none/b", "b", "()I"), newMethod("deobf/B_BaseClass", "m2", "()I")); 89 assertMapping(newMethod("b", "b", "()I"), newMethod("deobf/B_BaseClass", "m2", "()I"));
90 assertMapping(newMethod("none/c", "c", "()I"), newMethod("deobf/C_SubClass", "m3", "()I")); 90 assertMapping(newMethod("c", "c", "()I"), newMethod("deobf/C_SubClass", "m3", "()I"));
91 } 91 }
92 92
93 @Test 93 @Test
94 public void inheritanceMethodsOverrides() { 94 public void inheritanceMethodsOverrides() {
95 assertMapping(newMethod("none/c", "a", "()I"), newMethod("deobf/C_SubClass", "m1", "()I")); 95 assertMapping(newMethod("c", "a", "()I"), newMethod("deobf/C_SubClass", "m1", "()I"));
96 } 96 }
97 97
98 @Test 98 @Test
99 public void inheritanceMethodsBySubClass() { 99 public void inheritanceMethodsBySubClass() {
100 assertMapping(newMethod("none/c", "b", "()I"), newMethod("deobf/C_SubClass", "m2", "()I")); 100 assertMapping(newMethod("c", "b", "()I"), newMethod("deobf/C_SubClass", "m2", "()I"));
101 } 101 }
102 102
103 @Test 103 @Test
104 public void innerClasses() { 104 public void innerClasses() {
105 105
106 // classes 106 // classes
107 assertMapping(newClass("none/g"), newClass("deobf/G_OuterClass")); 107 assertMapping(newClass("g"), newClass("deobf/G_OuterClass"));
108 assertMapping(newClass("none/g$a"), newClass("deobf/G_OuterClass$A_InnerClass")); 108 assertMapping(newClass("g$a"), newClass("deobf/G_OuterClass$A_InnerClass"));
109 assertMapping(newClass("none/g$a$a"), newClass("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass")); 109 assertMapping(newClass("g$a$a"), newClass("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass"));
110 assertMapping(newClass("none/g$b"), newClass("deobf/G_OuterClass$b")); 110 assertMapping(newClass("g$b"), newClass("deobf/G_OuterClass$b"));
111 assertMapping(newClass("none/g$b$a"), newClass("deobf/G_OuterClass$b$A_NamedInnerClass")); 111 assertMapping(newClass("g$b$a"), newClass("deobf/G_OuterClass$b$A_NamedInnerClass"));
112 112
113 // fields 113 // fields
114 assertMapping(newField("none/g$a", "a", "I"), newField("deobf/G_OuterClass$A_InnerClass", "f1", "I")); 114 assertMapping(newField("g$a", "a", "I"), newField("deobf/G_OuterClass$A_InnerClass", "f1", "I"));
115 assertMapping(newField("none/g$a", "a", "Ljava/lang/String;"), newField("deobf/G_OuterClass$A_InnerClass", "f2", "Ljava/lang/String;")); 115 assertMapping(newField("g$a", "a", "Ljava/lang/String;"), newField("deobf/G_OuterClass$A_InnerClass", "f2", "Ljava/lang/String;"));
116 assertMapping(newField("none/g$a$a", "a", "I"), newField("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass", "f3", "I")); 116 assertMapping(newField("g$a$a", "a", "I"), newField("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass", "f3", "I"));
117 assertMapping(newField("none/g$b$a", "a", "I"), newField("deobf/G_OuterClass$b$A_NamedInnerClass", "f4", "I")); 117 assertMapping(newField("g$b$a", "a", "I"), newField("deobf/G_OuterClass$b$A_NamedInnerClass", "f4", "I"));
118 118
119 // methods 119 // methods
120 assertMapping(newMethod("none/g$a", "a", "()V"), newMethod("deobf/G_OuterClass$A_InnerClass", "m1", "()V")); 120 assertMapping(newMethod("g$a", "a", "()V"), newMethod("deobf/G_OuterClass$A_InnerClass", "m1", "()V"));
121 assertMapping(newMethod("none/g$a$a", "a", "()V"), newMethod("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass", "m2", "()V")); 121 assertMapping(newMethod("g$a$a", "a", "()V"), newMethod("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass", "m2", "()V"));
122 } 122 }
123 123
124 @Test 124 @Test
125 public void namelessClass() { 125 public void namelessClass() {
126 assertMapping(newClass("none/h"), newClass("none/h")); 126 assertMapping(newClass("h"), newClass("h"));
127 } 127 }
128 128
129 @Test 129 @Test
130 public void testGenerics() { 130 public void testGenerics() {
131 131
132 // classes 132 // classes
133 assertMapping(newClass("none/i"), newClass("deobf/I_Generics")); 133 assertMapping(newClass("i"), newClass("deobf/I_Generics"));
134 assertMapping(newClass("none/i$a"), newClass("deobf/I_Generics$A_Type")); 134 assertMapping(newClass("i$a"), newClass("deobf/I_Generics$A_Type"));
135 assertMapping(newClass("none/i$b"), newClass("deobf/I_Generics$B_Generic")); 135 assertMapping(newClass("i$b"), newClass("deobf/I_Generics$B_Generic"));
136 136
137 // fields 137 // fields
138 assertMapping(newField("none/i", "a", "Ljava/util/List;"), newField("deobf/I_Generics", "f1", "Ljava/util/List;")); 138 assertMapping(newField("i", "a", "Ljava/util/List;"), newField("deobf/I_Generics", "f1", "Ljava/util/List;"));
139 assertMapping(newField("none/i", "b", "Ljava/util/List;"), newField("deobf/I_Generics", "f2", "Ljava/util/List;")); 139 assertMapping(newField("i", "b", "Ljava/util/List;"), newField("deobf/I_Generics", "f2", "Ljava/util/List;"));
140 assertMapping(newField("none/i", "a", "Ljava/util/Map;"), newField("deobf/I_Generics", "f3", "Ljava/util/Map;")); 140 assertMapping(newField("i", "a", "Ljava/util/Map;"), newField("deobf/I_Generics", "f3", "Ljava/util/Map;"));
141 assertMapping(newField("none/i$b", "a", "Ljava/lang/Object;"), newField("deobf/I_Generics$B_Generic", "f4", "Ljava/lang/Object;")); 141 assertMapping(newField("i$b", "a", "Ljava/lang/Object;"), newField("deobf/I_Generics$B_Generic", "f4", "Ljava/lang/Object;"));
142 assertMapping(newField("none/i", "a", "Lnone/i$b;"), newField("deobf/I_Generics", "f5", "Ldeobf/I_Generics$B_Generic;")); 142 assertMapping(newField("i", "a", "Li$b;"), newField("deobf/I_Generics", "f5", "Ldeobf/I_Generics$B_Generic;"));
143 assertMapping(newField("none/i", "b", "Lnone/i$b;"), newField("deobf/I_Generics", "f6", "Ldeobf/I_Generics$B_Generic;")); 143 assertMapping(newField("i", "b", "Li$b;"), newField("deobf/I_Generics", "f6", "Ldeobf/I_Generics$B_Generic;"));
144 144
145 // methods 145 // methods
146 assertMapping(newMethod("none/i$b", "a", "()Ljava/lang/Object;"), newMethod("deobf/I_Generics$B_Generic", "m1", "()Ljava/lang/Object;")); 146 assertMapping(newMethod("i$b", "a", "()Ljava/lang/Object;"), newMethod("deobf/I_Generics$B_Generic", "m1", "()Ljava/lang/Object;"));
147 } 147 }
148 148
149 private void assertMapping(Entry obf, Entry deobf) { 149 private void assertMapping(Entry obf, Entry deobf) {
diff --git a/src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java b/src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java
index 65e782a2..ad5e950e 100644
--- a/src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java
+++ b/src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java
@@ -10,7 +10,7 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.inputs.constructors; 11package cuchaz.enigma.inputs.constructors;
12 12
13// none/a 13// a
14public class BaseClass { 14public class BaseClass {
15 15
16 // <init>()V 16 // <init>()V
diff --git a/src/test/java/cuchaz/enigma/inputs/constructors/Caller.java b/src/test/java/cuchaz/enigma/inputs/constructors/Caller.java
index 75096ec1..dcd96173 100644
--- a/src/test/java/cuchaz/enigma/inputs/constructors/Caller.java
+++ b/src/test/java/cuchaz/enigma/inputs/constructors/Caller.java
@@ -10,48 +10,48 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.inputs.constructors; 11package cuchaz.enigma.inputs.constructors;
12 12
13// none/b 13// b
14public class Caller { 14public class Caller {
15 15
16 // a()V 16 // a()V
17 public void callBaseDefault() { 17 public void callBaseDefault() {
18 // none/a.<init>()V 18 // a.<init>()V
19 System.out.println(new BaseClass()); 19 System.out.println(new BaseClass());
20 } 20 }
21 21
22 // b()V 22 // b()V
23 public void callBaseInt() { 23 public void callBaseInt() {
24 // none/a.<init>(I)V 24 // a.<init>(I)V
25 System.out.println(new BaseClass(5)); 25 System.out.println(new BaseClass(5));
26 } 26 }
27 27
28 // c()V 28 // c()V
29 public void callSubDefault() { 29 public void callSubDefault() {
30 // none/d.<init>()V 30 // d.<init>()V
31 System.out.println(new SubClass()); 31 System.out.println(new SubClass());
32 } 32 }
33 33
34 // d()V 34 // d()V
35 public void callSubInt() { 35 public void callSubInt() {
36 // none/d.<init>(I)V 36 // d.<init>(I)V
37 System.out.println(new SubClass(6)); 37 System.out.println(new SubClass(6));
38 } 38 }
39 39
40 // e()V 40 // e()V
41 public void callSubIntInt() { 41 public void callSubIntInt() {
42 // none/d.<init>(II)V 42 // d.<init>(II)V
43 System.out.println(new SubClass(4, 2)); 43 System.out.println(new SubClass(4, 2));
44 } 44 }
45 45
46 // f()V 46 // f()V
47 public void callSubSubInt() { 47 public void callSubSubInt() {
48 // none/e.<init>(I)V 48 // e.<init>(I)V
49 System.out.println(new SubSubClass(3)); 49 System.out.println(new SubSubClass(3));
50 } 50 }
51 51
52 // g()V 52 // g()V
53 public void callDefaultConstructable() { 53 public void callDefaultConstructable() {
54 // none/c.<init>()V 54 // c.<init>()V
55 System.out.println(new DefaultConstructable()); 55 System.out.println(new DefaultConstructable());
56 } 56 }
57} 57}
diff --git a/src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java b/src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java
index b0fb3e9b..b2934a27 100644
--- a/src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java
+++ b/src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java
@@ -10,12 +10,12 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.inputs.constructors; 11package cuchaz.enigma.inputs.constructors;
12 12
13// none/d extends none/a 13// d extends a
14public class SubClass extends BaseClass { 14public class SubClass extends BaseClass {
15 15
16 // <init>()V 16 // <init>()V
17 public SubClass() { 17 public SubClass() {
18 // none/a.<init>()V 18 // a.<init>()V
19 } 19 }
20 20
21 // <init>(I)V 21 // <init>(I)V
@@ -33,6 +33,6 @@ public class SubClass extends BaseClass {
33 33
34 // <init>(III)V 34 // <init>(III)V
35 public SubClass(int a, int b, int c) { 35 public SubClass(int a, int b, int c) {
36 // none/a.<init>()V 36 // a.<init>()V
37 } 37 }
38} 38}
diff --git a/src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java b/src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java
index 50314050..c1725fea 100644
--- a/src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java
+++ b/src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java
@@ -10,12 +10,12 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.inputs.constructors; 11package cuchaz.enigma.inputs.constructors;
12 12
13// none/e extends none/d 13// e extends d
14public class SubSubClass extends SubClass { 14public class SubSubClass extends SubClass {
15 15
16 // <init>(I)V 16 // <init>(I)V
17 public SubSubClass(int i) { 17 public SubSubClass(int i) {
18 // none/c.<init>(I)V 18 // c.<init>(I)V
19 super(i); 19 super(i);
20 } 20 }
21} 21}
diff --git a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java b/src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java
index 4f9c5b0e..d676ba24 100644
--- a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java
+++ b/src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java
@@ -10,7 +10,7 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.inputs.inheritanceTree; 11package cuchaz.enigma.inputs.inheritanceTree;
12 12
13// none/a 13// a
14public abstract class BaseClass { 14public abstract class BaseClass {
15 15
16 // a 16 // a
diff --git a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java b/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java
index 140d2a81..d0213a37 100644
--- a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java
+++ b/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java
@@ -10,12 +10,12 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.inputs.inheritanceTree; 11package cuchaz.enigma.inputs.inheritanceTree;
12 12
13// none/b extends none/a 13// b extends a
14public abstract class SubclassA extends BaseClass { 14public abstract class SubclassA extends BaseClass {
15 15
16 // <init>(Ljava/lang/String;)V 16 // <init>(Ljava/lang/String;)V
17 protected SubclassA(String name) { 17 protected SubclassA(String name) {
18 // call to none/a.<init>(Ljava/lang/String)V 18 // call to a.<init>(Ljava/lang/String)V
19 super(name); 19 super(name);
20 } 20 }
21} 21}
diff --git a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java b/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java
index 99d149bb..751fdd16 100644
--- a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java
+++ b/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java
@@ -10,7 +10,7 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.inputs.inheritanceTree; 11package cuchaz.enigma.inputs.inheritanceTree;
12 12
13// none/c extends none/a 13// c extends a
14public class SubclassB extends BaseClass { 14public class SubclassB extends BaseClass {
15 15
16 // a 16 // a
@@ -18,7 +18,7 @@ public class SubclassB extends BaseClass {
18 18
19 // <init>()V 19 // <init>()V
20 protected SubclassB() { 20 protected SubclassB() {
21 // none/a.<init>(Ljava/lang/String;)V 21 // a.<init>(Ljava/lang/String;)V
22 super("B"); 22 super("B");
23 23
24 // access to a 24 // access to a
@@ -28,7 +28,7 @@ public class SubclassB extends BaseClass {
28 @Override 28 @Override
29 // a()V 29 // a()V
30 public void doBaseThings() { 30 public void doBaseThings() {
31 // call to none/a.a()Ljava/lang/String; 31 // call to a.a()Ljava/lang/String;
32 System.out.println("Base things by B! " + getName()); 32 System.out.println("Base things by B! " + getName());
33 } 33 }
34 34
diff --git a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java b/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java
index 2e414b75..a5b25fd5 100644
--- a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java
+++ b/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java
@@ -10,25 +10,25 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.inputs.inheritanceTree; 11package cuchaz.enigma.inputs.inheritanceTree;
12 12
13// none/d extends none/b 13// d extends b
14public class SubsubclassAA extends SubclassA { 14public class SubsubclassAA extends SubclassA {
15 15
16 protected SubsubclassAA() { 16 protected SubsubclassAA() {
17 // call to none/b.<init>(Ljava/lang/String;)V 17 // call to b.<init>(Ljava/lang/String;)V
18 super("AA"); 18 super("AA");
19 } 19 }
20 20
21 @Override 21 @Override
22 // a()Ljava/lang/String; 22 // a()Ljava/lang/String;
23 public String getName() { 23 public String getName() {
24 // call to none/b.a()Ljava/lang/String; 24 // call to b.a()Ljava/lang/String;
25 return "subsub" + super.getName(); 25 return "subsub" + super.getName();
26 } 26 }
27 27
28 @Override 28 @Override
29 // a()V 29 // a()V
30 public void doBaseThings() { 30 public void doBaseThings() {
31 // call to none/d.a()Ljava/lang/String; 31 // call to d.a()Ljava/lang/String;
32 System.out.println("Base things by " + getName()); 32 System.out.println("Base things by " + getName());
33 } 33 }
34} 34}
diff --git a/src/test/java/cuchaz/enigma/resources/translation.mappings b/src/test/java/cuchaz/enigma/resources/translation.mappings
index db78c19d..c08765c7 100644
--- a/src/test/java/cuchaz/enigma/resources/translation.mappings
+++ b/src/test/java/cuchaz/enigma/resources/translation.mappings
@@ -1,4 +1,4 @@
1CLASS none/a deobf/A_Basic 1CLASS a deobf/A_Basic
2 FIELD a f1 I 2 FIELD a f1 I
3 FIELD a f2 F 3 FIELD a f2 F
4 FIELD a f3 Ljava/lang/String; 4 FIELD a f3 Ljava/lang/String;
@@ -6,36 +6,36 @@ CLASS none/a deobf/A_Basic
6 METHOD a m2 ()I 6 METHOD a m2 ()I
7 METHOD a m3 (I)V 7 METHOD a m3 (I)V
8 METHOD a m4 (I)I 8 METHOD a m4 (I)I
9CLASS none/b deobf/B_BaseClass 9CLASS b deobf/B_BaseClass
10 FIELD a f1 I 10 FIELD a f1 I
11 FIELD a f2 C 11 FIELD a f2 C
12 METHOD a m1 ()I 12 METHOD a m1 ()I
13 METHOD b m2 ()I 13 METHOD b m2 ()I
14CLASS none/c deobf/C_SubClass 14CLASS c deobf/C_SubClass
15 FIELD b f2 C 15 FIELD b f2 C
16 FIELD b f3 I 16 FIELD b f3 I
17 FIELD c f4 I 17 FIELD c f4 I
18 METHOD a m1 ()I 18 METHOD a m1 ()I
19 METHOD c m3 ()I 19 METHOD c m3 ()I
20CLASS none/g deobf/G_OuterClass 20CLASS g deobf/G_OuterClass
21 CLASS none/g$a A_InnerClass 21 CLASS g$a A_InnerClass
22 CLASS none/g$a$a A_InnerInnerClass 22 CLASS g$a$a A_InnerInnerClass
23 FIELD a f3 I 23 FIELD a f3 I
24 METHOD a m2 ()V 24 METHOD a m2 ()V
25 FIELD a f1 I 25 FIELD a f1 I
26 FIELD a f2 Ljava/lang/String; 26 FIELD a f2 Ljava/lang/String;
27 METHOD a m1 ()V 27 METHOD a m1 ()V
28 CLASS none/g$b 28 CLASS g$b
29 CLASS none/g$b$a A_NamedInnerClass 29 CLASS g$b$a A_NamedInnerClass
30 FIELD a f4 I 30 FIELD a f4 I
31CLASS none/h 31CLASS h
32CLASS none/i deobf/I_Generics 32CLASS i deobf/I_Generics
33 CLASS none/i$a A_Type 33 CLASS i$a A_Type
34 CLASS none/i$b B_Generic 34 CLASS i$b B_Generic
35 FIELD a f4 Ljava/lang/Object; 35 FIELD a f4 Ljava/lang/Object;
36 METHOD a m1 ()Ljava/lang/Object; 36 METHOD a m1 ()Ljava/lang/Object;
37 FIELD a f1 Ljava/util/List; 37 FIELD a f1 Ljava/util/List;
38 FIELD b f2 Ljava/util/List; 38 FIELD b f2 Ljava/util/List;
39 FIELD a f3 Ljava/util/Map; 39 FIELD a f3 Ljava/util/Map;
40 FIELD a f5 Lnone/i$b; 40 FIELD a f5 Li$b;
41 FIELD b f6 Lnone/i$b; 41 FIELD b f6 Li$b;