diff options
author | Ben Gruver <bgruv@google.com> | 2016-10-23 13:55:23 -0700 |
---|---|---|
committer | Ben Gruver <bgruv@google.com> | 2016-10-23 13:55:23 -0700 |
commit | 7a95aa296fcbe2fdde16f4e1f205f44bdc8ee499 (patch) | |
tree | 5f4377f353196e2647a8ee0fd45ef7ea9ed7c4c8 | |
parent | 8f7d1a897df243a8fafcaec6c193477e73f54ef3 (diff) | |
download | smali-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.java | 7 | ||||
-rw-r--r-- | smalidea/src/main/java/org/jf/smalidea/debugging/value/LazyValue.java | 8 |
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; |