aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gruver <bgruv@google.com>2016-10-23 13:55:23 -0700
committerBen Gruver <bgruv@google.com>2016-10-23 13:55:23 -0700
commit7a95aa296fcbe2fdde16f4e1f205f44bdc8ee499 (patch)
tree5f4377f353196e2647a8ee0fd45ef7ea9ed7c4c8
parent8f7d1a897df243a8fafcaec6c193477e73f54ef3 (diff)
downloadsmali-7a95aa296fcbe2fdde16f4e1f205f44bdc8ee499.tar.gz
Add additional exception info if StringReference doesn't resolve to a String
-rw-r--r--smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyStringReference.java7
-rw-r--r--smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyValue.java8
2 files changed, 11 insertions, 4 deletions
diff --git a/smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyStringReference.java b/smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyStringReference.java
index 88fd0070..2b52e2b7 100644
--- a/smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyStringReference.java
+++ b/smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyStringReference.java
@@ -32,6 +32,8 @@
package org.jf.smalidea.debugging.value;
import com.intellij.openapi.project.Project;
+import com.intellij.psi.PsiSubstitutor;
+import com.sun.jdi.ObjectReference;
import com.sun.jdi.StringReference;
import org.jf.smalidea.psi.impl.SmaliMethod;
@@ -41,6 +43,11 @@ public class LazyStringReference extends LazyObjectReference<StringReference> im
}
public String value() {
+ ObjectReference objectReference = getValue();
+ if (!(objectReference instanceof StringReference)) {
+ throw new IllegalStateException(String.format("Expecting type String, but got %s. method=%s, register=%d",
+ objectReference.type().name(), this.method.getSignature(PsiSubstitutor.EMPTY), registerNumber));
+ }
return getValue().value();
}
}
diff --git a/smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyValue.java b/smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyValue.java
index 0eeb010b..f17df6d7 100644
--- a/smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyValue.java
+++ b/smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyValue.java
@@ -48,10 +48,10 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class LazyValue<T extends Value> implements Value {
- private final int registerNumber;
- private final Project project;
- private final SmaliMethod method;
- private final String type;
+ protected final int registerNumber;
+ protected final Project project;
+ protected final SmaliMethod method;
+ protected final String type;
private EvaluationContext evaluationContext;
private Value value;