summaryrefslogtreecommitdiff
path: root/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java')
-rw-r--r--java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java24
1 files changed, 12 insertions, 12 deletions
diff --git a/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java b/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
index 0e0610f..77db915 100644
--- a/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
+++ b/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
@@ -52,19 +52,8 @@ public class CoreLibraryInvocationRewriter extends ClassVisitor {
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) {
Class<?> coreInterface =
support.getCoreInterfaceRewritingTarget(opcode, owner, name, desc, itf);
- String newOwner = support.getMoveTarget(owner, name);
- if (newOwner != null) {
- checkState(coreInterface == null,
- "Can't move and use companion: %s.%s : %s", owner, name, desc);
- if (opcode != Opcodes.INVOKESTATIC) {
- // assuming a static method
- desc = InterfaceDesugaring.companionDefaultMethodDescriptor(owner, desc);
- opcode = Opcodes.INVOKESTATIC;
- }
- owner = newOwner;
- itf = false; // assuming a class
- } else if (coreInterface != null) {
+ if (coreInterface != null) {
String coreInterfaceName = coreInterface.getName().replace('.', '/');
name =
InterfaceDesugaring.normalizeInterfaceMethodName(
@@ -84,6 +73,17 @@ public class CoreLibraryInvocationRewriter extends ClassVisitor {
opcode = Opcodes.INVOKESTATIC;
itf = false;
+ } else {
+ String newOwner = support.getMoveTarget(owner, name);
+ if (newOwner != null) {
+ if (opcode != Opcodes.INVOKESTATIC) {
+ // assuming a static method
+ desc = InterfaceDesugaring.companionDefaultMethodDescriptor(owner, desc);
+ opcode = Opcodes.INVOKESTATIC;
+ }
+ owner = newOwner;
+ itf = false; // assuming a class
+ }
}
super.visitMethodInsn(opcode, owner, name, desc, itf);
}