Skip to content
This repository was archived by the owner on Jan 28, 2025. It is now read-only.
This repository was archived by the owner on Jan 28, 2025. It is now read-only.

Support inner classes #40

@atollk

Description

@atollk

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions