diff options
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser')
-rw-r--r-- | javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java | 7 | ||||
-rw-r--r-- | javaparser-core/src/main/java/com/github/javaparser/ast/observer/PropagatingAstObserver.java | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java b/javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java index 717c81708..8603dac96 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java @@ -132,6 +132,13 @@ public class NodeList<N extends Node> implements List<N>, Iterable<N>, HasParent @Override public N set(int index, N element) { + if (index < 0 || index >= innerList.size()) { + throw new IllegalArgumentException("Illegal index. The index should be between 0 and " + innerList.size() + + " excluded. It is instead " + index); + } + if (element == innerList.get(index)) { + return element; + } notifyElementReplaced(index, element); setAsParentNodeOf(element); return innerList.set(index, element); diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/observer/PropagatingAstObserver.java b/javaparser-core/src/main/java/com/github/javaparser/ast/observer/PropagatingAstObserver.java index 0e7c344fd..1579474c3 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/observer/PropagatingAstObserver.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/observer/PropagatingAstObserver.java @@ -74,6 +74,9 @@ public abstract class PropagatingAstObserver implements AstObserver { @Override public void listReplacement(NodeList observedNode, int index, Node oldNode, Node newNode) { + if (oldNode == newNode) { + return; + } considerRemoving(oldNode); considerAdding(newNode); concreteListReplacement(observedNode, index, oldNode, newNode); |