Fix build by moving check inside loop
Change-Id: I17d8f53750ced1e0bbda36d5ba784d18002241ba
diff --git a/src/main/java/com/android/tools/r8/graph/ResolutionResult.java b/src/main/java/com/android/tools/r8/graph/ResolutionResult.java
index 76e7c9a..fb8b35b 100644
--- a/src/main/java/com/android/tools/r8/graph/ResolutionResult.java
+++ b/src/main/java/com/android/tools/r8/graph/ResolutionResult.java
@@ -424,7 +424,7 @@
boolean allowPackageBlocked = resolvedMethod.accessFlags.isPackagePrivate();
DexClass current = dynamicInstance;
DexEncodedMethod overrideTarget = resolvedMethod;
- do {
+ while (current != null) {
DexEncodedMethod candidate = lookupOverrideCandidate(overrideTarget, current);
if (candidate == DexEncodedMethod.SENTINEL && allowPackageBlocked) {
overrideTarget = findWideningOverride(resolvedMethod, current, appView);
@@ -432,11 +432,15 @@
continue;
}
if (candidate == null || candidate == DexEncodedMethod.SENTINEL) {
+ // We cannot find a target above the resolved method.
+ if (current.type == overrideTarget.method.holder) {
+ return null;
+ }
current = current.superType == null ? null : appView.definitionFor(current.superType);
continue;
}
return candidate;
- } while (current != null && current.type != overrideTarget.method.holder);
+ }
assert resolvedHolder.isInterface();
return lookupMaximallySpecificDispatchTarget(dynamicInstance, appView);
}