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(