All non-primitive types now accept parameters
diff --git a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/DoubleEqualsOperatorExpression.java b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/DoubleEqualsOperatorExpression.java
new file mode 100644
index 0000000..9b9f8b6
--- /dev/null
+++ b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/DoubleEqualsOperatorExpression.java
@@ -0,0 +1,5 @@
+package org.eclipse.epsilon.eol.dom;
+
+public class DoubleEqualsOperatorExpression extends EqualsOperatorExpression {
+
+}
diff --git a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/OperatorExpressionFactory.java b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/OperatorExpressionFactory.java
index c22dcf0..fb44f7f 100644
--- a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/OperatorExpressionFactory.java
+++ b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/OperatorExpressionFactory.java
@@ -6,9 +6,12 @@
public OperatorExpression createOperatorExpression(AST ast) {
String operator = ast.getText();
- if (operator.startsWith("=")) {
+ if (operator.equals("=")) {
return new EqualsOperatorExpression();
}
+ else if (operator.equals("==")) {
+ return new DoubleEqualsOperatorExpression();
+ }
else if (operator.equals("<>")) {
return new NotEqualsOperatorExpression();
}
diff --git a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/TypeInitialiser.java b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/TypeInitialiser.java
index ac8f2ac..ea809df 100644
--- a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/TypeInitialiser.java
+++ b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/TypeInitialiser.java
@@ -28,47 +28,43 @@
EolModelElementType modelElementType = (EolModelElementType) type;
throw new EolNotInstantiableModelElementTypeException(modelElementType);
}
-
- if (type instanceof EolModelElementType) {
-
- Object instance = type.createInstance();
-
- for (Expression parameter : parameters) {
- if (parameter instanceof EqualsOperatorExpression) {
- EqualsOperatorExpression equalsOperatorExpression = (EqualsOperatorExpression) parameter;
- if (equalsOperatorExpression.getFirstOperand() instanceof NameExpression) {
- String property = ((NameExpression) equalsOperatorExpression.getFirstOperand()).getName();
- IPropertySetter setter = context.getIntrospectionManager().getPropertySetterFor(instance, property, context);
- if (setter != null) {
- setter.setAst(parameter);
- setter.invoke(context.getExecutorFactory().execute(equalsOperatorExpression.getSecondOperand(), context));
- }
- else throw new EolIllegalPropertyException(instance, property, equalsOperatorExpression.getFirstOperand(), context);
- }
- else {
- throw new EolRuntimeException("Property name expected", equalsOperatorExpression.getFirstOperand());
- }
- }
- else {
- throw new EolRuntimeException("Property initialisation expression expected", parameter);
- }
+
+ ArrayList<Object> parameterValues = new ArrayList<Object>();
+ for (Expression parameter : parameters) {
+ if (!(parameter.getClass() == EqualsOperatorExpression.class)) {
+ parameterValues.add(context.getExecutorFactory().execute(parameter, context));
}
-
- return instance;
-
+ }
+
+ Object instance = null;
+
+ if (parameterValues.isEmpty()) {
+ instance = type.createInstance();
}
else {
- if (!parameters.isEmpty()) {
- ArrayList<Object> parameterValues = new ArrayList<Object>();
- for (Expression parameter : parameters) {
- parameterValues.add(context.getExecutorFactory().execute(parameter, context));
+ instance = type.createInstance(parameterValues);
+ }
+
+ for (Expression parameter : parameters) {
+ if (parameter.getClass() == EqualsOperatorExpression.class) {
+ EqualsOperatorExpression equalsOperatorExpression = (EqualsOperatorExpression) parameter;
+ if (equalsOperatorExpression.getFirstOperand() instanceof NameExpression) {
+ String property = ((NameExpression) equalsOperatorExpression.getFirstOperand()).getName();
+ IPropertySetter setter = context.getIntrospectionManager().getPropertySetterFor(instance, property, context);
+ if (setter != null) {
+ setter.setAst(parameter);
+ setter.invoke(context.getExecutorFactory().execute(equalsOperatorExpression.getSecondOperand(), context));
+ }
+ else throw new EolIllegalPropertyException(instance, property, equalsOperatorExpression.getFirstOperand(), context);
}
- return type.createInstance(parameterValues);
- }
- else {
- return type.createInstance();
+ else {
+ throw new EolRuntimeException("Property name expected", equalsOperatorExpression.getFirstOperand());
+ }
}
}
+
+ return instance;
+
}
return null;
}