From 5894c43a36fcc7594d04e537d26379834e236076 Mon Sep 17 00:00:00 2001 From: Steven Schoen Date: Sun, 27 Feb 2022 15:29:52 -0500 Subject: [PATCH 1/3] Create Kotlin output dir during analysis --- .../com/google/devtools/ksp/KotlinSymbolProcessingExtension.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/KotlinSymbolProcessingExtension.kt b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/KotlinSymbolProcessingExtension.kt index 2084fe618d..3fd5718ba9 100644 --- a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/KotlinSymbolProcessingExtension.kt +++ b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/KotlinSymbolProcessingExtension.kt @@ -214,6 +214,9 @@ abstract class AbstractKotlinSymbolProcessingExtension( } processor?.also { deferredSymbols[it] = mutableListOf() } } + /* Kotlin compiler expects a source dir to exist, but processors might not generate Kotlin source. + Create it during initialization just in case. */ + options.kotlinOutputDir.mkdirs() initialized = true } if (!logger.hasError()) { From f85fd50f8fec095a7fa0a3cd01c0636b3a736979 Mon Sep 17 00:00:00 2001 From: Steven Schoen Date: Tue, 1 Mar 2022 09:16:15 -0500 Subject: [PATCH 2/3] Add test from #721 --- .../devtools/ksp/test/OnlyResourcesFileIT.kt | 21 ++++++++++++++++ .../only-resources-file/build.gradle.kts | 12 ++++++++++ .../only-resources-file/settings.gradle.kts | 19 +++++++++++++++ .../test-processor/build.gradle.kts | 12 ++++++++++ .../src/main/kotlin/TestProcessor.kt | 24 +++++++++++++++++++ ...ols.ksp.processing.SymbolProcessorProvider | 1 + .../workload/build.gradle.kts | 16 +++++++++++++ .../workload/src/commonMain/kotlin/MyStub.kt | 2 ++ 8 files changed, 107 insertions(+) create mode 100644 integration-tests/src/test/kotlin/com/google/devtools/ksp/test/OnlyResourcesFileIT.kt create mode 100644 integration-tests/src/test/resources/only-resources-file/build.gradle.kts create mode 100644 integration-tests/src/test/resources/only-resources-file/settings.gradle.kts create mode 100644 integration-tests/src/test/resources/only-resources-file/test-processor/build.gradle.kts create mode 100644 integration-tests/src/test/resources/only-resources-file/test-processor/src/main/kotlin/TestProcessor.kt create mode 100644 integration-tests/src/test/resources/only-resources-file/test-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider create mode 100644 integration-tests/src/test/resources/only-resources-file/workload/build.gradle.kts create mode 100644 integration-tests/src/test/resources/only-resources-file/workload/src/commonMain/kotlin/MyStub.kt diff --git a/integration-tests/src/test/kotlin/com/google/devtools/ksp/test/OnlyResourcesFileIT.kt b/integration-tests/src/test/kotlin/com/google/devtools/ksp/test/OnlyResourcesFileIT.kt new file mode 100644 index 0000000000..21b182a5a5 --- /dev/null +++ b/integration-tests/src/test/kotlin/com/google/devtools/ksp/test/OnlyResourcesFileIT.kt @@ -0,0 +1,21 @@ +package com.google.devtools.ksp.test + +import org.gradle.testkit.runner.GradleRunner +import org.junit.Rule +import org.junit.Test + +class OnlyResourcesFileIT { + @Rule + @JvmField + val project: TemporaryTestProject = TemporaryTestProject("only-resources-file") + + @Test + fun test() { + val gradleRunner = GradleRunner.create().withProjectDir(project.root) + + gradleRunner.withArguments( + "--configuration-cache-problems=warn", + "jvmJar", + ).build() + } +} diff --git a/integration-tests/src/test/resources/only-resources-file/build.gradle.kts b/integration-tests/src/test/resources/only-resources-file/build.gradle.kts new file mode 100644 index 0000000000..7a1ba5b17c --- /dev/null +++ b/integration-tests/src/test/resources/only-resources-file/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + kotlin("multiplatform") apply false +} + +val testRepo: String by project +subprojects { + repositories { + maven(testRepo) + mavenCentral() + maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap/") + } +} diff --git a/integration-tests/src/test/resources/only-resources-file/settings.gradle.kts b/integration-tests/src/test/resources/only-resources-file/settings.gradle.kts new file mode 100644 index 0000000000..49845b921f --- /dev/null +++ b/integration-tests/src/test/resources/only-resources-file/settings.gradle.kts @@ -0,0 +1,19 @@ +pluginManagement { + val kotlinVersion: String by settings + val kspVersion: String by settings + val testRepo: String by settings + plugins { + id("com.google.devtools.ksp") version kspVersion apply false + kotlin("multiplatform") version kotlinVersion apply false + } + repositories { + maven(testRepo) + gradlePluginPortal() + maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap/") + } +} + +rootProject.name = "playground" + +include(":workload") +include(":test-processor") diff --git a/integration-tests/src/test/resources/only-resources-file/test-processor/build.gradle.kts b/integration-tests/src/test/resources/only-resources-file/test-processor/build.gradle.kts new file mode 100644 index 0000000000..1d1cb3000a --- /dev/null +++ b/integration-tests/src/test/resources/only-resources-file/test-processor/build.gradle.kts @@ -0,0 +1,12 @@ +val kspVersion: String by project + +plugins { + kotlin("jvm") +} + +group = "com.example" +version = "1.0-SNAPSHOT" + +dependencies { + implementation("com.google.devtools.ksp:symbol-processing-api:$kspVersion") +} diff --git a/integration-tests/src/test/resources/only-resources-file/test-processor/src/main/kotlin/TestProcessor.kt b/integration-tests/src/test/resources/only-resources-file/test-processor/src/main/kotlin/TestProcessor.kt new file mode 100644 index 0000000000..6d07416bd5 --- /dev/null +++ b/integration-tests/src/test/resources/only-resources-file/test-processor/src/main/kotlin/TestProcessor.kt @@ -0,0 +1,24 @@ +import com.google.devtools.ksp.processing.* +import com.google.devtools.ksp.symbol.* + +class TestProcessor(val codeGenerator: CodeGenerator) : SymbolProcessor { + + var invoked = false + + override fun process(resolver: Resolver): List { + if (invoked) { + return emptyList() + } + + codeGenerator.createNewFile(Dependencies(false), "", "HelloSwift", "swift") + + invoked = true + return emptyList() + } + + class Provider : SymbolProcessorProvider { + override fun create( + environment: SymbolProcessorEnvironment + ): SymbolProcessor = TestProcessor(environment.codeGenerator) + } +} diff --git a/integration-tests/src/test/resources/only-resources-file/test-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider b/integration-tests/src/test/resources/only-resources-file/test-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider new file mode 100644 index 0000000000..5c51c309fd --- /dev/null +++ b/integration-tests/src/test/resources/only-resources-file/test-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider @@ -0,0 +1 @@ +TestProcessor$Provider diff --git a/integration-tests/src/test/resources/only-resources-file/workload/build.gradle.kts b/integration-tests/src/test/resources/only-resources-file/workload/build.gradle.kts new file mode 100644 index 0000000000..ed0d40c699 --- /dev/null +++ b/integration-tests/src/test/resources/only-resources-file/workload/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + kotlin("multiplatform") + id("com.google.devtools.ksp") +} + +version = "1.0-SNAPSHOT" + +kotlin { + jvm { + withJava() + } +} + +dependencies { + add("kspCommonMainMetadata", project(":test-processor")) +} diff --git a/integration-tests/src/test/resources/only-resources-file/workload/src/commonMain/kotlin/MyStub.kt b/integration-tests/src/test/resources/only-resources-file/workload/src/commonMain/kotlin/MyStub.kt new file mode 100644 index 0000000000..8fca33323d --- /dev/null +++ b/integration-tests/src/test/resources/only-resources-file/workload/src/commonMain/kotlin/MyStub.kt @@ -0,0 +1,2 @@ +class MyStub { +} From 82686476070dae2dd748dd3910cb1eda2c1be5b0 Mon Sep 17 00:00:00 2001 From: Steven Schoen Date: Tue, 1 Mar 2022 14:51:46 -0500 Subject: [PATCH 3/3] Fixup --- .../workload/src/commonMain/kotlin/MyStub.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/integration-tests/src/test/resources/only-resources-file/workload/src/commonMain/kotlin/MyStub.kt b/integration-tests/src/test/resources/only-resources-file/workload/src/commonMain/kotlin/MyStub.kt index 8fca33323d..f0692550ed 100644 --- a/integration-tests/src/test/resources/only-resources-file/workload/src/commonMain/kotlin/MyStub.kt +++ b/integration-tests/src/test/resources/only-resources-file/workload/src/commonMain/kotlin/MyStub.kt @@ -1,2 +1 @@ -class MyStub { -} +class MyStub