From 7a95aa296fcbe2fdde16f4e1f205f44bdc8ee499 Mon Sep 17 00:00:00 2001 From: Ben Gruver Date: Sun, 23 Oct 2016 13:55:23 -0700 Subject: [PATCH] Add additional exception info if StringReference doesn't resolve to a String --- .../jf/smalidea/debugging/value/LazyStringReference.java | 7 +++++++ .../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 88fd00700..2b52e2b7a 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 LazyStringReference(SmaliMethod method, Project project, int registerNumb } 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 0eeb010be..f17df6d72 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.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;