diff options
Diffstat (limited to 'src/cuchaz/enigma/analysis/SourceIndexVisitor.java')
| -rw-r--r-- | src/cuchaz/enigma/analysis/SourceIndexVisitor.java | 48 |
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; | |||
| 16 | import com.strobel.assembler.metadata.ParameterDefinition; | 16 | import com.strobel.assembler.metadata.ParameterDefinition; |
| 17 | import com.strobel.assembler.metadata.TypeDefinition; | 17 | import com.strobel.assembler.metadata.TypeDefinition; |
| 18 | import com.strobel.assembler.metadata.TypeReference; | 18 | import com.strobel.assembler.metadata.TypeReference; |
| 19 | import com.strobel.componentmodel.Key; | ||
| 20 | import com.strobel.decompiler.languages.TextLocation; | 19 | import com.strobel.decompiler.languages.TextLocation; |
| 21 | import com.strobel.decompiler.languages.java.ast.Annotation; | 20 | import com.strobel.decompiler.languages.java.ast.Annotation; |
| 22 | import com.strobel.decompiler.languages.java.ast.AnonymousObjectCreationExpression; | 21 | import 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 |