Vadim Kapustin
05/27/2021, 11:30 AMjava.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 1
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:359)
at java.base/java.util.ArrayList.get(ArrayList.java:427)
at org.jetbrains.kotlin.ir.util.IrUtilsKt.getTypeSubstitutionMap(IrUtils.kt:540)
at org.jetbrains.kotlin.ir.util.IrUtilsKt.getTypeSubstitutionMap(IrUtils.kt:554)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitCall(IrComposableAnnotator.kt:116)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitCall(IrElementVisitorVoid.kt:165)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitCall(IrComposableAnnotator.kt:60)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitCall(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl.accept(IrCallImpl.kt:47)
at org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl.acceptChildren(IrVariableImpl.kt:77)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoidKt.acceptChildrenVoid(IrElementVisitorVoid.kt:275)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitElement(IrComposableAnnotator.kt:229)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitDeclaration(IrElementVisitorVoid.kt:40)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitDeclaration(IrComposableAnnotator.kt:215)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitVariable(IrElementVisitorVoid.kt:68)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitVariable(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitVariable(IrElementVisitorVoid.kt:69)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitVariable(IrComposableAnnotator.kt:60)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitVariable(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl.accept(IrVariableImpl.kt:74)
at org.jetbrains.kotlin.ir.expressions.IrBlockBody.acceptChildren(IrBody.kt:57)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoidKt.acceptChildrenVoid(IrElementVisitorVoid.kt:275)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitElement(IrComposableAnnotator.kt:229)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitBody(IrElementVisitorVoid.kt:86)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitBody(IrComposableAnnotator.kt:192)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitBlockBody(IrElementVisitorVoid.kt:92)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitBlockBody(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitBlockBody(IrElementVisitorVoid.kt:93)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitBlockBody(IrComposableAnnotator.kt:60)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitBlockBody(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.expressions.IrBlockBody.accept(IrBody.kt:54)
at org.jetbrains.kotlin.ir.declarations.IrFunction.acceptChildren(IrFunction.kt:61)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoidKt.acceptChildrenVoid(IrElementVisitorVoid.kt:275)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitElement(IrComposableAnnotator.kt:229)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitDeclaration(IrElementVisitorVoid.kt:40)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitDeclaration(IrComposableAnnotator.kt:215)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitFunction(IrElementVisitorVoid.kt:49)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitFunction(IrComposableAnnotator.kt:81)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitSimpleFunction(IrElementVisitorVoid.kt:52)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitSimpleFunction(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitSimpleFunction(IrElementVisitorVoid.kt:53)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitSimpleFunction(IrComposableAnnotator.kt:60)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitSimpleFunction(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.declarations.IrSimpleFunction.accept(IrSimpleFunction.kt:28)
at org.jetbrains.kotlin.ir.declarations.IrClass.acceptChildren(IrClass.kt:60)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoidKt.acceptChildrenVoid(IrElementVisitorVoid.kt:275)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitElement(IrComposableAnnotator.kt:229)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitDeclaration(IrElementVisitorVoid.kt:40)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitDeclaration(IrComposableAnnotator.kt:215)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitClass(IrElementVisitorVoid.kt:43)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitClass(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitClass(IrElementVisitorVoid.kt:44)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitClass(IrComposableAnnotator.kt:60)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitClass(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.declarations.IrClass.accept(IrClass.kt:55)
at org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl.acceptChildren(IrFileImpl.kt:66)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoidKt.acceptChildrenVoid(IrElementVisitorVoid.kt:275)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitElement(IrComposableAnnotator.kt:229)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitPackageFragment(IrElementVisitorVoid.kt:30)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitPackageFragment(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitFile(IrElementVisitorVoid.kt:37)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitFile(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitFile(IrElementVisitorVoid.kt:38)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitFile(IrComposableAnnotator.kt:60)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotator.visitFile(IrComposableAnnotator.kt:60)
at org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl.accept(IrFileImpl.kt:63)
at org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl.acceptChildren(IrModuleFragmentImpl.kt:40)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoidKt.acceptChildrenVoid(IrElementVisitorVoid.kt:275)
at androidx.compose.compiler.plugins.kotlin.lower.IrComposableAnnotatorKt.annotateComposableFunctions(IrComposableAnnotator.kt:56)
at androidx.compose.compiler.plugins.kotlin.ComposeIrGenerationExtension.generate(ComposeIrGenerationExtension.kt:70)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory$generateModule$1.invoke(JvmIrCodegenFactory.kt:93)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory$generateModule$1.invoke(JvmIrCodegenFactory.kt:89)
at org.jetbrains.kotlin.psi2ir.Psi2IrTranslator.generateModuleFragment(Psi2IrTranslator.kt:91)
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateModule(JvmIrCodegenFactory.kt:106)
at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:35)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.generate(KotlinToJVMBytecodeCompiler.kt:595)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:211)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:154)
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 org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:386)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:110)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:286)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl$rebuild(IncrementalCompilerRunner.kt:99)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:114)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:74)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:607)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:96)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1659)
at jdk.internal.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:691)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
jim
05/27/2021, 3:43 PM./gradlew clean
and a rm rf ~/.gradle
jps -m
to find anything with the word Daemon in it)Vadim Kapustin
05/28/2021, 11:04 AMobject Versions {
const val kotlin = "1.5.0"
const val compose = "0.4.0-build210"
const val coroutines = "1.5.0"
const val serialization = "1.2.0"
// etc...
}
object Deps {
object Kotlin {
const val platform = "org.jetbrains.kotlin:kotlin-bom:${Versions.kotlin}"
const val gradle_plugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
const val coroutines_core = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:${Versions.coroutines}"
const val serialization = "org.jetbrains.kotlinx:kotlinx-serialization-json:${Versions.serialization}"
}
object Compose {
const val gradle_plugin = "org.jetbrains.compose:compose-gradle-plugin:${Versions.compose}"
}
// etc...
}
File buildSrc/build.gradle.kts:
repositories {
mavenCentral()
gradlePluginPortal()
}
plugins {
`kotlin-dsl` apply true
}
File settings.gradle.kts in project directory have following format:
pluginManagement {
repositories {
jcenter()
gradlePluginPortal()
maven { url = uri("<https://maven.pkg.jetbrains.space/public/p/compose/dev>") }
}
}
include(
":application1",
":application2",
":libs:lib1",
":libs:lib2",
":libs:lib3",
// etc...
)
File build.gradle.kts in project directory:
buildscript {
repositories {
mavenLocal().mavenContent {
includeModule("org.jetbrains.compose", "compose-gradle-plugin")
}
google()
jcenter()
maven("<https://maven.pkg.jetbrains.space/public/p/compose/dev>")
}
dependencies {
classpath("org.jetbrains.compose:compose-gradle-plugin:${Versions.compose}")
classpath(kotlin("gradle-plugin", version = Versions.kotlin))
classpath(kotlin("serialization", version = Versions.kotlin))
}
}
allprojects {
repositories {
mavenLocal()
google()
jcenter()
maven("<https://maven.pkg.jetbrains.space/public/p/compose/dev>")
}
}
subprojects {
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = "1.8"
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
}
Each application has a build.gradle.kts file in its directory:
import org.jetbrains.compose.compose
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
plugins {
kotlin("jvm")
kotlin("plugin.serialization")
id("org.jetbrains.compose")
}
group = "..."
version = "..."
dependencies {
implementation(compose.desktop.currentOs)
implementation(Deps.Kotlin.serialization)
implementation(Deps.Kotlin.coroutines_core)
// etc...
implementation(project(":libs:lib1"))
implementation(project(":libs:lib2"))
implementation(project(":libs:lib3"))
// etc...
}
compose.desktop {
application {
mainClass = "project.application1.MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "Application1"
}
}
}
Each library from "libs" directory has a build.gradle.kts file in its directory:
plugins {
kotlin("jvm")
kotlin("plugin.serialization")
id("org.jetbrains.compose")
}
group = "..."
version = "..."
dependencies {
implementation(compose.desktop.currentOs)
implementation(Deps.Kotlin.serialization)
// etc...
implementation(project(":libs:lib2"))
implementation(project(":libs:lib3"))
}
Or if the library does not depend on Compose:plugins {
kotlin("jvm")
}
group = "..."
version = "..."
kotlin {
dependencies {
implementation(platform(Deps.Kotlin.platform))
// etc...
implementation(project(":libs:lib3"))
}
}
jim
05/28/2021, 3:10 PMThomas
05/29/2021, 2:47 PMjim
05/29/2021, 3:00 PMVadim Kapustin
05/31/2021, 8:59 AMabstract class A<Type1, Type2> {
// ...
}
object C : A<Int, DataClass1> {
// ...
}
This code works fine
But when I add this code:
abstract class B<Type3> : A<Int, Type3> {
// ...
}
object D : B<DataClass2> {
// ...
}
object E : B<DataClass3> {
// ...
}
I get the internal compiler error...Thomas
05/31/2021, 9:51 AMVadim Kapustin
05/31/2021, 10:05 AMabstract class A<Type1, Type2> {
open fun test(key: Type1) : Type2
// ...
}
The error only appeared when I uncommented the overloaded function
abstract class B<Type3> : A<Int, Type3> {
override fun test(key: Int) : Type3 {
// ...
return super.test(key) // !!! The error occurs only when this line appears in the code !!!
}
// ...
}
Thomas
05/31/2021, 10:34 AMVadim Kapustin
05/31/2021, 10:47 AMThomas
05/31/2021, 10:49 AMVadim Kapustin
05/31/2021, 10:58 AMabstract class A<Type1, Type2> {
protected fun makeTest(key: Type1): Type2 {
//...
}
open fun test(key: Type1) : Type2 = makeTest(key)
}
abstract class B<Type3> : A<Int, Type3> {
override fun test(key: Int) : Type3 {
// ...
return makeTest(key) // now this works
}
// ...
}
Thomas
05/31/2021, 11:12 AMVadim Kapustin
05/31/2021, 11:33 AMabstract class AbstractB<Type>(d: Type) : AbstractA<Int, Type>(d) {
override fun test(key: Int): Type {
return super.test(key)
}
}
abstract class AbstractA<Type1, Type2>(var d: Type2) {
open fun test(key: Type1): Type2 = d
}
This code worked with Compose 0.4.0-build190 and Kotlin 1.4.32, but with Compose 0.4.0-build198 and Kotlin 1.4.32 we have compiler errorjim
05/31/2021, 1:15 PMAntoine Lamy
06/10/2021, 8:24 PMjim
06/10/2021, 8:56 PMAntoine Lamy
06/10/2021, 8:59 PMorg.jetbrains.compose
dependency?jim
06/10/2021, 10:37 PMThomas
06/15/2021, 5:43 PM