From b3ceeb62ebf933856a826ce8f344eb45aa664778 Mon Sep 17 00:00:00 2001 From: Damien O'Hara Date: Sat, 25 May 2024 15:23:37 +0800 Subject: [PATCH 1/3] k2 support --- build-logic/build.gradle.kts | 2 +- build.gradle.kts | 2 +- kapshot-plugin-kotlin/build.gradle.kts | 2 +- .../main/kotlin/io/koalaql/kapshot/plugin/CaptureTransformer.kt | 2 +- .../src/main/kotlin/io/koalaql/kapshot/plugin/Registrar.kt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index 1418193..870576f 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -7,6 +7,6 @@ repositories { } dependencies { - implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.21") + implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0") implementation("com.palantir.gradle.gitversion:gradle-git-version:3.0.0") } \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index c96709f..651f698 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,3 @@ plugins { - kotlin("jvm") version "1.8.21" apply false + kotlin("jvm") version "2.0.0" apply false } diff --git a/kapshot-plugin-kotlin/build.gradle.kts b/kapshot-plugin-kotlin/build.gradle.kts index bafb20f..a555c10 100644 --- a/kapshot-plugin-kotlin/build.gradle.kts +++ b/kapshot-plugin-kotlin/build.gradle.kts @@ -1,7 +1,7 @@ plugins { id("publish") - kotlin("kapt") version "1.8.21" + kotlin("kapt") version "2.0.0" } dependencies { diff --git a/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CaptureTransformer.kt b/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CaptureTransformer.kt index fd79d34..969f4c5 100644 --- a/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CaptureTransformer.kt +++ b/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CaptureTransformer.kt @@ -3,7 +3,6 @@ package io.koalaql.kapshot.plugin import org.jetbrains.kotlin.backend.common.IrElementTransformerVoidWithContext import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder -import org.jetbrains.kotlin.backend.common.sourceElement import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.builders.irCall import org.jetbrains.kotlin.ir.builders.irString @@ -16,6 +15,7 @@ import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.types.IrSimpleType import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.util.kotlinFqName +import org.jetbrains.kotlin.ir.util.sourceElement import java.io.File import java.nio.file.Path import kotlin.io.path.Path diff --git a/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/Registrar.kt b/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/Registrar.kt index dbf6fb0..3291f8c 100644 --- a/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/Registrar.kt +++ b/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/Registrar.kt @@ -11,7 +11,7 @@ import kotlin.io.path.Path @AutoService(CompilerPluginRegistrar::class) @OptIn(ExperimentalCompilerApi::class) class Registrar: CompilerPluginRegistrar() { - override val supportsK2: Boolean get() = false + override val supportsK2: Boolean get() = true override fun ExtensionStorage.registerExtensions(configuration: CompilerConfiguration) { IrGenerationExtension.registerExtension(GenerationExtension( From fd54093dccd4e090dcaab2c824631be40b496aef Mon Sep 17 00:00:00 2001 From: Damien O'Hara Date: Mon, 27 May 2024 18:32:02 +0800 Subject: [PATCH 2/3] remove kapt and register services manually --- .gitignore | 2 ++ kapshot-plugin-kotlin/build.gradle.kts | 5 ----- .../kotlin/io/koalaql/kapshot/plugin/CaptureTransformer.kt | 3 +++ .../main/kotlin/io/koalaql/kapshot/plugin/CliProcessor.kt | 3 +-- .../src/main/kotlin/io/koalaql/kapshot/plugin/Registrar.kt | 2 -- ...org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor | 1 + ....jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar | 1 + 7 files changed, 8 insertions(+), 9 deletions(-) create mode 100644 kapshot-plugin-kotlin/src/main/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor create mode 100644 kapshot-plugin-kotlin/src/main/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar diff --git a/.gitignore b/.gitignore index cd52965..db4721e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ build/ out/ .idea/ *.iml + +.kotlin \ No newline at end of file diff --git a/kapshot-plugin-kotlin/build.gradle.kts b/kapshot-plugin-kotlin/build.gradle.kts index a555c10..a3e1a0d 100644 --- a/kapshot-plugin-kotlin/build.gradle.kts +++ b/kapshot-plugin-kotlin/build.gradle.kts @@ -1,12 +1,7 @@ plugins { id("publish") - - kotlin("kapt") version "2.0.0" } dependencies { compileOnly("org.jetbrains.kotlin:kotlin-compiler-embeddable") - - kapt("com.google.auto.service:auto-service:1.0.1") - compileOnly("com.google.auto.service:auto-service-annotations:1.0.1") } diff --git a/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CaptureTransformer.kt b/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CaptureTransformer.kt index 969f4c5..fb2b0a3 100644 --- a/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CaptureTransformer.kt +++ b/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CaptureTransformer.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.ir.expressions.IrTypeOperator import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol +import org.jetbrains.kotlin.ir.symbols.UnsafeDuringIrConstructionAPI import org.jetbrains.kotlin.ir.types.IrSimpleType import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.util.kotlinFqName @@ -20,6 +21,8 @@ import java.io.File import java.nio.file.Path import kotlin.io.path.Path +/* this service is registered under resources/META-INF/services */ +@OptIn(UnsafeDuringIrConstructionAPI::class) class CaptureTransformer( private val context: IrPluginContext, private val projectDir: Path, diff --git a/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CliProcessor.kt b/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CliProcessor.kt index f0207fb..e708844 100644 --- a/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CliProcessor.kt +++ b/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/CliProcessor.kt @@ -1,13 +1,12 @@ package io.koalaql.kapshot.plugin -import com.google.auto.service.AutoService import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption import org.jetbrains.kotlin.compiler.plugin.CliOption import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi import org.jetbrains.kotlin.config.CompilerConfiguration -@AutoService(CommandLineProcessor::class) +/* this service is registered under resources/META-INF/services */ @OptIn(ExperimentalCompilerApi::class) class CliProcessor: CommandLineProcessor { override val pluginId: String = "io.koalaql.kapshot-plugin" diff --git a/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/Registrar.kt b/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/Registrar.kt index 3291f8c..f3a669d 100644 --- a/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/Registrar.kt +++ b/kapshot-plugin-kotlin/src/main/kotlin/io/koalaql/kapshot/plugin/Registrar.kt @@ -1,6 +1,5 @@ package io.koalaql.kapshot.plugin -import com.google.auto.service.AutoService import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar @@ -8,7 +7,6 @@ import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi import kotlin.io.path.Path -@AutoService(CompilerPluginRegistrar::class) @OptIn(ExperimentalCompilerApi::class) class Registrar: CompilerPluginRegistrar() { override val supportsK2: Boolean get() = true diff --git a/kapshot-plugin-kotlin/src/main/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor b/kapshot-plugin-kotlin/src/main/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor new file mode 100644 index 0000000..66a4c24 --- /dev/null +++ b/kapshot-plugin-kotlin/src/main/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor @@ -0,0 +1 @@ +io.koalaql.kapshot.plugin.CliProcessor \ No newline at end of file diff --git a/kapshot-plugin-kotlin/src/main/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar b/kapshot-plugin-kotlin/src/main/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar new file mode 100644 index 0000000..99c02b2 --- /dev/null +++ b/kapshot-plugin-kotlin/src/main/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar @@ -0,0 +1 @@ +io.koalaql.kapshot.plugin.Registrar \ No newline at end of file From 3173d2dcef37225b1a635599cf0acb844759ff6f Mon Sep 17 00:00:00 2001 From: Damien O'Hara Date: Mon, 27 May 2024 18:33:40 +0800 Subject: [PATCH 3/3] runtime dependencies registered as api dependency (closes #10) --- .../src/main/kotlin/io/koalaql/kapshot/GradlePlugin.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kapshot-plugin-gradle/src/main/kotlin/io/koalaql/kapshot/GradlePlugin.kt b/kapshot-plugin-gradle/src/main/kotlin/io/koalaql/kapshot/GradlePlugin.kt index ef70349..5c1c3f8 100644 --- a/kapshot-plugin-gradle/src/main/kotlin/io/koalaql/kapshot/GradlePlugin.kt +++ b/kapshot-plugin-gradle/src/main/kotlin/io/koalaql/kapshot/GradlePlugin.kt @@ -22,7 +22,7 @@ class GradlePlugin : KotlinCompilerPluginSupportPlugin { override fun apply(target: Project) { /* make sure we don't try to add dependency until it has been configured by kotlin plugin */ target.plugins.withId("org.jetbrains.kotlin.jvm") { - target.dependencies.add("implementation", "io.koalaql:kapshot-runtime:${BuildConfig.VERSION}") + target.dependencies.add("api", "io.koalaql:kapshot-runtime:${BuildConfig.VERSION}") } }