Skip to content

Commit 72fb7cf

Browse files
committed
TraceConstructorGeneratorJava: use "shouldHaveAddNewObjectToStateMethod" everywhere
1 parent 4707d43 commit 72fb7cf

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

trace/generator/plugins/fr.inria.diverse.trace.plugin.generator/src/fr/inria/diverse/trace/plugin/generator/codegen/TraceConstructorGeneratorJava.xtend

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,13 @@ class TraceConstructorGeneratorJava {
301301
'''
302302
}
303303

304+
private def boolean shouldHaveAddNewObjectToStateMethod(EClassifier c){
305+
if (c instanceof EClass) {
306+
shouldHaveAddNewObjectToStateMethod(c)
307+
} else
308+
false
309+
}
310+
304311
private def boolean shouldHaveAddNewObjectToStateMethod(EClass c){
305312
val subTypes = findAllDirectSubTypes(c)
306313

@@ -364,7 +371,7 @@ if (!added && !exeToTraced.containsKey(o_cast)) {
364371
«IF p instanceof EReference»
365372
366373
367-
«IF traceability.allMutableClasses.contains(p.EType)»
374+
«IF shouldHaveAddNewObjectToStateMethod(p.EType)»
368375
for(«getJavaFQN(p.EType)» aValue : o_cast.«EcoreCraftingUtil.stringGetter(p)») {
369376
addNewObjectToState((«getJavaFQN(p.EType)»)aValue, newState);
370377
}
@@ -390,7 +397,7 @@ if (!added && !exeToTraced.containsKey(o_cast)) {
390397
«IF p instanceof EReference»
391398
«val realMutableType = p.EType»
392399
if (o_cast.«EcoreCraftingUtil.stringGetter(p)» != null) {
393-
«IF traceability.allMutableClasses.contains(realMutableType)»
400+
«IF shouldHaveAddNewObjectToStateMethod(realMutableType)»
394401
addNewObjectToState((«getJavaFQN(realMutableType)»)o_cast.«EcoreCraftingUtil.stringGetter(p)», newState);
395402
firstValue_«p.name».«stringSetter(valueProperty,stringGetterTracedValue("o_cast", p))»;
396403
«ELSE»
@@ -458,7 +465,7 @@ private def String generateAddStateUsingListenerMethods() {
458465
if (modelChange instanceof org.gemoc.xdsmlframework.api.engine_addon.modelchangelistener.NewObjectModelChange) {
459466
stateChanged = true;
460467
««« Loop over all classes that may be constructed and that have mutable fields
461-
«FOR c : partialOrderSort(findTopSuperClasses(newConcreteClassesNotEmpty))»
468+
«FOR c : partialOrderSort(findTopSuperClasses(newConcreteClassesNotEmpty)).filter[c|shouldHaveAddNewObjectToStateMethod(c)]»
462469
if (o instanceof «getJavaFQN(c)») {
463470
«getJavaFQN(c)» o_cast = («getJavaFQN(c)») o;
464471
addNewObjectToState(o_cast, newState);
@@ -565,7 +572,7 @@ private def String generateAddStateUsingListenerMethods() {
565572
previousValue = valueSequence.get(valueSequence.size() - 1);
566573
}
567574
««« If instances of new class, we have to make sure that there are traced versions
568-
«IF traceability.allMutableClasses.contains(p.EType)»
575+
«IF shouldHaveAddNewObjectToStateMethod(p.EType)»
569576
for(«getJavaFQN(p.EType)» aValue : o_cast.«EcoreCraftingUtil.stringGetter(p)») {
570577
addNewObjectToState((«getJavaFQN(p.EType)»)aValue, newState);
571578
}««« end for loop on values

0 commit comments

Comments
 (0)