aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt4
-rw-r--r--integration-tests/src/test/resources/kmp/test-processor/src/main/kotlin/ValidateProcessor.kt26
-rw-r--r--integration-tests/src/test/resources/kmp/test-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider1
-rw-r--r--integration-tests/src/test/resources/kmp/workload/src/commonMain/kotlin/com/example/ToBeValidated.kt11
4 files changed, 42 insertions, 0 deletions
diff --git a/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt b/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt
index 52a93782..9772ec20 100644
--- a/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt
+++ b/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt
@@ -704,6 +704,10 @@ abstract class KspTaskMetadata : KotlinCompileCommon(KotlinMultiplatformCommonOp
}
args.addPluginOptions(options.get())
args.destination = destination.canonicalPath
+ val classpathList = classpath.files.filter { it.exists() }.toMutableList()
+ args.classpath = classpathList.joinToString(File.pathSeparator)
+ args.friendPaths = friendPaths.files.map { it.absolutePath }.toTypedArray()
+ args.refinesPaths = refinesMetadataPaths.map { it.absolutePath }.toTypedArray()
}
// Overrding an internal function is hacky.
diff --git a/integration-tests/src/test/resources/kmp/test-processor/src/main/kotlin/ValidateProcessor.kt b/integration-tests/src/test/resources/kmp/test-processor/src/main/kotlin/ValidateProcessor.kt
new file mode 100644
index 00000000..61aabc9b
--- /dev/null
+++ b/integration-tests/src/test/resources/kmp/test-processor/src/main/kotlin/ValidateProcessor.kt
@@ -0,0 +1,26 @@
+import com.google.devtools.ksp.processing.*
+import com.google.devtools.ksp.symbol.*
+import com.google.devtools.ksp.validate
+
+class ValidateProcessor(val codeGenerator: CodeGenerator, val logger: KSPLogger) : SymbolProcessor {
+ var invoked = false
+
+ override fun process(resolver: Resolver): List<KSAnnotated> {
+ if (invoked) {
+ return emptyList()
+ }
+ invoked = true
+
+ val toValidate = resolver.getSymbolsWithAnnotation("com.example.MyAnnotation")
+ if (!toValidate.all { it.validate() }) {
+ logger.error("not ok")
+ }
+ return emptyList()
+ }
+}
+
+class ValidateProcessorProvider : SymbolProcessorProvider {
+ override fun create(env: SymbolProcessorEnvironment): SymbolProcessor {
+ return ValidateProcessor(env.codeGenerator, env.logger)
+ }
+}
diff --git a/integration-tests/src/test/resources/kmp/test-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider b/integration-tests/src/test/resources/kmp/test-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider
index c91e3e9e..33ab413c 100644
--- a/integration-tests/src/test/resources/kmp/test-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider
+++ b/integration-tests/src/test/resources/kmp/test-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider
@@ -1 +1,2 @@
TestProcessorProvider
+ValidateProcessorProvider
diff --git a/integration-tests/src/test/resources/kmp/workload/src/commonMain/kotlin/com/example/ToBeValidated.kt b/integration-tests/src/test/resources/kmp/workload/src/commonMain/kotlin/com/example/ToBeValidated.kt
new file mode 100644
index 00000000..6fe2e935
--- /dev/null
+++ b/integration-tests/src/test/resources/kmp/workload/src/commonMain/kotlin/com/example/ToBeValidated.kt
@@ -0,0 +1,11 @@
+package com.example
+
+annotation class MyAnnotation
+
+// https://github.com/google/ksp/issues/632
+@MyAnnotation
+@ExperimentalMultiplatform
+class ToBeValidated {
+ // https://github.com/google/ksp/issues/574
+ val ToBeInferred = listOf("string")
+}