Jack Darlington
02/02/2022, 11:33 PMCaused by: java.lang.AbstractMethodError: Receiver class package.MyMetaPlugin does not define or inherit an implementation of the resolved method 'abstract void registerProjectComponents(com.intellij.mock.MockProject, org.jetbrains.kotlin.config.CompilerConfiguration)' of interface org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar.
I assume it is something to do with the default implementation not getting picked up from Meta interface?Jack Darlington
02/02/2022, 11:47 PMe: java.lang.IllegalStateException: The provided plugin package.MyMetaPlugin is not compatible with this version of compiler
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.registerExtensionsFromPlugins$cli(KotlinCoreEnvironment.kt:675)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.registerExtensionsFromPlugins(KotlinCoreEnvironment.kt:169)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:216)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:111)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:485)
at org.jetbrains.kotlin.cli.bc.K2Native.doExecute(K2Native.kt:61)
at org.jetbrains.kotlin.cli.bc.K2Native.doExecute(K2Native.kt:37)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:92)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:76)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:45)
at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(CLITool.kt:227)
at org.jetbrains.kotlin.cli.bc.K2Native$Companion$mainNoExitWithGradleRenderer$1.invoke(K2Native.kt:393)
at org.jetbrains.kotlin.cli.bc.K2Native$Companion$mainNoExitWithGradleRenderer$1.invoke(K2Native.kt:392)
at org.jetbrains.kotlin.util.UtilKt.profileIf(Util.kt:22)
at org.jetbrains.kotlin.util.UtilKt.profile(Util.kt:16)
at org.jetbrains.kotlin.cli.bc.K2Native$Companion.mainNoExitWithGradleRenderer(K2Native.kt:392)
at org.jetbrains.kotlin.cli.bc.K2NativeKt.mainNoExitWithGradleRenderer(K2Native.kt:634)
at org.jetbrains.kotlin.cli.utilities.MainKt$daemonMain$1.invoke(main.kt:62)
at org.jetbrains.kotlin.cli.utilities.MainKt$daemonMain$1.invoke(main.kt:62)
at org.jetbrains.kotlin.cli.utilities.MainKt.mainImpl(main.kt:17)
at
Jack Darlington
02/02/2022, 11:49 PM@AutoService(ComponentRegistrar::class)
public open class MyMetaPlugin: Meta {
override fun intercept(ctx: CompilerContext): List<CliPlugin> =
TODO()
}
Alejandro Serrano Mena
02/03/2022, 8:13 AMJack
02/03/2022, 8:22 AMAlejandro Serrano Mena
02/03/2022, 8:48 AMresources
folder, here’s how we do it for another plug-in https://github.com/arrow-kt/arrow-meta/tree/main/plugins/analysis/kotlin-plugin/src/main/resources/META-INF/servicesJack
02/03/2022, 9:19 AMJack
02/03/2022, 9:22 AMAlejandro Serrano Mena
02/03/2022, 10:17 AMJack
02/03/2022, 11:08 AMJack
02/03/2022, 11:12 AMJack
02/03/2022, 11:14 AMJack
02/03/2022, 11:14 AMAlejandro Serrano Mena
02/03/2022, 1:08 PMJack
02/03/2022, 1:26 PMJack
02/03/2022, 1:37 PMJack
02/03/2022, 2:40 PMimport org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
kotlin("jvm")
kotlin("kapt")
`java-library`
`maven-publish`
}
apply(from = "../maven-publishing-setup.kts")
repositories {
maven("<https://oss.sonatype.org/content/repositories/snapshots/|https://oss.sonatype.org/content/repositories/snapshots/>")
mavenLocal()
}
dependencies {
//
// compileOnly("org.jetbrains.kotlin:kotlin-compiler")
// compileOnly("org.jetbrains.kotlin:kotlin-compiler-embeddable")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10")
implementation("io.arrow-kt:arrow-meta:1.6.10")
// kapt("com.google.auto.service:auto-service:1.0.1")
api("com.squareup:kotlinpoet:1.10.2")
implementation(project(":generate-mock-annotations"))
}
tasks.named("compileKotlin") { dependsOn("syncSource") }
repositories {
mavenCentral()
}
tasks.withType<KotlinCompile> {
kotlinOptions.freeCompilerArgs = listOf(
"-Xjvm-default=compatibility",
)
kotlinOptions.jvmTarget = "1.8"
}
tasks {
jar {
from(
sourceSets.main.get().compileClasspath.filter { dependency ->
listOf(
"arrow-kt",
"ktlint",
"ec4j"
).any {
dependency.absolutePath.contains(it)
}
}.map(::zipTree)
)
}
}
publishing {
publications {
create<MavenPublication>("default") {
from(components["java"])
artifact(tasks.kotlinSourcesJar)
}
}
}
This is the compiler plugin blockJack
02/03/2022, 2:40 PMJack
02/03/2022, 2:46 PMcompilations.getByName("test") {
kotlinOptions.freeCompilerArgs =
listOf("-Xplugin=$projectDir/../plugin/build/libs/plugin-1.0.0.jar",
"-P", "plugin:arrow.meta.plugin.compiler:generatedSrcOutputDir=$projectDir/build", "-verbose")
Alejandro Serrano Mena
02/03/2022, 2:52 PMarrow-meta:1.6.10
from, only 1.6.0
has been publishedJack
02/03/2022, 2:53 PMJack
02/03/2022, 2:53 PMJack
02/03/2022, 2:53 PMJack
02/03/2022, 2:57 PMJack
02/03/2022, 3:06 PMReceiver class package.MyMetaPlugin does not define or inherit an implementation of the resolved method 'abstract void registerProjectComponents(com.intellij.mock.MockProject, org.jetbrains.kotlin.config.CompilerConfiguration)' of interface org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
Jack
02/03/2022, 3:07 PMcom.intellij.mock.MockProject
. Where I think that Meta uses org.jetbrains.kotlin.com.intellij.mock.MockProject
Jack
02/03/2022, 5:10 PMJack
02/03/2022, 5:10 PMJack Darlington
02/03/2022, 11:08 PMkotlin.native.useEmbeddableCompilerJar=true in
gradle.properties