diff --git a/src/main/jastadd/analysis/Inheritance.jrag b/src/main/jastadd/analysis/Inheritance.jrag new file mode 100644 index 0000000000000000000000000000000000000000..c9e6d01b8ca280292e9e43e766be0e99fa0d4d8e --- /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 d2f4b6e401147da1500b5bc490236371015c1212..84a2ad5b99daac1af054c35ab097bf11b3587b77 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");