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;