diff options
author | 2018-02-20 20:16:39 -0800 | |
---|---|---|
committer | 2018-02-20 20:17:59 -0800 | |
commit | f4d2dad976907abea8a727a8360c2e4e087b893f (patch) | |
tree | 4062bf63f4292d476fcc4a19ba0078fd0899c130 /src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java | |
parent | b6f8642049c58d3bfde92013dc52e66488162a01 (diff) |
Apply interface invocation desugaring to renamed core libraries. Fix invokespecial invocations for core interfaces.
RELNOTES: None.
PiperOrigin-RevId: 186404206
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java index 417248b8eb..e83ae41189 100644 --- a/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java +++ b/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java @@ -51,7 +51,8 @@ public class CoreLibraryInvocationRewriter extends ClassVisitor { @Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { Class<?> coreInterface = - support.getEmulatedCoreLibraryInvocationTarget(opcode, owner, name, desc, itf); + support.getCoreInterfaceRewritingTarget(opcode, owner, name, desc, itf); + if (coreInterface != null) { String coreInterfaceName = coreInterface.getName().replace('.', '/'); name = @@ -60,18 +61,17 @@ public class CoreLibraryInvocationRewriter extends ClassVisitor { if (opcode == Opcodes.INVOKESTATIC) { checkState(owner.equals(coreInterfaceName)); } else { - desc = - InterfaceDesugaring.companionDefaultMethodDescriptor( - opcode == Opcodes.INVOKESPECIAL ? owner : coreInterfaceName, desc); + desc = InterfaceDesugaring.companionDefaultMethodDescriptor(coreInterfaceName, desc); } if (opcode == Opcodes.INVOKESTATIC || opcode == Opcodes.INVOKESPECIAL) { checkArgument(itf, "Expected interface to rewrite %s.%s : %s", owner, name, desc); - owner = InterfaceDesugaring.getCompanionClassName(owner); + owner = InterfaceDesugaring.getCompanionClassName(coreInterfaceName); } else { // TODO(kmb): Simulate dynamic dispatch instead of calling most general default method owner = InterfaceDesugaring.getCompanionClassName(coreInterfaceName); } + opcode = Opcodes.INVOKESTATIC; itf = false; } |