VIATRA-Generator icon indicating copy to clipboard operation
VIATRA-Generator copied to clipboard

java.lang.IllegalArgumentException with patterns using EObject parameters

Open mayerkr opened this issue 7 years ago • 2 comments

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

mayerkr avatar Aug 24 '17 16:08 mayerkr