-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
Short of using an import alias I wasn't able to make the following work in a KMP project that has the JVM as one of its targets:
import de.cketti.codepoints.deluxe.CodePoint
import de.cketti.codepoints.deluxe.codePointAt
fun main() {
val stringBuilder = StringBuilder().append("a")
// Type mismatch: inferred type is Int but CodePoint was expected
val codePoint: CodePoint = stringBuilder.codePointAt(0)
}It looked fine in the IDE, but failed when compiling the JVM project.
Explicitly adding a StringBuilder extension function with the @kotlin.internal.HidesMembers annotation din't work either.
@file:Suppress(
"INVISIBLE_MEMBER",
"INVISIBLE_REFERENCE",
"EXTENSION_SHADOWED_BY_MEMBER",
"KotlinRedundantDiagnosticSuppress",
)
package separate.package.to.avoid.name.conflicts
import de.cketti.codepoints.deluxe.CodePoint
import de.cketti.codepoints.deluxe.codePointAt
@kotlin.internal.HidesMembers
fun StringBuilder.codePointAt(index: Int): CodePoint {
return (this as CharSequence).codePointAt(index)
}Changing the names of the extension functions would avoid this problem. The question is what names to chose.
Metadata
Metadata
Assignees
Labels
No labels