aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsebastian.sellmair <sebastian.sellmair@jetbrains.com>2020-06-30 23:06:03 +0200
committerSebastian Sellmair <34319766+sellmair@users.noreply.github.com>2020-07-06 17:59:15 +0200
commitb0e8622f374f6499058b0f083367b4a54512b702 (patch)
tree0fa641dc26bf1e7ed6497ee2340999e8ecc505ad
parentb0b418334535adc60ee80c3df1b2293dfcaad071 (diff)
downloaddokka-b0e8622f374f6499058b0f083367b4a54512b702.tar.gz
dokka-b0e8622f374f6499058b0f083367b4a54512b702.tar.bz2
dokka-b0e8622f374f6499058b0f083367b4a54512b702.zip
Enforce workspace unique SourceSetID
-rw-r--r--build.gradle.kts4
-rw-r--r--core/src/main/kotlin/DokkaBootstrapImpl.kt5
-rw-r--r--core/src/main/kotlin/DokkaGenerator.kt2
-rw-r--r--core/src/main/kotlin/DokkaMultimoduleBootstrapImpl.kt5
-rw-r--r--core/src/main/kotlin/configuration.kt27
-rw-r--r--core/src/main/kotlin/defaultConfiguration.kt22
-rw-r--r--core/src/main/kotlin/plugability/DokkaPlugin.kt2
-rw-r--r--kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinAnalysis.kt5
-rw-r--r--plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt22
-rw-r--r--plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt3
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt12
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/EmptyPackagesFilterTransformer.kt6
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/ModuleAndPackageDocumentationTransformer.kt4
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/samples/SamplesTransformer.kt4
-rw-r--r--plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt4
-rw-r--r--plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt2
-rw-r--r--plugins/base/src/test/kotlin/basic/DRITest.kt40
-rw-r--r--plugins/base/src/test/kotlin/basic/DokkaBasicTests.kt6
-rw-r--r--plugins/base/src/test/kotlin/basic/FailOnWarningTest.kt18
-rw-r--r--plugins/base/src/test/kotlin/content/annotations/ContentForAnnotationsTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/content/annotations/DepredatedAndSinceKotlinTest.kt8
-rw-r--r--plugins/base/src/test/kotlin/content/params/ContentForParamsTest.kt4
-rw-r--r--plugins/base/src/test/kotlin/content/seealso/ContentForSeeAlsoTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/content/signatures/ContentForSignaturesTest.kt4
-rw-r--r--plugins/base/src/test/kotlin/content/signatures/SkippingParenthesisForConstructorsTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/enums/EnumsTest.kt20
-rw-r--r--plugins/base/src/test/kotlin/expect/AbstractExpectTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/filter/DeprecationFilterTest.kt22
-rw-r--r--plugins/base/src/test/kotlin/filter/EmptyPackagesFilterTest.kt11
-rw-r--r--plugins/base/src/test/kotlin/filter/VisibilityFilterTest.kt22
-rw-r--r--plugins/base/src/test/kotlin/issues/IssuesTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/linkableContent/LinkableContentTest.kt38
-rw-r--r--plugins/base/src/test/kotlin/locationProvider/DefaultLocationProviderTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/markdown/KDocTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/markdown/LinkTest.kt10
-rw-r--r--plugins/base/src/test/kotlin/model/InheritorsTest.kt8
-rw-r--r--plugins/base/src/test/kotlin/model/PropertyTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/multiplatform/BasicMultiplatformTest.kt10
-rw-r--r--plugins/base/src/test/kotlin/pageMerger/PageNodeMergerTest.kt10
-rw-r--r--plugins/base/src/test/kotlin/renderers/html/DivergentTest.kt8
-rw-r--r--plugins/base/src/test/kotlin/renderers/html/SourceSetDependentHintTest.kt8
-rw-r--r--plugins/base/src/test/kotlin/renderers/html/defaultSourceSet.kt9
-rw-r--r--plugins/base/src/test/kotlin/resourceLinks/ResourceLinksTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/transformerBuilders/PageTransformerBuilderTest.kt12
-rw-r--r--plugins/base/src/test/kotlin/transformers/ReportUndocumentedTransformerTest.kt136
-rw-r--r--plugins/base/src/test/kotlin/translators/DefaultPsiToDocumentableTranslatorTest.kt14
-rw-r--r--plugins/base/src/test/kotlin/utils/ModelUtils.kt4
-rw-r--r--plugins/gfm/src/main/kotlin/GfmPlugin.kt6
-rw-r--r--plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt5
-rw-r--r--plugins/javadoc/src/test/kotlin/javadoc/JavadocTest.kt4
-rw-r--r--plugins/javadoc/src/test/kotlin/javadoc/location/JavadocLocationTest.kt6
-rw-r--r--plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaPluginTest.kt13
-rw-r--r--runners/ant/build.gradle18
-rw-r--r--runners/ant/src/main/kotlin/ant/dokka.kt210
-rw-r--r--runners/ant/src/main/resources/dokka-antlib.xml3
-rw-r--r--runners/cli/build.gradle.kts3
-rw-r--r--runners/cli/src/main/kotlin/cli/main.kt57
-rw-r--r--runners/gradle-plugin/build.gradle.kts2
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/ConfigurationExtractor.kt2
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTask.kt8
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaSourceSetIDFactory.kt10
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaTask.kt36
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/configurationImplementations.kt93
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/main.kt4
-rw-r--r--runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/KotlinDslDokkaTaskConfigurationTest.kt77
-rw-r--r--runners/maven-plugin/src/main/kotlin/DokkaMojo.kt14
-rw-r--r--testApi/src/main/kotlin/testApi/context/MockContext.kt3
-rw-r--r--testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt3
-rw-r--r--testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt19
69 files changed, 567 insertions, 634 deletions
diff --git a/build.gradle.kts b/build.gradle.kts
index c94faa77..04f4afd4 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -19,7 +19,7 @@ allprojects {
val language_version: String by project
tasks.withType(KotlinCompile::class).all {
kotlinOptions {
- freeCompilerArgs += "-Xjsr305=strict -Xskip-metadata-version-check"
+ freeCompilerArgs += "-Xjsr305=strict -Xskip-metadata-version-check -Xopt-in=kotlin.RequiresOptIn."
languageVersion = language_version
apiVersion = language_version
jvmTarget = "1.8"
@@ -49,4 +49,4 @@ subprojects {
}
}
-println("Publication version: $dokka_version") \ No newline at end of file
+println("Publication version: $dokka_version")
diff --git a/core/src/main/kotlin/DokkaBootstrapImpl.kt b/core/src/main/kotlin/DokkaBootstrapImpl.kt
index bd632546..be3d6c9b 100644
--- a/core/src/main/kotlin/DokkaBootstrapImpl.kt
+++ b/core/src/main/kotlin/DokkaBootstrapImpl.kt
@@ -1,8 +1,6 @@
package org.jetbrains.dokka
-import com.google.gson.Gson
import org.jetbrains.dokka.DokkaConfiguration.PackageOptions
-import org.jetbrains.dokka.utilities.DokkaConsoleLogger
import org.jetbrains.dokka.utilities.DokkaLogger
import java.util.function.BiConsumer
@@ -80,7 +78,6 @@ class DokkaBootstrapImpl : DokkaBootstrap {
}
private lateinit var generator: DokkaGenerator
- val gson = Gson()
fun configure(logger: DokkaLogger, configuration: DokkaConfigurationImpl) = with(configuration) {
@@ -113,7 +110,7 @@ class DokkaBootstrapImpl : DokkaBootstrap {
override fun configure(logger: BiConsumer<String, String>, serializedConfigurationJSON: String) = configure(
DokkaProxyLogger(logger),
- gson.fromJson(serializedConfigurationJSON, DokkaConfigurationImpl::class.java)
+ DokkaConfigurationImpl(serializedConfigurationJSON)
)
override fun generate() = generator.generate()
diff --git a/core/src/main/kotlin/DokkaGenerator.kt b/core/src/main/kotlin/DokkaGenerator.kt
index ce8d229a..ee1adf0b 100644
--- a/core/src/main/kotlin/DokkaGenerator.kt
+++ b/core/src/main/kotlin/DokkaGenerator.kt
@@ -68,7 +68,7 @@ class DokkaGenerator(
fun createDocumentationModels(
context: DokkaContext
) = context.configuration.sourceSets
- .flatMap { passConfiguration -> translateSources(passConfiguration, context) }
+ .flatMap { sourceSet -> translateSources(sourceSet, context) }
fun transformDocumentationModelBeforeMerge(
modulesFromPlatforms: List<DModule>,
diff --git a/core/src/main/kotlin/DokkaMultimoduleBootstrapImpl.kt b/core/src/main/kotlin/DokkaMultimoduleBootstrapImpl.kt
index 6825ce64..70b99f8d 100644
--- a/core/src/main/kotlin/DokkaMultimoduleBootstrapImpl.kt
+++ b/core/src/main/kotlin/DokkaMultimoduleBootstrapImpl.kt
@@ -1,6 +1,5 @@
package org.jetbrains.dokka
-import com.google.gson.Gson
import org.jetbrains.dokka.DokkaBootstrapImpl.DokkaProxyLogger
import org.jetbrains.dokka.utilities.DokkaLogger
import java.util.function.BiConsumer
@@ -15,11 +14,11 @@ class DokkaMultimoduleBootstrapImpl : DokkaBootstrap {
override fun configure(logger: BiConsumer<String, String>, serializedConfigurationJSON: String) = configure(
DokkaProxyLogger(logger),
- Gson().fromJson(serializedConfigurationJSON, DokkaConfigurationImpl::class.java)
+ DokkaConfigurationImpl(serializedConfigurationJSON)
)
override fun generate() {
generator.generateAllModulesPage()
}
-} \ No newline at end of file
+}
diff --git a/core/src/main/kotlin/configuration.kt b/core/src/main/kotlin/configuration.kt
index 463d2342..c531ab9a 100644
--- a/core/src/main/kotlin/configuration.kt
+++ b/core/src/main/kotlin/configuration.kt
@@ -1,6 +1,10 @@
+@file:Suppress("FunctionName")
+
package org.jetbrains.dokka
+import com.google.gson.Gson
import java.io.File
+import java.io.Serializable
import java.net.URL
object DokkaDefaults {
@@ -43,6 +47,23 @@ enum class Platform(val key: String) {
}
}
+data class DokkaSourceSetID(
+ val moduleName: String,
+ val sourceSetName: String
+) : Serializable {
+ override fun toString(): String {
+ return "$moduleName/$sourceSetName"
+ }
+}
+
+fun DokkaConfigurationImpl(json: String): DokkaConfigurationImpl {
+ return Gson().fromJson(json, DokkaConfigurationImpl::class.java)
+}
+
+fun DokkaConfiguration.toJson(): String {
+ return Gson().toJson(this)
+}
+
interface DokkaConfiguration {
val outputDir: String
val format: String
@@ -55,12 +76,12 @@ interface DokkaConfiguration {
val pluginsConfiguration: Map<String, String>
interface DokkaSourceSet {
- val moduleName: String
+ val sourceSetID: DokkaSourceSetID
val displayName: String
- val sourceSetID: String
+ val moduleDisplayName: String
val classpath: List<String>
val sourceRoots: List<SourceRoot>
- val dependentSourceSets: List<String>
+ val dependentSourceSets: Set<DokkaSourceSetID>
val samples: List<String>
val includes: List<String>
val includeNonPublic: Boolean
diff --git a/core/src/main/kotlin/defaultConfiguration.kt b/core/src/main/kotlin/defaultConfiguration.kt
index d3ac9df2..47bd7fe2 100644
--- a/core/src/main/kotlin/defaultConfiguration.kt
+++ b/core/src/main/kotlin/defaultConfiguration.kt
@@ -1,5 +1,6 @@
package org.jetbrains.dokka
+import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet
import java.io.File
import java.net.URL
@@ -16,12 +17,12 @@ data class DokkaConfigurationImpl(
) : DokkaConfiguration
data class DokkaSourceSetImpl(
- override val moduleName: String,
+ override val moduleDisplayName: String,
override val displayName: String,
- override val sourceSetID: String,
+ override val sourceSetID: DokkaSourceSetID,
override val classpath: List<String>,
override val sourceRoots: List<SourceRootImpl>,
- override val dependentSourceSets: List<String>,
+ override val dependentSourceSets: Set<DokkaSourceSetID>,
override val samples: List<String>,
override val includes: List<String>,
override val includeNonPublic: Boolean,
@@ -39,23 +40,23 @@ data class DokkaSourceSetImpl(
override val noJdkLink: Boolean,
override val suppressedFiles: List<String>,
override val analysisPlatform: Platform
-) : DokkaConfiguration.DokkaSourceSet
+) : DokkaSourceSet
data class DokkaModuleDescriptionImpl(
override val name: String,
override val path: String,
override val docFile: String
-): DokkaConfiguration.DokkaModuleDescription
+) : DokkaConfiguration.DokkaModuleDescription
data class SourceRootImpl(
override val path: String
-): DokkaConfiguration.SourceRoot
+) : DokkaConfiguration.SourceRoot
data class SourceLinkDefinitionImpl(
override val path: String,
override val url: String,
override val lineSuffix: String?
-): DokkaConfiguration.SourceLinkDefinition {
+) : DokkaConfiguration.SourceLinkDefinition {
companion object {
fun parseSourceLinkDefinition(srcLink: String): SourceLinkDefinitionImpl {
val (path, urlAndLine) = srcLink.split('=')
@@ -73,9 +74,10 @@ data class PackageOptionsImpl(
override val reportUndocumented: Boolean?,
override val skipDeprecated: Boolean,
override val suppress: Boolean
-): DokkaConfiguration.PackageOptions
+) : DokkaConfiguration.PackageOptions
-data class ExternalDocumentationLinkImpl(override val url: URL,
- override val packageListUrl: URL
+data class ExternalDocumentationLinkImpl(
+ override val url: URL,
+ override val packageListUrl: URL
) : DokkaConfiguration.ExternalDocumentationLink
diff --git a/core/src/main/kotlin/plugability/DokkaPlugin.kt b/core/src/main/kotlin/plugability/DokkaPlugin.kt
index fe472b12..7ead43b8 100644
--- a/core/src/main/kotlin/plugability/DokkaPlugin.kt
+++ b/core/src/main/kotlin/plugability/DokkaPlugin.kt
@@ -82,4 +82,4 @@ inline fun <reified T : DokkaPlugin, reified R : ConfigurableBlock> configuratio
}
}
}
-} \ No newline at end of file
+}
diff --git a/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinAnalysis.kt b/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinAnalysis.kt
index 426ffdde..e723768c 100644
--- a/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinAnalysis.kt
+++ b/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinAnalysis.kt
@@ -3,6 +3,7 @@
package org.jetbrains.dokka.analysis
import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet
+import org.jetbrains.dokka.DokkaSourceSetID
import org.jetbrains.dokka.model.SourceSetDependent
import org.jetbrains.dokka.plugability.DokkaContext
@@ -21,7 +22,7 @@ fun KotlinAnalysis(context: DokkaContext): KotlinAnalysis {
interface KotlinAnalysis : SourceSetDependent<EnvironmentAndFacade> {
override fun get(key: DokkaSourceSet): EnvironmentAndFacade
- operator fun get(sourceSetID: String): EnvironmentAndFacade
+ operator fun get(sourceSetID: DokkaSourceSetID): EnvironmentAndFacade
}
internal class KotlinAnalysisImpl(
@@ -32,7 +33,7 @@ internal class KotlinAnalysisImpl(
return environments[key] ?: throw IllegalStateException("Missing EnvironmentAndFacade for sourceSet $key")
}
- override fun get(sourceSetID: String): EnvironmentAndFacade {
+ override fun get(sourceSetID: DokkaSourceSetID): EnvironmentAndFacade {
return environments.entries.first { (sourceSet, _) -> sourceSet.sourceSetID == sourceSetID }.value
}
}
diff --git a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt
index de892bb1..f8fa3b2e 100644
--- a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt
+++ b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt
@@ -94,7 +94,7 @@ open class HtmlRenderer(
group.sourceSets.forEach {
button(classes = "platform-tag platform-selector") {
attributes["data-active"] = ""
- attributes["data-filter"] = it.sourceSetID
+ attributes["data-filter"] = it.sourceSetID.toString()
when (it.analysisPlatform.key) {
"common" -> classes = classes + "common-like"
"native" -> classes = classes + "native-like"
@@ -168,10 +168,10 @@ open class HtmlRenderer(
attributes["data-toggle-list"] = "data-toggle-list"
contents.forEachIndexed { index, pair ->
button(classes = "platform-bookmark") {
- attributes["data-filterable-current"] = pair.first.sourceSetID
- attributes["data-filterable-set"] = pair.first.sourceSetID
+ attributes["data-filterable-current"] = pair.first.sourceSetID.toString()
+ attributes["data-filterable-set"] = pair.first.sourceSetID.toString()
if (index == 0) attributes["data-active"] = ""
- attributes["data-toggle"] = pair.first.sourceSetID
+ attributes["data-toggle"] = pair.first.sourceSetID.toString()
when (
pair.first.analysisPlatform.key
) {
@@ -180,7 +180,7 @@ open class HtmlRenderer(
"jvm" -> classes = classes + "jvm-like"
"js" -> classes = classes + "js-like"
}
- attributes["data-toggle"] = pair.first.sourceSetID
+ attributes["data-toggle"] = pair.first.sourceSetID.toString()
text(pair.first.displayName)
}
}
@@ -212,7 +212,7 @@ open class HtmlRenderer(
}.map {
it to createHTML(prettyPrint = false).div(classes = "content sourceset-depenent-content") {
if (counter++ == 0) attributes["data-active"] = ""
- attributes["data-togglable"] = it.sourceSetID
+ attributes["data-togglable"] = it.sourceSetID.toString()
unsafe {
+html
}
@@ -249,10 +249,10 @@ open class HtmlRenderer(
consumer.onTagContentUnsafe {
+createHTML().div("divergent-group") {
attributes["data-filterable-current"] = groupedDivergent.keys.joinToString(" ") {
- it.sourceSetID
+ it.sourceSetID.toString()
}
attributes["data-filterable-set"] = groupedDivergent.keys.joinToString(" ") {
- it.sourceSetID
+ it.sourceSetID.toString()
}
val divergentForPlatformDependent = groupedDivergent.map { (sourceSet, elements) ->
@@ -353,10 +353,10 @@ open class HtmlRenderer(
div(classes = "table-row") {
if (!style.contains(MultimoduleTable)) {
attributes["data-filterable-current"] = node.sourceSets.joinToString(" ") {
- it.sourceSetID
+ it.sourceSetID.toString()
}
attributes["data-filterable-set"] = node.sourceSets.joinToString(" ") {
- it.sourceSetID
+ it.sourceSetID.toString()
}
}
@@ -728,4 +728,4 @@ private fun String.stripDiv() = drop(5).dropLast(6) // TODO: Find a way to do it
private val PageNode.isNavigable: Boolean
get() = this !is RendererSpecificPage || strategy != RenderingStrategy.DoNothing
-fun PropertyContainer<ContentNode>.extraHtmlAttributes() = allOfType<SimpleAttr>() \ No newline at end of file
+fun PropertyContainer<ContentNode>.extraHtmlAttributes() = allOfType<SimpleAttr>()
diff --git a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
index f042eae3..2a242948 100644
--- a/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
+++ b/plugins/base/src/main/kotlin/signatures/JvmSignatureUtils.kt
@@ -1,6 +1,5 @@
package org.jetbrains.dokka.base.signatures
-import org.jetbrains.dokka.DokkaConfiguration
import org.jetbrains.dokka.base.translators.documentables.PageContentBuilder
import org.jetbrains.dokka.links.DRI
import org.jetbrains.dokka.model.*
@@ -142,4 +141,4 @@ interface JvmSignatureUtils {
sealed class AtStrategy
object All : AtStrategy()
object OnlyOnce : AtStrategy()
-object Never : AtStrategy() \ No newline at end of file
+object Never : AtStrategy()
diff --git a/plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt b/plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt
index c3cc4d38..ff05beed 100644
--- a/plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt
+++ b/