aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java')
-rw-r--r--src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
index b5fbb0643..8a309e270 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
@@ -228,7 +228,9 @@ public class LensCodeRewriter {
return methodHandle;
}
- private Type getInvokeType(InvokeMethod invoke, DexMethod actualTarget,
+ private Type getInvokeType(
+ InvokeMethod invoke,
+ DexMethod actualTarget,
DexMethod originalTarget) {
if (invoke.isInvokeVirtual() || invoke.isInvokeInterface()) {
// Get the invoke type of the actual definition.
@@ -237,7 +239,8 @@ public class LensCodeRewriter {
return invoke.getType();
} else {
DexClass originalTargetClass = appInfo.definitionFor(originalTarget.holder);
- if (originalTargetClass.isInterface() ^ (invoke.getType() == Type.INTERFACE)) {
+ if ((originalTargetClass != null && originalTargetClass.isInterface())
+ ^ (invoke.getType() == Type.INTERFACE)) {
// The invoke was wrong to start with, so we keep it wrong. This is to ensure we get
// the IncompatibleClassChangeError the original invoke would have triggered.
return newTargetClass.accessFlags.isInterface()