Merge "[KSP2] Fix enum tests" into androidx-main
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
index 0171412..5296e39 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
@@ -148,6 +148,15 @@
             kotlin = com.squareup.kotlinpoet.ANY
         )
 
+        /**
+         * A convenience [XTypeName] that represents [kotlin.Enum] in Kotlin and
+         * [java.lang.Enum] in Java.
+         */
+        val ENUM = XTypeName(
+            java = JClassName.get(java.lang.Enum::class.java),
+            kotlin = com.squareup.kotlinpoet.ENUM
+        )
+
         val PRIMITIVE_BOOLEAN = Boolean::class.asPrimitiveTypeName()
         val PRIMITIVE_BYTE = Byte::class.asPrimitiveTypeName()
         val PRIMITIVE_SHORT = Short::class.asPrimitiveTypeName()
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
index 4b190b5..f1dfb5f 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
@@ -21,6 +21,7 @@
 import androidx.room.compiler.codegen.XClassName
 import androidx.room.compiler.codegen.XTypeName
 import androidx.room.compiler.codegen.asClassName
+import androidx.room.compiler.processing.compat.XConverters.toKS
 import androidx.room.compiler.processing.javac.JavacType
 import androidx.room.compiler.processing.util.Source
 import androidx.room.compiler.processing.util.XTestInvocation
@@ -1888,7 +1889,13 @@
                 // TODO(kuanyingchou): https://github.com/google/ksp/issues/1761
                 val parent = typeElement.superClass!!.typeElement!!
                 if (qName == "test.KotlinEnum" && !isPreCompiled && invocation.isKsp) {
-                    assertThat(parent.asClassName()).isEqualTo(Any::class.asClassName())
+                    if (invocation.isKsp &&
+                            invocation.processingEnv.toKS().kspVersion >=
+                            KotlinVersion(2, 0)) {
+                        assertThat(parent.asClassName()).isEqualTo(XTypeName.ENUM)
+                    } else {
+                        assertThat(parent.asClassName()).isEqualTo(Any::class.asClassName())
+                    }
                 } else {
                     assertThat(parent.asClassName()).isEqualTo(Enum::class.asClassName())
                 }
@@ -1896,17 +1903,17 @@
                 val methodNames = typeElement.getDeclaredMethods().map { it.jvmName }
                 if (qName == "test.KotlinEnum") {
                     if (invocation.isKsp) {
-                        if (isPreCompiled) {
+                        if (!isPreCompiled && invocation.processingEnv.toKS().kspVersion <
+                                KotlinVersion(2, 0)) {
+                            assertThat(methodNames).containsExactly(
+                                "enumMethod",
+                            )
+                        } else {
                             assertThat(methodNames).containsExactly(
                                 "enumMethod",
                                 "values",
                                 "valueOf",
                             )
-                        } else {
-                            // `values` and `valueOf` will be added in KSP2.
-                            assertThat(methodNames).containsExactly(
-                                "enumMethod",
-                            )
                         }
                     } else {
                         assertThat(methodNames).containsExactly(