aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/TreePruner.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/TreePruner.java')
-rw-r--r--src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/TreePruner.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/TreePruner.java b/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/TreePruner.java
index 092b82b9ba..ec4cbf5b37 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/TreePruner.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/TreePruner.java
@@ -29,6 +29,7 @@ import com.sun.source.util.SimpleTreeVisitor;
import com.sun.tools.javac.code.Flags;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.JCTree.JCBlock;
+import com.sun.tools.javac.tree.JCTree.JCClassDecl;
import com.sun.tools.javac.tree.JCTree.JCExpression;
import com.sun.tools.javac.tree.JCTree.JCExpressionStatement;
import com.sun.tools.javac.tree.JCTree.JCIdent;
@@ -68,6 +69,17 @@ public class TreePruner {
new TreeScanner() {
@Override
+ public void visitClassDef(JCClassDecl tree) {
+ if ((tree.mods.flags & Flags.ANNOTATION) == Flags.ANNOTATION) {
+ // Fields in annotation declarations are implicitly final.
+ // Field initializers that are definitely not constant expressions could still be
+ // pruned, but we currently don't bother.
+ return;
+ }
+ super.visitClassDef(tree);
+ }
+
+ @Override
public void visitMethodDef(JCMethodDecl tree) {
if (tree.body == null) {
return;