From aa9dc55cb0bf1b1e4d7b917d348c531307bbfd6a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pavel=20Vojt=C4=9Bchovsk=C3=BD?=
Date: Sat, 26 May 2018 13:10:48 +0200
Subject: [PATCH] enable consistency check
---
src/main/java/spoon/support/util/ModelList.java | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/main/java/spoon/support/util/ModelList.java b/src/main/java/spoon/support/util/ModelList.java
index 5d3e947e4aa..d9c7a03d602 100644
--- a/src/main/java/spoon/support/util/ModelList.java
+++ b/src/main/java/spoon/support/util/ModelList.java
@@ -24,6 +24,7 @@
import java.util.ConcurrentModificationException;
import java.util.List;
+import spoon.SpoonException;
import spoon.experimental.modelobs.FineModelChangeListener;
import spoon.reflect.declaration.CtElement;
import spoon.reflect.path.CtRole;
@@ -89,6 +90,12 @@ public T set(int index, T element) {
}
static void linkToParent(CtElement owner, CtElement element) {
+ if (owner.getFactory().getEnvironment().checksAreSkipped() == false && element.isParentInitialized() && element.getParent() != owner) {
+ //the `e` already has an different parent. Check if it is still linked to that parent
+ if (element.getRoleInParent() != null) {
+ throw new SpoonException("The element " + element + " is already used by another part of SpoonModel. Remove it from previous model or clone it before.");
+ }
+ }
element.setParent(owner);
}