diff --git a/dokka-subprojects/analysis-kotlin-api/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/sample/SampleAnalysisEnvironmentCreator.kt b/dokka-subprojects/analysis-kotlin-api/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/sample/SampleAnalysisEnvironmentCreator.kt index c9d094c69c..43f3d92738 100644 --- a/dokka-subprojects/analysis-kotlin-api/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/sample/SampleAnalysisEnvironmentCreator.kt +++ b/dokka-subprojects/analysis-kotlin-api/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/sample/SampleAnalysisEnvironmentCreator.kt @@ -4,6 +4,7 @@ package org.jetbrains.dokka.analysis.kotlin.sample +import org.jetbrains.dokka.DelicateDokkaApi import org.jetbrains.dokka.analysis.kotlin.KotlinAnalysisPlugin /** @@ -49,5 +50,6 @@ public interface SampleAnalysisEnvironmentCreator { * * @return a new instance of [SampleAnalysisEnvironment] */ + @DelicateDokkaApi public fun create(): SampleAnalysisEnvironment } diff --git a/dokka-subprojects/analysis-kotlin-descriptors-compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/impl/DescriptorSampleAnalysisEnvironment.kt b/dokka-subprojects/analysis-kotlin-descriptors-compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/impl/DescriptorSampleAnalysisEnvironment.kt index cf29c0cc72..6f5a065cda 100644 --- a/dokka-subprojects/analysis-kotlin-descriptors-compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/impl/DescriptorSampleAnalysisEnvironment.kt +++ b/dokka-subprojects/analysis-kotlin-descriptors-compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/impl/DescriptorSampleAnalysisEnvironment.kt @@ -10,6 +10,7 @@ import com.intellij.psi.PsiElementVisitor import com.intellij.psi.impl.source.tree.LeafPsiElement import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runBlocking +import org.jetbrains.dokka.DelicateDokkaApi import org.jetbrains.dokka.DokkaConfiguration import org.jetbrains.dokka.analysis.kotlin.KotlinAnalysisPlugin import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.CompilerDescriptorAnalysisPlugin @@ -32,7 +33,6 @@ import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor import org.jetbrains.kotlin.resolve.source.KotlinSourceElement import org.jetbrains.kotlin.utils.addToStdlib.applyIf -import java.io.Closeable internal class DescriptorSampleAnalysisEnvironmentCreator( private val context: DokkaContext, @@ -54,8 +54,8 @@ internal class DescriptorSampleAnalysisEnvironmentCreator( } } + @OptIn(DokkaPluginApiPreview::class, DelicateDokkaApi::class) override fun create(): SampleAnalysisEnvironment { - @OptIn(DokkaPluginApiPreview::class) return DescriptorSampleAnalysisEnvironment( kdocFinder = descriptorAnalysisPlugin.querySingle { kdocFinder }, kotlinAnalysis = SamplesKotlinAnalysis( diff --git a/dokka-subprojects/analysis-kotlin-symbols/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/symbols/services/SymbolSampleAnalysisEnvironment.kt b/dokka-subprojects/analysis-kotlin-symbols/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/symbols/services/SymbolSampleAnalysisEnvironment.kt index f5b7b59f5f..2c9457757f 100644 --- a/dokka-subprojects/analysis-kotlin-symbols/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/symbols/services/SymbolSampleAnalysisEnvironment.kt +++ b/dokka-subprojects/analysis-kotlin-symbols/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/symbols/services/SymbolSampleAnalysisEnvironment.kt @@ -10,6 +10,7 @@ import com.intellij.psi.PsiElementVisitor import com.intellij.psi.impl.source.tree.LeafPsiElement import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runBlocking +import org.jetbrains.dokka.DelicateDokkaApi import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet import org.jetbrains.dokka.analysis.kotlin.KotlinAnalysisPlugin import org.jetbrains.dokka.analysis.kotlin.sample.SampleAnalysisEnvironment @@ -50,6 +51,7 @@ internal class SymbolSampleAnalysisEnvironmentCreator( } } + @OptIn(DelicateDokkaApi::class) override fun create(): SampleAnalysisEnvironment { return SymbolSampleAnalysisEnvironment( samplesKotlinAnalysis = SamplesKotlinAnalysis( diff --git a/dokka-subprojects/core/api/dokka-core.api b/dokka-subprojects/core/api/dokka-core.api index d286915f4a..9468661de7 100644 --- a/dokka-subprojects/core/api/dokka-core.api +++ b/dokka-subprojects/core/api/dokka-core.api @@ -38,6 +38,9 @@ public final class org/jetbrains/dokka/DefaultExternalLinksKt { public static final fun kotlinStdlib (Lorg/jetbrains/dokka/DokkaConfiguration$ExternalDocumentationLink$Companion;)Lorg/jetbrains/dokka/ExternalDocumentationLinkImpl; } +public abstract interface annotation class org/jetbrains/dokka/DelicateDokkaApi : java/lang/annotation/Annotation { +} + public abstract interface class org/jetbrains/dokka/DokkaBootstrap { public abstract fun configure (Ljava/lang/String;Ljava/util/function/BiConsumer;)V public abstract fun generate ()V diff --git a/dokka-subprojects/core/src/main/kotlin/org/jetbrains/dokka/DelicateDokkaApi.kt b/dokka-subprojects/core/src/main/kotlin/org/jetbrains/dokka/DelicateDokkaApi.kt new file mode 100644 index 0000000000..150d7fd8e9 --- /dev/null +++ b/dokka-subprojects/core/src/main/kotlin/org/jetbrains/dokka/DelicateDokkaApi.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package org.jetbrains.dokka + +/** + * Marks declarations in the Dokka that are **delicate** — + * they have limited use-case and shall be used with care in general code. + * Any use of a delicate declaration has to be carefully reviewed to make sure it is + * properly used and does not create problems like memory and resource leaks. + * Carefully read documentation of any declaration marked as `DelicateDokkaApi`. + */ +@RequiresOptIn( + level = RequiresOptIn.Level.WARNING, + message = "This is a delicate API and its use requires care." + + " Make sure you fully read and understand documentation of the declaration that is marked as a delicate API." +) +@Retention(AnnotationRetention.BINARY) +public annotation class DelicateDokkaApi