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 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 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;