[go: nahoru, domu]

Disallow @RawQuery usages in non-Android targets.

Instead trying to compile badly generated code, show a clear error that @RawQuery is currently not supported in KMP.

Bug: 330586815
Test: n/a
Change-Id: I60a2fd85bc4e9a4a09ee96b22bfe1f37f6eae591
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
index 2cdf066..6844c0a 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
@@ -1161,4 +1161,8 @@
 
     val INVALID_KOTLIN_CODE_GEN_IN_JAVAC =
         "${Context.BooleanProcessorOptions.GENERATE_KOTLIN.argName} can only be enabled in KSP."
+
+    val RAW_QUERY_NOT_SUPPORTED_ON_NON_ANDROID =
+        "@RawQuery annotated DAO functions are currently not supported in source sets targeting " +
+            "non-Android platforms."
 }
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/RawQueryMethodProcessor.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/RawQueryMethodProcessor.kt
index 9167143..5460873 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/RawQueryMethodProcessor.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/RawQueryMethodProcessor.kt
@@ -50,6 +50,13 @@
             ProcessorErrors.CANNOT_USE_UNBOUND_GENERICS_IN_QUERY_METHODS
         )
 
+        // TODO(b/330586815): Support @RawQuery in KMP
+        context.checker.check(
+            context.isAndroidOnlyTarget(),
+            executableElement,
+            ProcessorErrors.RAW_QUERY_NOT_SUPPORTED_ON_NON_ANDROID
+        )
+
         val returnsDeferredType = delegate.returnsDeferredType()
         val isSuspendFunction = delegate.executableElement.isSuspendFunction()
         context.checker.check(