aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
diff options
context:
space:
mode:
authorGravatar kmb <kmb@google.com>2018-02-20 20:16:39 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-20 20:17:59 -0800
commitf4d2dad976907abea8a727a8360c2e4e087b893f (patch)
tree4062bf63f4292d476fcc4a19ba0078fd0899c130 /src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
parentb6f8642049c58d3bfde92013dc52e66488162a01 (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.java10
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;
}