It seems like references to inner classes are just replaced by references to the outermost class instead, which of course breaks the code.
@KustomExport
data class A(val b: B) {
data class B(val x: Int)
}
generates
@JsExport
public class A(
b: CommonA,
) {
internal lateinit var common: CommonA
init {
if (b != dynamicNull) {
common = CommonA(
b = b,
)
}
}
public val b: CommonA
get() = common.b
@Suppress("UNNECESSARY_SAFE_CALL")
internal constructor(common: CommonA) : this(b = dynamicNull.unsafeCast<CommonA>()) {
this.common = common
}
}
public fun CommonA.exportA(): A = A(this)
public fun A.importA(): CommonA = this.common
Workaround: Extract the inner classes to top level classes