diff options
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") +} |