From f6122ed070e800df73db1ff2fcc5aa002ce9c0e5 Mon Sep 17 00:00:00 2001 From: vmishenev Date: Wed, 16 Aug 2023 22:11:55 +0300 Subject: [PATCH 1/2] Update Dokka to 1.9.10-dev - Use analysis plugin configuration instead of `StdLibAnalysisConfigurationPlugin` - Change SamplesTransformer plugin after Dokka refactoring (cherry picked from commit 5c0c8ed2d508d2daf57067b9cb993b88c106bfd1) --- .../tools/kotlin-stdlib-docs/build.gradle.kts | 3 +- .../kotlin-stdlib-docs/gradle.properties | 2 +- .../build.gradle | 3 +- ... => KotlinWebsiteSampleProviderFactory.kt} | 17 +++++++--- .../kotlinlang/SamplesTransformerPlugin.kt | 16 +++++---- .../build.gradle | 17 ---------- .../kotlinlang/StdLibAnalysisConfiguration.kt | 5 --- .../kotlinlang/StdLibConfigurationPlugin.kt | 33 ------------------- ...rg.jetbrains.dokka.plugability.DokkaPlugin | 1 - .../dokka-version-filter-plugin/build.gradle | 1 - .../kotlinlang/VersionFilterTransformer.kt | 3 +- .../kotlin-stdlib-docs/settings.gradle.kts | 1 - 12 files changed, 27 insertions(+), 75 deletions(-) rename libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/{KotlinWebsiteSamplesTransformer.kt => KotlinWebsiteSampleProviderFactory.kt} (90%) delete mode 100644 libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/build.gradle delete mode 100644 libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/StdLibAnalysisConfiguration.kt delete mode 100644 libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/StdLibConfigurationPlugin.kt delete mode 100644 libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin diff --git a/libraries/tools/kotlin-stdlib-docs/build.gradle.kts b/libraries/tools/kotlin-stdlib-docs/build.gradle.kts index 03dfa1d8c5da8..ca2829635577a 100644 --- a/libraries/tools/kotlin-stdlib-docs/build.gradle.kts +++ b/libraries/tools/kotlin-stdlib-docs/build.gradle.kts @@ -52,7 +52,6 @@ val prepare by tasks.registering { dependencies { dokkaPlugin(project(":plugins:dokka-samples-transformer-plugin")) - dokkaPlugin(project(":plugins:dokka-stdlib-configuration-plugin")) dokkaPlugin(project(":plugins:dokka-version-filter-plugin")) dokkaPlugin("org.jetbrains.dokka:versioning-plugin:$dokka_version") } @@ -81,7 +80,7 @@ fun createStdLibVersionedDocTask(version: String, isLatest: Boolean) = val moduleDirName = "kotlin-stdlib" with(pluginsMapConfiguration) { put("org.jetbrains.dokka.base.DokkaBase" , """{ "mergeImplicitExpectActualDeclarations": "true", "templatesDir": "$templatesDir" }""") - put("org.jetbrains.dokka.kotlinlang.StdLibConfigurationPlugin", """{ "ignoreCommonBuiltIns": "true" }""") + put("org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.CompilerDescriptorAnalysisPlugin", """{ "ignoreCommonBuiltIns": "true" }""") put("org.jetbrains.dokka.versioning.VersioningPlugin" , """{ "version": "$version" }" }""") } if (isLatest) { diff --git a/libraries/tools/kotlin-stdlib-docs/gradle.properties b/libraries/tools/kotlin-stdlib-docs/gradle.properties index 5d4250bef673e..e82d790c64d7e 100644 --- a/libraries/tools/kotlin-stdlib-docs/gradle.properties +++ b/libraries/tools/kotlin-stdlib-docs/gradle.properties @@ -1,3 +1,3 @@ org.gradle.jvmargs=-Xmx6G -dokka_version=1.8.20-dev-213 +dokka_version=1.9.10-dev-230 systemProp.dokka.shouldDisplaySinceKotlin=true \ No newline at end of file diff --git a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/build.gradle b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/build.gradle index 6f6e9b9175ac5..d25053a59f016 100644 --- a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/build.gradle +++ b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/build.gradle @@ -6,9 +6,8 @@ description "Dokka Plugin to transform the samples from stdlib" final String dokka_version = property("dokka_version") dependencies { - implementation "org.jetbrains.dokka:dokka-base:$dokka_version" compileOnly "org.jetbrains.dokka:dokka-core:$dokka_version" - compileOnly "org.jetbrains.dokka:dokka-analysis:$dokka_version" + compileOnly "org.jetbrains.dokka:analysis-kotlin-descriptors:$dokka_version" } kotlin { diff --git a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/KotlinWebsiteSamplesTransformer.kt b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/KotlinWebsiteSampleProviderFactory.kt similarity index 90% rename from libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/KotlinWebsiteSamplesTransformer.kt rename to libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/KotlinWebsiteSampleProviderFactory.kt index 9d5115cd5588d..db6f94767bebe 100644 --- a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/KotlinWebsiteSamplesTransformer.kt +++ b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/KotlinWebsiteSampleProviderFactory.kt @@ -1,3 +1,5 @@ +@file:OptIn(InternalDokkaApi::class) + package org.jetbrains.dokka.kotlinlang import com.intellij.psi.PsiDocumentManager @@ -6,19 +8,24 @@ import com.intellij.psi.PsiElementVisitor import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.impl.source.tree.LeafPsiElement import com.intellij.psi.util.PsiTreeUtil -import org.jetbrains.dokka.base.transformers.pages.samples.SamplesTransformer +import org.jetbrains.dokka.InternalDokkaApi +import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.impl.KotlinSampleProvider +import org.jetbrains.dokka.analysis.kotlin.internal.SampleProvider +import org.jetbrains.dokka.analysis.kotlin.internal.SampleProviderFactory import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.allChildren import org.jetbrains.kotlin.psi.psiUtil.prevLeaf import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.resolve.ImportPath -import org.jetbrains.kotlin.utils.addToStdlib.safeAs import java.io.PrintWriter import java.io.StringWriter -class KotlinWebsiteSamplesTransformer(context: DokkaContext): SamplesTransformer(context) { +class KotlinWebsiteSampleProviderFactory(private val context: DokkaContext) : SampleProviderFactory { + override fun build(): SampleProvider = KotlinWebsiteSampleProvider(context) +} +class KotlinWebsiteSampleProvider(context: DokkaContext): KotlinSampleProvider(context) { private class SampleBuilder : KtTreeVisitorVoid() { val builder = StringBuilder() val text: String @@ -156,7 +163,7 @@ class KotlinWebsiteSamplesTransformer(context: DokkaContext): SamplesTransformer val pw = PrintWriter(sw) it.e.printStackTrace(pw) - this@KotlinWebsiteSamplesTransformer.context.logger.error("${containingFile.name}: (${it.loc}): Exception thrown while converting \n```\n${it.text}\n```\n$sw") + this@KotlinWebsiteSampleProvider.context.logger.error("${containingFile.name}: (${it.loc}): Exception thrown while converting \n```\n${it.text}\n```\n$sw") } return sampleBuilder.text } @@ -165,7 +172,7 @@ class KotlinWebsiteSamplesTransformer(context: DokkaContext): SamplesTransformer override fun processImports(psiElement: PsiElement): String { val psiFile = psiElement.containingFile - return when(val text = psiFile.safeAs()?.importList) { + return when(val text = (psiFile as? KtFile)?.importList) { is KtImportList -> text.let { it.allChildren.filter { it !is KtImportDirective || it.importPath !in importsToIgnore diff --git a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/SamplesTransformerPlugin.kt b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/SamplesTransformerPlugin.kt index a9b03f5f75d5a..f867a2f275362 100644 --- a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/SamplesTransformerPlugin.kt +++ b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-samples-transformer-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/SamplesTransformerPlugin.kt @@ -1,19 +1,23 @@ package org.jetbrains.dokka.kotlinlang -import org.jetbrains.dokka.CoreExtensions -import org.jetbrains.dokka.base.DokkaBase +import org.jetbrains.dokka.InternalDokkaApi +import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.CompilerDescriptorAnalysisPlugin +import org.jetbrains.dokka.analysis.kotlin.internal.InternalKotlinAnalysisPlugin import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.plugability.DokkaPluginApiPreview import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement +import org.jetbrains.dokka.plugability.querySingle class SamplesTransformerPlugin : DokkaPlugin() { - private val dokkaBase by lazy { plugin() } + @OptIn(InternalDokkaApi::class) + private val dokkaKotlinAnalysisPlugin by lazy { plugin() } + @OptIn(InternalDokkaApi::class) + private val dokkaDescriptorAnalysisPlugin by lazy { plugin() } + @OptIn(InternalDokkaApi::class) @Suppress("unused") val kotlinWebsiteSamplesTransformer by extending { - CoreExtensions.pageTransformer providing ::KotlinWebsiteSamplesTransformer override dokkaBase.defaultSamplesTransformer order { - before(dokkaBase.pageMerger) - } + dokkaKotlinAnalysisPlugin.sampleProviderFactory providing ::KotlinWebsiteSampleProviderFactory override dokkaDescriptorAnalysisPlugin.kotlinSampleProviderFactory } @DokkaPluginApiPreview diff --git a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/build.gradle b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/build.gradle deleted file mode 100644 index 31edc097c8c62..0000000000000 --- a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/build.gradle +++ /dev/null @@ -1,17 +0,0 @@ -plugins { - id 'org.jetbrains.kotlin.jvm' -} -description "Dokka Plugin to configure Dokka for stdlib" - -final String dokka_version = property("dokka_version") - -dependencies { - implementation "org.jetbrains.dokka:dokka-base:$dokka_version" - compileOnly "org.jetbrains.dokka:dokka-core:$dokka_version" - compileOnly "org.jetbrains.dokka:dokka-analysis:$dokka_version" -} - -kotlin { - jvmToolchain(8) -} - diff --git a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/StdLibAnalysisConfiguration.kt b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/StdLibAnalysisConfiguration.kt deleted file mode 100644 index 6ac0244cfc5d3..0000000000000 --- a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/StdLibAnalysisConfiguration.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.jetbrains.dokka.kotlinlang - -import org.jetbrains.dokka.plugability.ConfigurableBlock - -data class StdLibAnalysisConfiguration(val ignoreCommonBuiltIns: Boolean) : ConfigurableBlock \ No newline at end of file diff --git a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/StdLibConfigurationPlugin.kt b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/StdLibConfigurationPlugin.kt deleted file mode 100644 index cee34a67529f2..0000000000000 --- a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/StdLibConfigurationPlugin.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.dokka.kotlinlang - -import org.jetbrains.dokka.base.DokkaBase -import org.jetbrains.dokka.plugability.DokkaPlugin -import org.jetbrains.dokka.analysis.DokkaAnalysisConfiguration -import org.jetbrains.dokka.analysis.ProjectKotlinAnalysis -import org.jetbrains.dokka.plugability.DokkaPluginApiPreview -import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement -import org.jetbrains.dokka.plugability.configuration - -class StdLibConfigurationPlugin : DokkaPlugin() { - private val dokkaBase by lazy { plugin() } - - @Suppress("unused") - val stdLibKotlinAnalysis by extending { - dokkaBase.kotlinAnalysis providing { ctx -> - val ignoreCommonBuiltIns = configuration(ctx)?.ignoreCommonBuiltIns ?: false - ProjectKotlinAnalysis( - sourceSets = ctx.configuration.sourceSets, - logger = ctx.logger, - analysisConfiguration = DokkaAnalysisConfiguration(ignoreCommonBuiltIns = ignoreCommonBuiltIns) - ) - } override dokkaBase.defaultKotlinAnalysis - } - - @DokkaPluginApiPreview - override fun pluginApiPreviewAcknowledgement(): PluginApiPreviewAcknowledgement = PluginApiPreviewAcknowledgement -} \ No newline at end of file diff --git a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin deleted file mode 100644 index 98793eca23a5e..0000000000000 --- a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-stdlib-configuration-plugin/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin +++ /dev/null @@ -1 +0,0 @@ -org.jetbrains.dokka.kotlinlang.StdLibConfigurationPlugin \ No newline at end of file diff --git a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-version-filter-plugin/build.gradle b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-version-filter-plugin/build.gradle index 7e57edce545b4..d4aa8e068d890 100644 --- a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-version-filter-plugin/build.gradle +++ b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-version-filter-plugin/build.gradle @@ -8,7 +8,6 @@ final String dokka_version = property("dokka_version") dependencies { implementation "org.jetbrains.dokka:dokka-base:$dokka_version" compileOnly "org.jetbrains.dokka:dokka-core:$dokka_version" - compileOnly "org.jetbrains.dokka:dokka-analysis:$dokka_version" testImplementation 'org.jetbrains.kotlin:kotlin-test'} kotlin { diff --git a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-version-filter-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/VersionFilterTransformer.kt b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-version-filter-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/VersionFilterTransformer.kt index 09ed04c45c471..e27b199e0fe97 100644 --- a/libraries/tools/kotlin-stdlib-docs/plugins/dokka-version-filter-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/VersionFilterTransformer.kt +++ b/libraries/tools/kotlin-stdlib-docs/plugins/dokka-version-filter-plugin/src/main/kotlin/org/jetbrains/dokka/kotlinlang/VersionFilterTransformer.kt @@ -8,7 +8,6 @@ import org.jetbrains.dokka.model.doc.Text import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.plugability.configuration import org.jetbrains.dokka.transformers.documentation.DocumentableTransformer -import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty class VersionFilterTransformer(private val dokkaContext: DokkaContext) : DocumentableTransformer { @@ -120,4 +119,6 @@ class VersionFilterTransformer(private val dokkaContext: DokkaContext) : return documentation[sourceSet]?.children?.find { it is CustomTagWrapper && it.name == "Since Kotlin" } ?.let { (it.children[0] as? Text)?.body?.let { txt -> SinceKotlinVersion(txt) } } } + + inline fun , O> C.ifNotEmpty(body: C.() -> O?): O? = if (isNotEmpty()) this.body() else null } diff --git a/libraries/tools/kotlin-stdlib-docs/settings.gradle.kts b/libraries/tools/kotlin-stdlib-docs/settings.gradle.kts index cd01571402a35..d6df23fc7c442 100644 --- a/libraries/tools/kotlin-stdlib-docs/settings.gradle.kts +++ b/libraries/tools/kotlin-stdlib-docs/settings.gradle.kts @@ -31,5 +31,4 @@ rootProject.name = "kotlin-stdlib-docs" include("kotlin_big") include("plugins") include("plugins:dokka-samples-transformer-plugin") -include("plugins:dokka-stdlib-configuration-plugin") include("plugins:dokka-version-filter-plugin") From c434caa54c53f93dbcf25a4f6baac1ada1ddf7fd Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Tue, 17 Oct 2023 04:37:32 +0200 Subject: [PATCH 2/2] Update Dokka to 1.9.10 --- libraries/tools/kotlin-stdlib-docs/gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-stdlib-docs/gradle.properties b/libraries/tools/kotlin-stdlib-docs/gradle.properties index e82d790c64d7e..94cfd0486476d 100644 --- a/libraries/tools/kotlin-stdlib-docs/gradle.properties +++ b/libraries/tools/kotlin-stdlib-docs/gradle.properties @@ -1,3 +1,3 @@ org.gradle.jvmargs=-Xmx6G -dokka_version=1.9.10-dev-230 +dokka_version=1.9.10 systemProp.dokka.shouldDisplaySinceKotlin=true \ No newline at end of file