Exclude nameless fields from SmaliClass.getFields()
Fields with a null or blank name tend to cause problems, so we'll just
exclude them until they have a name.
diff --git a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliClass.java b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliClass.java
index b4c473f..77d95a7 100644
--- a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliClass.java
+++ b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliClass.java
@@ -31,6 +31,7 @@
package org.jf.smalidea.psi.impl;
+import com.google.common.collect.Lists;
import com.intellij.debugger.SourcePosition;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.util.Pair;
@@ -159,7 +160,21 @@
}
@NotNull @Override public SmaliField[] getFields() {
- return getStubOrPsiChildren(SmaliElementTypes.FIELD, new SmaliField[0]);
+ SmaliField[] fields = getStubOrPsiChildren(SmaliElementTypes.FIELD, new SmaliField[0]);
+ List<SmaliField> filteredFields = null;
+ for (int i=fields.length-1; i>=0; i--) {
+ SmaliField field = fields[i];
+ if (field.getName() == null) {
+ if (filteredFields == null) {
+ filteredFields = Lists.newArrayList(fields);
+ }
+ filteredFields.remove(i);
+ }
+ }
+ if (filteredFields != null) {
+ return filteredFields.toArray(new SmaliField[filteredFields.size()]);
+ }
+ return fields;
}
@NotNull @Override public SmaliMethod[] getMethods() {