VIATRA-Generator
VIATRA-Generator copied to clipboard
java.lang.IllegalArgumentException with patterns using EObject parameters
Description
The transformQueries method found in viatra2logic catches an IllegalArgumentException with the following query:
Query used:
pattern transitionWithoutTargetStateV1(transition:EObject) {
EObject(source);
EObject(transition);
neg find State_OutgoingTransitions(source, transition);
neg find stateTransition(source, transition, _);
}
Caused by:
Only the metamodel's classes get parsed, while queries may contain generic super classes like EObject. This causes the EClassMapper's TypeofEClass method to throw a java.lang.IllegalArgumentException.
Log/Trace:
Exception in thread "main" java.lang.IllegalArgumentException: Unable to translate query "mutatedpatterns.transitionWithoutTargetStateV1".
at hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:105)
at cpsgen.Run.main(Run.java:90)
Caused by: java.lang.IllegalArgumentException: Class EObject is not translated to logic!
at hu.bme.mit.inf.dslreasoner.ecore2logic.EClassMapper_AllElementAsObject.TypeofEClass(EClassMapper_AllElementAsObject.java:63)
at hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.TypeofEClass(Ecore2Logic.java:96)
at hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic._transformTypeReference(Viatra2Logic.java:487)
at hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformTypeReference(Viatra2Logic.java:507)
at hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueryHeader(Viatra2Logic.java:148)
at hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:96)
... 1 more