aboutsummaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/kotlin/Formats/StructuredFormatService.kt20
-rw-r--r--core/src/test/kotlin/format/MarkdownFormatTest.kt27
2 files changed, 34 insertions, 13 deletions
diff --git a/core/src/main/kotlin/Formats/StructuredFormatService.kt b/core/src/main/kotlin/Formats/StructuredFormatService.kt
index a7b696eb..419e5eeb 100644
--- a/core/src/main/kotlin/Formats/StructuredFormatService.kt
+++ b/core/src/main/kotlin/Formats/StructuredFormatService.kt
@@ -368,11 +368,19 @@ abstract class StructuredOutputBuilder(val to: StringBuilder,
}
}
- protected fun platformsOfItems(items: List<DocumentationNode>): Set<String> =
- items.foldRight(items.first().platformsToShow.toSet()) {
- node, platforms ->
- platforms.intersect(node.platformsToShow)
+ protected fun platformsOfItems(items: List<DocumentationNode>): Set<String> {
+ val platforms = items.asSequence().map {
+ when (it.kind) {
+ NodeKind.ExternalClass, NodeKind.Package, NodeKind.Module -> platformsOfItems(it.members)
+ else -> it.platformsToShow.toSet()
}
+ }
+ // Calculating common platforms for items
+ return platforms.fold(platforms.first()) {
+ result, platforms ->
+ result.intersect(platforms)
+ }
+ }
val DocumentationNode.platformsToShow: List<String>
get() = platforms.let { if (it.containsAll(impliedPlatforms)) it - impliedPlatforms else it }
@@ -498,7 +506,9 @@ abstract class StructuredOutputBuilder(val to: StringBuilder,
appendIndexRow(platforms) {
appendTableCell {
appendLink(memberLocation)
- appendPlatforms(platforms)
+ if (members.singleOrNull()?.kind != NodeKind.ExternalClass) {
+ appendPlatforms(platforms)
+ }
}
appendTableCell {
val breakdownBySummary = members.groupBy { it.summary }
diff --git a/core/src/test/kotlin/format/MarkdownFormatTest.kt b/core/src/test/kotlin/format/MarkdownFormatTest.kt
index cdb55cba..04c2dc62 100644
--- a/core/src/test/kotlin/format/MarkdownFormatTest.kt
+++ b/core/src/test/kotlin/format/MarkdownFormatTest.kt
@@ -288,17 +288,20 @@ class MarkdownFormatTest {
}
}
- @Test fun multiplePlatformsPackagePlatformFromMembersIndex() {
- val module = buildMultiplePlatforms("multiplatform/packagePlatformsFromMembers")
- verifyModelOutput(module, ".md", "testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.index.kt") {
- model, output ->
- MarkdownFormatService(InMemoryLocationService, KotlinLanguageService(), listOf())
- .createOutputBuilder(output, tempLocation).appendNodes(listOf(model))
- }
+ @Test fun packagePlatformsWithExtExtensions() {
+ val path = "multiplatform/packagePlatformsWithExtExtensions"
+ val module = DocumentationModule("test")
+ val options = DocumentationOptions("", "html", generateIndexPages = false)
+ appendDocumentation(module, contentRootFromPath("testdata/format/$path/jvm.kt"), defaultPlatforms = listOf("JVM"), withKotlinRuntime = true, options = options)
+ verifyMultiplatformIndex(module, path)
+ verifyMultiplatformPackage(module, path)
}
@Test fun multiplePlatformsPackagePlatformFromMembers() {
- verifyMultiplatformPackage(buildMultiplePlatforms("multiplatform/packagePlatformsFromMembers"), "multiplatform/packagePlatformsFromMembers")
+ val path = "multiplatform/packagePlatformsFromMembers"
+ val module = buildMultiplePlatforms(path)
+ verifyMultiplatformIndex(module, path)
+ verifyMultiplatformPackage(module, path)
}
private fun buildMultiplePlatforms(path: String): DocumentationModule {
@@ -315,6 +318,14 @@ class MarkdownFormatTest {
}
}
+ private fun verifyMultiplatformIndex(module: DocumentationModule, path: String) {
+ verifyModelOutput(module, ".md", "testdata/format/$path/multiplatform.index.kt") {
+ model, output ->
+ MarkdownFormatService(InMemoryLocationService, KotlinLanguageService(), listOf())
+ .createOutputBuilder(output, tempLocation).appendNodes(listOf(model))
+ }
+ }
+
@Test fun blankLineInsideCodeBlock() {
verifyMarkdownNode("blankLineInsideCodeBlock")
}