diff options
author | 2017-10-06 23:31:07 +0200 | |
---|---|---|
committer | 2017-10-07 11:07:19 +0200 | |
commit | 38da0c2e6e082964e32e8646439cdec7cd50808f (patch) | |
tree | 7360f27c28fcf9710557a81b66d4de0fb4b0e810 /src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java | |
parent | 674ab860b3f2ebee958196d96ffee1702087201b (diff) |
Do not rewrite static interface method invocations from bootclasspath
RELNOTES: n/a
PiperOrigin-RevId: 171344856
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java b/src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java index 07702fed06..36a149233d 100644 --- a/src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java +++ b/src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java @@ -378,7 +378,7 @@ class Desugar { interfaceLambdaMethodCollector.build(), bridgeMethodReader); - desugarAndWriteGeneratedClasses(outputFileProvider); + desugarAndWriteGeneratedClasses(outputFileProvider, bootclasspathReader); copyThrowableExtensionClass(outputFileProvider); byte[] depsInfo = depsCollector.toByteArray(); @@ -535,7 +535,8 @@ class Desugar { } } - private void desugarAndWriteGeneratedClasses(OutputFileProvider outputFileProvider) + private void desugarAndWriteGeneratedClasses( + OutputFileProvider outputFileProvider, ClassReaderFactory bootclasspathReader) throws IOException { // Write out any classes we generated along the way ImmutableMap<String, ClassNode> generatedClasses = store.drain(); @@ -547,7 +548,8 @@ class Desugar { UnprefixingClassWriter writer = rewriter.writer(ClassWriter.COMPUTE_MAXS); // checkState above implies that we want Java 7 .class files, so send through that visitor. // Don't need a ClassReaderFactory b/c static interface methods should've been moved. - ClassVisitor visitor = new Java7Compatibility(writer, (ClassReaderFactory) null); + ClassVisitor visitor = + new Java7Compatibility(writer, (ClassReaderFactory) null, bootclasspathReader); generated.getValue().accept(visitor); String filename = rewriter.unprefix(generated.getKey()) + ".class"; outputFileProvider.write(filename, writer.toByteArray()); @@ -583,7 +585,7 @@ class Desugar { } if (outputJava7) { // null ClassReaderFactory b/c we don't expect to need it for lambda classes - visitor = new Java7Compatibility(visitor, (ClassReaderFactory) null); + visitor = new Java7Compatibility(visitor, (ClassReaderFactory) null, bootclasspathReader); if (options.desugarInterfaceMethodBodiesIfNeeded) { visitor = new DefaultMethodClassFixer( @@ -637,7 +639,7 @@ class Desugar { } if (!options.onlyDesugarJavac9ForLint) { if (outputJava7) { - visitor = new Java7Compatibility(visitor, classpathReader); + visitor = new Java7Compatibility(visitor, classpathReader, bootclasspathReader); if (options.desugarInterfaceMethodBodiesIfNeeded) { visitor = new DefaultMethodClassFixer( |