Skip to content

Commit 829ca18

Browse files
committed
[K2] Fix sample
Fallback to default roots of the source set even if sample roots are assigned
1 parent 6fbc222 commit 829ca18

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

dokka-subprojects/analysis-kotlin-api/src/test/kotlin/org/jetbrains/dokka/analysis/test/sample/SampleAnalysisTest.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ class SampleAnalysisTest {
7575
}
7676

7777
@Test
78-
@Tag("onlyDescriptors") // TODO #3359
7978
fun `should resolve a valid sample if set via the additionalSourceRoots option`() {
8079
val testProject = kotlinJvmTestProject {
8180
dokkaConfiguration {
@@ -135,7 +134,6 @@ class SampleAnalysisTest {
135134
}
136135

137136
@Test
138-
@Tag("onlyDescriptors") // TODO #3359
139137
fun `should resolve a valid sample function that exists in the main source set`() {
140138
val testProject = kotlinJvmTestProject {
141139
ktFile("org/jetbrains/dokka/test/MyKotlinFile.kt") {
@@ -366,7 +364,6 @@ class SampleAnalysisTest {
366364
}
367365

368366
@Test
369-
@Tag("onlyDescriptors") // TODO #3359
370367
fun `should filter out empty import statement lines`() {
371368
val testProject = kotlinJvmTestProject {
372369
ktFile("org/jetbrains/dokka/test/MyKotlinFile.kt") {
@@ -403,7 +400,6 @@ class SampleAnalysisTest {
403400
}
404401

405402
@Test
406-
@Tag("onlyDescriptors") // TODO #3359
407403
fun `should return an empty list of imports if sample file has none`() {
408404
val testProject = kotlinJvmTestProject {
409405
ktFile("org/jetbrains/dokka/test/MyKotlinFile.kt") {
@@ -430,7 +426,6 @@ class SampleAnalysisTest {
430426
}
431427

432428
@Test
433-
@Tag("onlyDescriptors") // TODO #3359
434429
fun `should filter out leading and trailing line breaks`() {
435430
val testProject = kotlinJvmTestProject {
436431
ktFile("org/jetbrains/dokka/test/MyKotlinFile.kt") {
@@ -459,7 +454,6 @@ class SampleAnalysisTest {
459454
}
460455

461456
@Test
462-
@Tag("onlyDescriptors") // TODO #3359
463457
fun `should filter out trailing whitespace`() {
464458
val testProject = kotlinJvmTestProject {
465459
ktFile("org/jetbrains/dokka/test/MyKotlinFile.kt") {

dokka-subprojects/analysis-kotlin-symbols/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/symbols/services/SymbolSampleAnalysisEnvironment.kt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,27 @@ private class SymbolSampleAnalysisEnvironment(
7878
return SampleSnippet(imports, body)
7979
}
8080

81+
// copy-pasted from StdLib 1.5
82+
private inline fun <T, R : Any> Iterable<T>.firstNotNullOfOrNull(transform: (T) -> R?): R? {
83+
for (element in this) {
84+
val result = transform(element)
85+
if (result != null) {
86+
return result
87+
}
88+
}
89+
return null
90+
}
91+
8192
private fun findPsiElement(sourceSet: DokkaSourceSet, fqLink: String): PsiElement? {
82-
val ktSourceModule = samplesKotlinAnalysis.getModuleOrNull(sourceSet)
83-
?: projectKotlinAnalysis.getModule(sourceSet)
93+
// fallback to default roots of the source set even if sample roots are assigned
94+
val ktSourceModules =
95+
listOfNotNull(samplesKotlinAnalysis.getModuleOrNull(sourceSet), projectKotlinAnalysis.getModule(sourceSet))
8496

85-
return analyze(ktSourceModule) {
86-
resolveKDocTextLinkSymbol(fqLink)
87-
?.sourcePsiSafe()
97+
return ktSourceModules.firstNotNullOfOrNull { ktSourceModule ->
98+
analyze(ktSourceModule) {
99+
resolveKDocTextLinkSymbol(fqLink)
100+
?.sourcePsiSafe()
101+
}
88102
}
89103
}
90104

0 commit comments

Comments
 (0)