aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
authorRawi01 <Rawi01@users.noreply.github.com>2021-05-14 23:06:20 +0200
committerRawi01 <Rawi01@users.noreply.github.com>2021-05-14 23:06:20 +0200
commitbd00fc4b83dd758c4369c8da97243691c04ac3fa (patch)
tree541c207a7ebc452f674f48975921f0828ded9c9e /src/utils
parenta8f9b1dd359dbbcd63bffe891c5f00a9a2ac1f60 (diff)
downloadlombok-bd00fc4b83dd758c4369c8da97243691c04ac3fa.tar.gz
lombok-bd00fc4b83dd758c4369c8da97243691c04ac3fa.tar.bz2
lombok-bd00fc4b83dd758c4369c8da97243691c04ac3fa.zip
Copy reference types properly
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/lombok/javac/TreeMirrorMaker.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/utils/lombok/javac/TreeMirrorMaker.java b/src/utils/lombok/javac/TreeMirrorMaker.java
index 4b2ad171..778e670d 100644
--- a/src/utils/lombok/javac/TreeMirrorMaker.java
+++ b/src/utils/lombok/javac/TreeMirrorMaker.java
@@ -32,8 +32,10 @@ import lombok.javac.JavacTreeMaker.TypeTag;
import com.sun.source.tree.LabeledStatementTree;
import com.sun.source.tree.VariableTree;
import com.sun.tools.javac.tree.JCTree;
+import com.sun.tools.javac.tree.JCTree.JCFieldAccess;
import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
import com.sun.tools.javac.tree.TreeCopier;
+import com.sun.tools.javac.tree.TreeScanner;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.List;
@@ -110,7 +112,20 @@ public class TreeMirrorMaker extends TreeCopier<Void> {
copy.sym = null;
copy.type = null;
} else {
- if (original.vartype != null) copy.vartype.type = original.vartype.type;
+ if (original.vartype != null) {
+ copy.vartype.type = original.vartype.type;
+ original.vartype.accept(new TreeScanner() {
+ @Override public void scan(JCTree tree) {
+ super.scan(tree);
+ originalToCopy.get(tree).type = tree.type;
+ }
+
+ @Override public void visitSelect(JCFieldAccess tree) {
+ super.visitSelect(tree);
+ ((JCFieldAccess) originalToCopy.get(tree)).sym = tree.sym;
+ }
+ });
+ }
}
}