Merge "Fix SdkConstant retention "detection"" into tm-dev am: bedd876239 am: e7bfaa9e6a

Original change: https://googleplex-android-review.googlesource.com/c/platform/tools/metalava/+/17944604

Change-Id: Id41d5968483037ee60afe7d0f4adbccd273c8555
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/main/java/com/android/tools/metalava/Constants.kt b/src/main/java/com/android/tools/metalava/Constants.kt
index 5f2354c..943a21e 100644
--- a/src/main/java/com/android/tools/metalava/Constants.kt
+++ b/src/main/java/com/android/tools/metalava/Constants.kt
@@ -36,6 +36,7 @@
 const val RECENTLY_NONNULL = "androidx.annotation.RecentlyNonNull"
 const val ANDROID_NULLABLE = "android.annotation.Nullable"
 const val ANDROID_NONNULL = "android.annotation.NonNull"
+const val ANDROID_SDK_CONSTANT = "android.annotation.SdkConstant"
 const val ANDROIDX_VISIBLE_FOR_TESTING = "androidx.annotation.VisibleForTesting"
 const val ATTR_OTHERWISE = "otherwise"
 const val ATTR_ALLOW_IN = "allowIn"
diff --git a/src/main/java/com/android/tools/metalava/RewriteAnnotations.kt b/src/main/java/com/android/tools/metalava/RewriteAnnotations.kt
index d256e10..a34c162 100644
--- a/src/main/java/com/android/tools/metalava/RewriteAnnotations.kt
+++ b/src/main/java/com/android/tools/metalava/RewriteAnnotations.kt
@@ -127,6 +127,7 @@
                 qualifiedName == RECENTLY_NONNULL ||
                 qualifiedName == ANDROID_NULLABLE ||
                 qualifiedName == ANDROID_NONNULL -> return false
+            qualifiedName.equals(ANDROID_SDK_CONSTANT) -> return true
             qualifiedName.startsWith("androidx.annotation.") -> return true
         }
 
@@ -134,9 +135,9 @@
         if (codebase != null) {
             val cls = codebase.findClass(qualifiedName) ?: return true
             return cls.isAnnotationType() && cls.getRetention() == AnnotationRetention.SOURCE
+        } else {
+            error("Found annotation with unknown desired retention: " + qualifiedName)
         }
-
-        return false
     }
 
     /** Writes the bytecode for the compiled annotations in the given file such that they are package private */
diff --git a/src/main/java/com/android/tools/metalava/SdkFileWriter.kt b/src/main/java/com/android/tools/metalava/SdkFileWriter.kt
index 6d71da5..ee13682 100644
--- a/src/main/java/com/android/tools/metalava/SdkFileWriter.kt
+++ b/src/main/java/com/android/tools/metalava/SdkFileWriter.kt
@@ -29,7 +29,6 @@
 private const val ANDROID_VIEW_VIEW = "android.view.View"
 private const val ANDROID_VIEW_VIEW_GROUP = "android.view.ViewGroup"
 private const val ANDROID_VIEW_VIEW_GROUP_LAYOUT_PARAMS = "android.view.ViewGroup.LayoutParams"
-private const val SDK_CONSTANT_ANNOTATION = "android.annotation.SdkConstant"
 private const val SDK_CONSTANT_TYPE_ACTIVITY_ACTION =
     "android.annotation.SdkConstant.SdkConstantType.ACTIVITY_INTENT_ACTION"
 private const val SDK_CONSTANT_TYPE_BROADCAST_ACTION =
@@ -77,7 +76,7 @@
                 val value = field.initialValue() ?: continue
                 val annotations = field.modifiers.annotations()
                 for (annotation in annotations) {
-                    if (SDK_CONSTANT_ANNOTATION == annotation.qualifiedName) {
+                    if (ANDROID_SDK_CONSTANT == annotation.qualifiedName) {
                         val resolved =
                             annotation.findAttribute(null)?.leafValues()?.firstOrNull()?.resolve() as? FieldItem
                                 ?: continue