Bug 506014 - constantly show method return node in variables view
Change-Id: I93d6cc93aa07f7d9a8ba07226b22ba65d98b3466
Signed-off-by: Till Brychcy <register.eclipse@brychcy.de>
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/test/stepping/StepResultTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/test/stepping/StepResultTests.java
index da83866..1c0fb56 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/test/stepping/StepResultTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/test/stepping/StepResultTests.java
@@ -75,7 +75,7 @@
stackFrame = (IJavaStackFrame) thread.getTopStackFrame();
assertEquals("main", stackFrame.getMethodName());
IVariable varInMain2 = stackFrame.getVariables()[0];
- assertEquals("x", varInMain2.getName());
+ assertEquals("no method return value", varInMain2.getName());
}
finally {
terminateAndRemove(thread);
@@ -124,7 +124,7 @@
IVariable varInH = stackFrame.getVariables()[0];
// specifically no "i() returned" must be present
- assertEquals("this", varInH.getName());
+ assertEquals("no method return value", varInH.getName());
}
finally {
terminateAndRemove(thread);
diff --git a/org.eclipse.jdt.debug.ui/icons/full/obj16/methodresult_obj_disabled.png b/org.eclipse.jdt.debug.ui/icons/full/obj16/methodresult_obj_disabled.png
new file mode 100644
index 0000000..238a9d1
--- /dev/null
+++ b/org.eclipse.jdt.debug.ui/icons/full/obj16/methodresult_obj_disabled.png
Binary files differ
diff --git a/org.eclipse.jdt.debug.ui/icons/full/obj16/methodresult_obj_disabled@2x.png b/org.eclipse.jdt.debug.ui/icons/full/obj16/methodresult_obj_disabled@2x.png
new file mode 100644
index 0000000..f11687b
--- /dev/null
+++ b/org.eclipse.jdt.debug.ui/icons/full/obj16/methodresult_obj_disabled@2x.png
Binary files differ
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIModelPresentation.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIModelPresentation.java
index bb02b14..a632454 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIModelPresentation.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIModelPresentation.java
@@ -1105,6 +1105,11 @@
}
}
if (javaVariable instanceof JDIReturnValueVariable) {
+
+ JDIReturnValueVariable jdiReturnValueVariable = (JDIReturnValueVariable) javaVariable;
+ if (!jdiReturnValueVariable.hasResult) {
+ return JavaDebugImages.getImageDescriptor(JavaDebugImages.IMG_OBJS_METHOD_RESULT_DISABLED);
+ }
return JavaDebugImages.getImageDescriptor(JavaDebugImages.IMG_OBJS_METHOD_RESULT);
}
return JavaUI.getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_DEFAULT);
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugImages.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugImages.java
index d8cd786..9317aa7 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugImages.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugImages.java
@@ -42,6 +42,7 @@
public static final String IMG_OBJS_LOCAL_VARIABLE = "IMG_OBJS_LOCAL_VARIABLE"; //$NON-NLS-1$
public static final String IMG_OBJS_METHOD_RESULT = "IMG_OBJS_METHOD_RESULT"; //$NON-NLS-1$
+ public static final String IMG_OBJS_METHOD_RESULT_DISABLED = "IMG_OBJS_METHOD_RESULT_DISABLED"; //$NON-NLS-1$
public static final String IMG_OVR_METHOD_BREAKPOINT_ENTRY= "IMG_OBJS_METHOD_BREAKPOINT_ENTRY"; //$NON-NLS-1$
public static final String IMG_OVR_METHOD_BREAKPOINT_ENTRY_DISABLED= "IMG_OBJS_METHOD_BREAKPOINT_ENTRY_DISABLED"; //$NON-NLS-1$
@@ -158,6 +159,7 @@
declareRegistryImage(IMG_OBJS_LOCAL_VARIABLE, T_OBJ + "localvariable_obj.png"); //$NON-NLS-1$
declareRegistryImage(IMG_OBJS_METHOD_RESULT, T_OBJ + "methodresult_obj.png"); //$NON-NLS-1$
+ declareRegistryImage(IMG_OBJS_METHOD_RESULT_DISABLED, T_OBJ + "methodresult_obj_disabled.png"); //$NON-NLS-1$
declareRegistryImage(IMG_OVR_METHOD_BREAKPOINT_ENTRY, T_OVR + "entry_ovr.png"); //$NON-NLS-1$
declareRegistryImage(IMG_OVR_METHOD_BREAKPOINT_ENTRY_DISABLED, T_OVR + "entry_ovr_disabled.png"); //$NON-NLS-1$
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/logicalstructures/JDIReturnValueVariable.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/logicalstructures/JDIReturnValueVariable.java
index cb7376c..562b01f 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/logicalstructures/JDIReturnValueVariable.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/logicalstructures/JDIReturnValueVariable.java
@@ -16,8 +16,10 @@
* Represents the return value after a "step-return".
*/
public class JDIReturnValueVariable extends JDIPlaceholderVariable {
+ public final boolean hasResult;
- public JDIReturnValueVariable(String name, IJavaValue value) {
+ public JDIReturnValueVariable(String name, IJavaValue value, boolean hasResult) {
super(name, value);
+ this.hasResult = hasResult;
}
}
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.java
index 50e19d0..67040ba 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.java
@@ -125,6 +125,7 @@
public static String JDIStackFrame_Variable_information_unavailable_for_native_methods;
public static String JDIStackFrame_ReturnValue;
public static String JDIStackFrame_ExceptionThrown;
+ public static String JDIStackFrame_NoMethodReturnValue;
public static String JDIThisVariable_exception_while_retrieving_type_this;
public static String JDIThisVariableexception_retrieving_reference_type_name;
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.properties b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.properties
index a3d5bb5..3b8f5f6 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.properties
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugModelMessages.properties
@@ -93,6 +93,7 @@
JDIStackFrame_Variable_information_unavailable_for_native_methods=Variable information unavailable for native methods
JDIStackFrame_ReturnValue={0}() returned
JDIStackFrame_ExceptionThrown={0}() threw
+JDIStackFrame_NoMethodReturnValue=no method return value
JDIThisVariable_exception_while_retrieving_type_this={0} occurred while retrieving type ''this''.
JDIThisVariableexception_retrieving_reference_type_name={0} occurred retrieving reference type name.
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java
index c03279d..a6b8275 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java
@@ -392,15 +392,17 @@
return;
}
String name = MessageFormat.format(JDIDebugModelMessages.JDIStackFrame_ReturnValue, stepResult.fMethod.name());
- variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), stepResult.fValue)));
+ variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), stepResult.fValue), true));
} else {
if (fDepth + 1 > stepResult.fTargetFrameCount) {
// don't know if this really can happen, but other jvm suprises were not expected either
return;
}
String name = MessageFormat.format(JDIDebugModelMessages.JDIStackFrame_ExceptionThrown, stepResult.fMethod.name());
- variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), stepResult.fValue)));
+ variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), stepResult.fValue), true));
}
+ } else if(JDIThread.showStepResultIsEnabled()) {
+ variables.add(0, new JDIReturnValueVariable(JDIDebugModelMessages.JDIStackFrame_NoMethodReturnValue, new JDIPlaceholderValue(getJavaDebugTarget(), ""), false)); //$NON-NLS-1$
}
}
}
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIThread.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIThread.java
index a9231e9..19216a9 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIThread.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIThread.java
@@ -2618,10 +2618,6 @@
}
- private boolean showStepResultIsEnabled() {
- return Platform.getPreferencesService().getBoolean(JDIDebugPlugin.getUniqueIdentifier(), JDIDebugModel.PREF_SHOW_STEP_RESULT, true, null);
- }
-
/**
* Returns the kind of step this handler implements.
*
@@ -3734,5 +3730,8 @@
protected DropToFrameHandler createDropToFrameHandler(IStackFrame stackFrame) throws DebugException {
return new DropToFrameHandler(stackFrame);
}
+ public static boolean showStepResultIsEnabled() {
+ return Platform.getPreferencesService().getBoolean(JDIDebugPlugin.getUniqueIdentifier(), JDIDebugModel.PREF_SHOW_STEP_RESULT, true, null);
+ }
}
\ No newline at end of file