diff options
Diffstat (limited to 'java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java')
-rw-r--r-- | java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java | 24 |
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); } |