pomfirst version of K3DSA is incorrectly compiled
in some situation (may vary depending on the computer :,-( )
the java code generated for MemberK3Aspect
is incorrect
the correct code should look like:
public abstract class MemberK3Aspect {
public static Value evalMember(final Member _self, final AssetBasedSystem mainModel, final HashMap<Parameter, GuardOccurenceArgument> argumentMap, final Value receiverValue, final List<Value> evaluatedMemberSelectionArgs) {
final fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3AspectMemberAspectProperties _self_ = fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3AspectMemberAspectContext.getSelf(_self);
Object result = null;
// BeginInjectInto fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3Aspect#Value evalMember(AssetBasedSystem,HashMap<Parameter, GuardOccurenceArgument>,Value,List<Value>) from fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.AssetTypeReferenceK3Aspect
if (_self instanceof fr.irisa.atsyra.absystem.model.absystem.AssetTypeReference){
result = fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.AssetTypeReferenceK3Aspect.evalMember((fr.irisa.atsyra.absystem.model.absystem.AssetTypeReference)_self,mainModel,argumentMap,receiverValue,evaluatedMemberSelectionArgs);
} else
// EndInjectInto fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3Aspect#Value evalMember(AssetBasedSystem,HashMap<Parameter, GuardOccurenceArgument>,Value,List<Value>) from fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.AssetTypeReferenceK3Aspect
// BeginInjectInto fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3Aspect#Value evalMember(AssetBasedSystem,HashMap<Parameter, GuardOccurenceArgument>,Value,List<Value>) from fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.AssetTypeAttributeK3Aspect
if (_self instanceof fr.irisa.atsyra.absystem.model.absystem.AssetTypeAttribute){
result = fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.AssetTypeAttributeK3Aspect.evalMember((fr.irisa.atsyra.absystem.model.absystem.AssetTypeAttribute)_self,mainModel,argumentMap,receiverValue,evaluatedMemberSelectionArgs);
} else
// EndInjectInto fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3Aspect#Value evalMember(AssetBasedSystem,HashMap<Parameter, GuardOccurenceArgument>,Value,List<Value>) from fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.AssetTypeAttributeK3Aspect
// BeginInjectInto fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3Aspect#Value evalMember(AssetBasedSystem,HashMap<Parameter, GuardOccurenceArgument>,Value,List<Value>) from fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.StaticMethodK3Aspect
if (_self instanceof fr.irisa.atsyra.absystem.model.absystem.StaticMethod){
result = fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.StaticMethodK3Aspect.evalMember((fr.irisa.atsyra.absystem.model.absystem.StaticMethod)_self,mainModel,argumentMap,receiverValue,evaluatedMemberSelectionArgs);
} else
// EndInjectInto fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3Aspect#Value evalMember(AssetBasedSystem,HashMap<Parameter, GuardOccurenceArgument>,Value,List<Value>) from fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.StaticMethodK3Aspect
// #DispatchPointCut_before# Value evalMember(AssetBasedSystem,HashMap<Parameter, GuardOccurenceArgument>,Value,List<Value>)
if (_self instanceof fr.irisa.atsyra.absystem.model.absystem.Member){
result = fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3Aspect._privk3_evalMember(_self_, (fr.irisa.atsyra.absystem.model.absystem.Member)_self,mainModel,argumentMap,receiverValue,evaluatedMemberSelectionArgs);
};
return (fr.irisa.atsyra.absystem.model.absystem.interpreter_vm.Value)result;
}
but is
@Aspect(className = Member.class)
@SuppressWarnings("all")
public abstract class MemberK3Aspect {
public static Value evalMember(final Member _self, final AssetBasedSystem mainModel, final HashMap<Parameter, GuardOccurenceArgument> argumentMap, final Value receiverValue, final List<Value> evaluatedMemberSelectionArgs) {
final fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3AspectMemberAspectProperties _self_ = fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3AspectMemberAspectContext.getSelf(_self);
Object result = null;
// #DispatchPointCut_before# Value evalMember(AssetBasedSystem,HashMap<Parameter, GuardOccurenceArgument>,Value,List<Value>)
if (_self instanceof fr.irisa.atsyra.absystem.model.absystem.Member){
result = fr.irisa.atsyra.absystem.k3dsa.absystem.aspects.MemberK3Aspect._privk3_evalMember(_self_, (fr.irisa.atsyra.absystem.model.absystem.Member)_self,mainModel,argumentMap,receiverValue,evaluatedMemberSelectionArgs);
};
return (fr.irisa.atsyra.absystem.model.absystem.interpreter_vm.Value)result;
}
the problem is probably in K3 interaction with xtend parallel processing cf. https://github.com/diverse-project/k3/blob/ac3cddbbac7f9e4869f2d8ac22eefd8b5670c97f/k3.eclipse/fr.inria.diverse.k3.al.annotationprocessor.plugin/src/fr/inria/diverse/k3/al/annotationprocessor/Aspect.xtend#L908
how to reproduce:
cd pomfirst
mvn clean package
open the generated java file