summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcnsun <cnsun@google.com>2017-04-29 01:04:00 +0200
committerColin Cross <ccross@android.com>2017-05-01 18:08:35 -0700
commit885bce7f8d296b091d15c0007a7716f01c3fee33 (patch)
treeb00536b4f977b89b697ff16a042d08b6d69d0998
parentacd4846b9693b50d0c42c22b4b16196ddf8f73b1 (diff)
downloaddesugar-885bce7f8d296b091d15c0007a7716f01c3fee33.tar.gz
Bug fix. Enable Desugar to desugar try-with-resources multiple times.
RELNOTES: n/a PiperOrigin-RevId: 154594200 GitOrigin-RevId: 198f00a930e9d5f52f7ee6be52bdaaf5b7999ee2 Change-Id: I3e1b0a53ae79c292ae3a7296b8b57538bc4e2d47
-rw-r--r--java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java20
1 files changed, 19 insertions, 1 deletions
diff --git a/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java b/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java
index 2429d2f..cde223e 100644
--- a/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java
+++ b/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java
@@ -85,6 +85,11 @@ public class TryWithResourcesRewriter extends ClassVisitor {
private final ClassLoader classLoader;
private final AtomicInteger numOfTryWithResourcesInvoked;
+ /**
+ * Indicate whether the current class being desugared should be ignored. If the current class is
+ * one of the runtime extension classes, then it should be ignored.
+ */
+ private boolean shouldCurrentClassBeIgnored;
public TryWithResourcesRewriter(
ClassVisitor classVisitor,
@@ -96,10 +101,23 @@ public class TryWithResourcesRewriter extends ClassVisitor {
}
@Override
+ public void visit(
+ int version,
+ int access,
+ String name,
+ String signature,
+ String superName,
+ String[] interfaces) {
+ super.visit(version, access, name, signature, superName, interfaces);
+ shouldCurrentClassBeIgnored = THROWABLE_EXT_CLASS_INTERNAL_NAMES.contains(name);
+ }
+
+
+ @Override
public MethodVisitor visitMethod(
int access, String name, String desc, String signature, String[] exceptions) {
MethodVisitor visitor = super.cv.visitMethod(access, name, desc, signature, exceptions);
- return visitor == null || THROWABLE_EXT_CLASS_INTERNAL_NAMES.contains(name)
+ return visitor == null || shouldCurrentClassBeIgnored
? visitor
: new TryWithResourceVisitor(visitor, classLoader);
}