summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/SourceIndexVisitor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/analysis/SourceIndexVisitor.java')
-rw-r--r--src/cuchaz/enigma/analysis/SourceIndexVisitor.java48
1 files changed, 4 insertions, 44 deletions
diff --git a/src/cuchaz/enigma/analysis/SourceIndexVisitor.java b/src/cuchaz/enigma/analysis/SourceIndexVisitor.java
index 5a64e4e..0ba5996 100644
--- a/src/cuchaz/enigma/analysis/SourceIndexVisitor.java
+++ b/src/cuchaz/enigma/analysis/SourceIndexVisitor.java
@@ -16,7 +16,6 @@ import com.strobel.assembler.metadata.MethodDefinition;
16import com.strobel.assembler.metadata.ParameterDefinition; 16import com.strobel.assembler.metadata.ParameterDefinition;
17import com.strobel.assembler.metadata.TypeDefinition; 17import com.strobel.assembler.metadata.TypeDefinition;
18import com.strobel.assembler.metadata.TypeReference; 18import com.strobel.assembler.metadata.TypeReference;
19import com.strobel.componentmodel.Key;
20import com.strobel.decompiler.languages.TextLocation; 19import com.strobel.decompiler.languages.TextLocation;
21import com.strobel.decompiler.languages.java.ast.Annotation; 20import com.strobel.decompiler.languages.java.ast.Annotation;
22import com.strobel.decompiler.languages.java.ast.AnonymousObjectCreationExpression; 21import com.strobel.decompiler.languages.java.ast.AnonymousObjectCreationExpression;
@@ -149,7 +148,7 @@ public class SourceIndexVisitor implements IAstVisitor<SourceIndex, Void>
149 { 148 {
150 ClassEntry classEntry = new ClassEntry( def.getDeclaringType().getInternalName() ); 149 ClassEntry classEntry = new ClassEntry( def.getDeclaringType().getInternalName() );
151 MethodEntry methodEntry = new MethodEntry( classEntry, def.getName(), def.getSignature() ); 150 MethodEntry methodEntry = new MethodEntry( classEntry, def.getName(), def.getSignature() );
152 index.add( node.getNameToken(), methodEntry ); 151 index.addDeclaration( node.getNameToken(), methodEntry );
153 } 152 }
154 153
155 return recurse( node, index ); 154 return recurse( node, index );
@@ -172,7 +171,7 @@ public class SourceIndexVisitor implements IAstVisitor<SourceIndex, Void>
172 MethodDefinition methodDef = (MethodDefinition)def.getMethod(); 171 MethodDefinition methodDef = (MethodDefinition)def.getMethod();
173 MethodEntry methodEntry = new MethodEntry( classEntry, methodDef.getName(), methodDef.getSignature() ); 172 MethodEntry methodEntry = new MethodEntry( classEntry, methodDef.getName(), methodDef.getSignature() );
174 ArgumentEntry argumentEntry = new ArgumentEntry( methodEntry, def.getPosition(), def.getName() ); 173 ArgumentEntry argumentEntry = new ArgumentEntry( methodEntry, def.getPosition(), def.getName() );
175 index.add( node.getNameToken(), argumentEntry ); 174 index.addDeclaration( node.getNameToken(), argumentEntry );
176 175
177 return recurse( node, index ); 176 return recurse( node, index );
178 } 177 }
@@ -185,7 +184,7 @@ public class SourceIndexVisitor implements IAstVisitor<SourceIndex, Void>
185 FieldEntry fieldEntry = new FieldEntry( classEntry, def.getName() ); 184 FieldEntry fieldEntry = new FieldEntry( classEntry, def.getName() );
186 assert( node.getVariables().size() == 1 ); 185 assert( node.getVariables().size() == 1 );
187 VariableInitializer variable = node.getVariables().firstOrNullObject(); 186 VariableInitializer variable = node.getVariables().firstOrNullObject();
188 index.add( variable.getNameToken(), fieldEntry ); 187 index.addDeclaration( variable.getNameToken(), fieldEntry );
189 188
190 return recurse( node, index ); 189 return recurse( node, index );
191 } 190 }
@@ -194,16 +193,13 @@ public class SourceIndexVisitor implements IAstVisitor<SourceIndex, Void>
194 public Void visitTypeDeclaration( TypeDeclaration node, SourceIndex index ) 193 public Void visitTypeDeclaration( TypeDeclaration node, SourceIndex index )
195 { 194 {
196 TypeDefinition def = node.getUserData( Keys.TYPE_DEFINITION ); 195 TypeDefinition def = node.getUserData( Keys.TYPE_DEFINITION );
197 index.add( node.getNameToken(), new ClassEntry( def.getInternalName() ) ); 196 index.addDeclaration( node.getNameToken(), new ClassEntry( def.getInternalName() ) );
198 197
199 return recurse( node, index ); 198 return recurse( node, index );
200 } 199 }
201 200
202 private Void recurse( AstNode node, SourceIndex index ) 201 private Void recurse( AstNode node, SourceIndex index )
203 { 202 {
204 // TEMP: show the tree
205 System.out.println( getIndent( node ) + node.getClass().getSimpleName() + dumpUserData( node ) + " " + node.getRegion() );
206
207 for( final AstNode child : node.getChildren() ) 203 for( final AstNode child : node.getChildren() )
208 { 204 {
209 child.acceptVisitor( this, index ); 205 child.acceptVisitor( this, index );
@@ -211,42 +207,6 @@ public class SourceIndexVisitor implements IAstVisitor<SourceIndex, Void>
211 return null; 207 return null;
212 } 208 }
213 209
214 private String dumpUserData( AstNode node )
215 {
216 StringBuilder buf = new StringBuilder();
217 for( Key<?> key : Keys.ALL_KEYS )
218 {
219 Object val = node.getUserData( key );
220 if( val != null )
221 {
222 buf.append( String.format( " [%s=%s]", key, val ) );
223 }
224 }
225 return buf.toString();
226 }
227
228 private String getIndent( AstNode node )
229 {
230 StringBuilder buf = new StringBuilder();
231 int depth = getDepth( node );
232 for( int i = 0; i < depth; i++ )
233 {
234 buf.append( "\t" );
235 }
236 return buf.toString();
237 }
238
239 private int getDepth( AstNode node )
240 {
241 int depth = -1;
242 while( node != null )
243 {
244 depth++;
245 node = node.getParent();
246 }
247 return depth;
248 }
249
250 // OVERRIDES WE DON'T CARE ABOUT 210 // OVERRIDES WE DON'T CARE ABOUT
251 211
252 @Override 212 @Override