Ensure companion method
Change-Id: Id90dc10b40e385ebfcf15e9b61d33bba7dbad341
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceMethodRewriter.java
index d30f717..6740441 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceMethodRewriter.java
@@ -693,9 +693,7 @@
DexClassAndMethod companionMethod =
helper.ensureDefaultAsMethodOfCompanionClassStub(method);
acceptCompanionMethod(method, companionMethod, eventConsumer);
- return getInvokeStaticInstructions(
- InterfaceDesugaringSyntheticHelper.defaultAsMethodOfCompanionClass(
- amendedMethod, appView.dexItemFactory()));
+ return getInvokeStaticInstructions(companionMethod.getReference());
})
.build();
}
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/ProgramEmulatedInterfaceSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/ProgramEmulatedInterfaceSynthesizer.java
index 3e8b5cb..f712cb4 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/ProgramEmulatedInterfaceSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/ProgramEmulatedInterfaceSynthesizer.java
@@ -227,8 +227,9 @@
.resolveMethod(derivedMethod.getMethod(), true)
.getResolvedProgramMethod();
caseMethod =
- InterfaceDesugaringSyntheticHelper.defaultAsMethodOfCompanionClass(
- resolvedProgramMethod.getReference(), appView.dexItemFactory());
+ helper
+ .ensureDefaultAsMethodOfProgramCompanionClassStub(resolvedProgramMethod)
+ .getReference();
}
extraDispatchCases.put(type, caseMethod);
});
@@ -276,10 +277,12 @@
DexEncodedMethod result = subInterfaceClass.lookupVirtualMethod(method.getReference());
if (result != null && !result.isAbstract()) {
assert result.isDefaultMethod();
- extraDispatchCases.put(
- subInterfaceClass.type,
- InterfaceDesugaringSyntheticHelper.defaultAsMethodOfCompanionClass(
- result.getReference(), appView.dexItemFactory()));
+ DexMethod forward =
+ helper
+ .ensureDefaultAsMethodOfProgramCompanionClassStub(
+ new ProgramMethod(subInterfaceClass.asProgramClass(), result))
+ .getReference();
+ extraDispatchCases.put(subInterfaceClass.type, forward);
}
}
} else {