Add a new dex version and api level
- Refactor around dex version to have an enumeration similar
to AndroidApiLevel
Change-Id: I9c2d09dd7cf0d51055959041e10c9cdb627e93e7
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 04ab202..b1bdfde 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
@@ -3,10 +3,13 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.utils;
+import com.android.tools.r8.errors.Unreachable;
+
/**
* Android API level description
*/
public enum AndroidApiLevel {
+ P(27),
O(26),
N_MR1(25),
N(24),
@@ -51,4 +54,84 @@
public static AndroidApiLevel getDefault() {
return AndroidApiLevel.B;
}
+
+ public DexVersion getDexVersion() {
+ return DexVersion.getDexVersion(this);
+ }
+
+ public static AndroidApiLevel getMinAndroidApiLevel(DexVersion dexVersion) {
+ switch (dexVersion) {
+ case V35:
+ return AndroidApiLevel.B;
+ case V37:
+ return AndroidApiLevel.N;
+ case V38:
+ return AndroidApiLevel.O;
+ case V39:
+ return AndroidApiLevel.P;
+ default:
+ throw new Unreachable();
+ }
+ }
+
+ public static AndroidApiLevel getAndroidApiLevel(int apiLevel) {
+ switch (apiLevel) {
+ case 1:
+ return B;
+ case 2:
+ return B_1_1;
+ case 3:
+ return C;
+ case 4:
+ return D;
+ case 5:
+ return E;
+ case 6:
+ return E_0_1;
+ case 7:
+ return E_MR1;
+ case 8:
+ return F;
+ case 9:
+ return G;
+ case 10:
+ return G_MR1;
+ case 11:
+ return H;
+ case 12:
+ return H_MR1;
+ case 13:
+ return H_MR2;
+ case 14:
+ return I;
+ case 15:
+ return I_MR1;
+ case 16:
+ return J;
+ case 17:
+ return J_MR1;
+ case 18:
+ return J_MR2;
+ case 19:
+ return K;
+ case 20:
+ return K_WATCH;
+ case 21:
+ return L;
+ case 22:
+ return L_MR1;
+ case 23:
+ return M;
+ case 24:
+ return N;
+ case 25:
+ return N_MR1;
+ case 26:
+ return O;
+ case 27:
+ return P;
+ default:
+ throw new Unreachable();
+ }
+ }
}