[438038] - Compilation error when using an overriding mapping as
disjuncted mapping
diff --git a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/ast/parser/QvtOperationalVisitorCS.java b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/ast/parser/QvtOperationalVisitorCS.java
index 0772cf0..7266ef1 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/ast/parser/QvtOperationalVisitorCS.java
+++ b/plugins/org.eclipse.m2m.qvt.oml/src/org/eclipse/m2m/internal/qvt/oml/ast/parser/QvtOperationalVisitorCS.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     Borland Software Corporation - initial API and implementation
  *     Christopher Gerking - bugs 302594, 310991, 289982, 391289, 425634, 427237, 
- *     						   433585, 433919
+ *     						   433585, 433919, 438038
  *     Alex Paperno - bugs 272869, 268636, 404647, 414363, 414363, 401521,
  *                         419299, 414619, 403440, 415024, 420970, 413391,
  *                         424584, 424869
@@ -3936,7 +3936,7 @@
 			owningType = env.getModuleContextType();
 			result = env.lookupMappingOperations(owningType, identifierCS.getName());
 		}
-		// filter out inherited mappings
+		// filter out inherited and overridden mappings
 		if(!result.isEmpty()) {
 			List<MappingOperation> ownerLocalOpers = new ArrayList<MappingOperation>(result.size());
 	        for (MappingOperation operation : result) {
@@ -3945,12 +3945,20 @@
 	                ownerLocalOpers.add(operation);
 	            }	            
 	        }
-	        result = ownerLocalOpers;
+	        
+	        List<MappingOperation> filteredMappings = new ArrayList<MappingOperation>(ownerLocalOpers.size());
+	        for (MappingOperation mapping : ownerLocalOpers) {
+	            if (!ownerLocalOpers.contains(mapping.getOverridden())) {
+	            	filteredMappings.add(mapping);
+	            }
+	        }
+	        
+	        result = filteredMappings;
 		} 
 		// validate the result
 		if(result.isEmpty()) {
 			if(owningType != null) {
-				// unresolved type reported above by visiTypeCS(...)
+				// unresolved type reported above by visitTypeCS(...)
 				String errMessage = NLS.bind(ValidationMessages.QvtOperationalVisitorCS_unresolvedMappingOperationReference,
 						QvtOperationalParserUtil.getStringRepresentation(identifierCS));
 				env.reportError(errMessage, identifierCS);
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug438038/ExtendedLibrary.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug438038/ExtendedLibrary.qvto
new file mode 100644
index 0000000..d1bb799
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug438038/ExtendedLibrary.qvto
@@ -0,0 +1,5 @@
+modeltype ecore uses "http://www.eclipse.org/emf/2002/Ecore";
+
+library ExtendedLibrary();
+
+mapping EClass :: EClass2EClass() : EClass {};
\ No newline at end of file
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug438038/bug438038.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug438038/bug438038.qvto
new file mode 100644
index 0000000..01b0a6e
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/sources/bug438038/bug438038.qvto
@@ -0,0 +1,14 @@
+import ExtendedLibrary;
+
+modeltype ecore uses "http://www.eclipse.org/emf/2002/Ecore";
+
+transformation bug438038();
+
+main() {
+
+}
+
+mapping EClassifier :: EClassifier2EClassifier() : EClassifier
+	disjuncts EClass::EClass2EClass;
+
+mapping EClass :: EClass2EClass() : EClass {};
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/ParserTests.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/ParserTests.java
index 43bb165..b4ec44b 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/ParserTests.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/ParserTests.java
@@ -224,5 +224,6 @@
     	new TestData("bug428028", 0), //$NON-NLS-1$
     	TestData.createSourceChecked("bug425634", 0, 6), //$NON-NLS-1$
     	new TestData("bug433585", 0), //$NON-NLS-1$
+    	new TestData("bug438038", 0) //$NON-NLS-1$
     };
 }