[580143] Add oclBase() / oclExtension() tests
diff --git a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/attributes/PathElementCSAttribution.java b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/attributes/PathElementCSAttribution.java
index b9f56d1..55fff22 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/attributes/PathElementCSAttribution.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/attributes/PathElementCSAttribution.java
@@ -52,6 +52,7 @@
int index = path.indexOf(csPathElement);
int indexes = path.size();
boolean lastElement = index >= indexes-1;
+ environmentView.setIsQualified(index > 0);
environmentView.setIsQualifier(!lastElement);
if (lastElement) { // Last element may have a scope filter
scopeFilter = csPathName.getScopeFilter();
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/scoping/EssentialOCLScoping.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/scoping/EssentialOCLScoping.java
index 8f55a25..97e0369 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/scoping/EssentialOCLScoping.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/scoping/EssentialOCLScoping.java
@@ -13,6 +13,7 @@
import java.util.List;
import java.util.Map;
+import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jdt.annotation.NonNull;
@@ -86,7 +87,8 @@
public String getMessage(@NonNull EObject eObject, @NonNull String linkText) {
PathElementCS csPathElement = (PathElementCS) eObject;
PathNameCS pathName = csPathElement.getOwningPathName();
- List<PathElementCS> path = pathName.getOwnedPathElements();
+ EList<PathElementCS> pathElements = pathName.getOwnedPathElements();
+ List<PathElementCS> path = pathElements;
int index = path.indexOf(csPathElement);
for (int i = 0; i < index; i++) {
PathElementCS csElement = path.get(i);
@@ -101,11 +103,22 @@
}
assert csContext != null;
String messageTemplate;
+ String typeText = null;
String argumentText = null;
ExpCS navigationArgument = null;
Type sourceType = null;
if ((index + 1) < path.size()) {
messageTemplate = PivotMessagesInternal.UnresolvedNamespace_ERROR_;
+ if (pathElements.size() > 0) {
+ StringBuilder s = new StringBuilder();
+ for (int i = 0; i < index; i++) {
+ if (i > 0) {
+ s.append("::");
+ }
+ s.append(pathElements.get(i));
+ }
+ typeText = s.toString();
+ }
}
else if (csContext instanceof NameExpCS) {
NameExpCS csNameExp = (NameExpCS)csContext;
@@ -134,7 +147,16 @@
if (csNameExp.getSourceTypeValue() != null) {
sourceType = csNameExp.getSourceTypeValue();
}
- linkText = pathName.toString();
+ if (index > 0) {
+ StringBuilder s = new StringBuilder();
+ for (int i = 0; i < index; i++) {
+ if (i > 0) {
+ s.append("::");
+ }
+ s.append(pathElements.get(i));
+ }
+ typeText = s.toString();
+ }
}
else if (csContext instanceof TypeNameExpCS) {
messageTemplate = PivotMessagesInternal.UnresolvedType_ERROR_;
@@ -155,61 +177,63 @@
else {
messageTemplate = "Unresolved ''{0}'' ''{1}''";
}
- assert messageTemplate != null;
- TypedElement source = null;
- ExpCS csSource = navigationArgument;
- OperatorExpCS csOperator = null;
- for (ExpCS aSource = csSource; aSource != null; ) { // FIXME rewrite me
- csOperator = aSource.getLocalParent();
- if ((csOperator != null) && (csOperator.getSource() != aSource)) {
- csSource = csOperator.getSource();
- break;
+ if (typeText == null) {
+ assert messageTemplate != null;
+ TypedElement source = null;
+ ExpCS csSource = navigationArgument;
+ OperatorExpCS csOperator = null;
+ for (ExpCS aSource = csSource; aSource != null; ) { // FIXME rewrite me
+ csOperator = aSource.getLocalParent();
+ if ((csOperator != null) && (csOperator.getSource() != aSource)) {
+ csSource = csOperator.getSource();
+ break;
+ }
+ EObject eContainer = aSource.eContainer();
+ if (eContainer instanceof NavigatingArgCS) {
+ aSource = ((NavigatingArgCS)eContainer).getOwningRoundBracketedClause().getOwningNameExp();
+ }
+ else if (eContainer instanceof InfixExpCS) {
+ aSource = (InfixExpCS)eContainer;
+ }
+ else if (eContainer instanceof PrefixExpCS) {
+ aSource = (PrefixExpCS)eContainer;
+ }
+ else if (eContainer instanceof NestedExpCS) {
+ aSource = (NestedExpCS)eContainer;
+ }
+ else if (eContainer instanceof SpecificationCS) {
+ ExpressionInOCL expression = PivotUtil.getContainingExpressionInOCL(((SpecificationCS)eContainer).getPivot());
+ source = expression!= null ? expression.getOwnedContext() : null;
+ break;
+ }
+ else {
+ break;
+ }
}
- EObject eContainer = aSource.eContainer();
- if (eContainer instanceof NavigatingArgCS) {
- aSource = ((NavigatingArgCS)eContainer).getOwningRoundBracketedClause().getOwningNameExp();
+ if (source == null) {
+ if ((csSource != null) && (csSource != navigationArgument)) {
+ source = PivotUtil.getPivot(OCLExpression.class, csSource);
+ }
}
- else if (eContainer instanceof InfixExpCS) {
- aSource = (InfixExpCS)eContainer;
- }
- else if (eContainer instanceof PrefixExpCS) {
- aSource = (PrefixExpCS)eContainer;
- }
- else if (eContainer instanceof NestedExpCS) {
- aSource = (NestedExpCS)eContainer;
- }
- else if (eContainer instanceof SpecificationCS) {
- ExpressionInOCL expression = PivotUtil.getContainingExpressionInOCL(((SpecificationCS)eContainer).getPivot());
- source = expression!= null ? expression.getOwnedContext() : null;
- break;
- }
- else {
- break;
- }
- }
- if (source == null) {
- if ((csSource != null) && (csSource != navigationArgument)) {
- source = PivotUtil.getPivot(OCLExpression.class, csSource);
- }
- }
- if (source != null) {
- if (sourceType == null) {
- sourceType = source.getType();
- }
- if (csOperator != null) {
- boolean isAggregate = PivotUtil.isAggregate(sourceType);
- if (isAggregate) {
- String navigationOperatorName = csOperator.getName();
- if (PivotUtil.isObjectNavigationOperator(navigationOperatorName)) {
- if (source.eContainingFeature() == PivotPackage.Literals.CALL_EXP__OWNED_SOURCE) {
- EObject eContainer = source.eContainer();
- if (eContainer instanceof IteratorExp) {
- IteratorExp iteratorExp = (IteratorExp)eContainer;
- if (iteratorExp.isIsImplicit()) {
- LibraryFeature iterationImplementation = iteratorExp.getReferredIteration().getImplementation();
- if (iterationImplementation == CollectIteration.INSTANCE) {
- Variable iterator = PivotUtil.getOwnedIterators(iteratorExp).iterator().next();
- sourceType = PivotUtil.getType(iterator);
+ if (source != null) {
+ if (sourceType == null) {
+ sourceType = source.getType();
+ }
+ if (csOperator != null) {
+ boolean isAggregate = PivotUtil.isAggregate(sourceType);
+ if (isAggregate) {
+ String navigationOperatorName = csOperator.getName();
+ if (PivotUtil.isObjectNavigationOperator(navigationOperatorName)) {
+ if (source.eContainingFeature() == PivotPackage.Literals.CALL_EXP__OWNED_SOURCE) {
+ EObject eContainer = source.eContainer();
+ if (eContainer instanceof IteratorExp) {
+ IteratorExp iteratorExp = (IteratorExp)eContainer;
+ if (iteratorExp.isIsImplicit()) {
+ LibraryFeature iterationImplementation = iteratorExp.getReferredIteration().getImplementation();
+ if (iterationImplementation == CollectIteration.INSTANCE) {
+ Variable iterator = PivotUtil.getOwnedIterators(iteratorExp).iterator().next();
+ sourceType = PivotUtil.getType(iterator);
+ }
}
}
}
@@ -217,21 +241,21 @@
}
}
}
- }
- String typeText = "";
- if (source != null) {
- typeText = PivotConstantsInternal.UNKNOWN_TYPE_TEXT;
- if (sourceType == null) {
- sourceType = source.getType();
- }
- if (sourceType != null) {
- // sourceType = PivotUtil.getBehavioralType(sourceType);
- OperatorExpCS csParent = navigationArgument != null ? navigationArgument.getLocalParent() : null;
- if (!PivotUtil.isAggregate(sourceType) && NavigationUtil.isNavigationInfixExp(csParent) && (csParent != null) && PivotUtil.isAggregateNavigationOperator(((InfixExpCS)csParent).getName())) {
- typeText = "Set(" + sourceType.toString() + ")";
+ typeText = "";
+ if (source != null) {
+ typeText = PivotConstantsInternal.UNKNOWN_TYPE_TEXT;
+ if (sourceType == null) {
+ sourceType = source.getType();
}
- else {
- typeText = sourceType.toString();
+ if (sourceType != null) {
+ // sourceType = PivotUtil.getBehavioralType(sourceType);
+ OperatorExpCS csParent = navigationArgument != null ? navigationArgument.getLocalParent() : null;
+ if (!PivotUtil.isAggregate(sourceType) && NavigationUtil.isNavigationInfixExp(csParent) && (csParent != null) && PivotUtil.isAggregateNavigationOperator(((InfixExpCS)csParent).getName())) {
+ typeText = "Set(" + sourceType.toString() + ")";
+ }
+ else {
+ typeText = sourceType.toString();
+ }
}
}
}
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/models/uml/InternationalizedClasses.uml b/tests/org.eclipse.ocl.examples.xtext.tests/models/uml/InternationalizedClasses.uml
index 922e033..8f99d76 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/models/uml/InternationalizedClasses.uml
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/models/uml/InternationalizedClasses.uml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:InternationalizedProfile="http://www.eclipse.org/ocl/examples/Internationalized" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/ocl/examples/Internationalized Internationalized.profile.uml#_1CnJUOyFEeK3EpfBjgn1Sw">
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:InternationalizedProfile="http://www.eclipse.org/ocl/examples/Internationalized" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/ocl/examples/Internationalized Internationalized.profile.uml#_1CnJUOyFEeK3EpfBjgn1Sw">
<uml:Model xmi:id="_iHBam_EUEeGbmcl4mtVQXA" name="Model" URI="http://www.eclipse.org/ocl/examples/International">
- <packageImport xmi:type="uml:PackageImport" xmi:id="_iHBanPEUEeGbmcl4mtVQXA">
+ <packageImport xmi:id="_iHBanPEUEeGbmcl4mtVQXA">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Class" xmi:id="_k1-T4PEUEeGbmcl4mtVQXA" name="EnglishClass">
- <generalization xmi:type="uml:Generalization" xmi:id="_NfH6gPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_zXzMUPEZEeGbmcl4mtVQXA" name="englishName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
+ <generalization xmi:id="_NfH6gPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
+ <ownedAttribute xmi:id="_zXzMUPEZEeGbmcl4mtVQXA" name="englishName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__48YsPEZEeGbmcl4mtVQXA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__48YsfEZEeGbmcl4mtVQXA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="__48YsvEZEeGbmcl4mtVQXA">
@@ -15,8 +15,8 @@
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_zj3EoPEUEeGbmcl4mtVQXA" name="FrenchClass">
- <generalization xmi:type="uml:Generalization" xmi:id="_OHlosPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_B5MZMPEaEeGbmcl4mtVQXA" name="frenchName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
+ <generalization xmi:id="_OHlosPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
+ <ownedAttribute xmi:id="_B5MZMPEaEeGbmcl4mtVQXA" name="frenchName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EMLIcPEaEeGbmcl4mtVQXA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EMLIcfEaEeGbmcl4mtVQXA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_EMLIcvEaEeGbmcl4mtVQXA">
@@ -25,8 +25,8 @@
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_4Ci2cPEUEeGbmcl4mtVQXA" name="GermanClass">
- <generalization xmi:type="uml:Generalization" xmi:id="_Oq_3wPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_FGMgsPEaEeGbmcl4mtVQXA" name="germanName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
+ <generalization xmi:id="_Oq_3wPEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
+ <ownedAttribute xmi:id="_FGMgsPEaEeGbmcl4mtVQXA" name="germanName" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HHfDAPEaEeGbmcl4mtVQXA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HHfDAfEaEeGbmcl4mtVQXA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_HHfDAvEaEeGbmcl4mtVQXA">
@@ -35,11 +35,11 @@
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_rsu64PEVEeGbmcl4mtVQXA" name="PlainClass">
- <generalization xmi:type="uml:Generalization" xmi:id="_POaG0PEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
+ <generalization xmi:id="_POaG0PEaEeGbmcl4mtVQXA" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_8dgMkPEZEeGbmcl4mtVQXA" name="String"/>
<packagedElement xmi:type="uml:Class" xmi:id="_JRPk0PEaEeGbmcl4mtVQXA" name="LanguageClass">
- <ownedAttribute xmi:type="uml:Property" xmi:id="_LKWbgPEaEeGbmcl4mtVQXA" name="name" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
+ <ownedAttribute xmi:id="_LKWbgPEaEeGbmcl4mtVQXA" name="name" visibility="public" type="_8dgMkPEZEeGbmcl4mtVQXA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MY55UPEaEeGbmcl4mtVQXA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MY55UfEaEeGbmcl4mtVQXA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_MY55UvEaEeGbmcl4mtVQXA">
@@ -47,14 +47,20 @@
</defaultValue>
</ownedAttribute>
</packagedElement>
- <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_sMi40PEUEeGbmcl4mtVQXA">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sMsp0PEUEeGbmcl4mtVQXA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <packagedElement xmi:type="uml:Class" xmi:id="_VdLzsO2OEeyedcx5-3T3Sg" name="MultiLingualClass">
+ <generalization xmi:id="_VdLzse2OEeyedcx5-3T3Sg" general="_JRPk0PEaEeGbmcl4mtVQXA"/>
+ </packagedElement>
+ <profileApplication xmi:id="_sMi40PEUEeGbmcl4mtVQXA">
+ <eAnnotations xmi:id="_sMsp0PEUEeGbmcl4mtVQXA" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="Internationalized.profile.uml#_UuTWoOyUEeK3EpfBjgn1Sw"/>
</eAnnotations>
- <appliedProfile xmi:type="uml:Profile" href="Internationalized.profile.uml#_bNIm0PETEeGbmcl4mtVQXA"/>
+ <appliedProfile href="Internationalized.profile.uml#_bNIm0PETEeGbmcl4mtVQXA"/>
</profileApplication>
</uml:Model>
<InternationalizedProfile:InEnglish xmi:id="_t7-PEPEUEeGbmcl4mtVQXA" base_Class="_k1-T4PEUEeGbmcl4mtVQXA" text="Thank You"/>
<InternationalizedProfile:InFrench xmi:id="_29NmEPEUEeGbmcl4mtVQXA" base_Class="_zj3EoPEUEeGbmcl4mtVQXA" text="Merci" face="ITALIC"/>
<InternationalizedProfile:InGerman xmi:id="_6WkukPEUEeGbmcl4mtVQXA" base_Class="_4Ci2cPEUEeGbmcl4mtVQXA" text="Danke Schon" face="BOLD"/>
+ <InternationalizedProfile:InEnglish xmi:id="_ehqr8O2OEeyedcx5-3T3Sg" base_Class="_VdLzsO2OEeyedcx5-3T3Sg"/>
+ <InternationalizedProfile:InFrench xmi:id="_ehqr8e2OEeyedcx5-3T3Sg" base_Class="_VdLzsO2OEeyedcx5-3T3Sg"/>
+ <InternationalizedProfile:InGerman xmi:id="_ehqr8u2OEeyedcx5-3T3Sg" base_Class="_VdLzsO2OEeyedcx5-3T3Sg"/>
</xmi:XMI>
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateNameVisibilityTest4.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateNameVisibilityTest4.java
index 25de97a..fd76bce 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateNameVisibilityTest4.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateNameVisibilityTest4.java
@@ -552,10 +552,10 @@
ocl.assertQueryEquals(redApple, redApple, "self.oclAsType(fruit::Apple)");
ocl.assertQueryEquals(redApple, idResolver.createSetOfEach(TypeId.SET, redApple), "self->oclAsType(Set(Fruit))");
ocl.assertQueryEquals(redApple, idResolver.createSetOfEach(TypeId.SET, redApple), "self->oclAsType(Set(fruit::Apple))");
- ocl.assertSemanticErrorQuery(appleType, "self.oclAsType(fruit::fruit::Apple)", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "fruit"); // Demonstrates Bug 353985
+ ocl.assertSemanticErrorQuery(appleType, "self.oclAsType(fruit::fruit::Apple)", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "fruit", "fruit"); // Demonstrates Bug 353985
ocl.assertSemanticErrorQuery(appleType, "self->oclAsType(Set(fruit::apple::BadApple))", PivotMessagesInternal.UnresolvedType_ERROR_, "", "BadApple");
ocl.assertSemanticErrorQuery(appleType, "self->oclAsType(Set(fruit::apple::BadApple))", PivotMessagesInternal.UnresolvedType_ERROR_, "", "BadApple");
- ocl.assertSemanticErrorQuery(appleType, "self->oclAsType(Set(fruit::badapple::BadApple))", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "badapple");
+ ocl.assertSemanticErrorQuery(appleType, "self->oclAsType(Set(fruit::badapple::BadApple))", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "fruit", "badapple");
ocl.assertSemanticErrorQuery(appleType, "self->oclAsType(Set(badfruit::badapple::BadApple))", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "badfruit");
ocl.assertQueryInvalid(redApple, "self->oclAsType(Set(fruit::apple::EatingApple))");
ocl.assertQueryInvalid(redApple, "self->oclAsType(Set(fruit::Tree))");
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateUMLTest4.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateUMLTest4.java
index dbd9956..65c19d2 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateUMLTest4.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/EvaluateUMLTest4.java
@@ -303,7 +303,7 @@
ocl.assertValidQuery(asTrain, "self.oclIsKindOf(RootElement::Train2)"); // Sibling class => false
ocl.assertValidQuery(asTrain, "self.oclIsKindOf(TestProfile::Train)"); // Stereotype metaclass => false
ocl.assertSemanticErrorQuery(asTrain, "self.oclIsKindOf(Train)", PivotMessagesInternal.UnresolvedElement_ERROR_, "RootElement::Train1", "Train");
- ocl.assertSemanticErrorQuery(asTrain, "self.oclIsKindOf(RootElement::Train)", PivotMessagesInternal.UnresolvedElement_ERROR_, "RootElement::Train1", "RootElement::Train");
+ ocl.assertSemanticErrorQuery(asTrain, "self.oclIsKindOf(RootElement::Train)", PivotMessagesInternal.UnresolvedElement_ERROR_, "RootElement", "Train");
//
ocl.assertValidQuery(asTrain, "let t = Train1 in self.oclIsKindOf(t)");
ocl.assertValidQuery(asTrain, "let t = Train2 in self.oclIsKindOf(t)");
@@ -311,7 +311,7 @@
ocl.assertValidQuery(asTrain, "let t = RootElement::Train2 in self.oclIsKindOf(t)");
ocl.assertValidQuery(asTrain, "let t = TestProfile::Train in self.oclIsKindOf(t)");
ocl.assertSemanticErrorQuery(asTrain, "let t = Train in self.oclIsKindOf(t)", PivotMessagesInternal.UnresolvedElement_ERROR_, "", "Train");
- ocl.assertSemanticErrorQuery(asTrain, "let t = RootElement::Train in self.oclIsKindOf(t)", PivotMessagesInternal.UnresolvedElement_ERROR_, "", "RootElement::Train");
+ ocl.assertSemanticErrorQuery(asTrain, "let t = RootElement::Train in self.oclIsKindOf(t)", PivotMessagesInternal.UnresolvedElement_ERROR_, "RootElement", "Train");
//
// aTrain = ... no Ecore instance available
// ocl.assertQueryEquals(aTrain, false, "let t = TestProfile::Train in self.oclIsKindOf(t)");
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/StereotypesTest.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/StereotypesTest.java
index 9b63acb..64a27ec 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/StereotypesTest.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/pivot/tests/StereotypesTest.java
@@ -53,6 +53,8 @@
import org.junit.After;
import org.junit.Before;
+import com.google.common.collect.Sets;
+
/**
* Tests for stereotype expressions.
*/
@@ -95,15 +97,25 @@
org.eclipse.uml2.uml.Type umlFrenchClass;
org.eclipse.uml2.uml.Type umlGermanClass;
org.eclipse.uml2.uml.Type umlLanguageClass;
+ org.eclipse.uml2.uml.Type umlMultiLingualClass;
org.eclipse.uml2.uml.Type umlPlainClass;
org.eclipse.uml2.uml.Type umlString;
UMLElementExtension umlEnglishClassInEnglish;
+ EObject umlEnglishClassInEnglish2;
+ EObject umlMultiLingualClassInEnglish2;
+ EObject umlMultiLingualClassInFrench2;
+ EObject umlMultiLingualClassInGerman2;
org.eclipse.ocl.pivot.Class asEnglishClass;
org.eclipse.ocl.pivot.Class asFrenchClass;
org.eclipse.ocl.pivot.Class asGermanClass;
+ org.eclipse.ocl.pivot.Class asPlainClass;
+ org.eclipse.ocl.pivot.Class asMultiLingualClass;
ElementExtension asEnglishClassInEnglish;
ElementExtension asFrenchClassInEnglish;
ElementExtension asGermanClassInEnglish;
+ ElementExtension asMultiLingualClassInEnglish;
+ ElementExtension asMultiLingualClassInFrench;
+ ElementExtension asMultiLingualClassInGerman;
public InternationalizedMetamodel(@NonNull OCL ocl, @NonNull InternationalizedProfile mmm, org.eclipse.uml2.uml.Package umlPackage) throws ParserException {
EnvironmentFactoryInternalExtension environmentFactory = (EnvironmentFactoryInternalExtension)ocl.getEnvironmentFactory();
@@ -118,16 +130,26 @@
umlFrenchClass = umlPackage.getOwnedType("FrenchClass");
umlGermanClass = umlPackage.getOwnedType("GermanClass");
umlLanguageClass = umlPackage.getOwnedType("LanguageClass");
+ umlMultiLingualClass = umlPackage.getOwnedType("MultiLingualClass");
umlPlainClass = umlPackage.getOwnedType("PlainClass");
umlString = umlPackage.getOwnedType("String");
asEnglishClass = environmentFactory.getASOf(org.eclipse.ocl.pivot.Class.class, umlEnglishClass);
asFrenchClass = environmentFactory.getASOf(org.eclipse.ocl.pivot.Class.class, umlFrenchClass);
asGermanClass = environmentFactory.getASOf(org.eclipse.ocl.pivot.Class.class, umlGermanClass);
+ asPlainClass = environmentFactory.getASOf(org.eclipse.ocl.pivot.Class.class, umlPlainClass);
+ asMultiLingualClass = environmentFactory.getASOf(org.eclipse.ocl.pivot.Class.class, umlMultiLingualClass);
//
umlEnglishClassInEnglish = (UMLElementExtension) UMLElementExtension.getUMLElementExtension(mmm.asInEnglishStereotype, umlEnglishClass);
asEnglishClassInEnglish = NameUtil.getNameable(asEnglishClass.getOwnedExtensions(), "EnglishClass$InEnglish");
asFrenchClassInEnglish = NameUtil.getNameable(asFrenchClass.getOwnedExtensions(), "FrenchClass$InFrench");
asGermanClassInEnglish = NameUtil.getNameable(asGermanClass.getOwnedExtensions(), "GermanClass$InGerman");
+ asMultiLingualClassInEnglish = NameUtil.getNameable(asMultiLingualClass.getOwnedExtensions(), "MultiLingualClass$InEnglish");
+ asMultiLingualClassInFrench = NameUtil.getNameable(asMultiLingualClass.getOwnedExtensions(), "MultiLingualClass$InFrench");
+ asMultiLingualClassInGerman = NameUtil.getNameable(asMultiLingualClass.getOwnedExtensions(), "MultiLingualClass$InGerman");
+ umlEnglishClassInEnglish2 = asEnglishClassInEnglish.getESObject();
+ umlMultiLingualClassInEnglish2 = asMultiLingualClassInEnglish.getESObject();
+ umlMultiLingualClassInFrench2 = asMultiLingualClassInFrench.getESObject();
+ umlMultiLingualClassInGerman2 = asMultiLingualClassInGerman.getESObject();
}
}
@@ -312,7 +334,7 @@
IdResolver idResolver2 = ocl2.getIdResolver();
ocl2.setModelManager(new LazyEcoreModelManager(ocl2.mm.umlEnglishClass.eResource().getContents(), null, null));
ocl2.assertQueryEquals(ocl2.mm.umlEnglishClass, idResolver2.createSetOfEach(TypeId.SET), "Model::EnglishClass.allInstances()");
- ocl2.assertQueryEquals(ocl2.mm.umlEnglishClass, idResolver2.createSetOfEach(TypeId.SET, ocl2.mm.umlPlainClass, ocl2.mm.umlEnglishClass, ocl2.mm.umlLanguageClass, ocl2.mm.umlFrenchClass, ocl2.mm.umlGermanClass), "Class.allInstances()");
+ ocl2.assertQueryEquals(ocl2.mm.umlEnglishClass, idResolver2.createSetOfEach(TypeId.SET, ocl2.mm.umlPlainClass, ocl2.mm.umlEnglishClass, ocl2.mm.umlLanguageClass, ocl2.mm.umlFrenchClass, ocl2.mm.umlGermanClass, ocl2.mm.umlMultiLingualClass), "Class.allInstances()");
ocl2.dispose();
}
//M1 - Pivot
@@ -320,7 +342,7 @@
MyOCL ocl3 = createOCL();
IdResolver idResolver3 = ocl3.getIdResolver();
ocl3.setModelManager(new LazyEcoreModelManager(ocl3.mm.asEnglishClass.eResource().getContents(), null, null));
- ocl3.assertQueryEquals(ocl3.mm.asEnglishClass, idResolver3.createSetOfEach(TypeId.SET, ocl3.mm.asEnglishClassInEnglish, ocl3.mm.asFrenchClassInEnglish, ocl3.mm.asGermanClassInEnglish), "ocl::ElementExtension.allInstances()");
+ ocl3.assertQueryEquals(ocl3.mm.asEnglishClass, idResolver3.createSetOfEach(TypeId.SET, ocl3.mm.asEnglishClassInEnglish, ocl3.mm.asFrenchClassInEnglish, ocl3.mm.asGermanClassInEnglish, ocl3.mm.asMultiLingualClassInEnglish, ocl3.mm.asMultiLingualClassInFrench, ocl3.mm.asMultiLingualClassInGerman), "ocl::ElementExtension.allInstances()");
//
// ocl.assertQueryEquals(ocl.mm.umlMMM, metamodelManager.createSetValueOf(null, ocl.mm.string, ocl.mm.plainClass, ocl.mm.englishClass, ocl.mm.languageClass, ocl.mm.frenchClass, ocl.mm.germanClass), "uml::Stereotype.allInstances()");
// ocl.assertQueryEquals(metamodelManager.getOclAnyType(), metamodelManager.createSetValueOf(null, ocl.mm.string, ocl.mm.plainClass, ocl.mm.englishClass, ocl.mm.languageClass, ocl.mm.frenchClass, ocl.mm.germanClass), "ocl::Stereotype.allInstances()");
@@ -385,4 +407,109 @@
ocl.assertQueryEquals(ocl.mm.umlGermanClass, umlBold, "self.extension_Internationalized.face()");
ocl.dispose();
}
+
+ /**
+ * Tests M2 parsing and M1 evaluation using oclBase().
+ */
+ public void testStereotypes_oclBase() throws Exception {
+ MyOCL ocl = createOCL();
+ //
+ // AS => AS
+ //
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, ocl.mm.asEnglishClassInEnglish, "self.oclExtension(InternationalizedProfile::Internationalized)");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClassInEnglish, ocl.mm.asEnglishClass, "self.oclBase()");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClassInEnglish, ocl.mm.asEnglishClass, "self.oclBase(Model::EnglishClass)");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClassInEnglish, null, "self.oclBase(Model::GermanClass)");
+ ocl.assertQueryEquals(ocl.mm.asMultiLingualClassInEnglish, ocl.mm.asMultiLingualClass, "self.oclBase()");
+ ocl.assertQueryEquals(ocl.mm.asMultiLingualClassInEnglish, ocl.mm.asMultiLingualClass, "self.oclBase(Model::MultiLingualClass)");
+ ocl.assertQueryEquals(ocl.mm.asMultiLingualClassInEnglish, null, "self.oclBase(Model::EnglishClass)");
+ //
+ // UML => UML
+ //
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, ocl.mm.umlEnglishClassInEnglish2, "self.oclExtension(InternationalizedProfile::Internationalized)");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClassInEnglish2, ocl.mm.umlEnglishClass, "self.oclBase()");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClassInEnglish2, ocl.mm.umlEnglishClass, "self.oclBase(Model::EnglishClass)");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClassInEnglish2, null, "self.oclBase(Model::GermanClass)");
+ ocl.assertQueryEquals(ocl.mm.umlMultiLingualClassInEnglish2, ocl.mm.umlMultiLingualClass, "self.oclBase()");
+ ocl.assertQueryEquals(ocl.mm.umlMultiLingualClassInEnglish2, ocl.mm.umlMultiLingualClass, "self.oclBase(Model::MultiLingualClass)");
+ ocl.assertQueryEquals(ocl.mm.umlMultiLingualClassInEnglish2, null, "self.oclBase(Model::EnglishClass)");
+ //
+ ocl.dispose();
+ }
+
+ /**
+ * Tests M2 parsing and M1 evaluation using oclExtension()/oclExtensions() and diverse KindOf.
+ */
+ public void testStereotypes_oclExtensions() throws Exception {
+ MyOCL ocl = createOCL();
+ //
+ // AS => AS
+ //
+ ocl.assertQueryEquals(ocl.mm.asPlainClass, Sets.newHashSet(), "self.oclExtensions()");
+ ocl.assertQueryEquals(ocl.mm.asPlainClass, null, "self.oclExtension(InternationalizedProfile::Internationalized)");
+ //
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(ocl.mm.asEnglishClassInEnglish), "self.oclExtensions()");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(ocl.mm.asEnglishClassInEnglish), "self.oclExtensions(InternationalizedProfile::Internationalized)");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(), "self.oclExtensions(Standard::Focus)");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, ocl.mm.asEnglishClassInEnglish, "self.oclExtension(InternationalizedProfile::Internationalized)");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, null, "self.oclExtension(Standard::Focus)");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, null, "self.oclExtension(Ecore::EClass)");
+ //
+ ocl.assertQueryEquals(ocl.mm.asMultiLingualClass, Sets.newHashSet(ocl.mm.asMultiLingualClassInEnglish, ocl.mm.asMultiLingualClassInFrench, ocl.mm.asMultiLingualClassInGerman), "self.oclExtensions()");
+ ocl.assertQueryEquals(ocl.mm.asMultiLingualClass, Sets.newHashSet(ocl.mm.asMultiLingualClassInEnglish, ocl.mm.asMultiLingualClassInFrench, ocl.mm.asMultiLingualClassInGerman), "self.oclExtensions(InternationalizedProfile::Internationalized)");
+ ocl.assertQueryEquals(ocl.mm.asMultiLingualClass, Sets.newHashSet(ocl.mm.asMultiLingualClassInGerman), "self.oclExtensions(InternationalizedProfile::InGerman)");
+ ocl.assertQueryEquals(ocl.mm.asMultiLingualClass, ocl.mm.asMultiLingualClassInGerman, "self.oclExtension(InternationalizedProfile::InGerman)");
+ ocl.assertQueryInvalid(ocl.mm.asMultiLingualClass, "self.oclExtension(InternationalizedProfile::Internationalized)");
+ //
+ // UML => UML
+ //
+ ocl.assertQueryEquals(ocl.mm.umlPlainClass, Sets.newHashSet(), "self.oclExtensions()");
+ ocl.assertQueryEquals(ocl.mm.umlPlainClass, null, "self.oclExtension(InternationalizedProfile::Internationalized)");
+ //
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(ocl.mm.umlEnglishClassInEnglish2), "self.oclExtensions()");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(ocl.mm.umlEnglishClassInEnglish2), "self.oclExtensions(InternationalizedProfile::Internationalized)");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(), "self.oclExtensions(Standard::Focus)");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, ocl.mm.umlEnglishClassInEnglish2, "self.oclExtension(InternationalizedProfile::Internationalized)");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, null, "self.oclExtension(Standard::Focus)");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, null, "self.oclExtension(Ecore::EClass)");
+ //
+ ocl.assertQueryEquals(ocl.mm.umlMultiLingualClass, Sets.newHashSet(ocl.mm.umlMultiLingualClassInEnglish2, ocl.mm.umlMultiLingualClassInFrench2, ocl.mm.umlMultiLingualClassInGerman2), "self.oclExtensions()");
+ ocl.assertQueryEquals(ocl.mm.umlMultiLingualClass, Sets.newHashSet(ocl.mm.umlMultiLingualClassInEnglish2, ocl.mm.umlMultiLingualClassInFrench2, ocl.mm.umlMultiLingualClassInGerman2), "self.oclExtensions(InternationalizedProfile::Internationalized)");
+ ocl.assertQueryEquals(ocl.mm.umlMultiLingualClass, Sets.newHashSet(ocl.mm.umlMultiLingualClassInGerman2), "self.oclExtensions(InternationalizedProfile::InGerman)");
+ ocl.assertQueryEquals(ocl.mm.umlMultiLingualClass, ocl.mm.umlMultiLingualClassInGerman2, "self.oclExtension(InternationalizedProfile::InGerman)");
+ ocl.assertQueryInvalid(ocl.mm.umlMultiLingualClass, "self.oclExtension(InternationalizedProfile::Internationalized)");
+ //
+ // Errors
+ //
+ ocl.assertSemanticErrorQuery(ocl.mm.asEnglishClass, "self.oclExtension(standard::Class_Focus)", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "standard");
+ ocl.assertSemanticErrorQuery(ocl.mm.asEnglishClass, "self.oclExtension(Standard::NoSuchFocus::WhoCares)", PivotMessagesInternal.UnresolvedNamespace_ERROR_, "Standard", "NoSuchFocus");
+ ocl.assertSemanticErrorQuery(ocl.mm.asEnglishClass, "self.oclExtension(Standard::NoSuchFocus)", PivotMessagesInternal.UnresolvedElement_ERROR_, "Standard", "NoSuchFocus");
+ ocl.assertSemanticErrorQuery(ocl.mm.asEnglishClass, "self.oclExtension(Boolean)", PivotMessagesInternal.UnresolvedOperationCall_ERROR_, "Model::EnglishClass", "oclExtension", "Class");
+ ocl.assertSemanticErrorQuery(ocl.mm.asEnglishClass, "self.oclExtensions(Boolean)", PivotMessagesInternal.UnresolvedOperationCall_ERROR_, "Model::EnglishClass", "oclExtensions", "Class");
+ //
+ ocl.dispose();
+ }
+
+ /**
+ * Tests M2 parsing and M1 evaluation using more diverse oclbBase()/oclExtension()/oclExtensions() and in particular let.
+ */
+ public void testStereotypes_let_580136() throws Exception {
+ MyOCL ocl = createOCL();
+ //
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, ocl.mm.asEnglishClass, "self.oclExtension(InternationalizedProfile::Internationalized).oclBase()");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, ocl.mm.umlEnglishClass, "self.oclExtension(InternationalizedProfile::Internationalized).oclBase()");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClassInEnglish, ocl.mm.asEnglishClassInEnglish, "self.oclBase().oclExtension(InternationalizedProfile::Internationalized)");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClassInEnglish2, ocl.mm.umlEnglishClassInEnglish2, "self.oclBase().oclExtension(InternationalizedProfile::Internationalized)");
+ //
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(ocl.mm.asEnglishClassInEnglish), "let st = InternationalizedProfile::Internationalized in self.oclExtensions(st)");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(ocl.mm.asEnglishClassInEnglish), "self.oclExtensions()->selectByKind(InternationalizedProfile::Internationalized)");
+ ocl.assertQueryEquals(ocl.mm.asEnglishClass, Sets.newHashSet(ocl.mm.asEnglishClassInEnglish), "let st = InternationalizedProfile::Internationalized in self.oclExtensions()->select(oclIsKindOf(st))");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, ocl.mm.umlEnglishClassInEnglish, "self.extension_Internationalized");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(ocl.mmm.umlInEnglishStereotype), "self.getAppliedStereotypes()");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(ocl.mmm.umlInEnglishStereotype), "self.getAppliedStereotypes()->select(true)");
+ //bad missing boxing normalization for loop compare ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(ocl.mmm.umlInEnglishStereotype), "self.getAppliedStereotypes()->select(s | s = InternationalizedProfile::InEnglish)");
+ ocl.assertQueryEquals(ocl.mm.umlEnglishClass, Sets.newHashSet(), "self.getAppliedStereotypes()->selectByKind(InternationalizedProfile::Internationalized)"); // wrong metalevel
+ //
+ ocl.dispose();
+ }
}
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/EcoreConsoleTests.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/EcoreConsoleTests.java
index 15dcfd0..5979691 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/EcoreConsoleTests.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/EcoreConsoleTests.java
@@ -92,7 +92,7 @@
assertConsoleResult(consolePage, b1Book, "hasSpareCopies(5)", "false\n");
//
assertConsoleResult(consolePage, ecoreBook, "name", "'Book'\n");
- assertConsoleResult(consolePage, ecoreBook, "copies", "<b><error>Parsing failure\n</error></b><error>\n1:1: Unresolved Property '::copies'\n</error>");
+ assertConsoleResult(consolePage, ecoreBook, "copies", "<b><error>Parsing failure\n</error></b><error>\n1:1: Unresolved Element '::copies'\n</error>");
assertConsoleResult(consolePage, ecoreBook, "oclType().ownedProperties->sortedBy(name)",
"ecore::EClass::EClass\n" +
"ecore::EClass::EClass\n" +
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/ImportTests.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/ImportTests.java
index c2b6781..bf816a4 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/ImportTests.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/ImportTests.java
@@ -308,21 +308,21 @@
// class AD4 extends A3::A;
bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "A3"));
// class AD011 extends A0::A1::A1::A;
- bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "A1"));
+ bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "A0::A1", "A1"));
// class BD0 extends B0::B;
bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "B0"));
// class BD01 extends B0::B1::B;
bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "B0"));
// class BD11 extends B1::B1::B;
- bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "B1"));
+ bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "B1", "B1"));
// class BD2 extends B2::B;
bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "B2"));
// class BD3 extends B3::B;
bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "B3"));
// class GDC extends G0::C1::GD01;
- bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "C1"));
+ bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "G0", "C1"));
// class GD01 extends G0::F1::F;
- bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "", "F1"));
+ bag.add(StringUtil.bind(PivotMessagesInternal.UnresolvedNamespace_ERROR_, "G0", "F1"));
TestOCL ocl = createOCL();
doBadLoadFromString(ocl, "Bug353793bad.oclinecore", testFileBad, bag);
ocl.dispose();
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java
index 74b7c09..901dc2e 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java
@@ -210,8 +210,8 @@
// allInstances
assertConsoleResult(consolePage, umlEnglishClass, "Stereotype.allInstances()->sortedBy(name)", ""); // Tests Bug 382981
assertConsoleResult(consolePage, umlInEnglishStereotype, "Stereotype.allInstances()->sortedBy(name)", "InternationalizedProfile::InEnglish\nInternationalizedProfile::InFrench\nInternationalizedProfile::InGerman\nInternationalizedProfile::Internationalized\n");
- assertConsoleResult(consolePage, umlEnglishClass, "Class.allInstances()->sortedBy(name)", "Model::EnglishClass\nModel::FrenchClass\nModel::GermanClass\nModel::LanguageClass\nModel::PlainClass\n");
- assertConsoleResult(consolePage, asEnglishClass, "ocl::Class.allInstances()->sortedBy(name)", "Model::EnglishClass\nEnglishClass$InEnglish\nModel::FrenchClass\nFrenchClass$InFrench\nModel::GermanClass\nGermanClass$InGerman\nModel::LanguageClass\nModel::PlainClass\nString\n");
+ assertConsoleResult(consolePage, umlEnglishClass, "Class.allInstances()->sortedBy(name)", "Model::EnglishClass\nModel::FrenchClass\nModel::GermanClass\nModel::LanguageClass\nModel::MultiLingualClass\nModel::PlainClass\n");
+ assertConsoleResult(consolePage, asEnglishClass, "ocl::Class.allInstances()->sortedBy(name)", "Model::EnglishClass\nEnglishClass$InEnglish\nModel::FrenchClass\nFrenchClass$InFrench\nModel::GermanClass\nGermanClass$InGerman\nModel::LanguageClass\nModel::MultiLingualClass\nMultiLingualClass$InEnglish\nMultiLingualClass$InFrench\nMultiLingualClass$InGerman\nModel::PlainClass\nString\n");
//
consolePage.cancelValidation();
// ocl.dispose();