From 88fb3abc2c6fe91a297060ddf072161957548fee Mon Sep 17 00:00:00 2001
From: Johannes Mey <johannes.mey@tu-dresden.de>
Date: Mon, 4 May 2020 10:56:57 +0200
Subject: [PATCH] add simple test for multiple inheritance and skip
 transformation of those ePackages in the test for now to concentrate on the
 actual errors.

---
 src/main/jastadd/analysis/Inheritance.jrag         | 14 ++++++++++++++
 .../tudresden/inf/st/e2j/TransformationTest.java   | 10 +++++++---
 2 files changed, 21 insertions(+), 3 deletions(-)
 create mode 100644 src/main/jastadd/analysis/Inheritance.jrag

diff --git a/src/main/jastadd/analysis/Inheritance.jrag b/src/main/jastadd/analysis/Inheritance.jrag
new file mode 100644
index 0000000..c9e6d01
--- /dev/null
+++ b/src/main/jastadd/analysis/Inheritance.jrag
@@ -0,0 +1,14 @@
+aspect Inheritance {
+
+  syn boolean EPackage.usesMultipleInheritance() {
+    for (EClass eClass : classes()) {
+      if (eClass.usesMultipleInheritance()) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  syn boolean EClass.usesMultipleInheritance() = getESuperTypeList().size() > 1;
+
+}
diff --git a/src/test/java/de/tudresden/inf/st/e2j/TransformationTest.java b/src/test/java/de/tudresden/inf/st/e2j/TransformationTest.java
index d2f4b6e..84a2ad5 100644
--- a/src/test/java/de/tudresden/inf/st/e2j/TransformationTest.java
+++ b/src/test/java/de/tudresden/inf/st/e2j/TransformationTest.java
@@ -59,9 +59,13 @@ class TransformationTest extends AbstractTest {
     for (EObject eObject : ePackages) {
       Assertions.assertTrue(eObject instanceof EPackage);
 
-      Grammar grammar = ((EPackage) eObject).getGrammar();
-      grammar.print(b);
-      b.append("\n\n");
+      if (((EPackage) eObject).usesMultipleInheritance()) {
+        logger.info("skipping package {}, since it uses multiple inheritance.", ((EPackage) eObject).getName());
+      } else {
+        Grammar grammar = ((EPackage) eObject).getGrammar();
+        grammar.print(b);
+        b.append("\n\n");
+      }
     }
 
     fileName = fileName.replaceFirst("\\.ecore$", ".relast");
-- 
GitLab