diff options
Diffstat (limited to 'src/java_tools/buildjar/java/com/google/devtools')
-rw-r--r-- | src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/TreePruner.java | 12 |
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; |