improved check in DSL validator
Change-Id: I8e46db3c7c2de927abe9b2cf612a434af562bf87
Signed-off-by: Lorenzo Bettini <lorenzo.bettini@gmail.com>
diff --git a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/validation/EmfParsleyDslValidator.xtend b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/validation/EmfParsleyDslValidator.xtend
index 1ca7d9d..548c886 100644
--- a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/validation/EmfParsleyDslValidator.xtend
+++ b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/validation/EmfParsleyDslValidator.xtend
@@ -307,11 +307,9 @@
return true;
}
processedSuperTypes.add(type);
- for (JvmTypeReference superTypeRef : type.getSuperTypes()) {
- if (superTypeRef.getType() instanceof JvmGenericType) {
- if (hasCycleInHierarchy(superTypeRef.getType() as JvmGenericType, processedSuperTypes))
- return true;
- }
+ for (genericType : type.superTypes.map[getType].filter(JvmGenericType)) {
+ if (hasCycleInHierarchy(genericType, processedSuperTypes))
+ return true;
}
processedSuperTypes.remove(type);
return false;