summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis
diff options
context:
space:
mode:
authorGravatar jeff2015-02-09 23:31:24 -0500
committerGravatar jeff2015-02-09 23:31:24 -0500
commitab6de199201f3cb292b986b2803d7d30b1485a47 (patch)
treedf9760cab6ad95ef1ab10cfb98c89d84324024e4 /src/cuchaz/enigma/analysis
parentfix translation issues, particularly with fields (diff)
downloadenigma-fork-ab6de199201f3cb292b986b2803d7d30b1485a47.tar.gz
enigma-fork-ab6de199201f3cb292b986b2803d7d30b1485a47.tar.xz
enigma-fork-ab6de199201f3cb292b986b2803d7d30b1485a47.zip
work around bad tokens generated by procyon for now
Diffstat (limited to 'src/cuchaz/enigma/analysis')
-rw-r--r--src/cuchaz/enigma/analysis/SourceIndex.java9
-rw-r--r--src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java21
-rw-r--r--src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java4
3 files changed, 9 insertions, 25 deletions
diff --git a/src/cuchaz/enigma/analysis/SourceIndex.java b/src/cuchaz/enigma/analysis/SourceIndex.java
index b43ab61..e31b803 100644
--- a/src/cuchaz/enigma/analysis/SourceIndex.java
+++ b/src/cuchaz/enigma/analysis/SourceIndex.java
@@ -82,10 +82,11 @@ public class SourceIndex {
82 // DEBUG 82 // DEBUG
83 // System.out.println( String.format( "%s \"%s\" region: %s", node.getNodeType(), name, region ) ); 83 // System.out.println( String.format( "%s \"%s\" region: %s", node.getNodeType(), name, region ) );
84 84
85 // for tokens representing inner classes, make sure we only get the simple name 85 // if the token has a $ in it, something's wrong. Ignore this token
86 int pos = name.lastIndexOf('$'); 86 if (name.lastIndexOf('$') >= 0) {
87 if (pos >= 0) { 87 // DEBUG
88 token.end -= pos + 1; 88 System.err.println(String.format("WARNING: %s \"%s\" is probably a bad token. It was ignored", node.getNodeType(), name));
89 return null;
89 } 90 }
90 91
91 return token; 92 return token;
diff --git a/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java b/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java
index b4094d9..a9a055b 100644
--- a/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java
+++ b/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java
@@ -17,12 +17,10 @@ import com.strobel.assembler.metadata.ParameterDefinition;
17import com.strobel.assembler.metadata.TypeReference; 17import com.strobel.assembler.metadata.TypeReference;
18import com.strobel.decompiler.languages.TextLocation; 18import com.strobel.decompiler.languages.TextLocation;
19import com.strobel.decompiler.languages.java.ast.AstNode; 19import com.strobel.decompiler.languages.java.ast.AstNode;
20import com.strobel.decompiler.languages.java.ast.ConstructorDeclaration;
21import com.strobel.decompiler.languages.java.ast.IdentifierExpression; 20import com.strobel.decompiler.languages.java.ast.IdentifierExpression;
22import com.strobel.decompiler.languages.java.ast.InvocationExpression; 21import com.strobel.decompiler.languages.java.ast.InvocationExpression;
23import com.strobel.decompiler.languages.java.ast.Keys; 22import com.strobel.decompiler.languages.java.ast.Keys;
24import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression; 23import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression;
25import com.strobel.decompiler.languages.java.ast.MethodDeclaration;
26import com.strobel.decompiler.languages.java.ast.ObjectCreationExpression; 24import com.strobel.decompiler.languages.java.ast.ObjectCreationExpression;
27import com.strobel.decompiler.languages.java.ast.ParameterDeclaration; 25import com.strobel.decompiler.languages.java.ast.ParameterDeclaration;
28import com.strobel.decompiler.languages.java.ast.SimpleType; 26import com.strobel.decompiler.languages.java.ast.SimpleType;
@@ -33,6 +31,7 @@ import cuchaz.enigma.mapping.ArgumentEntry;
33import cuchaz.enigma.mapping.BehaviorEntry; 31import cuchaz.enigma.mapping.BehaviorEntry;
34import cuchaz.enigma.mapping.ClassEntry; 32import cuchaz.enigma.mapping.ClassEntry;
35import cuchaz.enigma.mapping.ConstructorEntry; 33import cuchaz.enigma.mapping.ConstructorEntry;
34import cuchaz.enigma.mapping.EntryFactory;
36import cuchaz.enigma.mapping.FieldEntry; 35import cuchaz.enigma.mapping.FieldEntry;
37import cuchaz.enigma.mapping.MethodEntry; 36import cuchaz.enigma.mapping.MethodEntry;
38import cuchaz.enigma.mapping.Signature; 37import cuchaz.enigma.mapping.Signature;
@@ -47,16 +46,6 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor {
47 } 46 }
48 47
49 @Override 48 @Override
50 public Void visitMethodDeclaration(MethodDeclaration node, SourceIndex index) {
51 return recurse(node, index);
52 }
53
54 @Override
55 public Void visitConstructorDeclaration(ConstructorDeclaration node, SourceIndex index) {
56 return recurse(node, index);
57 }
58
59 @Override
60 public Void visitInvocationExpression(InvocationExpression node, SourceIndex index) { 49 public Void visitInvocationExpression(InvocationExpression node, SourceIndex index) {
61 MemberReference ref = node.getUserData(Keys.MEMBER_REFERENCE); 50 MemberReference ref = node.getUserData(Keys.MEMBER_REFERENCE);
62 51
@@ -122,14 +111,8 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor {
122 @Override 111 @Override
123 public Void visitParameterDeclaration(ParameterDeclaration node, SourceIndex index) { 112 public Void visitParameterDeclaration(ParameterDeclaration node, SourceIndex index) {
124 ParameterDefinition def = node.getUserData(Keys.PARAMETER_DEFINITION); 113 ParameterDefinition def = node.getUserData(Keys.PARAMETER_DEFINITION);
125 ClassEntry classEntry = new ClassEntry(def.getDeclaringType().getInternalName());
126 MethodDefinition methodDef = (MethodDefinition)def.getMethod(); 114 MethodDefinition methodDef = (MethodDefinition)def.getMethod();
127 BehaviorEntry behaviorEntry; 115 BehaviorEntry behaviorEntry = EntryFactory.getBehaviorEntry(methodDef);
128 if (methodDef.isConstructor()) {
129 behaviorEntry = new ConstructorEntry(classEntry, new Signature(methodDef.getSignature()));
130 } else {
131 behaviorEntry = new MethodEntry(classEntry, methodDef.getName(), new Signature(methodDef.getSignature()));
132 }
133 ArgumentEntry argumentEntry = new ArgumentEntry(behaviorEntry, def.getPosition(), node.getName()); 116 ArgumentEntry argumentEntry = new ArgumentEntry(behaviorEntry, def.getPosition(), node.getName());
134 index.addDeclaration(node.getNameToken(), argumentEntry); 117 index.addDeclaration(node.getNameToken(), argumentEntry);
135 118
diff --git a/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java b/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java
index d6692f6..f4f4956 100644
--- a/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java
+++ b/src/cuchaz/enigma/analysis/SourceIndexClassVisitor.java
@@ -94,7 +94,7 @@ public class SourceIndexClassVisitor extends SourceIndexVisitor {
94 public Void visitFieldDeclaration(FieldDeclaration node, SourceIndex index) { 94 public Void visitFieldDeclaration(FieldDeclaration node, SourceIndex index) {
95 FieldDefinition def = node.getUserData(Keys.FIELD_DEFINITION); 95 FieldDefinition def = node.getUserData(Keys.FIELD_DEFINITION);
96 ClassEntry classEntry = new ClassEntry(def.getDeclaringType().getInternalName()); 96 ClassEntry classEntry = new ClassEntry(def.getDeclaringType().getInternalName());
97 FieldEntry fieldEntry = new FieldEntry(classEntry, def.getName(), new Type(def.getSignature())); 97 FieldEntry fieldEntry = new FieldEntry(classEntry, def.getName(), new Type(def.getErasedSignature()));
98 assert (node.getVariables().size() == 1); 98 assert (node.getVariables().size() == 1);
99 VariableInitializer variable = node.getVariables().firstOrNullObject(); 99 VariableInitializer variable = node.getVariables().firstOrNullObject();
100 index.addDeclaration(variable.getNameToken(), fieldEntry); 100 index.addDeclaration(variable.getNameToken(), fieldEntry);
@@ -107,7 +107,7 @@ public class SourceIndexClassVisitor extends SourceIndexVisitor {
107 // treat enum declarations as field declarations 107 // treat enum declarations as field declarations
108 FieldDefinition def = node.getUserData(Keys.FIELD_DEFINITION); 108 FieldDefinition def = node.getUserData(Keys.FIELD_DEFINITION);
109 ClassEntry classEntry = new ClassEntry(def.getDeclaringType().getInternalName()); 109 ClassEntry classEntry = new ClassEntry(def.getDeclaringType().getInternalName());
110 FieldEntry fieldEntry = new FieldEntry(classEntry, def.getName(), new Type(def.getSignature())); 110 FieldEntry fieldEntry = new FieldEntry(classEntry, def.getName(), new Type(def.getErasedSignature()));
111 index.addDeclaration(node.getNameToken(), fieldEntry); 111 index.addDeclaration(node.getNameToken(), fieldEntry);
112 112
113 return recurse(node, index); 113 return recurse(node, index);