
lombok.javac.TreeMirrorMaker Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lombok Show documentation
Show all versions of lombok Show documentation
Spice up your java: Automatic Resource Management, automatic generation of getters, setters, equals, hashCode and toString, and more!
package lombok.javac;
import java.util.Collections;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.Map;
import com.sun.source.tree.VariableTree;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
import com.sun.tools.javac.tree.TreeCopier;
import com.sun.tools.javac.util.List;
public class TreeMirrorMaker extends TreeCopier {
private final IdentityHashMap originalToCopy = new IdentityHashMap();
public TreeMirrorMaker(JavacNode node) {
super(node.getTreeMaker());
}
@Override public T copy(T original) {
T copy = super.copy(original);
originalToCopy.put(original, copy);
return copy;
}
@Override public T copy(T original, Void p) {
T copy = super.copy(original, p);
originalToCopy.put(original, copy);
return copy;
}
@Override public List copy(List originals) {
List copies = super.copy(originals);
if (originals != null) {
Iterator it1 = originals.iterator();
Iterator it2 = copies.iterator();
while (it1.hasNext()) originalToCopy.put(it1.next(), it2.next());
}
return copies;
}
@Override public List copy(List originals, Void p) {
List copies = super.copy(originals, p);
if (originals != null) {
Iterator it1 = originals.iterator();
Iterator it2 = copies.iterator();
while (it1.hasNext()) originalToCopy.put(it1.next(), it2.next());
}
return copies;
}
public Map getOriginalToCopyMap() {
return Collections.unmodifiableMap(originalToCopy);
}
// Fix for NPE in HandleVal. See http://code.google.com/p/projectlombok/issues/detail?id=205
// Maybe this should be done elsewhere...
@Override public JCTree visitVariable(VariableTree node, Void p) {
JCVariableDecl copy = (JCVariableDecl) super.visitVariable(node, p);
copy.sym = ((JCVariableDecl) node).sym;
return copy;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy