[480645] support create extension statements in debugger

Change-Id: Ib5cb8d7febabaa8e394055e1621aaa2d3b925ee2
Signed-off-by: Karsten Thoms <karsten.thoms@itemis.de>
diff --git a/plugins/org.eclipse.xtend/src/org/eclipse/internal/xtend/expression/debug/ExpressionElementAdapter.java b/plugins/org.eclipse.xtend/src/org/eclipse/internal/xtend/expression/debug/ExpressionElementAdapter.java
index 5cade4f..eee72a9 100644
--- a/plugins/org.eclipse.xtend/src/org/eclipse/internal/xtend/expression/debug/ExpressionElementAdapter.java
+++ b/plugins/org.eclipse.xtend/src/org/eclipse/internal/xtend/expression/debug/ExpressionElementAdapter.java
@@ -31,6 +31,8 @@
 import org.eclipse.internal.xtend.expression.ast.Literal;
 import org.eclipse.internal.xtend.expression.ast.OperationCall;
 import org.eclipse.internal.xtend.type.baseimpl.PolymorphicResolver;
+import org.eclipse.internal.xtend.xtend.ast.CreateExtensionStatement;
+import org.eclipse.internal.xtend.xtend.ast.ExpressionExtensionStatement;
 import org.eclipse.xtend.expression.ExecutionContext;
 import org.eclipse.xtend.expression.Variable;
 import org.eclipse.xtend.typesystem.AbstractTypeImpl;
@@ -43,8 +45,8 @@
  * 
  * @author Bernd Kolb
  * @author Clemens Kadura (zAJKa)
- * @author Karsten Thoms - maintenance
- * @author Aykut Kilic (itemis) - Bug#465802,480646
+ * @author Karsten Thoms (itemis) - maintenance
+ * @author Aykut Kilic (itemis) - Bug#465802,480646,480645
  */
 public class ExpressionElementAdapter implements ElementAdapter {
 
@@ -177,6 +179,15 @@
 
 			return result;
 		}
+		if(element instanceof CreateExtensionStatement || element instanceof ExpressionExtensionStatement) {
+		  final Type type = context.getType(element);
+	      List<NameValuePair> props = getAllPropertiesFor(type, element);
+	      for (Entry<String, Variable> entry : context.getVisibleVariables().entrySet()) {
+	        Variable var = entry.getValue();
+	        props.add(new NameValuePair(entry.getKey(), var.getValue()));
+	      }
+	      return props;
+		}
 		if (element instanceof FeatureCall)
 			return evaluateFeatureCall((FeatureCall) element);
 		if (element instanceof Collection<?>) {
diff --git a/plugins/org.eclipse.xtend/src/org/eclipse/internal/xtend/xtend/ast/CreateExtensionStatement.java b/plugins/org.eclipse.xtend/src/org/eclipse/internal/xtend/xtend/ast/CreateExtensionStatement.java
index 70efff4..bb6f8b4 100644
--- a/plugins/org.eclipse.xtend/src/org/eclipse/internal/xtend/xtend/ast/CreateExtensionStatement.java
+++ b/plugins/org.eclipse.xtend/src/org/eclipse/internal/xtend/xtend/ast/CreateExtensionStatement.java
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *     committers of openArchitectureWare - initial API and implementation
+ * @author Karsten Thoms (itemis) - maintenance
+ * @author Aykut Kilic (itemis) - Bug#480645
  *******************************************************************************/
 package org.eclipse.internal.xtend.xtend.ast;
 
@@ -92,7 +94,9 @@
 			final Object object = parameters[i];
 			_ctx = _ctx.cloneWithVariable(new Variable(getParameterNames().get(i), object));
 		}
+		_ctx.preTask(this);
 		expression.evaluate(_ctx);
+		_ctx.postTask(this);
 		return inst;
 	}