Skip to content

Switch cases with where clauses not translated properly #57

Description

@angelolloqui

In Swift, switch cases can contain where clauses like the following:

switch exception {
case .generic(let error) where error != nil:
    trackError(name: "generic", message: error!)
default:
    trackError(name: "generic", message: R.string.localizable.generic_error())
}

Currently, SwiftKotlin generates:

when (exception) {
    .generic where error != null -> trackError(name = "generic", message = error!!)
    else -> trackError(name = "generic", message = R.string.localizable.generic_error())
}

But that is incorrect Kotlin. It should instead remove the variable from the when and use expressions for the cases. Like:

when {
    exception is Exception.generic && error != null -> trackError(name = "generic", message = error!!)
    else -> trackError(name = "generic", message = R.string.localizable.generic_error())
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions