3131import org .eclipse .jdt .internal .debug .core .model .JDINullValue ;
3232import org .eclipse .jdt .internal .debug .core .model .JDIObjectValue ;
3333import org .eclipse .jdt .internal .debug .core .model .JDIPlaceholderValue ;
34+ import org .eclipse .jdt .internal .debug .core .model .JDIPrimitiveValue ;
3435import org .eclipse .jdt .internal .debug .core .model .JDIReferenceListVariable ;
3536import org .eclipse .jdt .internal .debug .ui .display .JavaInspectExpression ;
3637import org .eclipse .ui .IActionFilter ;
@@ -48,6 +49,7 @@ public class JavaVarActionFilter implements IActionFilter {
4849 * The set or primitive types
4950 */
5051 private static final Set <String > fgPrimitiveTypes = initPrimitiveTypes ();
52+ private static final Set <String > fgArrays = initArrays ();
5153
5254 /**
5355 * The predefined set of primitive types
@@ -67,9 +69,29 @@ private static Set<String> initPrimitiveTypes() {
6769 return set ;
6870 }
6971
72+ /**
73+ * The predefined set of primitive arrays
74+ *
75+ * @return the set of predefined primitive arrays types
76+ */
77+ private static Set <String > initArrays () {
78+ HashSet <String > set = new HashSet <>(8 );
79+ set .add ("short[]" ); //$NON-NLS-1$
80+ set .add ("int[]" ); //$NON-NLS-1$
81+ set .add ("long[]" ); //$NON-NLS-1$
82+ set .add ("float[]" ); //$NON-NLS-1$
83+ set .add ("double[]" ); //$NON-NLS-1$
84+ set .add ("boolean[]" ); //$NON-NLS-1$
85+ set .add ("byte[]" ); //$NON-NLS-1$
86+ set .add ("char[]" ); //$NON-NLS-1$
87+ return set ;
88+ }
89+
7090 /**
7191 * Determines if the declared value is the same as the concrete value
72- * @param var the variable to inspect
92+ *
93+ * @param var
94+ * the variable to inspect
7395 * @return true if the types are the same, false otherwise
7496 */
7597 protected boolean isDeclaredSameAsConcrete (IJavaVariable var ) {
@@ -211,6 +233,10 @@ else if (value.equals("isValuePrimitive")) { //$NON-NLS-1$
211233 if (value .equals ("isLocalVariableValue" )) { //$NON-NLS-1$
212234 return !(var instanceof JDILocalVariable );
213235 }
236+ if (value .equals ("isNonPrimitiveNonArray" )) { //$NON-NLS-1$
237+ boolean primArray = fgArrays .contains (var .getJavaType ().getName ());
238+ return (varValue instanceof JDIPrimitiveValue || primArray );
239+ }
214240 }
215241 else if (name .equals ("ConcreteVariableActionFilter" ) && value .equals ("isConcrete" )) { //$NON-NLS-1$ //$NON-NLS-2$
216242 return isDeclaredSameAsConcrete (var );
@@ -279,4 +305,4 @@ else if (name.equals("DetailFormatterFilter")) { //$NON-NLS-1$
279305 protected boolean isInstanceRetrievalAvailable (IJavaVariable var ) {
280306 return ((IJavaDebugTarget )var .getDebugTarget ()).supportsInstanceRetrieval () && !(var instanceof JDIReferenceListVariable );
281307 }
282- }
308+ }
0 commit comments