[ApiModel] Ensure no merging of methods with UNKNOWN api-level
Fixes: b/268605608
Change-Id: Ibf8b8385f3ddd46a70811b3d5e476a7177af46a8
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDifferentApiReferenceLevel.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDifferentApiReferenceLevel.java
index a021a28..0024b64 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDifferentApiReferenceLevel.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDifferentApiReferenceLevel.java
@@ -38,6 +38,11 @@
@Override
public ComputedApiLevel getMergeKey(DexProgramClass clazz) {
assert enableApiCallerIdentification;
- return getApiReferenceLevelForMerging(appView, apiLevelCompute, clazz);
+ ComputedApiLevel apiReferenceLevelForMerging =
+ getApiReferenceLevelForMerging(appView, apiLevelCompute, clazz);
+ if (apiReferenceLevelForMerging.isUnknownApiLevel()) {
+ return ineligibleForClassMerging();
+ }
+ return apiReferenceLevelForMerging;
}
}
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelNoUnknownMergeTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelNoUnknownMergeTest.java
index 23d7a6d..67082dc 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelNoUnknownMergeTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelNoUnknownMergeTest.java
@@ -13,6 +13,7 @@
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.Reference;
+import com.android.tools.r8.utils.codeinspector.HorizontallyMergedClassesInspector;
import java.util.HashSet;
import java.util.Set;
import org.junit.Test;
@@ -57,9 +58,7 @@
};
})
.addHorizontallyMergedClassesInspector(
- inspector ->
- inspector.assertClassesMerged(
- LibraryClassFooCaller.class, LibraryClassBarCaller.class))
+ HorizontallyMergedClassesInspector::assertNoClassesMerged)
.compile()
.addBootClasspathClasses(LibraryClass.class)
.run(parameters.getRuntime(), Main.class)