diff options
| author | mikaelpeltier <mikaelpeltier@google.com> | 2015-04-29 15:42:01 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-04-29 15:42:02 +0000 |
| commit | 07712733f8e0e6904746cee61e0e470f5b576bdd (patch) | |
| tree | 44f2a6f1250af12790c86cfed3386cd1bdc168d7 /jack | |
| parent | 0aa3a3530dadd99db84d9dec1dd24a4f71a6f6d1 (diff) | |
| parent | 0ae7eb8483fdf263f652fda280808ff9d3680857 (diff) | |
| download | toolchain_jack-07712733f8e0e6904746cee61e0e470f5b576bdd.tar.gz toolchain_jack-07712733f8e0e6904746cee61e0e470f5b576bdd.tar.bz2 toolchain_jack-07712733f8e0e6904746cee61e0e470f5b576bdd.zip | |
Merge "JVisitor does not longer visit annotations" into ub-jack
Diffstat (limited to 'jack')
13 files changed, 90 insertions, 62 deletions
diff --git a/jack/src/com/android/jack/analysis/tracer/Tracer.java b/jack/src/com/android/jack/analysis/tracer/Tracer.java index 90f73445..0c9a4eed 100644 --- a/jack/src/com/android/jack/analysis/tracer/Tracer.java +++ b/jack/src/com/android/jack/analysis/tracer/Tracer.java @@ -56,7 +56,7 @@ import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum; import com.android.jack.ir.ast.JType; import com.android.jack.ir.ast.JTypeStringLiteral; import com.android.jack.ir.ast.JVariable; -import com.android.jack.ir.ast.JVisitor; +import com.android.jack.ir.ast.JVisitorWithAnnotation; import com.android.jack.ir.ast.marker.ThrownExceptionMarker; import com.android.jack.lookup.JMethodLookupException; import com.android.sched.item.Description; @@ -74,7 +74,7 @@ import javax.annotation.Nonnull; * A visitor that traces dependencies */ @Description("traces dependencies") -public class Tracer extends JVisitor { +public class Tracer extends JVisitorWithAnnotation { @Nonnull protected static final com.android.sched.util.log.Tracer tracer = TracerFactory.getTracer(); diff --git a/jack/src/com/android/jack/backend/dex/ConstantBuilder.java b/jack/src/com/android/jack/backend/dex/ConstantBuilder.java index 303c9e88..2026e603 100644 --- a/jack/src/com/android/jack/backend/dex/ConstantBuilder.java +++ b/jack/src/com/android/jack/backend/dex/ConstantBuilder.java @@ -51,7 +51,7 @@ import com.android.jack.ir.ast.JMethodLiteral; import com.android.jack.ir.ast.JNameValuePair; import com.android.jack.ir.ast.JNullLiteral; import com.android.jack.ir.ast.JShortLiteral; -import com.android.jack.ir.ast.JVisitor; +import com.android.jack.ir.ast.JVisitorWithAnnotation; import java.util.List; @@ -64,7 +64,7 @@ import javax.annotation.Nonnull; * {@code ConstantBuilder} is not thread safe. */ public class ConstantBuilder { - private class Visitor extends JVisitor { + private class Visitor extends JVisitorWithAnnotation { @CheckForNull private Constant result; diff --git a/jack/src/com/android/jack/frontend/MethodIdDuplicateRemover.java b/jack/src/com/android/jack/frontend/MethodIdDuplicateRemover.java index 83767af8..a1e2e9d6 100644 --- a/jack/src/com/android/jack/frontend/MethodIdDuplicateRemover.java +++ b/jack/src/com/android/jack/frontend/MethodIdDuplicateRemover.java @@ -22,7 +22,7 @@ import com.android.jack.ir.ast.JMethod; import com.android.jack.ir.ast.JMethodCall; import com.android.jack.ir.ast.JMethodId; import com.android.jack.ir.ast.JNameValuePair; -import com.android.jack.ir.ast.JVisitor; +import com.android.jack.ir.ast.JVisitorWithAnnotation; import java.util.Collection; @@ -31,7 +31,7 @@ import javax.annotation.Nonnull; /** * Update methodIds of {@link JMethodCall}s and {@link JNameValuePair}s. */ -public class MethodIdDuplicateRemover extends JVisitor { +public class MethodIdDuplicateRemover extends JVisitorWithAnnotation { public MethodIdDuplicateRemover() { super(false /* needLoading */); diff --git a/jack/src/com/android/jack/ir/ast/JNode.java b/jack/src/com/android/jack/ir/ast/JNode.java index 56e196a2..84491a90 100644 --- a/jack/src/com/android/jack/ir/ast/JNode.java +++ b/jack/src/com/android/jack/ir/ast/JNode.java @@ -51,7 +51,7 @@ public abstract class JNode extends LocalMarkerManager INSERT_AFTER; } - private static class ParentSetterVisitor extends JVisitor { + private static class ParentSetterVisitor extends JVisitorWithAnnotation { final Stack<JNode> nodes = new Stack<JNode>(); diff --git a/jack/src/com/android/jack/ir/ast/JVisitor.java b/jack/src/com/android/jack/ir/ast/JVisitor.java index 351693d4..8e38de45 100644 --- a/jack/src/com/android/jack/ir/ast/JVisitor.java +++ b/jack/src/com/android/jack/ir/ast/JVisitor.java @@ -120,8 +120,13 @@ public class JVisitor { endVisit((JExpression) x); } + /** + * End visit of a {@link JAnnotation}. + * @param annotation annotation to visit. + */ public void endVisit(@Nonnull JAnnotation annotation) { - endVisit((JExpression) annotation); + // Few JVisitor instances need to visit annotation, thus by default don't visit them. + // Use JVisitorWithAnnotation to visit them. } public void endVisit(@Nonnull JArrayLength x) { @@ -500,8 +505,14 @@ public class JVisitor { return visit((JExpression) x); } + /** + * Visit of a {@link JAnnotation}. + * @param annotation annotation to visit. + */ public boolean visit(@Nonnull JAnnotation annotation) { - return visit((JExpression) annotation); + // Few JVisitor instances need to visit annotation, thus by default don't visit them. + // Use JVisitorWithAnnotation to visit them. + return false; } public boolean visit(@Nonnull JArrayLength x) { @@ -888,9 +899,15 @@ public class JVisitor { visit((JExpression) x, transformRequest); } + /** + * Visit of a {@link JAnnotation} with a {@link TransformRequest} to apply on. + * @param annotation annotation to visit. + * @param transformRequest transformation request to apply. + */ public void visit(@Nonnull JAnnotation annotation, @Nonnull TransformRequest transformRequest) throws Exception { - visit((JExpression) annotation, transformRequest); + // Few JVisitor instances need to visit annotation, thus by default don't visit them. + // Use JVisitorWithAnnotation to visit them. } public void visit(@Nonnull JArrayLength x, @Nonnull TransformRequest transformRequest) diff --git a/jack/src/com/android/jack/ir/ast/JVisitorWithAnnotation.java b/jack/src/com/android/jack/ir/ast/JVisitorWithAnnotation.java new file mode 100644 index 00000000..c6eee3bd --- /dev/null +++ b/jack/src/com/android/jack/ir/ast/JVisitorWithAnnotation.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.jack.ir.ast; + +import com.android.sched.transform.TransformRequest; + +import javax.annotation.Nonnull; + +/** + * A visitor for iterating through an AST that also visit annotations. + */ +public class JVisitorWithAnnotation extends JVisitor { + + protected JVisitorWithAnnotation() { + this(/* needLoading =*/ true); + } + + protected JVisitorWithAnnotation(boolean needLoading) { + super(needLoading); + } + + @Override + public void endVisit(@Nonnull JAnnotation annotation) { + endVisit((JExpression) annotation); + } + + @Override + public boolean visit(@Nonnull JAnnotation annotation) { + return visit((JExpression) annotation); + } + + @Override + public void visit(@Nonnull JAnnotation annotation, @Nonnull TransformRequest transformRequest) + throws Exception { + visit((JExpression) annotation, transformRequest); + } +} diff --git a/jack/src/com/android/jack/ir/impl/CloneExpressionVisitor.java b/jack/src/com/android/jack/ir/impl/CloneExpressionVisitor.java index e7b44056..4e465e95 100644 --- a/jack/src/com/android/jack/ir/impl/CloneExpressionVisitor.java +++ b/jack/src/com/android/jack/ir/impl/CloneExpressionVisitor.java @@ -54,7 +54,7 @@ import com.android.jack.ir.ast.JPostfixOperation; import com.android.jack.ir.ast.JPrefixOperation; import com.android.jack.ir.ast.JShortLiteral; import com.android.jack.ir.ast.JThisRef; -import com.android.jack.ir.ast.JVisitor; +import com.android.jack.ir.ast.JVisitorWithAnnotation; import java.util.ArrayList; import java.util.List; @@ -65,7 +65,7 @@ import javax.annotation.Nonnull; /** * A general purpose expression cloner. */ -public class CloneExpressionVisitor extends JVisitor { +public class CloneExpressionVisitor extends JVisitorWithAnnotation { @CheckForNull protected JExpression expression; diff --git a/jack/src/com/android/jack/ir/impl/TextOutputVisitor.java b/jack/src/com/android/jack/ir/impl/TextOutputVisitor.java index 629364d7..564b14ec 100644 --- a/jack/src/com/android/jack/ir/impl/TextOutputVisitor.java +++ b/jack/src/com/android/jack/ir/impl/TextOutputVisitor.java @@ -17,13 +17,14 @@ package com.android.jack.ir.impl; import com.android.jack.ir.ast.JVisitor; +import com.android.jack.ir.ast.JVisitorWithAnnotation; import com.android.jack.util.TextOutput; /** * A convenience base class that combines a {@link JVisitor} with a * {@link TextOutput}. */ -public class TextOutputVisitor extends JVisitor implements TextOutput { +public class TextOutputVisitor extends JVisitorWithAnnotation implements TextOutput { private final TextOutput textOutput; diff --git a/jack/src/com/android/jack/jayce/v0002/NodeFactory.java b/jack/src/com/android/jack/jayce/v0002/NodeFactory.java index a609114b..d5a98438 100644 --- a/jack/src/com/android/jack/jayce/v0002/NodeFactory.java +++ b/jack/src/com/android/jack/jayce/v0002/NodeFactory.java @@ -126,7 +126,7 @@ import com.android.jack.ir.ast.JThrowStatement; import com.android.jack.ir.ast.JTryStatement; import com.android.jack.ir.ast.JUnaryOperation; import com.android.jack.ir.ast.JUnlock; -import com.android.jack.ir.ast.JVisitor; +import com.android.jack.ir.ast.JVisitorWithAnnotation; import com.android.jack.ir.ast.JWhileStatement; import com.android.jack.ir.ast.marker.GenericSignature; import com.android.jack.ir.ast.marker.SimpleName; @@ -255,7 +255,7 @@ import javax.annotation.Nonnull; */ public class NodeFactory { - private static class Creator extends JVisitor { + private static class Creator extends JVisitorWithAnnotation { @CheckForNull private NNode newNode; diff --git a/jack/src/com/android/jack/transformations/ast/PrimitiveClassTransformer.java b/jack/src/com/android/jack/transformations/ast/PrimitiveClassTransformer.java index 9f216e2d..64597c6d 100644 --- a/jack/src/com/android/jack/transformations/ast/PrimitiveClassTransformer.java +++ b/jack/src/com/android/jack/transformations/ast/PrimitiveClassTransformer.java @@ -26,12 +26,12 @@ import com.android.jack.ir.ast.JFieldLookupException; import com.android.jack.ir.ast.JFieldRef; import com.android.jack.ir.ast.JMethod; import com.android.jack.ir.ast.JPrimitiveType; +import com.android.jack.ir.ast.JVisitor; import com.android.jack.lookup.CommonTypes; import com.android.jack.lookup.JPhantomLookup; import com.android.jack.transformations.request.Replace; import com.android.jack.transformations.request.TransformationRequest; import com.android.jack.transformations.threeaddresscode.ThreeAddressCodeForm; -import com.android.jack.util.AnnotationSkipperVisitor; import com.android.jack.util.filter.Filter; import com.android.sched.item.Description; import com.android.sched.item.Name; @@ -59,7 +59,7 @@ public class PrimitiveClassTransformer implements RunnableSchedulable<JMethod> { @Nonnull private final Filter<JMethod> filter = ThreadConfig.get(Options.METHOD_FILTER); - private static class Visitor extends AnnotationSkipperVisitor { + private static class Visitor extends JVisitor { private static final String FIELD_TYPE_NAME = "TYPE"; @Nonnull diff --git a/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java b/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java index 88b6e823..5d408c38 100644 --- a/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java +++ b/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java @@ -24,7 +24,7 @@ import com.android.jack.ir.ast.JNode; import com.android.jack.ir.ast.JPackage; import com.android.jack.ir.ast.JSession; import com.android.jack.ir.ast.JStringLiteral; -import com.android.jack.ir.ast.JVisitor; +import com.android.jack.ir.ast.JVisitorWithAnnotation; import com.android.jack.ir.ast.Resource; import com.android.jack.ir.formatter.BinaryQualifiedNameFormatter; import com.android.jack.ir.formatter.TypeFormatter; @@ -78,7 +78,7 @@ public class PackageRenamer implements RunnableSchedulable<JSession>{ @Nonnull private final InputStreamFile jarjarRulesFile = ThreadConfig.get(JARJAR_FILE); - private static class Visitor extends JVisitor { + private static class Visitor extends JVisitorWithAnnotation { @Nonnull private final PackageRemapper remapper; diff --git a/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeBuilder.java b/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeBuilder.java index f79b8ee7..f899cf7d 100644 --- a/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeBuilder.java +++ b/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeBuilder.java @@ -49,6 +49,7 @@ import com.android.jack.ir.ast.JValueLiteral; import com.android.jack.ir.ast.JVariable; import com.android.jack.ir.ast.JVariableRef; import com.android.jack.ir.ast.JVisitor; +import com.android.jack.ir.ast.JVisitorWithConcurrentModification; import com.android.jack.ir.sourceinfo.SourceInfo; import com.android.jack.scheduling.marker.collector.SubTreeMarkersCollector; import com.android.jack.transformations.LocalVarCreator; @@ -60,7 +61,6 @@ import com.android.jack.transformations.request.AppendBefore; import com.android.jack.transformations.request.Remove; import com.android.jack.transformations.request.Replace; import com.android.jack.transformations.request.TransformationRequest; -import com.android.jack.util.AnnotationSkipperVisitor; import com.android.jack.util.filter.Filter; import com.android.sched.item.Description; import com.android.sched.item.Name; @@ -101,7 +101,7 @@ public class ThreeAddressCodeBuilder implements RunnableSchedulable<JMethod> { /** * {@code ThreeAddressCode} is the visitor building the three address form. */ - private static class ThreeAddressCode extends AnnotationSkipperVisitor { + private static class ThreeAddressCode extends JVisitorWithConcurrentModification { @Nonnull private static final SubTreeMarkersCollector<DefinitionMarker> defMarkerCollector = diff --git a/jack/src/com/android/jack/util/AnnotationSkipperVisitor.java b/jack/src/com/android/jack/util/AnnotationSkipperVisitor.java deleted file mode 100644 index 6b8f3ff4..00000000 --- a/jack/src/com/android/jack/util/AnnotationSkipperVisitor.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.jack.util; - -import com.android.jack.ir.ast.JAnnotation; -import com.android.jack.ir.ast.JVisitorWithConcurrentModification; - -import javax.annotation.Nonnull; - -/** - * A {@link JVisitorWithConcurrentModification} that does not visit annotations values. - */ -// TODO(yroussel) a better way to filter out ? -public class AnnotationSkipperVisitor extends JVisitorWithConcurrentModification { - public AnnotationSkipperVisitor() { - } - - @Override - public boolean visit(@Nonnull JAnnotation stmt) { - return false; - } - - @Override - public void endVisit(@Nonnull JAnnotation annotation) { - } - -} |
