Skip to content

Commit ee9aaf3

Browse files
neetopiatschuchortdev
authored andcommitted
support ksp 20200731 release
1 parent d722208 commit ee9aaf3

File tree

4 files changed

+35
-9
lines changed

4 files changed

+35
-9
lines changed

ksp/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
buildscript {
2-
ext.kotlin_version = '1.4-M1'
3-
ext.ksp_version='1.4-M1-dev-experimental-20200716'
2+
ext.kotlin_version = '1.4.0-rc'
3+
ext.ksp_version='1.4.0-rc-dev-experimental-20200731'
44
// copy properties from the main project's properties file
55
def mainProjectProperties = new File(
66
gradle.includedBuild("kotlin-compile-testing").projectDir,

ksp/src/main/kotlin/com/tschuchort/compiletesting/Ksp.kt

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33
*/
44
package com.tschuchort.compiletesting
55

6+
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
7+
import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector
68
import org.jetbrains.kotlin.com.intellij.mock.MockProject
79
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
810
import org.jetbrains.kotlin.config.CompilerConfiguration
911
import org.jetbrains.kotlin.ksp.AbstractKotlinSymbolProcessingExtension
1012
import org.jetbrains.kotlin.ksp.KspOptions
13+
import org.jetbrains.kotlin.ksp.processing.KSPLogger
1114
import org.jetbrains.kotlin.ksp.processing.SymbolProcessor
15+
import org.jetbrains.kotlin.ksp.processing.impl.MessageCollectorBasedKSPLogger
1216
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension
1317
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
1418
import java.io.File
@@ -30,6 +34,14 @@ var KotlinCompilation.symbolProcessors: List<SymbolProcessor>
3034
val KotlinCompilation.kspSourcesDir: File
3135
get() = kspWorkingDir.resolve("sources")
3236

37+
private val KotlinCompilation.kspJavaSourceDir: File
38+
get() = kspSourcesDir.resolve("java")
39+
40+
private val KotlinCompilation.kspKotlinSourceDir: File
41+
get() = kspSourcesDir.resolve("kotlin")
42+
43+
private val KotlinCompilation.kspResourceDir: File
44+
get() = kspSourcesDir.resolve("resource")
3345
/**
3446
* The working directory for KSP
3547
*/
@@ -51,9 +63,11 @@ private val KotlinCompilation.kspClassesDir: File
5163
*/
5264
private class KspTestExtension(
5365
options: KspOptions,
54-
private val processors: List<SymbolProcessor>
66+
private val processors: List<SymbolProcessor>,
67+
logger: KSPLogger
5568
) : AbstractKotlinSymbolProcessingExtension(
5669
options = options,
70+
logger = logger,
5771
testMode = false
5872
) {
5973
override fun loadProcessors() = processors
@@ -71,16 +85,27 @@ private class KspCompileTestingComponentRegistrar(
7185
return
7286
}
7387
val options = KspOptions.Builder().apply {
74-
this.classesOutputDir = compilation.kspClassesDir.also {
88+
this.classOutputDir = compilation.kspClassesDir.also {
89+
it.deleteRecursively()
90+
it.mkdirs()
91+
}
92+
this.javaOutputDir = compilation.kspJavaSourceDir.also {
93+
it.deleteRecursively()
94+
it.mkdirs()
95+
}
96+
this.kotlinOutputDir = compilation.kspKotlinSourceDir.also {
7597
it.deleteRecursively()
7698
it.mkdirs()
7799
}
78-
this.sourcesOutputDir = compilation.kspSourcesDir.also {
100+
this.resourceOutputDir = compilation.kspResourceDir.also {
79101
it.deleteRecursively()
80102
it.mkdirs()
81103
}
82104
}.build()
83-
val registrar = KspTestExtension(options, processors)
105+
// TODO: replace with KotlinCompilation.internalMessageStream
106+
val registrar = KspTestExtension(options, processors, MessageCollectorBasedKSPLogger(
107+
PrintingMessageCollector(System.err, MessageRenderer.GRADLE_STYLE, compilation.verbose)
108+
))
84109
AnalysisHandlerExtension.registerExtension(project, registrar)
85110
}
86111
}

ksp/src/test/kotlin/com/tschuchort/compiletesting/AbstractTestSymbolProcessor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.tschuchort.compiletesting
22

33
import org.jetbrains.kotlin.ksp.processing.CodeGenerator
4+
import org.jetbrains.kotlin.ksp.processing.KSPLogger
45
import org.jetbrains.kotlin.ksp.processing.Resolver
56
import org.jetbrains.kotlin.ksp.processing.SymbolProcessor
67

@@ -12,7 +13,7 @@ internal open class AbstractTestSymbolProcessor : SymbolProcessor {
1213
override fun finish() {
1314
}
1415

15-
override fun init(options: Map<String, String>, kotlinVersion: KotlinVersion, codeGenerator: CodeGenerator) {
16+
override fun init(options: Map<String, String>, kotlinVersion: KotlinVersion, codeGenerator: CodeGenerator, logger: KSPLogger) {
1617
this.codeGenerator = codeGenerator
1718
}
1819

ksp/src/test/kotlin/com/tschuchort/compiletesting/KspTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class KspTest {
3838
}.compile()
3939
assertThat(result.exitCode).isEqualTo(ExitCode.OK)
4040
instance.inOrder {
41-
verify().init(any(), any(), any())
41+
verify().init(any(), any(), any(), any())
4242
verify().process(any())
4343
verify().finish()
4444
}
@@ -140,7 +140,7 @@ class KspTest {
140140
it.isFile
141141
}.toList()
142142
assertThat(generatedSources).containsExactly(
143-
compilation.kspSourcesDir.resolve("generated/Gen.kt")
143+
compilation.kspSourcesDir.resolve("kotlin/generated/Gen.kt")
144144
)
145145
}
146146

0 commit comments

Comments
 (0)