Paulius Ruminas
01/15/2019, 9:00 AMDeferred
return type methods for suspend
functions e.g.
suspend fun foo(): String = "Hello world!"
would generate an additional method
fun foo(scope: CoroutineScope): Deferred<String> = scope.async { "Hello world!" }
As i try to hook into ir codegen i’m getting this exception:
exception: java.lang.IllegalStateException: The provided plugin com.nfq.NativeSuspendRegistrar is not compatible with this version of compiler
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:203)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:121)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:513)
at org.jetbrains.kotlin.cli.bc.K2Native.doExecute(K2Native.kt:57)
at org.jetbrains.kotlin.cli.bc.K2Native.doExecute(K2Native.kt:35)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:96)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:52)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:93)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:71)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:39)
at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(CLITool.kt:202)
at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMain(CLITool.kt:194)
at org.jetbrains.kotlin.cli.bc.K2Native$Companion$main$1.invoke(K2Native.kt:214)
at org.jetbrains.kotlin.cli.bc.K2Native$Companion$main$1.invoke(K2Native.kt:205)
at org.jetbrains.kotlin.konan.util.UtilKt.profileIf(Util.kt:37)
at org.jetbrains.kotlin.konan.util.UtilKt.profile(Util.kt:31)
at org.jetbrains.kotlin.cli.bc.K2Native$Companion.main(K2Native.kt:207)
at org.jetbrains.kotlin.cli.bc.K2NativeKt.main(K2Native.kt:259)
at org.jetbrains.kotlin.cli.utilities.MainKt.main(main.kt:16)
Caused by: java.lang.AbstractMethodError
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:195)
... 18 more
My build.gradle looks like this:
apply plugin: 'org.jetbrains.kotlin.jvm'
apply plugin: 'kotlin-kapt'
repositories {
jcenter()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
implementation "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlinVersion"
compileOnly 'com.google.auto.service:auto-service:1.0-rc4'
kapt 'com.google.auto.service:auto-service:1.0-rc4'
}
And my ComponenRegistrar looks like this:
@AutoService(ComponentRegistrar::class)
class NativeSuspendRegistrar : ComponentRegistrar {
override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) {
IrGenerationExtension.registerExtension(project, NativeSuspendIrGenerationExtension())
}
}
I use Kotlin 1.3.11charleskorn
02/10/2019, 8:55 AMkotlin-compiler-embeddable
to kotlin-compiler
in your build.gradleDaniele Bartorilla
06/22/2019, 2:23 PMkotlin-compiler
and not kotlin-compiler-embeddable
), @Paulius Ruminas, did you find a solution?Daniele Bartorilla
06/22/2019, 6:15 PMembeddable
artifact and building directly using gradle and not with intellij