Bug570793 : Add support for cast operations inside lambda expressions

The RemoteEvaluationBuilder didn't add proper parenthesis when
processing cast AST nodes. This result in final snippet which contained
errors due to mixed up cast type and variable names.


Change-Id: I4d9742e05ebe6406d71fafa0162ea532571517c3
Signed-off-by: Gayan Perera <gayanper@gmail.com>
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/RemoteEvaluatorTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/RemoteEvaluatorTests.java
index cfbf895..9349aa4 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/RemoteEvaluatorTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/RemoteEvaluatorTests.java
@@ -88,6 +88,22 @@
 		assertEquals("count is not 4000", "4000", value.getValueString());
 	}
 
+	public void testEvaluate_PrimitiveCastInLamndaExpr_ShouldEvaluatedWithCastType() throws Exception {
+		debugWithBreakpoint("RemoteEvaluator", 20);
+		IValue value = evaluate("java.util.stream.IntStream.of(1,2,3).anyMatch(i -> ((short) i) > (short)2)");
+
+		assertNotNull("result is null", value);
+		assertEquals("value is not true", "true", value.getValueString());
+	}
+
+	public void testEvaluate_TypeCastInLamndaExpr_ShouldEvaluatedWithCastType() throws Exception {
+		debugWithBreakpoint("RemoteEvaluator", 20);
+		IValue value = evaluate("java.util.stream.Stream.<java.util.List<Object>>of(new java.util.ArrayList<>()).anyMatch(l -> ((java.util.ArrayList<Object>)l).size() > 1)");
+
+		assertNotNull("result is null", value);
+		assertEquals("value is not false", "false", value.getValueString());
+	}
+
 	@Override
 	protected IJavaProject getProjectContext() {
 		return get18Project();
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/RemoteEvaluatorBuilder.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/RemoteEvaluatorBuilder.java
index 9c81676..0e4531e 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/RemoteEvaluatorBuilder.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/RemoteEvaluatorBuilder.java
@@ -605,9 +605,9 @@
 
 		@Override
 		public boolean visit(CastExpression node) {
-			//buffer.append("(");//$NON-NLS-1$
+			buffer.append("(");//$NON-NLS-1$
 			node.getType().accept(this);
-			//buffer.append(")");//$NON-NLS-1$
+			buffer.append(")");//$NON-NLS-1$
 			node.getExpression().accept(this);
 			return false;
 		}