Skip to content

Commit c3cb6a6

Browse files
committed
Fix bad unit render
1 parent 29d5cbc commit c3cb6a6

File tree

2 files changed

+31
-6
lines changed

2 files changed

+31
-6
lines changed

dokka-subprojects/plugin-kotlin-as-java/src/main/kotlin/org/jetbrains/dokka/kotlinAsJava/converters/KotlinToJavaConverter.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import org.jetbrains.dokka.plugability.DokkaContext
1616
import org.jetbrains.dokka.plugability.plugin
1717
import org.jetbrains.dokka.plugability.querySingle
1818
import org.jetbrains.dokka.analysis.kotlin.internal.InternalKotlinAnalysisPlugin
19+
import org.jetbrains.dokka.links.DriOfUnit
1920

2021
public val jvmNameProvider: JvmNameProvider = JvmNameProvider()
2122
internal const val OBJECT_INSTANCE_NAME = "INSTANCE"
@@ -206,7 +207,7 @@ public class KotlinToJavaConverter(
206207
return copy(
207208
dri = dri.copy(classNames = containingClassName, callable = dri.callable?.copy(name = newName)),
208209
name = newName,
209-
type = type.asJava(),
210+
type = type.asJava(unitAsVoid = true),
210211
modifier = if (modifier.all { (_, v) -> v is KotlinModifier.Final } && isConstructor)
211212
sourceSets.associateWith { JavaModifier.Empty }
212213
else sourceSets.associateWith { modifier.values.first() },
@@ -338,12 +339,16 @@ public class KotlinToJavaConverter(
338339
is Bound -> asJava()
339340
}
340341

341-
private fun Bound.asJava(): Bound = when (this) {
342+
private fun Bound.asJava(unitAsVoid: Boolean = false): Bound = when (this) {
342343
is TypeParameter -> copy(dri.possiblyAsJava())
343-
is GenericTypeConstructor -> copy(
344-
dri = dri.possiblyAsJava(),
345-
projections = projections.map { it.asJava() }
346-
)
344+
is GenericTypeConstructor -> if (unitAsVoid && dri == DriOfUnit) {
345+
Void
346+
} else {
347+
copy(
348+
dri = dri.possiblyAsJava(),
349+
projections = projections.map { it.asJava() }
350+
)
351+
}
347352

348353
is FunctionalTypeConstructor -> copy(
349354
dri = dri.possiblyAsJava(),

dokka-subprojects/plugin-kotlin-as-java/src/test/kotlin/kotlinAsJavaPlugin/KotlinAsJavaSignatureTest.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,26 @@ class KotlinAsJavaSignatureTest : BaseAbstractTest() {
6363
}
6464
}
6565

66+
@Test
67+
fun `unit displayed as void`() {
68+
val source = source("fun returnsUnit(): Unit {}")
69+
val writerPlugin = TestOutputWriterPlugin()
70+
71+
testInline(
72+
source,
73+
configuration,
74+
pluginOverrides = listOf(writerPlugin)
75+
) {
76+
renderingStage = { _, _ ->
77+
val signature = writerPlugin.writer.renderedContent("root/kotlinAsJavaPlugin/-test-kt/returns-unit.html").firstSignature()
78+
signature.match(
79+
"public final static void ", A("returnsUnit"), "()",
80+
ignoreSpanWithTokenStyle = true
81+
)
82+
}
83+
}
84+
}
85+
6686
@Test
6787
fun `should display annotations`() {
6888
val writerPlugin = TestOutputWriterPlugin()

0 commit comments

Comments
 (0)