From 99a38d4d08cb020182663ffaf9418d28becf1fd6 Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Wed, 24 Jun 2009 01:22:08 +0200 Subject: Added proper support for changing the AST as its being visited, both removal and addition. The rule is now: children traversal traverses through the tree mostly as it was when it started. --- src/lombok/core/AST.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/lombok/core') diff --git a/src/lombok/core/AST.java b/src/lombok/core/AST.java index c1186d24..8e060f07 100644 --- a/src/lombok/core/AST.java +++ b/src/lombok/core/AST.java @@ -134,7 +134,7 @@ public abstract class AST { } public Collection down() { - return children; + return new ArrayList(children); } public boolean isHandled() { @@ -154,13 +154,18 @@ public abstract class AST { return fileName; } - public Node add(N newChild, Kind kind) { + @SuppressWarnings("unchecked") public Node add(N newChild, Kind kind) { Node n = buildTree(newChild, kind); if ( n == null ) return null; n.parent = this; + ((List)children).add(n); return n; } + public void removeChild(Node child) { + children.remove(child); + } + public Node recursiveSetHandled() { this.handled = true; for ( Node child : children ) child.recursiveSetHandled(); -- cgit