aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-03-07 12:46:50 -0500
committerLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-03-07 12:46:50 -0500
commite19d57dd3a15e77882b471fa15f27f97e72a092b (patch)
treee726c065e1470c2eab8ebe418168c0c7cd71e853
parentcopyMap bugfix (diff)
downloadVIATRA-Generator-e19d57dd3a15e77882b471fa15f27f97e72a092b.tar.gz
VIATRA-Generator-e19d57dd3a15e77882b471fa15f27f97e72a092b.tar.zst
VIATRA-Generator-e19d57dd3a15e77882b471fa15f27f97e72a092b.zip
Validation for abstract dynamic types
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend24
1 files changed, 13 insertions, 11 deletions
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
index fb8c9d66..1aedaf7b 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
@@ -1,23 +1,21 @@
1package hu.bme.mit.inf.dslreasoner.logic2ecore 1package hu.bme.mit.inf.dslreasoner.logic2ecore
2 2
3import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace
4import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult
5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder
6import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic 3import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace
8import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation 5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation
9import java.util.HashSet 6import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder
7import java.util.Collection
10import java.util.HashMap 8import java.util.HashMap
11import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 9import java.util.HashSet
12import org.eclipse.emf.ecore.EClass 10import java.util.List
13import java.util.Set 11import java.util.Set
12import org.eclipse.emf.ecore.EClass
14import org.eclipse.emf.ecore.EObject 13import org.eclipse.emf.ecore.EObject
15import java.util.List
16import java.util.Collection
17import org.eclipse.emf.ecore.EStructuralFeature 14import org.eclipse.emf.ecore.EStructuralFeature
18 15
16import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
17
19class Logic2Ecore { 18class Logic2Ecore {
20 private val extension LogicProblemBuilder problemBuilder = new LogicProblemBuilder
21 private val extension LogicStructureBuilder structureBuilder = new LogicStructureBuilder 19 private val extension LogicStructureBuilder structureBuilder = new LogicStructureBuilder
22 val Ecore2Logic ecore2Logic; 20 val Ecore2Logic ecore2Logic;
23 21
@@ -85,7 +83,11 @@ class Logic2Ecore {
85 for(candidate : classes) { 83 for(candidate : classes) {
86 val subtypeOfAll = classes.forall[it.isSuperTypeOf(candidate)] 84 val subtypeOfAll = classes.forall[it.isSuperTypeOf(candidate)]
87 if(subtypeOfAll) { 85 if(subtypeOfAll) {
88 return candidate 86 if(candidate.abstract || candidate.isInterface) {
87 throw new AssertionError('''Object has abstract concrete type! Types: [«FOR c:classes SEPARATOR ","»«c.name»«ENDFOR»]''')
88 } else {
89 return candidate
90 }
89 } 91 }
90 } 92 }
91 throw new AssertionError('''Object has no unique concrete type! Types: [«FOR c:classes SEPARATOR ","»«c.name»«ENDFOR»]''') 93 throw new AssertionError('''Object has no unique concrete type! Types: [«FOR c:classes SEPARATOR ","»«c.name»«ENDFOR»]''')