aboutsummaryrefslogtreecommitdiff
path: root/javaparser-core/src/main/java/com/github/javaparser/ast
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java7
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/observer/PropagatingAstObserver.java3
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);