diff options
author | 2017-04-29 01:04:00 +0200 | |
---|---|---|
committer | 2017-04-30 23:13:54 +0200 | |
commit | 198f00a930e9d5f52f7ee6be52bdaaf5b7999ee2 (patch) | |
tree | 51d3237fb68d3511bc84dbacce0b89abdb104cd8 /src/tools/android/java | |
parent | 47577f8b4e28d4c3ceab7d25d2ffb5a98cf90114 (diff) |
Bug fix. Enable Desugar to desugar try-with-resources multiple times.
RELNOTES: n/a
PiperOrigin-RevId: 154594200
Diffstat (limited to 'src/tools/android/java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java index 2429d2f7b8..cde223e565 100644 --- a/src/tools/android/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java +++ b/src/tools/android/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); } |