Skip to content

Commit

Permalink
Introduce empty method to mark api as experimental
Browse files Browse the repository at this point in the history
  • Loading branch information
vmishenev committed Jan 31, 2023
1 parent 13ef584 commit 3439967
Show file tree
Hide file tree
Showing 23 changed files with 59 additions and 42 deletions.
3 changes: 0 additions & 3 deletions core/src/main/kotlin/DokkaGenerator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import kotlinx.coroutines.Dispatchers
import org.jetbrains.dokka.generation.GracefulGenerationExit
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.utilities.DokkaLogger

/**
Expand All @@ -20,7 +19,6 @@ class DokkaGenerator(
private val logger: DokkaLogger
) {

@OptIn(PreviewDokkaPluginApi::class)
fun generate() = timed(logger) {
report("Initializing plugins")
val context = initializePlugins(configuration, logger)
Expand All @@ -38,7 +36,6 @@ class DokkaGenerator(
finalizeCoroutines()
}.dump("\n\n === TIME MEASUREMENT ===\n")

@OptIn(PreviewDokkaPluginApi::class)
fun initializePlugins(
configuration: DokkaConfiguration,
logger: DokkaLogger,
Expand Down
2 changes: 0 additions & 2 deletions core/src/main/kotlin/plugability/DokkaContext.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
@file:OptIn(PreviewDokkaPluginApi::class)

package org.jetbrains.dokka.plugability

import org.jetbrains.dokka.DokkaConfiguration
Expand Down
1 change: 0 additions & 1 deletion core/src/main/kotlin/plugability/DokkaJavaPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ data class ExtensionBuilder<T: Any> internal constructor(
fun name(name: String) = copy(name = name)
}

@OptIn(PreviewDokkaPluginApi::class)
abstract class DokkaJavaPlugin: DokkaPlugin() {

fun <T: DokkaPlugin> plugin(clazz: Class<T>): T =
Expand Down
6 changes: 2 additions & 4 deletions core/src/main/kotlin/plugability/DokkaPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,15 @@ import kotlin.reflect.KProperty1
@Retention(AnnotationRetention.BINARY)
annotation class PreviewDokkaPluginApi

@PreviewDokkaPluginApi
abstract class DokkaPlugin {
private val extensionDelegates = mutableListOf<KProperty<*>>()
private val unsafePlugins = mutableListOf<Lazy<Extension<*, *, *>>>()

@PublishedApi
internal var context: DokkaContext? = null

@PreviewDokkaPluginApi
protected abstract fun previewDokkaPluginApiEmptyMethod()
protected inline fun <reified T : DokkaPlugin> plugin(): T = context?.plugin(T::class) ?: throwIllegalQuery()

protected fun <T : Any> extensionPoint() = ReadOnlyProperty<DokkaPlugin, ExtensionPoint<T>> { thisRef, property ->
Expand Down Expand Up @@ -66,18 +67,15 @@ interface WithUnsafeExtensionSuppression {

interface ConfigurableBlock

@OptIn(PreviewDokkaPluginApi::class)
inline fun <reified P : DokkaPlugin, reified E : Any> P.query(extension: P.() -> ExtensionPoint<E>): List<E> =
context?.let { it[extension()] } ?: throwIllegalQuery()

@OptIn(PreviewDokkaPluginApi::class)
inline fun <reified P : DokkaPlugin, reified E : Any> P.querySingle(extension: P.() -> ExtensionPoint<E>): E =
context?.single(extension()) ?: throwIllegalQuery()

fun throwIllegalQuery(): Nothing =
throw IllegalStateException("Querying about plugins is only possible with dokka context initialised")

@OptIn(PreviewDokkaPluginApi::class)
inline fun <reified T : DokkaPlugin, reified R : ConfigurableBlock> configuration(context: DokkaContext): R? =
context.configuration.pluginsConfiguration.firstOrNull { it.fqPluginName == T::class.qualifiedName }
?.let { configuration ->
Expand Down
3 changes: 0 additions & 3 deletions core/test-api/src/main/kotlin/testApi/context/MockContext.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
@file:OptIn(PreviewDokkaPluginApi::class)

package org.jetbrains.dokka.testApi.context

import org.jetbrains.dokka.DokkaConfiguration
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.ExtensionPoint
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.utilities.DokkaConsoleLogger
import org.jetbrains.dokka.utilities.LoggingLevel
import kotlin.reflect.KClass
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
@file:OptIn(PreviewDokkaPluginApi::class)

package org.jetbrains.dokka.testApi.testRunner

import com.intellij.openapi.application.PathManager
Expand All @@ -8,7 +6,6 @@ import org.jetbrains.dokka.model.DModule
import org.jetbrains.dokka.pages.RootPageNode
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.testApi.logger.TestLogger
import org.jetbrains.dokka.utilities.DokkaLogger
import org.junit.rules.TemporaryFolder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import org.jetbrains.dokka.templates.TemplatingPlugin
import org.jetbrains.dokka.transformers.pages.PageCreator
import org.jetbrains.dokka.transformers.pages.PageTransformer

@OptIn(PreviewDokkaPluginApi::class)
class AllModulesPagePlugin : DokkaPlugin() {

val partialLocationProviderFactory by extensionPoint<LocationProviderFactory>()
Expand Down Expand Up @@ -47,4 +46,8 @@ class AllModulesPagePlugin : DokkaPlugin() {
val multiModuleLinkResolver by extending {
externalModuleLinkResolver providing ::DefaultExternalModuleLinkResolver
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ import org.jetbrains.dokka.base.DokkaBase
import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi

@OptIn(PreviewDokkaPluginApi::class)
class AndroidDocumentationPlugin : DokkaPlugin() {
private val dokkaBase by lazy { plugin<DokkaBase>() }

val suppressedByHideTagDocumentableFilter by extending {
dokkaBase.preMergeDocumentableTransformer providing ::HideTagDocumentableFilter order { before(dokkaBase.emptyPackagesFilter) }
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,12 @@ import org.jetbrains.dokka.model.DModule
import org.jetbrains.dokka.pages.RootPageNode
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.testApi.logger.TestLogger
import org.jetbrains.dokka.testApi.testRunner.*
import org.jetbrains.dokka.utilities.DokkaConsoleLogger
import org.jetbrains.dokka.utilities.DokkaLogger
import org.jetbrains.dokka.utilities.LoggingLevel

@OptIn(PreviewDokkaPluginApi::class)
class BaseDokkaTestGenerator(
configuration: DokkaConfiguration,
logger: DokkaLogger,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import java.util.*

@OptIn(PreviewDokkaPluginApi::class)
class TestOutputWriterPlugin(failOnOverwrite: Boolean = true) : DokkaPlugin() {
val writer = TestOutputWriter(failOnOverwrite)

Expand All @@ -17,6 +16,10 @@ class TestOutputWriterPlugin(failOnOverwrite: Boolean = true) : DokkaPlugin() {
with writer
override dokkaBase.fileWriter)
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}

class TestOutputWriter(private val failOnOverwrite: Boolean = true) : OutputWriter {
Expand Down
5 changes: 4 additions & 1 deletion plugins/base/src/main/kotlin/DokkaBase.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.transformers.documentation.PreMergeDocumentableTransformer
import org.jetbrains.dokka.transformers.pages.PageTransformer

@OptIn(PreviewDokkaPluginApi::class)
class DokkaBase : DokkaPlugin() {

val preMergeDocumentableTransformer by extensionPoint<PreMergeDocumentableTransformer>()
Expand Down Expand Up @@ -290,4 +289,8 @@ class DokkaBase : DokkaPlugin() {
com.intellij.openapi.diagnostic.Logger.setFactory(NoopIntellijLoggerFactory())
}
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}
5 changes: 5 additions & 0 deletions plugins/base/src/test/kotlin/model/InheritorsTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import org.jetbrains.dokka.model.DInterface
import org.jetbrains.dokka.model.doc.P
import org.jetbrains.dokka.model.doc.Text
import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import utils.AbstractModelTest
Expand Down Expand Up @@ -163,6 +164,10 @@ class InheritorsTest : AbstractModelTest("/src/main/kotlin/inheritors/Test.kt",
)
} override dokkaBase.defaultKotlinAnalysis
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}
@Test
fun `should inherit docs for stdLib #2638`() {
Expand Down
8 changes: 0 additions & 8 deletions plugins/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

subprojects {
apply {
Expand Down Expand Up @@ -28,11 +27,4 @@ subprojects {
showStackTraces = true
}
}

val compileTestKotlin: KotlinCompile by tasks
compileTestKotlin.kotlinOptions {
freeCompilerArgs = freeCompilerArgs + listOf(
"-opt-in=org.jetbrains.dokka.plugability.PreviewDokkaPluginApi"
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.templates.TemplatingPlugin

@OptIn(PreviewDokkaPluginApi::class)
class GfmTemplateProcessingPlugin : DokkaPlugin() {

private val allModulesPagePlugin by lazy { plugin<AllModulesPagePlugin>() }
Expand All @@ -32,4 +31,8 @@ class GfmTemplateProcessingPlugin : DokkaPlugin() {
val gfmPartialLocationProvider by extending {
allModulesPagePlugin.partialLocationProviderFactory providing MarkdownLocationProvider::Factory override allModulesPagePlugin.baseLocationProviderFactory
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.renderers.PostAction
import org.jetbrains.dokka.transformers.pages.PageTransformer

@OptIn(PreviewDokkaPluginApi::class)
class GfmPlugin : DokkaPlugin() {

val gfmPreprocessors by extensionPoint<PageTransformer>()
Expand Down Expand Up @@ -52,4 +51,8 @@ class GfmPlugin : DokkaPlugin() {
}
}
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.renderers.PostAction
import org.jetbrains.dokka.transformers.pages.PageTransformer

@OptIn(PreviewDokkaPluginApi::class)
class JavadocPlugin : DokkaPlugin() {

val dokkaBasePlugin by lazy { plugin<DokkaBase>() }
Expand Down Expand Up @@ -96,5 +95,9 @@ class JavadocPlugin : DokkaPlugin() {
}
}
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import org.jetbrains.dokka.jekyll.JekyllPlugin
import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi

@OptIn(PreviewDokkaPluginApi::class)
class JekyllTemplateProcessingPlugin : DokkaPlugin() {

private val allModulesPagePlugin by lazy { plugin<AllModulesPagePlugin>() }
Expand All @@ -31,4 +30,8 @@ class JekyllTemplateProcessingPlugin : DokkaPlugin() {
gfmTemplatingPlugin.gfmPartialLocationProvider
)
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}
5 changes: 4 additions & 1 deletion plugins/jekyll/src/main/kotlin/JekyllPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import org.jetbrains.dokka.plugability.*
import org.jetbrains.dokka.renderers.PostAction
import org.jetbrains.dokka.transformers.pages.PageTransformer

@OptIn(PreviewDokkaPluginApi::class)
class JekyllPlugin : DokkaPlugin() {

val jekyllPreprocessors by extensionPoint<PageTransformer>()
Expand Down Expand Up @@ -57,6 +56,10 @@ class JekyllPlugin : DokkaPlugin() {
}
}
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}

class JekyllRenderer(
Expand Down
5 changes: 4 additions & 1 deletion plugins/kotlin-as-java/src/main/kotlin/KotlinAsJavaPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.renderers.PostAction

@OptIn(PreviewDokkaPluginApi::class)
class KotlinAsJavaPlugin : DokkaPlugin() {
val kotlinAsJavaDocumentableTransformer by extending {
CoreExtensions.documentableTransformer with KotlinAsJavaDocumentableTransformer()
Expand Down Expand Up @@ -40,4 +39,8 @@ class KotlinAsJavaPlugin : DokkaPlugin() {
}
}
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}
5 changes: 4 additions & 1 deletion plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import org.jetbrains.dokka.plugability.DokkaPlugin
import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.transformers.pages.PageTransformer

@OptIn(PreviewDokkaPluginApi::class)
class MathjaxPlugin : DokkaPlugin() {
val transformer by extending {
CoreExtensions.pageTransformer with MathjaxTransformer
Expand All @@ -25,6 +24,10 @@ class MathjaxPlugin : DokkaPlugin() {
before(plugin<DokkaBase>().sinceKotlinTagContentProvider)
}
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}

private const val ANNOTATION = "usesMathJax"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import templates.ReplaceVersionCommandHandler
import templates.SourcesetDependencyProcessingStrategy

@Suppress("unused")
@OptIn(PreviewDokkaPluginApi::class)
class TemplatingPlugin : DokkaPlugin() {

val submoduleTemplateProcessor by extensionPoint<SubmoduleTemplateProcessor>()
Expand Down Expand Up @@ -72,4 +71,8 @@ class TemplatingPlugin : DokkaPlugin() {
val replaceVersionCommandHandler by extending {
directiveBasedCommandHandlers providing ::ReplaceVersionCommandHandler
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import org.jetbrains.dokka.plugability.PreviewDokkaPluginApi
import org.jetbrains.dokka.plugability.configuration
import org.jetbrains.dokka.templates.TemplatingPlugin

@OptIn(PreviewDokkaPluginApi::class)
class VersioningPlugin : DokkaPlugin() {

val versioningStorage by extensionPoint<VersioningStorage>()
Expand Down Expand Up @@ -51,4 +50,8 @@ class VersioningPlugin : DokkaPlugin() {
val previousDocumentationCopyPostAction by extending {
postActions providing ::DefaultPreviousDocumentationCopyPostAction applyIf { !delayTemplateSubstitution }
}

@PreviewDokkaPluginApi
override fun previewDokkaPluginApiEmptyMethod() {
}
}
Loading

0 comments on commit 3439967

Please sign in to comment.