[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; }