Bug 120651 - Display and Content Assist do not work consistently in Variables View
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/contentassist/CurrentValueContext.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/contentassist/CurrentValueContext.java
index 11a8950..1ff44b5 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/contentassist/CurrentValueContext.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/contentassist/CurrentValueContext.java
@@ -18,6 +18,8 @@
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.debug.core.IJavaArray;
import org.eclipse.jdt.debug.core.IJavaDebugTarget;
+import org.eclipse.jdt.debug.core.IJavaObject;
+import org.eclipse.jdt.debug.core.IJavaPrimitiveValue;
import org.eclipse.jdt.debug.core.IJavaStackFrame;
import org.eclipse.jdt.debug.core.IJavaType;
import org.eclipse.jdt.debug.core.IJavaValue;
@@ -37,7 +39,7 @@
*/
public IType getType() throws CoreException {
IJavaValue value = resolveValue();
- if (value == null) {
+ if (value == null || value instanceof IJavaPrimitiveValue) {
// no object selected, use the frame
return super.getType();
}
@@ -113,6 +115,8 @@
if (value instanceof IJavaArray) {
// do a song and dance to fake 'this' as an array receiver
return new String[][]{new String[] {ArrayRuntimeContext.ARRAY_THIS_VARIABLE}, new String[] {value.getJavaType().getName()}};
+ } else if (value instanceof IJavaObject) {
+ return new String[][]{};
}
return super.getLocalVariables();
}
@@ -128,5 +132,16 @@
return super.getSnippet(snippet);
}
+ /* (non-Javadoc)
+ * @see org.eclipse.jdt.internal.debug.ui.contentassist.CurrentFrameContext#isStatic()
+ */
+ public boolean isStatic() throws CoreException {
+ IJavaValue value = resolveValue();
+ if (value instanceof IJavaObject) {
+ return false;
+ }
+ return super.isStatic();
+ }
+
}