rules_jvm_external
rules_jvm_external copied to clipboard
override_targets doesn't support kotlin extensions
When overriding a maven target with local kt_jvm_export
bazel target, kotlin extensions failed to compile
exception: org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during code generation
File being compiled: /Users/adinata/.cache/bazel/4bb02c6b1fe34f55b10507c9f23bccf7/execroot/brex/libraries/kotlin/core/src/kotlin/brex/query/PaginationModel.kt
The root cause java.lang.RuntimeException was thrown at: org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:50)
at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:239)
at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException$default(CodegenUtil.kt:235)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.doGenerateFilesInternal(JvmIrCodegenFactory.kt:209)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateModule(JvmIrCodegenFactory.kt:62)
at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:35)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.generate(KotlinToJVMBytecodeCompiler.kt:592)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:212)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:155)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:169)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
at io.bazel.kotlin.compiler.BazelK2JVMCompiler.exec(BazelK2JVMCompiler.kt:30)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.bazel.kotlin.builder.toolchain.KotlinToolchain$KotlinCliToolInvoker.compile(KotlinToolchain.kt:186)
at io.bazel.kotlin.builder.tasks.jvm.Compilation_taskKt$compileKotlin$1$2.invoke(compilation_task.kt:299)
at io.bazel.kotlin.builder.tasks.jvm.Compilation_taskKt$compileKotlin$1$2.invoke(compilation_task.kt:299)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.executeCompilerTask(CompilationTaskContext.kt:122)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.executeCompilerTask$default(CompilationTaskContext.kt:114)
at io.bazel.kotlin.builder.tasks.jvm.Compilation_taskKt.compileKotlin(compilation_task.kt:299)
at io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor$execute$1$1$1$1.invoke(KotlinJvmTaskExecutor.kt:62)
at io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor$execute$1$1$1$1.invoke(KotlinJvmTaskExecutor.kt:60)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.execute(CompilationTaskContext.kt:148)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.execute(CompilationTaskContext.kt:140)
at io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor$execute$1.invoke(KotlinJvmTaskExecutor.kt:60)
at io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor$execute$1.invoke(KotlinJvmTaskExecutor.kt:56)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.execute(CompilationTaskContext.kt:148)
at io.bazel.kotlin.builder.toolchain.CompilationTaskContext.execute(CompilationTaskContext.kt:140)
at io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor.execute(KotlinJvmTaskExecutor.kt:56)
at io.bazel.kotlin.builder.tasks.KotlinBuilder.executeJvmTask(KotlinBuilder.kt:232)
at io.bazel.kotlin.builder.tasks.KotlinBuilder.build(KotlinBuilder.kt:130)
at io.bazel.kotlin.builder.tasks.CompileKotlin.invoke(CompileKotlin.kt:27)
at io.bazel.worker.PersistentWorker$compileWork$2$result$1.invoke(PersistentWorker.kt:96)
at io.bazel.worker.PersistentWorker$compileWork$2$result$1.invoke(PersistentWorker.kt:94)
at io.bazel.worker.WorkerContext$TaskContext.resultOf(WorkerContext.kt:128)
at io.bazel.worker.WorkerContext.doTask(WorkerContext.kt:156)
at io.bazel.worker.PersistentWorker$compileWork$2.invokeSuspend(PersistentWorker.kt:94)
at io.bazel.worker.PersistentWorker$compileWork$2.invoke(PersistentWorker.kt)
at io.bazel.worker.PersistentWorker$compileWork$2.invoke(PersistentWorker.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
at io.bazel.worker.PersistentWorker.compileWork(PersistentWorker.kt:93)
at io.bazel.worker.PersistentWorker.access$compileWork(PersistentWorker.kt:45)
at io.bazel.worker.PersistentWorker$start$1$1$1$1$2$1.invokeSuspend(PersistentWorker.kt:71)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.RuntimeException: Exception while generating code for:
FUN name:toProto visibility:public modality:FINAL <> ($this:brex.query.PaginationModel)
... (truncated)
Caused by: java.lang.NullPointerException: insnList.first must not be null
at org.jetbrains.kotlin.codegen.optimization.common.InsnSequence.<init>(Util.kt:48)
at org.jetbrains.kotlin.codegen.optimization.common.UtilKt.asSequence(Util.kt:64)
at org.jetbrains.kotlin.codegen.inline.InlineCodegenUtilsKt.lineNumberRange(inlineCodegenUtils.kt:138)
at org.jetbrains.kotlin.codegen.inline.InlineCodegenUtilsKt.getMethodNode(inlineCodegenUtils.kt:129)
at org.jetbrains.kotlin.codegen.inline.InlineCodegenUtilsKt.getMethodNode$default(inlineCodegenUtils.kt:83)
at org.jetbrains.kotlin.codegen.inline.InlineCodegen$Companion.doCreateMethodNodeFromCompiled(InlineCodegen.kt:638)
at org.jetbrains.kotlin.codegen.inline.InlineCodegen$Companion.getCompiledMethodNodeInner(InlineCodegen.kt:575)
at org.jetbrains.kotlin.codegen.inline.InlineCodegen$Companion.access$getCompiledMethodNodeInner(InlineCodegen.kt:545)
at org.jetbrains.kotlin.codegen.inline.InlineCodegen.createInlineMethodNode$backend(InlineCodegen.kt:538)
at org.jetbrains.kotlin.codegen.inline.InlineCodegen.performInline(InlineCodegen.kt:135)
... 73 more
Which is a similar issue with https://discuss.kotlinlang.org/t/solved-extension-functions-not-available-when-exported-to-jar/4939
When using the maven target, it compiles successfully.
kt_jvm_export(
name = "extension",
srcs = ["test.kt"],
maven_coordinates = "com.test.extension:extension:0.0.1",
visibility = ["//visibility:public"],
deps = [
],
)
maven_install(
artifacts = [
maven.artifact("com.test.extension", "extension", "[0.0.1,1.0.0)")
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
"https://packages.confluent.io/maven/",
"https://jitpack.io",
"https://repo.kotlin.link",
"https://maven.pkg.jetbrains.space/mipt-npm/p/sci/maven",
],
# adding override_targets make compile failed
override_targets = {
"com.test.extension:extension": "@//lib:extension",
},
maven_install_json = "//:maven_install.json",
fetch_sources = True,
fetch_javadoc = True,
generate_compat_repositories = True,
version_conflict_policy = "pinned",
)
kt_jvm_library(
name = "target",
srcs = glob([
"source.kt",
]),
visibility = ["//visibility:public"],
deps = [
"@maven//:com_test_extension_extension",
],
)