Make AndroidApiLevel an Ordered type.
Change-Id: I86f45dc9ad866df75c3b026fb2ea41447bb60756
diff --git a/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java b/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
index b43a42c..7998171 100644
--- a/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
+++ b/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
@@ -109,7 +109,7 @@
public boolean areValid(CfVersion version, boolean isPackageInfo) {
if (isInterface()) {
// We ignore the super flags prior to JDK 9, as so did the VM.
- if (version.isGreaterThanOrEqual(CfVersion.V9) && isSuper()) {
+ if (version.isGreaterThanOrEqualTo(CfVersion.V9) && isSuper()) {
return false;
}
// When not coming from DEX input we require interfaces to be abstract - except for
diff --git a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
index 4913a2c..455f03a 100644
--- a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
@@ -174,7 +174,7 @@
String sourceDebug = getSourceDebugExtension(clazz.annotations());
writer.visitSource(clazz.sourceFile != null ? clazz.sourceFile.toString() : null, sourceDebug);
CfVersion version = getClassFileVersion(clazz);
- if (version.isGreaterThanOrEqual(CfVersion.V1_8)) {
+ if (version.isGreaterThanOrEqualTo(CfVersion.V1_8)) {
// JDK8 and after ignore ACC_SUPER so unset it.
clazz.accessFlags.unsetSuper();
} else {
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
index f15c049..6e501fc 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
@@ -4,14 +4,12 @@
package com.android.tools.r8.utils;
import com.android.tools.r8.errors.Unreachable;
+import com.android.tools.r8.utils.structural.Ordered;
import java.util.Arrays;
-import java.util.Comparator;
import java.util.List;
-/**
- * Android API level description
- */
-public enum AndroidApiLevel {
+/** Android API level description */
+public enum AndroidApiLevel implements Ordered<AndroidApiLevel> {
B(1),
B_1_1(2),
C(3),
@@ -70,9 +68,7 @@
}
public static List<AndroidApiLevel> getAndroidApiLevelsSorted() {
- List<AndroidApiLevel> androidApiLevels = Arrays.asList(AndroidApiLevel.values());
- androidApiLevels.sort(Comparator.comparingInt(AndroidApiLevel::getLevel));
- return androidApiLevels;
+ return Arrays.asList(AndroidApiLevel.values());
}
public static AndroidApiLevel getMinAndroidApiLevel(DexVersion dexVersion) {
@@ -157,20 +153,4 @@
return LATEST;
}
}
-
- public boolean isLessThan(AndroidApiLevel other) {
- return this.level < other.getLevel();
- }
-
- public boolean isLessThanOrEqualTo(AndroidApiLevel other) {
- return this.level <= other.getLevel();
- }
-
- public boolean isGreaterThan(AndroidApiLevel other) {
- return other.isLessThan(this);
- }
-
- public boolean isGreaterThanOrEqualTo(AndroidApiLevel other) {
- return other.isLessThanOrEqualTo(this);
- }
}
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index c5320a1..69b964d 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -1433,7 +1433,7 @@
public boolean canUseConstClassInstructions(CfVersion cfVersion) {
assert isGeneratingClassFiles();
- return cfVersion.isGreaterThanOrEqual(requiredCfVersionForConstClassInstructions());
+ return cfVersion.isGreaterThanOrEqualTo(requiredCfVersionForConstClassInstructions());
}
public CfVersion requiredCfVersionForConstClassInstructions() {
diff --git a/src/main/java/com/android/tools/r8/utils/structural/Ordered.java b/src/main/java/com/android/tools/r8/utils/structural/Ordered.java
index 9eb14f5..9c9a588 100644
--- a/src/main/java/com/android/tools/r8/utils/structural/Ordered.java
+++ b/src/main/java/com/android/tools/r8/utils/structural/Ordered.java
@@ -49,7 +49,7 @@
return compareTo(other) < 0;
}
- default boolean isLessThanOrEqual(T other) {
+ default boolean isLessThanOrEqualTo(T other) {
return compareTo(other) <= 0;
}
@@ -57,7 +57,7 @@
return compareTo(other) > 0;
}
- default boolean isGreaterThanOrEqual(T other) {
+ default boolean isGreaterThanOrEqualTo(T other) {
return compareTo(other) >= 0;
}
}
diff --git a/src/test/java/com/android/tools/r8/cf/CfVersionTest.java b/src/test/java/com/android/tools/r8/cf/CfVersionTest.java
index 471cd3c..ea38851 100644
--- a/src/test/java/com/android/tools/r8/cf/CfVersionTest.java
+++ b/src/test/java/com/android/tools/r8/cf/CfVersionTest.java
@@ -53,12 +53,12 @@
assertEquals(-1, less.compareTo(more));
assertEquals(1, more.compareTo(less));
assertTrue(less.isLessThan(more));
- assertTrue(less.isLessThanOrEqual(more));
+ assertTrue(less.isLessThanOrEqualTo(more));
assertFalse(less.isGreaterThan(more));
- assertFalse(less.isGreaterThanOrEqual(more));
+ assertFalse(less.isGreaterThanOrEqualTo(more));
assertFalse(more.isLessThan(less));
- assertFalse(more.isLessThanOrEqual(less));
+ assertFalse(more.isLessThanOrEqualTo(less));
assertTrue(more.isGreaterThan(less));
- assertTrue(more.isGreaterThanOrEqual(less));
+ assertTrue(more.isGreaterThanOrEqualTo(less));
}
}