[535888] Regenerate, eliminate usage of ExpCS.precedence
diff --git a/plugins/org.eclipse.ocl.pivot/.settings/.api_filters b/plugins/org.eclipse.ocl.pivot/.settings/.api_filters
index 994ad9a..3e924b2 100644
--- a/plugins/org.eclipse.ocl.pivot/.settings/.api_filters
+++ b/plugins/org.eclipse.ocl.pivot/.settings/.api_filters
@@ -582,6 +582,34 @@
</message_arguments>
</filter>
</resource>
+ <resource path="src/org/eclipse/ocl/pivot/internal/manager/PrecedenceManager.java" type="org.eclipse.ocl.pivot.internal.manager.PrecedenceManager">
+ <filter id="336658481">
+ <message_arguments>
+ <message_argument value="org.eclipse.ocl.pivot.internal.manager.PrecedenceManager"/>
+ <message_argument value="LEAF_PRECEDENCE_ORDER"/>
+ </message_arguments>
+ </filter>
+ <filter id="336658481">
+ <message_arguments>
+ <message_argument value="org.eclipse.ocl.pivot.internal.manager.PrecedenceManager"/>
+ <message_argument value="NAVIGATION_PRECEDENCE_ORDER"/>
+ </message_arguments>
+ </filter>
+ <filter id="336658481">
+ <message_arguments>
+ <message_argument value="org.eclipse.ocl.pivot.internal.manager.PrecedenceManager"/>
+ <message_argument value="NULL_PRECEDENCE_ORDER"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/ocl/pivot/internal/resource/ASResourceImpl.java" type="org.eclipse.ocl.pivot.internal.resource.ASResourceImpl">
+ <filter id="336658481">
+ <message_arguments>
+ <message_argument value="org.eclipse.ocl.pivot.internal.resource.ASResourceImpl"/>
+ <message_argument value="CHECK_IMMUTABILITY"/>
+ </message_arguments>
+ </filter>
+ </resource>
<resource path="src/org/eclipse/ocl/pivot/internal/resource/StandaloneProjectMap.java" type="org.eclipse.ocl.pivot.internal.resource.StandaloneProjectMap">
<filter comment="Bug 512402 workaround" id="576725006">
<message_arguments>
diff --git a/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/Precedence.java b/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/Precedence.java
index 4833e71..b9d7136 100644
--- a/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/Precedence.java
+++ b/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/Precedence.java
@@ -29,7 +29,7 @@
* @generated
*/
public interface Precedence
- extends NamedElement {
+extends NamedElement {
/**
* Returns the value of the '<em><b>Associativity</b></em>' attribute.
@@ -68,22 +68,27 @@
* If the meaning of the '<em>Order</em>' attribute isn't clear,
* there really should be more of a description here...
* </p>
+ * @deprecated - no longer used - use PrecedenceManager$OrderedPrecedence
* <!-- end-user-doc -->
* @return the value of the '<em>Order</em>' attribute.
* @see #setOrder(Number)
* @see org.eclipse.ocl.pivot.PivotPackage#getPrecedence_Order()
* @generated
*/
+ @Deprecated
Number getOrder();
/**
* Sets the value of the '{@link org.eclipse.ocl.pivot.Precedence#getOrder <em>Order</em>}' attribute.
* <!-- begin-user-doc -->
+ * </p>
+ * @deprecated - no longer used - use PrecedenceManager$OrderedPrecedence
* <!-- end-user-doc -->
* @param value the new value of the '<em>Order</em>' attribute.
* @see #getOrder()
* @generated
*/
+ @Deprecated
void setOrder(Number value);
} // Precedence
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PivotMetamodelManager.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PivotMetamodelManager.java
index d8522db..621518e 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PivotMetamodelManager.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PivotMetamodelManager.java
@@ -1421,8 +1421,11 @@
return completeClass.getPartialClasses();
}
+ /**
+ * @since 1.5
+ */
@SuppressWarnings("null")
- protected @NonNull PrecedenceManager getPrecedenceManager() {
+ public @NonNull PrecedenceManager getPrecedenceManager() {
if (precedenceManager == null) {
standardLibrary.getOclAnyType(); // Make sure OCL Standard Library has defined operations to be compiled with precedence
synchronized (this) {
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PrecedenceManager.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PrecedenceManager.java
index ea49979..e4c0498 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PrecedenceManager.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/manager/PrecedenceManager.java
@@ -17,6 +17,7 @@
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.pivot.AssociativityKind;
import org.eclipse.ocl.pivot.Library;
import org.eclipse.ocl.pivot.Operation;
import org.eclipse.ocl.pivot.Parameter;
@@ -27,20 +28,35 @@
/**
* PrecedenceManager encapsulates the knowledge about known precedences.
+ * @since 1.5
*/
public class PrecedenceManager
{
-
public static @NonNull Precedence NULL_PRECEDENCE = PivotFactory.eINSTANCE.createPrecedence();
+ /**
+ * @since 1.5
+ */
+ public static final int NULL_PRECEDENCE_ORDER = Integer.MAX_VALUE/2;
public static @NonNull Precedence NAVIGATION_PRECEDENCE = PivotFactory.eINSTANCE.createPrecedence();
+ /**
+ * @since 1.5
+ */
+ public static final int NAVIGATION_PRECEDENCE_ORDER = Integer.valueOf(-1);
public static @NonNull Precedence LEAF_PRECEDENCE = PivotFactory.eINSTANCE.createPrecedence();
+ /**
+ * @since 1.5
+ */
+ public static final int LEAF_PRECEDENCE_ORDER = Integer.valueOf(-2);
static {
NULL_PRECEDENCE.setName("NULL");
- NULL_PRECEDENCE.setOrder(Integer.MAX_VALUE/2); // Small enough to avoid wrap around during comparison
+ // NULL_PRECEDENCE.setOrder(NULL_PRECEDENCE_ORDER); // Small enough to avoid wrap around during comparison
+ NULL_PRECEDENCE.setAssociativity(AssociativityKind.LEFT);
NAVIGATION_PRECEDENCE.setName("NAVIGATION");
- NAVIGATION_PRECEDENCE.setOrder(Integer.valueOf(-1));
+ // NAVIGATION_PRECEDENCE.setOrder(NAVIGATION_PRECEDENCE_ORDER);
+ NAVIGATION_PRECEDENCE.setAssociativity(AssociativityKind.LEFT);
LEAF_PRECEDENCE.setName("LEAF");
- LEAF_PRECEDENCE.setOrder(Integer.valueOf(-2));
+ // LEAF_PRECEDENCE.setOrder(LEAF_PRECEDENCE_ORDER);
+ LEAF_PRECEDENCE.setAssociativity(AssociativityKind.LEFT);
}
/**
@@ -52,12 +68,14 @@
* e.g. <tt> precedence A B D</tt> and <tt>precedence B C D</tt> merge to
* <tt>A B C D</tt> with duplicate precedence objects for B and D.
*/
- private Map<@NonNull String, @NonNull List<Precedence>> nameToPrecedencesMap = null;
+ private Map<@NonNull String, @NonNull List<@NonNull Precedence>> nameToPrecedencesMap = null;
private Map<@NonNull String, String> infixToPrecedenceNameMap = null;
private Map<@NonNull String, @NonNull String> prefixToPrecedenceNameMap = null;
+ private Map<@NonNull Precedence, @NonNull Integer> precedence2order = null;
+
/**
* Interleave the ownedPrecedences of the rootPackages to establish a merged
* ordering and assign the index in that ordering to each
@@ -70,6 +88,7 @@
nameToPrecedencesMap = new HashMap<>();
infixToPrecedenceNameMap = new HashMap<>();
prefixToPrecedenceNameMap = new HashMap<>();
+ precedence2order = new HashMap<>();
for (@NonNull Library library : libraries) {
List<@NonNull Precedence> precedences = ClassUtil.nullFree(library.getOwnedPrecedences());
if (precedences.size() > 0) {
@@ -106,12 +125,15 @@
}
}
}
+ precedence2order.put(NULL_PRECEDENCE, NULL_PRECEDENCE_ORDER); // Small enough to avoid wrap around during comparison
+ precedence2order.put(NAVIGATION_PRECEDENCE, NAVIGATION_PRECEDENCE_ORDER);
+ precedence2order.put(LEAF_PRECEDENCE, LEAF_PRECEDENCE_ORDER);
for (int i = 0; i < orderedPrecedences.size(); i++) {
String name = orderedPrecedences.get(i);
- List<Precedence> precedences = nameToPrecedencesMap.get(name);
+ List<@NonNull Precedence> precedences = nameToPrecedencesMap.get(name);
assert precedences != null;
for (Precedence precedence : precedences) {
- precedence.setOrder(i);
+ precedence2order.put(precedence, i);
}
}
return errors;
@@ -171,11 +193,22 @@
if (precedenceName == null) {
return null;
}
- List<Precedence> precedences = nameToPrecedencesMap.get(precedenceName);
+ List<@NonNull Precedence> precedences = nameToPrecedencesMap.get(precedenceName);
if (precedences == null) {
return null;
}
- return precedences.get(0);
+ Precedence precedence = precedences.get(0);
+ if (precedence == null) {
+ return null;
+ }
+ return precedence;
+ }
+
+ /**
+ * @since 1.5
+ */
+ public int getOrder(@NonNull Precedence precedence) {
+ return ClassUtil.nonNullState(precedence2order.get(precedence));
}
public @Nullable Precedence getPrefixPrecedence(@NonNull String operatorName) {
@@ -183,10 +216,14 @@
if (precedenceName == null) {
return null;
}
- List<Precedence> precedences = nameToPrecedencesMap.get(precedenceName);
+ List<@NonNull Precedence> precedences = nameToPrecedencesMap.get(precedenceName);
if (precedences == null) {
return null;
}
- return precedences.get(0);
+ Precedence precedence = precedences.get(0);
+ if (precedence == null) {
+ return null;
+ }
+ return precedence;
}
}
\ No newline at end of file
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/EssentialOCLPrettyPrintVisitor.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/EssentialOCLPrettyPrintVisitor.java
index 6417920..05129be 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/EssentialOCLPrettyPrintVisitor.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/EssentialOCLPrettyPrintVisitor.java
@@ -55,6 +55,7 @@
import org.eclipse.ocl.pivot.VariableExp;
import org.eclipse.ocl.pivot.VoidType;
import org.eclipse.ocl.pivot.ids.TypeId;
+import org.eclipse.ocl.pivot.internal.manager.PrecedenceManager;
import org.eclipse.ocl.pivot.internal.utilities.PivotUtilInternal;
import org.eclipse.ocl.pivot.utilities.PivotConstants;
import org.eclipse.ocl.pivot.utilities.PivotUtil;
@@ -465,7 +466,15 @@
}
else {
Precedence currentPrecedence = context.getCurrentPrecedence();
- boolean lowerPrecedence = (currentPrecedence != null) && (precedence.getOrder().intValue() > currentPrecedence.getOrder().intValue());
+ boolean lowerPrecedence = currentPrecedence != null;
+ if (currentPrecedence != null) {
+ PrecedenceManager precedenceManager = context.getPrecedenceManager();
+ if (precedenceManager != null) {
+ int precedenceOrder = precedenceManager.getOrder(precedence);
+ int currentPrecedenceOrder = precedenceManager.getOrder(currentPrecedence);
+ lowerPrecedence = precedenceOrder > currentPrecedenceOrder;
+ }
+ }
if (lowerPrecedence) {
context.push("(", null);
}
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/PrettyPrinter.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/PrettyPrinter.java
index 88cc213..5d17395 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/PrettyPrinter.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/PrettyPrinter.java
@@ -42,6 +42,7 @@
import org.eclipse.ocl.pivot.TypedElement;
import org.eclipse.ocl.pivot.ids.TypeId;
import org.eclipse.ocl.pivot.internal.manager.PivotMetamodelManager;
+import org.eclipse.ocl.pivot.internal.manager.PrecedenceManager;
import org.eclipse.ocl.pivot.internal.prettyprint.PrettyPrintOptions.Global;
import org.eclipse.ocl.pivot.internal.resource.ASResourceFactory;
import org.eclipse.ocl.pivot.internal.utilities.PathElement;
@@ -64,9 +65,9 @@
{
public static final @NonNull String NULL_PLACEHOLDER = "<null>";
@SuppressWarnings("null")
- public static @NonNull List<String> reservedNameList = Arrays.asList("and", "else", "endif", "false", "if", "implies", "in", "invalid", "let", "not", "null", "or", PivotConstants.SELF_NAME, "then", "true", "xor");
+ public static @NonNull List<@NonNull String> reservedNameList = Arrays.asList("and", "else", "endif", "false", "if", "implies", "in", "invalid", "let", "not", "null", "or", PivotConstants.SELF_NAME, "then", "true", "xor");
@SuppressWarnings("null")
- public static @NonNull List<String> restrictedNameList = Arrays.asList(TypeId.BAG_NAME, TypeId.BOOLEAN_NAME, "Collection", TypeId.INTEGER_NAME, TypeId.OCL_ANY_NAME, TypeId.OCL_INVALID_NAME, TypeId.OCL_VOID_NAME, TypeId.ORDERED_SET_NAME, TypeId.REAL_NAME, TypeId.SEQUENCE_NAME, TypeId.SET_NAME, TypeId.STRING_NAME, TypeId.TUPLE_NAME, TypeId.UNLIMITED_NATURAL_NAME);
+ public static @NonNull List<@NonNull String> restrictedNameList = Arrays.asList(TypeId.BAG_NAME, TypeId.BOOLEAN_NAME, "Collection", TypeId.INTEGER_NAME, TypeId.OCL_ANY_NAME, TypeId.OCL_INVALID_NAME, TypeId.OCL_VOID_NAME, TypeId.ORDERED_SET_NAME, TypeId.REAL_NAME, TypeId.SEQUENCE_NAME, TypeId.SET_NAME, TypeId.STRING_NAME, TypeId.TUPLE_NAME, TypeId.UNLIMITED_NATURAL_NAME);
private static class Fragment
{
@@ -75,7 +76,7 @@
private final @NonNull String text;
private final @Nullable String suffix;
private @Nullable Fragment parent = null;
- private List<Fragment> children = null;
+ private List<@NonNull Fragment> children = null;
private boolean lineWrap = true;
private boolean exdented = false;
@@ -90,7 +91,7 @@
public @NonNull Fragment addChild(@Nullable String prefix, @NonNull String text, @Nullable String suffix) {
// assert (prefix.length() + text.length() + suffix.length()) > 0;
if (children == null) {
- children = new ArrayList<Fragment>();
+ children = new ArrayList<>();
}
Fragment child = new Fragment(this, depth+1, prefix, text, suffix);
children.add(child);
@@ -312,6 +313,7 @@
private final AbstractVisitor<Object, PrettyPrinter> visitor;
private @Nullable Namespace scope;
private @Nullable Precedence currentPrecedence = null;
+ private @Nullable PrecedenceManager precedenceManager;
/**
* Initializes me.
@@ -326,6 +328,15 @@
Resource eResource = element.eResource();
ASResourceFactory asResourceFactory = eResource instanceof ASResource ? ((ASResource) eResource).getASResourceFactory() : null;
this.visitor = asResourceFactory != null ? asResourceFactory.createPrettyPrintVisitor(this) : new PrettyPrintVisitor(this);
+ PrecedenceManager precedenceManager = null;
+ Resource asResource = element.eResource();
+ if (asResource != null) {
+ PivotMetamodelManager metamodelManager = PivotUtilInternal.findMetamodelManager(asResource);
+ if (metamodelManager != null) {
+ precedenceManager = metamodelManager.getPrecedenceManager();
+ }
+ }
+ this.precedenceManager = precedenceManager;
}
public void append(Number number) {
@@ -749,6 +760,13 @@
}
/**
+ * @since 1.5
+ */
+ public @Nullable PrecedenceManager getPrecedenceManager() {
+ return precedenceManager;
+ }
+
+ /**
* Flush the current indented region.
* Emit text indented with respect to the current indented region.
* Start a new indented region.
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/PivotUtil.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/PivotUtil.java
index 132b7d9..e0514ee 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/PivotUtil.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/PivotUtil.java
@@ -120,7 +120,10 @@
{
/**
* 'Highest' precedence first
+ *
+ * @deprecated (Not used) The Precedence.order is not a constant in a shared library. Use the PrecedenceManager.
*/
+ @Deprecated
public static class PrecedenceComparator implements Comparator<Precedence>
{
public static final PrecedenceComparator INSTANCE = new PrecedenceComparator();
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/ToStringVisitor.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/ToStringVisitor.java
index 56b1076..7f1c2e4 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/ToStringVisitor.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/ToStringVisitor.java
@@ -98,6 +98,7 @@
import org.eclipse.ocl.pivot.WildcardType;
import org.eclipse.ocl.pivot.ids.IdManager;
import org.eclipse.ocl.pivot.ids.TypeId;
+import org.eclipse.ocl.pivot.internal.manager.PivotMetamodelManager;
import org.eclipse.ocl.pivot.internal.utilities.PivotUtilInternal;
import org.eclipse.ocl.pivot.resource.ASResource;
import org.eclipse.ocl.pivot.util.AbstractExtendingVisitor;
@@ -1067,7 +1068,13 @@
@Override
public String visitPrecedence(@NonNull Precedence precedence) {
appendName(precedence);
- append("(" + precedence.getOrder() + ")");
+ Resource asResource = precedence.eResource();
+ if (asResource != null) {
+ PivotMetamodelManager metamodelManager = PivotUtilInternal.findMetamodelManager(asResource);
+ if (metamodelManager != null) {
+ append("(" + metamodelManager.getPrecedenceManager().getOrder(precedence) + ")");
+ }
+ }
return null;
}
diff --git a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/as2cs/AS2CSConversion.java b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/as2cs/AS2CSConversion.java
index 26a8e8b..78ec208 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/as2cs/AS2CSConversion.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/as2cs/AS2CSConversion.java
@@ -43,6 +43,7 @@
import org.eclipse.ocl.pivot.TypedElement;
import org.eclipse.ocl.pivot.VoidType;
import org.eclipse.ocl.pivot.internal.manager.PivotMetamodelManager;
+import org.eclipse.ocl.pivot.internal.manager.PrecedenceManager;
import org.eclipse.ocl.pivot.internal.utilities.AbstractConversion;
import org.eclipse.ocl.pivot.internal.utilities.EnvironmentFactoryInternal;
import org.eclipse.ocl.pivot.internal.utilities.PivotConstantsInternal;
@@ -281,6 +282,10 @@
}
}
+ public @NonNull PrecedenceManager getPrecedenceManager() {
+ return metamodelManager.getPrecedenceManager();
+ }
+
public @Nullable BaseReferenceVisitor getReferenceVisitor(@NonNull EClass eClass, @Nullable Namespace scope) {
if (scope == null) {
BaseReferenceVisitor referenceVisitor = referenceVisitorMap.get(eClass);
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/emf-gen/org/eclipse/ocl/xtext/completeoclcs/CompleteOCLCSPackage.java b/plugins/org.eclipse.ocl.xtext.completeocl/emf-gen/org/eclipse/ocl/xtext/completeoclcs/CompleteOCLCSPackage.java
index 7995e44..dfbb2ac 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/emf-gen/org/eclipse/ocl/xtext/completeoclcs/CompleteOCLCSPackage.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/emf-gen/org/eclipse/ocl/xtext/completeoclcs/CompleteOCLCSPackage.java
@@ -33,7 +33,7 @@
* @generated
*/
public interface CompleteOCLCSPackage
- extends EPackage {
+extends EPackage {
/**
* The package name.
@@ -1066,9 +1066,19 @@
* @generated
* @ordered
*/
+ @SuppressWarnings("deprecation")
int OCL_MESSAGE_ARG_CS__PRECEDENCE = EssentialOCLCSPackage.EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OCL_MESSAGE_ARG_CS__PRECEDENCE_ORDER = EssentialOCLCSPackage.EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The number of structural features of the '<em>OCL Message Arg CS</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/EssentialOCLCSPackage.java b/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/EssentialOCLCSPackage.java
index 379ac47..372ade6 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/EssentialOCLCSPackage.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/EssentialOCLCSPackage.java
@@ -33,7 +33,7 @@
* @generated
*/
public interface EssentialOCLCSPackage
- extends EPackage {
+extends EPackage {
/**
* The package name.
@@ -367,20 +367,31 @@
/**
* The feature id for the '<em><b>Precedence</b></em>' reference.
* <!-- begin-user-doc -->
+ * @deprecated not used
* <!-- end-user-doc -->
* @generated
* @ordered
*/
+ @Deprecated
int EXP_CS__PRECEDENCE = BaseCSPackage.MODEL_ELEMENT_CS_FEATURE_COUNT + 6;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXP_CS__PRECEDENCE_ORDER = BaseCSPackage.MODEL_ELEMENT_CS_FEATURE_COUNT + 7;
+
+ /**
* The number of structural features of the '<em>Exp CS</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int EXP_CS_FEATURE_COUNT = BaseCSPackage.MODEL_ELEMENT_CS_FEATURE_COUNT + 7;
+ int EXP_CS_FEATURE_COUNT = BaseCSPackage.MODEL_ELEMENT_CS_FEATURE_COUNT + 8;
/**
* The meta object id for the '{@link org.eclipse.ocl.xtext.essentialoclcs.impl.AbstractNameExpCSImpl <em>Abstract Name Exp CS</em>}' class.
@@ -501,6 +512,15 @@
int ABSTRACT_NAME_EXP_CS__PRECEDENCE = EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAME_EXP_CS__PRECEDENCE_ORDER = EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Pre</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -691,6 +711,15 @@
int CALL_EXP_CS__PRECEDENCE = ABSTRACT_NAME_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CALL_EXP_CS__PRECEDENCE_ORDER = ABSTRACT_NAME_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Pre</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -899,6 +928,15 @@
int ASSOCIATION_CLASS_CALL_EXP_CS__PRECEDENCE = CALL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ASSOCIATION_CLASS_CALL_EXP_CS__PRECEDENCE_ORDER = CALL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Pre</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1106,6 +1144,15 @@
int LITERAL_EXP_CS__PRECEDENCE = EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LITERAL_EXP_CS__PRECEDENCE_ORDER = EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The number of structural features of the '<em>Literal Exp CS</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1223,6 +1270,15 @@
int PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE = LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE_ORDER = LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The number of structural features of the '<em>Primitive Literal Exp CS</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1340,6 +1396,15 @@
int BOOLEAN_LITERAL_EXP_CS__PRECEDENCE = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL_EXP_CS__PRECEDENCE_ORDER = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Symbol</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1466,6 +1531,15 @@
int COLLECTION_LITERAL_EXP_CS__PRECEDENCE = LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLLECTION_LITERAL_EXP_CS__PRECEDENCE_ORDER = LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Owned Parts</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -2093,6 +2167,15 @@
int IF_EXP_CS__PRECEDENCE = EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IF_EXP_CS__PRECEDENCE_ORDER = EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Implicit</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -2265,6 +2348,15 @@
int IF_THEN_EXP_CS__PRECEDENCE = EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IF_THEN_EXP_CS__PRECEDENCE_ORDER = EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Owned Condition</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -2410,6 +2502,15 @@
int OPERATOR_EXP_CS__PRECEDENCE = EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_EXP_CS__PRECEDENCE_ORDER = EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Name</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -2554,6 +2655,15 @@
int INFIX_EXP_CS__PRECEDENCE = OPERATOR_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INFIX_EXP_CS__PRECEDENCE_ORDER = OPERATOR_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Name</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -2716,6 +2826,15 @@
int INVALID_LITERAL_EXP_CS__PRECEDENCE = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INVALID_LITERAL_EXP_CS__PRECEDENCE_ORDER = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The number of structural features of the '<em>Invalid Literal Exp CS</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -2843,6 +2962,15 @@
int ITERATION_CALL_EXP_CS__PRECEDENCE = CALL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ITERATION_CALL_EXP_CS__PRECEDENCE_ORDER = CALL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Pre</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3069,6 +3197,15 @@
int ITERATE_CALL_EXP_CS__PRECEDENCE = ITERATION_CALL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ITERATE_CALL_EXP_CS__PRECEDENCE_ORDER = ITERATION_CALL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Pre</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3304,6 +3441,15 @@
int LAMBDA_LITERAL_EXP_CS__PRECEDENCE = LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAMBDA_LITERAL_EXP_CS__PRECEDENCE_ORDER = LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Owned Expression CS</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3430,6 +3576,15 @@
int LET_EXP_CS__PRECEDENCE = EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LET_EXP_CS__PRECEDENCE_ORDER = EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Implicit</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3574,6 +3729,15 @@
int LET_VARIABLE_CS__PRECEDENCE = EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LET_VARIABLE_CS__PRECEDENCE_ORDER = EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Name</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3746,6 +3910,15 @@
int MAP_LITERAL_EXP_CS__PRECEDENCE = LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAP_LITERAL_EXP_CS__PRECEDENCE_ORDER = LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Owned Parts</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -4045,6 +4218,15 @@
int NAME_EXP_CS__PRECEDENCE = ASSOCIATION_CLASS_CALL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAME_EXP_CS__PRECEDENCE_ORDER = ASSOCIATION_CLASS_CALL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Pre</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -4441,6 +4623,15 @@
int NESTED_EXP_CS__PRECEDENCE = EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NESTED_EXP_CS__PRECEDENCE_ORDER = EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Owned Expression</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -4567,6 +4758,15 @@
int NULL_LITERAL_EXP_CS__PRECEDENCE = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_LITERAL_EXP_CS__PRECEDENCE_ORDER = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The number of structural features of the '<em>Null Literal Exp CS</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -4684,6 +4884,15 @@
int NUMBER_LITERAL_EXP_CS__PRECEDENCE = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NUMBER_LITERAL_EXP_CS__PRECEDENCE_ORDER = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Symbol</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -4820,6 +5029,15 @@
int OPERATION_CALL_EXP_CS__PRECEDENCE = CALL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATION_CALL_EXP_CS__PRECEDENCE_ORDER = CALL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Pre</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -5037,6 +5255,15 @@
int PATTERN_EXP_CS__PRECEDENCE = EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PATTERN_EXP_CS__PRECEDENCE_ORDER = EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Owned Pattern Type</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -5242,6 +5469,15 @@
int PREFIX_EXP_CS__PRECEDENCE = OPERATOR_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREFIX_EXP_CS__PRECEDENCE_ORDER = OPERATOR_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Name</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -5386,6 +5622,15 @@
int PROPERTY_CALL_EXP_CS__PRECEDENCE = CALL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_CALL_EXP_CS__PRECEDENCE_ORDER = CALL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Pre</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -5638,6 +5883,15 @@
int SELF_EXP_CS__PRECEDENCE = EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SELF_EXP_CS__PRECEDENCE_ORDER = EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Name</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -5774,6 +6028,15 @@
int SHADOW_EXP_CS__PRECEDENCE = ABSTRACT_NAME_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SHADOW_EXP_CS__PRECEDENCE_ORDER = ABSTRACT_NAME_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Pre</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -6117,6 +6380,15 @@
int STRING_LITERAL_EXP_CS__PRECEDENCE = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL_EXP_CS__PRECEDENCE_ORDER = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Segments</b></em>' attribute list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -6243,6 +6515,15 @@
int TUPLE_LITERAL_EXP_CS__PRECEDENCE = LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TUPLE_LITERAL_EXP_CS__PRECEDENCE_ORDER = LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Owned Parts</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -6531,6 +6812,15 @@
int TYPE_LITERAL_EXP_CS__PRECEDENCE = LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_LITERAL_EXP_CS__PRECEDENCE_ORDER = LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Owned Path Name</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -6757,6 +7047,15 @@
int UNLIMITED_NATURAL_LITERAL_EXP_CS__PRECEDENCE = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNLIMITED_NATURAL_LITERAL_EXP_CS__PRECEDENCE_ORDER = PRIMITIVE_LITERAL_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The number of structural features of the '<em>Unlimited Natural Literal Exp CS</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -6884,6 +7183,15 @@
int VARIABLE_EXP_CS__PRECEDENCE = ABSTRACT_NAME_EXP_CS__PRECEDENCE;
/**
+ * The feature id for the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIABLE_EXP_CS__PRECEDENCE_ORDER = ABSTRACT_NAME_EXP_CS__PRECEDENCE_ORDER;
+
+ /**
* The feature id for the '<em><b>Is Pre</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -7278,15 +7586,28 @@
/**
* Returns the meta object for the reference '{@link org.eclipse.ocl.xtext.essentialoclcs.ExpCS#getPrecedence <em>Precedence</em>}'.
* <!-- begin-user-doc -->
+ * @deprecated not used
* <!-- end-user-doc -->
* @return the meta object for the reference '<em>Precedence</em>'.
* @see org.eclipse.ocl.xtext.essentialoclcs.ExpCS#getPrecedence()
* @see #getExpCS()
* @generated
*/
+ @Deprecated
EReference getExpCS_Precedence();
/**
+ * Returns the meta object for the attribute '{@link org.eclipse.ocl.xtext.essentialoclcs.ExpCS#getPrecedenceOrder <em>Precedence Order</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Precedence Order</em>'.
+ * @see org.eclipse.ocl.xtext.essentialoclcs.ExpCS#getPrecedenceOrder()
+ * @see #getExpCS()
+ * @generated
+ */
+ EAttribute getExpCS_PrecedenceOrder();
+
+ /**
* Returns the meta object for class '{@link org.eclipse.ocl.xtext.essentialoclcs.ExpSpecificationCS <em>Exp Specification CS</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -8789,6 +9110,14 @@
EReference EXP_CS__PRECEDENCE = eINSTANCE.getExpCS_Precedence();
/**
+ * The meta object literal for the '<em><b>Precedence Order</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXP_CS__PRECEDENCE_ORDER = eINSTANCE.getExpCS_PrecedenceOrder();
+
+ /**
* The meta object literal for the '{@link org.eclipse.ocl.xtext.essentialoclcs.impl.ExpSpecificationCSImpl <em>Exp Specification CS</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/ExpCS.java b/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/ExpCS.java
index 3f6df22..a00d645 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/ExpCS.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/ExpCS.java
@@ -31,6 +31,7 @@
* <li>{@link org.eclipse.ocl.xtext.essentialoclcs.ExpCS#getLocalRight <em>Local Right</em>}</li>
* <li>{@link org.eclipse.ocl.xtext.essentialoclcs.ExpCS#getLocalRightmostDescendant <em>Local Rightmost Descendant</em>}</li>
* <li>{@link org.eclipse.ocl.xtext.essentialoclcs.ExpCS#getPrecedence <em>Precedence</em>}</li>
+ * <li>{@link org.eclipse.ocl.xtext.essentialoclcs.ExpCS#getPrecedenceOrder <em>Precedence Order</em>}</li>
* </ul>
*
* @see org.eclipse.ocl.xtext.essentialoclcs.EssentialOCLCSPackage#getExpCS()
@@ -38,7 +39,7 @@
* @generated
*/
public interface ExpCS
- extends ModelElementCS {
+extends ModelElementCS {
/**
* Returns the value of the '<em><b>Local Parent</b></em>' reference.
@@ -111,7 +112,7 @@
* @generated
*/
void setHasError(boolean value);
-
+
/**
* Returns the value of the '<em><b>Local Left</b></em>' reference.
* <!-- begin-user-doc -->
@@ -151,9 +152,8 @@
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Precedence</em>' reference.
- * @see #setPrecedence(Precedence)
* @see org.eclipse.ocl.xtext.essentialoclcs.EssentialOCLCSPackage#getExpCS_Precedence()
- * @model resolveProxies="false" transient="true" volatile="true" derived="true"
+ * @model resolveProxies="false" transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
Precedence getPrecedence();
@@ -186,10 +186,31 @@
* <!-- end-user-doc -->
* @param value the new value of the '<em>Precedence</em>' reference.
* @see #getPrecedence()
+ * @deprecated not used - use setPrecedence(Precedence, int, AssociativityKind)
+ */
+ @Deprecated
+ void setPrecedence(Precedence value);
+
+ /**
+ * Returns the value of the '<em><b>Precedence Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Precedence Order</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Precedence Order</em>' attribute.
+ * @see org.eclipse.ocl.xtext.essentialoclcs.EssentialOCLCSPackage#getExpCS_PrecedenceOrder()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
- void setPrecedence(Precedence value);
-
+ int getPrecedenceOrder();
+
@Nullable OperatorExpCS getLocalLeftContainer();
@Nullable OperatorExpCS getLocalRightContainer();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.ocl.xtext.essentialoclcs.ExpCS#getPrecedence <em>Precedence</em>}' reference.
+ */
+ void setPrecedence(@Nullable Precedence precedence, int precedenceOrder);
} // ExpCS
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/EssentialOCLCSPackageImpl.java b/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/EssentialOCLCSPackageImpl.java
index 737948b..8650b94 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/EssentialOCLCSPackageImpl.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/EssentialOCLCSPackageImpl.java
@@ -815,6 +815,17 @@
* @generated
*/
@Override
+ public EAttribute getExpCS_PrecedenceOrder()
+ {
+ return (EAttribute)expCSEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
public EClass getExpSpecificationCS() {
return expSpecificationCSEClass;
}
@@ -2073,6 +2084,7 @@
* <!-- end-user-doc -->
* @generated
*/
+ @SuppressWarnings("deprecation")
public void createPackageContents() {
if (isCreated) return;
isCreated = true;
@@ -2132,6 +2144,7 @@
createEReference(expCSEClass, EXP_CS__LOCAL_RIGHT);
createEReference(expCSEClass, EXP_CS__LOCAL_RIGHTMOST_DESCENDANT);
createEReference(expCSEClass, EXP_CS__PRECEDENCE);
+ createEAttribute(expCSEClass, EXP_CS__PRECEDENCE_ORDER);
expSpecificationCSEClass = createEClass(EXP_SPECIFICATION_CS);
createEReference(expSpecificationCSEClass, EXP_SPECIFICATION_CS__OWNED_EXPRESSION);
@@ -2420,7 +2433,8 @@
initEReference(getExpCS_LocalParent(), this.getOperatorExpCS(), null, "localParent", null, 0, 1, ExpCS.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
initEReference(getExpCS_LocalRight(), this.getExpCS(), null, "localRight", null, 0, 1, ExpCS.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
initEReference(getExpCS_LocalRightmostDescendant(), this.getExpCS(), null, "localRightmostDescendant", null, 1, 1, ExpCS.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
- initEReference(getExpCS_Precedence(), thePivotPackage.getPrecedence(), null, "precedence", null, 0, 1, ExpCS.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getExpCS_Precedence(), thePivotPackage.getPrecedence(), null, "precedence", null, 0, 1, ExpCS.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getExpCS_PrecedenceOrder(), ecorePackage.getEInt(), "precedenceOrder", null, 0, 1, ExpCS.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
EOperation op = addEOperation(expCSEClass, ecorePackage.getEBoolean(), "isLocalLeftAncestorOf", 1, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
addEParameter(op, this.getExpCS(), "csExp", 1, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/ExpCSImpl.java b/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/ExpCSImpl.java
index d305f9e..4405fcf 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/ExpCSImpl.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/ExpCSImpl.java
@@ -43,13 +43,14 @@
* <li>{@link org.eclipse.ocl.xtext.essentialoclcs.impl.ExpCSImpl#getLocalRight <em>Local Right</em>}</li>
* <li>{@link org.eclipse.ocl.xtext.essentialoclcs.impl.ExpCSImpl#getLocalRightmostDescendant <em>Local Rightmost Descendant</em>}</li>
* <li>{@link org.eclipse.ocl.xtext.essentialoclcs.impl.ExpCSImpl#getPrecedence <em>Precedence</em>}</li>
+ * <li>{@link org.eclipse.ocl.xtext.essentialoclcs.impl.ExpCSImpl#getPrecedenceOrder <em>Precedence Order</em>}</li>
* </ul>
*
* @generated
*/
public class ExpCSImpl
- extends ModelElementCSImpl
- implements ExpCS {
+extends ModelElementCSImpl
+implements ExpCS {
/**
* The default value of the '{@link #isHasError() <em>Has Error</em>}' attribute.
@@ -71,6 +72,16 @@
protected boolean hasError = HAS_ERROR_EDEFAULT;
/**
+ * The default value of the '{@link #getPrecedenceOrder() <em>Precedence Order</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrecedenceOrder()
+ * @generated
+ * @ordered
+ */
+ protected static final int PRECEDENCE_ORDER_EDEFAULT = 0;
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -119,6 +130,7 @@
* <!-- end-user-doc -->
* @generated
*/
+ @SuppressWarnings("deprecation")
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID)
@@ -137,6 +149,8 @@
return getLocalRightmostDescendant();
case EssentialOCLCSPackage.EXP_CS__PRECEDENCE:
return getPrecedence();
+ case EssentialOCLCSPackage.EXP_CS__PRECEDENCE_ORDER:
+ return getPrecedenceOrder();
}
return super.eGet(featureID, resolve, coreType);
}
@@ -153,9 +167,6 @@
case EssentialOCLCSPackage.EXP_CS__HAS_ERROR:
setHasError((Boolean)newValue);
return;
- case EssentialOCLCSPackage.EXP_CS__PRECEDENCE:
- setPrecedence((Precedence)newValue);
- return;
}
super.eSet(featureID, newValue);
}
@@ -172,9 +183,6 @@
case EssentialOCLCSPackage.EXP_CS__HAS_ERROR:
setHasError(HAS_ERROR_EDEFAULT);
return;
- case EssentialOCLCSPackage.EXP_CS__PRECEDENCE:
- setPrecedence((Precedence)null);
- return;
}
super.eUnset(featureID);
}
@@ -184,7 +192,7 @@
* <!-- end-user-doc -->
* @generated
*/
- @SuppressWarnings("null")
+ @SuppressWarnings({"null", "deprecation"})
@Override
public boolean eIsSet(int featureID) {
switch (featureID)
@@ -203,6 +211,8 @@
return getLocalRightmostDescendant() != null;
case EssentialOCLCSPackage.EXP_CS__PRECEDENCE:
return getPrecedence() != null;
+ case EssentialOCLCSPackage.EXP_CS__PRECEDENCE_ORDER:
+ return getPrecedenceOrder() != PRECEDENCE_ORDER_EDEFAULT;
}
return super.eIsSet(featureID);
}
@@ -311,7 +321,7 @@
return csNearestLeft;
}
}
-
+
private @Nullable OperatorExpCS getLocalParentForRight(@Nullable ExpCS csRight) {
if (csRight == null) {
return null;
@@ -336,7 +346,7 @@
return csNearestRight;
}
}
-
+
private @Nullable ExpCS localRight = null;
private boolean hasLocalRight = false;
@@ -385,6 +395,11 @@
}
@Override
+ public int getPrecedenceOrder() {
+ return PrecedenceManager.LEAF_PRECEDENCE_ORDER;
+ }
+
+ @Override
public boolean isLocalLeftAncestorOf(@NonNull ExpCS csExp) { // csExp should be to the right of this for associativity resolution
return false;
}
@@ -407,10 +422,15 @@
}
@Override
- public void setPrecedence(Precedence newPrecedence) {
+ public final void setPrecedence(Precedence newPrecedence) {
throw new UnsupportedOperationException(); // Only OperatorExpCS is settable
}
-
+
+ @Override
+ public void setPrecedence(@Nullable Precedence precedence, int precedenceOrder) {
+ throw new UnsupportedOperationException(); // Only OperatorExpCS is settable
+ }
+
/**
* @generated NOT
*/
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/OperatorExpCSImpl.java b/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/OperatorExpCSImpl.java
index fdeca68..59a09fb 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/OperatorExpCSImpl.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/emf-gen/org/eclipse/ocl/xtext/essentialoclcs/impl/OperatorExpCSImpl.java
@@ -44,8 +44,8 @@
* @generated
*/
public abstract class OperatorExpCSImpl
- extends ExpCSImpl
- implements OperatorExpCS {
+extends ExpCSImpl
+implements OperatorExpCS {
/**
* The default value of the '{@link #getName() <em>Name</em>}' attribute.
@@ -308,7 +308,10 @@
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
-
+
+ private Precedence precedence = null;
+ private int precedenceOrder = 0;
+
protected @Nullable ExpCS getExpressionForLeft(@NonNull ExpCS csLeft) {
if (csLeft instanceof OperatorExpCS) {
OperatorExpCS csLeftOperator = (OperatorExpCS) csLeft;
@@ -333,7 +336,7 @@
}
return getExpressionForLefts(csLeft.getLocalLeft(), csLowestLeft);
}
-
+
protected @Nullable ExpCS getExpressionForRight(@NonNull ExpCS csRight) {
if (csRight instanceof OperatorExpCS) {
OperatorExpCS csRightOperator = (OperatorExpCS) csRight;
@@ -359,6 +362,18 @@
return getExpressionForRights(csRight.getLocalRight(), csLowestRight);
}
+ @Override
+ public @Nullable ExpCS getLocalRight() {
+ ExpCS ownedRight = getOwnedRight();
+ return ownedRight != null ? ownedRight.getLocalLeftmostDescendant() : null;
+ }
+
+ @Override
+ public @NonNull ExpCS getLocalRightmostDescendant() {
+ ExpCS ownedRight = getOwnedRight();
+ return ownedRight != null ? ownedRight.getLocalRightmostDescendant() : this;
+ }
+
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -378,23 +393,14 @@
return eContainer instanceof ElementCS ? (ElementCS) eContainer : null; // Avoid CCE for Bug 432749
}
- private Precedence precedence = null;
-
@Override
- public Precedence getPrecedence() {
+ public @NonNull Precedence getPrecedence() {
return precedence != null ? precedence : PrecedenceManager.NULL_PRECEDENCE;
}
@Override
- public @Nullable ExpCS getLocalRight() {
- ExpCS ownedRight = getOwnedRight();
- return ownedRight != null ? ownedRight.getLocalLeftmostDescendant() : null;
- }
-
- @Override
- public @NonNull ExpCS getLocalRightmostDescendant() {
- ExpCS ownedRight = getOwnedRight();
- return ownedRight != null ? ownedRight.getLocalRightmostDescendant() : this;
+ public int getPrecedenceOrder() {
+ return precedenceOrder;
}
@Override
@@ -402,17 +408,15 @@
@Override
public boolean isLocalLeftAncestorOf(@NonNull ExpCS csExp) { // csExp should be to the right of this for associativity resolution
- Precedence leftPrecedence = getPrecedence();
- Precedence rightPrecedence = csExp.getPrecedence();
- int leftOrder = leftPrecedence.getOrder().intValue();
- int rightOrder = rightPrecedence.getOrder().intValue();
+ int leftOrder = getPrecedenceOrder();
+ int rightOrder = csExp.getPrecedenceOrder();
if (leftOrder > rightOrder) {
return true;
}
else if (leftOrder > rightOrder) {
return false;
}
- else if (leftPrecedence.getAssociativity() == AssociativityKind.RIGHT) {
+ else if (getPrecedence().getAssociativity() == AssociativityKind.RIGHT) {
return true;
}
else {
@@ -438,8 +442,9 @@
}
@Override
- public void setPrecedence(Precedence newPrecedence) {
+ public void setPrecedence(@Nullable Precedence newPrecedence, int newPrecedenceOrder) {
precedence = newPrecedence;
+ precedenceOrder = newPrecedenceOrder;
}
/**
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.genmodel b/plugins/org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.genmodel
index e8ac33a..4a9d937 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.genmodel
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.genmodel
@@ -78,6 +78,7 @@
<genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference EssentialOCLCS.ecore#//ExpCS/localRight"/>
<genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference EssentialOCLCS.ecore#//ExpCS/localRightmostDescendant"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference EssentialOCLCS.ecore#//ExpCS/precedence"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute EssentialOCLCS.ecore#//ExpCS/precedenceOrder"/>
<genOperations ecoreOperation="EssentialOCLCS.ecore#//ExpCS/isLocalLeftAncestorOf">
<genParameters ecoreParameter="EssentialOCLCS.ecore#//ExpCS/isLocalLeftAncestorOf/csExp"/>
</genOperations>
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/as2cs/EssentialOCLDeclarationVisitor.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/as2cs/EssentialOCLDeclarationVisitor.java
index 19ad3f2..4ae4bed 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/as2cs/EssentialOCLDeclarationVisitor.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/as2cs/EssentialOCLDeclarationVisitor.java
@@ -65,6 +65,7 @@
import org.eclipse.ocl.pivot.ids.TupleTypeId;
import org.eclipse.ocl.pivot.ids.TypeId;
import org.eclipse.ocl.pivot.internal.complete.CompleteClassInternal;
+import org.eclipse.ocl.pivot.internal.manager.PrecedenceManager;
import org.eclipse.ocl.pivot.internal.prettyprint.PrettyPrinter;
import org.eclipse.ocl.pivot.utilities.NameUtil;
import org.eclipse.ocl.pivot.utilities.PivotConstants;
@@ -276,7 +277,8 @@
if (asThisPrecedence == null) {
return false;
}
- return asThisPrecedence.getOrder().intValue() > asThatPrecedence.getOrder().intValue();
+ PrecedenceManager precedenceManager = context.getPrecedenceManager();
+ return precedenceManager.getOrder(asThisPrecedence) > precedenceManager.getOrder(asThatPrecedence);
}
protected ElementCS refreshConstraint(@NonNull ConstraintCS csElement, @NonNull Constraint object) {
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/cs2as/EssentialOCLCSPreOrderVisitor.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/cs2as/EssentialOCLCSPreOrderVisitor.java
index 0a19155..6555dbb 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/cs2as/EssentialOCLCSPreOrderVisitor.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/cs2as/EssentialOCLCSPreOrderVisitor.java
@@ -104,8 +104,14 @@
public BasicContinuation<?> execute() {
PivotMetamodelManager metamodelManager = context.getMetamodelManager();
String operatorName = csElement.getName();
- Precedence precedence = operatorName != null ? metamodelManager.getInfixPrecedence(operatorName) : null;
- csElement.setPrecedence(precedence);
+ Precedence precedence = operatorName != null ? metamodelManager.getPrecedenceManager().getInfixPrecedence(operatorName) : null;
+ // csElement.setPrecedence(precedence);
+ if (precedence != null) {
+ csElement.setPrecedence(precedence, metamodelManager.getPrecedenceManager().getOrder(precedence));
+ }
+ else {
+ csElement.setPrecedence(null, PrecedenceManager.NULL_PRECEDENCE_ORDER);
+ }
return super.execute();
}
}
@@ -157,8 +163,14 @@
public BasicContinuation<?> execute() {
PivotMetamodelManager metamodelManager = context.getMetamodelManager();
String operatorName = csElement.getName();
- Precedence precedence = operatorName != null ? metamodelManager.getPrefixPrecedence(operatorName) : null;
- csElement.setPrecedence(precedence);
+ Precedence precedence = operatorName != null ? metamodelManager.getPrecedenceManager().getPrefixPrecedence(operatorName) : null;
+ // csElement.setPrecedence(precedence);
+ if (precedence != null) {
+ csElement.setPrecedence(precedence, metamodelManager.getPrecedenceManager().getOrder(precedence));
+ }
+ else {
+ csElement.setPrecedence(null, PrecedenceManager.NULL_PRECEDENCE_ORDER);
+ }
return super.execute();
}
}
@@ -229,7 +241,7 @@
@Override
public Continuation<?> visitInfixExpCS(@NonNull InfixExpCS csElement) {
if (NavigationUtil.isNavigationInfixExp(csElement)) {
- csElement.setPrecedence(PrecedenceManager.NAVIGATION_PRECEDENCE);
+ csElement.setPrecedence(PrecedenceManager.NAVIGATION_PRECEDENCE, PrecedenceManager.NAVIGATION_PRECEDENCE_ORDER);
return null;
}
else {
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/PrecedenceTests.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/PrecedenceTests.java
index 2003df5..0979d11 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/PrecedenceTests.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/PrecedenceTests.java
@@ -27,7 +27,7 @@
*/
public class PrecedenceTests extends XtextTestCase
{
- protected Precedence createPrecedence(Library library1, String name, AssociativityKind associativity) {
+ protected @NonNull Precedence createPrecedence(Library library1, String name, AssociativityKind associativity) {
Precedence precedence = PivotFactory.eINSTANCE.createPrecedence();
precedence.setName(name);
precedence.setAssociativity(associativity);
@@ -47,13 +47,14 @@
Precedence p2b = createPrecedence(library2, "C", AssociativityKind.LEFT);
Precedence p2c = createPrecedence(library2, "D", AssociativityKind.LEFT);
libraries.add(library2);
- List<String> errors = new PrecedenceManager().compilePrecedences(libraries);
- assertEquals(0, p1a.getOrder());
- assertEquals(1, p1b.getOrder());
- assertEquals(3, p1c.getOrder());
- assertEquals(1, p2a.getOrder());
- assertEquals(2, p2b.getOrder());
- assertEquals(3, p2c.getOrder());
+ PrecedenceManager precedenceManager = new PrecedenceManager();
+ List<String> errors = precedenceManager.compilePrecedences(libraries);
+ assertEquals(0, precedenceManager.getOrder(p1a));
+ assertEquals(1, precedenceManager.getOrder(p1b));
+ assertEquals(3, precedenceManager.getOrder(p1c));
+ assertEquals(1, precedenceManager.getOrder(p2a));
+ assertEquals(2, precedenceManager.getOrder(p2b));
+ assertEquals(3, precedenceManager.getOrder(p2c));
assertEquals(0, errors.size());
}
@@ -67,11 +68,12 @@
Precedence p2a = createPrecedence(library2, "B", AssociativityKind.LEFT);
Precedence p2b = createPrecedence(library2, "A", AssociativityKind.LEFT);
libraries.add(library2);
- List<String> errors = new PrecedenceManager().compilePrecedences(libraries);
- assertEquals(0, p1a.getOrder());
- assertEquals(1, p1b.getOrder());
- assertEquals(1, p2a.getOrder());
- assertEquals(0, p2b.getOrder());
+ PrecedenceManager precedenceManager = new PrecedenceManager();
+ List<String> errors = precedenceManager.compilePrecedences(libraries);
+ assertEquals(0, precedenceManager.getOrder(p1a));
+ assertEquals(1, precedenceManager.getOrder(p1b));
+ assertEquals(1, precedenceManager.getOrder(p2a));
+ assertEquals(0, precedenceManager.getOrder(p2b));
assertEquals(1, errors.size());
}
@@ -83,9 +85,10 @@
Library library2 = PivotFactory.eINSTANCE.createLibrary();
Precedence p2a = createPrecedence(library2, "A", AssociativityKind.RIGHT);
libraries.add(library2);
- List<String> errors = new PrecedenceManager().compilePrecedences(libraries);
- assertEquals(0, p1a.getOrder());
- assertEquals(0, p2a.getOrder());
+ PrecedenceManager precedenceManager = new PrecedenceManager();
+ List<String> errors = precedenceManager.compilePrecedences(libraries);
+ assertEquals(0, precedenceManager.getOrder(p1a));
+ assertEquals(0, precedenceManager.getOrder(p2a));
assertEquals(1, errors.size());
}
@@ -101,13 +104,14 @@
Precedence p2b = createPrecedence(library2, "C", AssociativityKind.LEFT);
Precedence p2c = createPrecedence(library2, "D", AssociativityKind.LEFT);
libraries.add(library2);
- List<String> errors = new PrecedenceManager().compilePrecedences(libraries);
- assertEquals(0, p1a.getOrder());
- assertEquals(2, p1b.getOrder());
- assertEquals(3, p1c.getOrder());
- assertEquals(0, p2a.getOrder());
- assertEquals(1, p2b.getOrder());
- assertEquals(3, p2c.getOrder());
+ PrecedenceManager precedenceManager = new PrecedenceManager();
+ List<String> errors = precedenceManager.compilePrecedences(libraries);
+ assertEquals(0, precedenceManager.getOrder(p1a));
+ assertEquals(2, precedenceManager.getOrder(p1b));
+ assertEquals(3, precedenceManager.getOrder(p1c));
+ assertEquals(0, precedenceManager.getOrder(p2a));
+ assertEquals(1, precedenceManager.getOrder(p2b));
+ assertEquals(3, precedenceManager.getOrder(p2c));
assertEquals(1, errors.size());
}
@@ -121,11 +125,12 @@
Precedence p2a = createPrecedence(library2, "A", AssociativityKind.LEFT);
Precedence p2b = createPrecedence(library2, "C", AssociativityKind.LEFT);
libraries.add(library2);
- List<String> errors = new PrecedenceManager().compilePrecedences(libraries);
- assertEquals(0, p1a.getOrder());
- assertEquals(2, p1b.getOrder());
- assertEquals(0, p2a.getOrder());
- assertEquals(1, p2b.getOrder());
+ PrecedenceManager precedenceManager = new PrecedenceManager();
+ List<String> errors = precedenceManager.compilePrecedences(libraries);
+ assertEquals(0, precedenceManager.getOrder(p1a));
+ assertEquals(2, precedenceManager.getOrder(p1b));
+ assertEquals(0, precedenceManager.getOrder(p2a));
+ assertEquals(1, precedenceManager.getOrder(p2b));
assertEquals(1, errors.size());
}
}