From 02f30b142aa467d3a24cc52a1fe3f2fed7ea1e33 Mon Sep 17 00:00:00 2001 From: Ignat Beresnev Date: Thu, 31 Aug 2023 20:16:01 +0200 Subject: Enable explicit API mode (#3139) --- .../jetbrains/conventions/kotlin-jvm.gradle.kts | 40 +++- core/api/core.api | 15 +- .../kotlin/matchers/content/ContentMatchersDsl.kt | 116 ++++++--- .../kotlin/matchers/content/contentMatchers.kt | 22 +- core/src/main/kotlin/ConfigurationJsonUtils.kt | 16 +- core/src/main/kotlin/CoreExtensions.kt | 30 ++- core/src/main/kotlin/DokkaBootstrap.kt | 6 +- core/src/main/kotlin/DokkaBootstrapImpl.kt | 22 +- core/src/main/kotlin/DokkaException.kt | 2 +- core/src/main/kotlin/DokkaGenerator.kt | 40 ++-- core/src/main/kotlin/DokkaVersion.kt | 4 +- core/src/main/kotlin/configuration.kt | 211 ++++++++--------- core/src/main/kotlin/defaultConfiguration.kt | 19 +- core/src/main/kotlin/defaultExternalLinks.kt | 8 +- core/src/main/kotlin/generation/Generation.kt | 10 +- core/src/main/kotlin/links/DRI.kt | 82 +++---- core/src/main/kotlin/model/CompositeSourceSetID.kt | 6 +- core/src/main/kotlin/model/Documentable.kt | 238 ++++++++++--------- core/src/main/kotlin/model/JvmField.kt | 8 +- core/src/main/kotlin/model/WithChildren.kt | 30 +-- core/src/main/kotlin/model/additionalExtras.kt | 68 +++--- core/src/main/kotlin/model/ancestryNode.kt | 4 +- core/src/main/kotlin/model/classKinds.kt | 6 +- core/src/main/kotlin/model/defaultValues.kt | 23 +- core/src/main/kotlin/model/doc/DocTag.kt | 163 ++++++------- .../src/main/kotlin/model/doc/DocumentationNode.kt | 2 +- core/src/main/kotlin/model/doc/TagWrapper.kt | 39 +-- .../main/kotlin/model/documentableProperties.kt | 34 +-- core/src/main/kotlin/model/documentableUtils.kt | 8 +- core/src/main/kotlin/model/extraModifiers.kt | 58 ++--- core/src/main/kotlin/model/jvmName.kt | 4 +- .../kotlin/model/properties/PropertyContainer.kt | 31 +-- .../src/main/kotlin/model/properties/properties.kt | 32 ++- core/src/main/kotlin/pages/ContentNodes.kt | 86 +++---- core/src/main/kotlin/pages/PageNodes.kt | 48 ++-- core/src/main/kotlin/pages/Pages.kt | 10 +- core/src/main/kotlin/pages/RendererSpecificPage.kt | 37 +-- .../src/main/kotlin/pages/contentNodeProperties.kt | 17 +- core/src/main/kotlin/pages/utils.kt | 4 +- .../main/kotlin/plugability/DefaultExtensions.kt | 4 - core/src/main/kotlin/plugability/DokkaContext.kt | 24 +- .../src/main/kotlin/plugability/DokkaJavaPlugin.kt | 34 +-- core/src/main/kotlin/plugability/DokkaPlugin.kt | 51 ++-- core/src/main/kotlin/plugability/extensions.kt | 75 +++--- core/src/main/kotlin/renderers/PostAction.kt | 2 +- core/src/main/kotlin/renderers/Renderer.kt | 4 +- .../documentation/DocumentableMerger.kt | 5 +- .../documentation/DocumentableToPageTranslator.kt | 5 +- .../documentation/DocumentableTransformer.kt | 4 +- .../PreMergeDocumentableTransformer.kt | 15 +- .../main/kotlin/transformers/pages/PageCreator.kt | 8 +- .../kotlin/transformers/pages/PageTransformer.kt | 4 +- .../transformers/pages/PageTransformerBuilders.kt | 17 +- .../sources/AsyncSourceToDocumentableTranslator.kt | 4 +- .../sources/SourceToDocumentableTranslator.kt | 4 +- core/src/main/kotlin/utilities/Collections.kt | 4 +- core/src/main/kotlin/utilities/DokkaLogging.kt | 31 +-- core/src/main/kotlin/utilities/Html.kt | 6 +- .../utilities/SelfRepresentingSingletonSet.kt | 2 +- core/src/main/kotlin/utilities/ServiceLocator.kt | 14 +- core/src/main/kotlin/utilities/Uri.kt | 2 +- .../main/kotlin/utilities/associateWithNotNull.kt | 2 +- core/src/main/kotlin/utilities/cast.kt | 2 +- .../utilities/parallelCollectionOperations.kt | 6 +- .../main/kotlin/validity/PreGenerationChecker.kt | 9 +- core/test-api/api/test-api.api | 3 +- .../src/main/kotlin/testApi/context/MockContext.kt | 5 +- .../src/main/kotlin/testApi/logger/TestLogger.kt | 12 +- .../testRunner/TestDokkaConfigurationBuilder.kt | 158 +++++++------ .../main/kotlin/testApi/testRunner/TestRunner.kt | 41 ++-- .../dokka/it/cli/AbstractCliIntegrationTest.kt | 4 +- .../gradle/AbstractGradleCachingIntegrationTest.kt | 10 +- .../dokka/it/gradle/BasicGradleIntegrationTest.kt | 9 +- .../it/gradle/AbstractGradleIntegrationTest.kt | 8 +- .../org/jetbrains/dokka/it/gradle/BuildVersions.kt | 8 +- .../jetbrains/dokka/it/gradle/TestEnvironment.kt | 6 +- .../dokka/it/maven/MavenIntegrationTest.kt | 9 +- .../jetbrains/dokka/it/AbstractIntegrationTest.kt | 12 +- .../org/jetbrains/dokka/it/TestOutputCopier.kt | 6 +- .../org/jetbrains/dokka/it/gitSubmoduleUtils.kt | 9 +- .../kotlin/org/jetbrains/dokka/it/processUtils.kt | 8 +- plugins/all-modules-page/api/all-modules-page.api | 4 +- .../src/main/kotlin/AllModulesPageGeneration.kt | 27 ++- .../src/main/kotlin/AllModulesPagePlugin.kt | 30 +-- .../src/main/kotlin/ExternalModuleLinkResolver.kt | 10 +- .../src/main/kotlin/MultimoduleLocationProvider.kt | 37 ++- .../src/main/kotlin/MultimodulePageCreator.kt | 11 +- .../src/main/kotlin/ResolveLinkCommandHandler.kt | 2 +- .../src/main/kotlin/AndroidDocumentationPlugin.kt | 7 +- .../transformers/HideTagDocumentableFilter.kt | 2 +- plugins/base/api/base.api | 15 +- .../src/main/kotlin/renderers/JsoupUtils.kt | 41 ++-- .../main/kotlin/renderers/RenderingOnlyTestBase.kt | 6 +- .../src/main/kotlin/renderers/SignatureUtils.kt | 14 +- .../src/main/kotlin/renderers/TestPage.kt | 4 +- .../src/main/kotlin/testRunner/baseTestApi.kt | 102 ++++---- .../src/main/kotlin/utils/TestOutputWriter.kt | 18 +- .../utils/assertHtmlEqualsIgnoringWhitespace.kt | 2 +- plugins/base/src/main/kotlin/DokkaBase.kt | 150 ++++++------ .../base/src/main/kotlin/DokkaBaseConfiguration.kt | 16 +- .../deprecated/AnalysisApiDeprecatedError.kt | 2 +- .../deprecated/KotlinAnalysisDeprecatedApi.kt | 28 +-- .../main/kotlin/deprecated/ParsersDeprecatedAPI.kt | 14 +- .../deprecated/ParsersFactoriesDeprecatedAPI.kt | 4 +- .../TranslatorDescriptorsDeprecatedAPI.kt | 12 +- .../deprecated/TranslatorPsiDeprecatedAPI.kt | 2 +- .../kotlin/generation/SingleModuleGeneration.kt | 28 ++- .../src/main/kotlin/renderers/DefaultRenderer.kt | 79 ++++--- .../base/src/main/kotlin/renderers/FileWriter.kt | 7 +- .../base/src/main/kotlin/renderers/OutputWriter.kt | 6 +- .../main/kotlin/renderers/PackageListService.kt | 23 +- .../main/kotlin/renderers/TabSortingStrategy.kt | 4 +- .../main/kotlin/renderers/contentTypeChecking.kt | 11 +- .../src/main/kotlin/renderers/html/HtmlRenderer.kt | 103 ++++---- .../renderers/html/NavigationDataProvider.kt | 6 +- .../main/kotlin/renderers/html/NavigationPage.kt | 24 +- .../renderers/html/SearchbarDataInstaller.kt | 25 +- .../base/src/main/kotlin/renderers/html/Tags.kt | 34 +-- .../consumers/ImmediateResolutionTagConsumer.kt | 10 +- .../html/command/consumers/PathToRootConsumer.kt | 4 +- .../command/consumers/ReplaceVersionsConsumer.kt | 4 +- .../html/command/consumers/ResolveLinkConsumer.kt | 4 +- .../kotlin/renderers/html/htmlFormatingUtils.kt | 7 +- .../kotlin/renderers/html/htmlPreprocessors.kt | 20 +- .../innerTemplating/DefaultTemplateModelFactory.kt | 6 +- .../innerTemplating/DefaultTemplateModelMerger.kt | 2 +- .../html/innerTemplating/HtmlTemplater.kt | 12 +- .../html/innerTemplating/TemplateModelFactory.kt | 6 +- .../html/innerTemplating/TemplateModelMerger.kt | 4 +- .../src/main/kotlin/renderers/preprocessors.kt | 16 +- .../main/kotlin/resolvers/anchors/AnchorsHint.kt | 6 +- .../external/DefaultExternalLocationProvider.kt | 10 +- .../DefaultExternalLocationProviderFactory.kt | 31 ++- .../external/Dokka010ExternalLocationProvider.kt | 10 +- .../resolvers/external/ExternalLocationProvider.kt | 4 +- .../external/ExternalLocationProviderFactory.kt | 4 +- .../ExternalLocationProviderFactoryWithCache.kt | 5 +- .../javadoc/AndroidExternalLocationProvider.kt | 4 +- .../javadoc/JavadocExternalLocationProvider.kt | 17 +- .../JavadocExternalLocationProviderFactory.kt | 44 ++-- .../resolvers/local/DefaultLocationProvider.kt | 5 +- .../resolvers/local/DokkaBaseLocationProvider.kt | 4 +- .../resolvers/local/DokkaLocationProvider.kt | 14 +- .../local/DokkaLocationProviderFactory.kt | 10 +- .../kotlin/resolvers/local/LocationProvider.kt | 29 ++- .../resolvers/local/LocationProviderFactory.kt | 4 +- .../resolvers/shared/ExternalDocumentation.kt | 2 +- .../src/main/kotlin/resolvers/shared/LinkFormat.kt | 6 +- .../main/kotlin/resolvers/shared/PackageList.kt | 20 +- .../resolvers/shared/RecognizedLinkFormat.kt | 14 +- .../main/kotlin/signatures/JvmSignatureUtils.kt | 53 +++-- .../kotlin/signatures/KotlinSignatureProvider.kt | 9 +- .../main/kotlin/signatures/KotlinSignatureUtils.kt | 20 +- .../main/kotlin/signatures/SignatureProvider.kt | 4 +- .../kotlin/templating/AddToNavigationCommand.kt | 4 +- .../base/src/main/kotlin/templating/AddToSearch.kt | 5 +- .../templating/AddToSourcesetDependencies.kt | 5 +- plugins/base/src/main/kotlin/templating/Command.kt | 6 +- .../templating/ImmediateHtmlCommandConsumer.kt | 8 +- .../main/kotlin/templating/InsertTemplateExtra.kt | 4 +- .../templating/PathToRootSubstitutionCommand.kt | 5 +- .../templating/ProjectNameSubstitutionCommand.kt | 5 +- .../kotlin/templating/ReplaceVersionsCommand.kt | 2 +- .../main/kotlin/templating/ResolveLinkCommand.kt | 4 +- .../main/kotlin/templating/jsonMapperForPlugins.kt | 4 +- .../documentables/ActualTypealiasAdder.kt | 10 +- .../documentables/DefaultDocumentableMerger.kt | 4 +- .../DeprecatedDocumentableFilterTransformer.kt | 5 +- .../DocumentableReplacerTransformer.kt | 23 +- .../DocumentableVisibilityFilterTransformer.kt | 14 +- .../documentables/EmptyModulesFilterTransformer.kt | 2 +- .../EmptyPackagesFilterTransformer.kt | 4 +- .../documentables/ExtensionExtractorTransformer.kt | 11 +- ...nheritedEntriesDocumentableFilterTransformer.kt | 5 +- .../InheritorsExtractorTransformer.kt | 8 +- .../KotlinArrayDocumentableReplacerTransformer.kt | 5 +- ...bviousFunctionsDocumentableFilterTransformer.kt | 4 +- .../documentables/SuppressTagDocumentableFilter.kt | 5 +- ...ssedByConditionDocumentableFilterTransformer.kt | 7 +- ...ByConfigurationDocumentableFilterTransformer.kt | 4 +- .../kotlin/transformers/documentables/utils.kt | 11 +- .../pages/annotations/SinceKotlinTransformer.kt | 8 +- .../pages/comments/CommentsToContentConverter.kt | 4 +- .../pages/comments/DocTagToContentConverter.kt | 2 +- .../pages/merger/FallbackPageMergerStrategy.kt | 4 +- .../kotlin/transformers/pages/merger/PageMerger.kt | 2 +- .../pages/merger/PageMergerStrategy.kt | 4 +- .../merger/SameMethodNamePageMergerStrategy.kt | 4 +- .../merger/SourceSetMergingPageTransformer.kt | 2 +- .../pages/sourcelinks/SourceLinksTransformer.kt | 16 +- .../pages/tags/CustomTagContentProvider.kt | 8 +- .../pages/tags/SinceKotlinTagContentProvider.kt | 4 +- .../DefaultDocumentableToPageTranslator.kt | 2 +- .../documentables/DefaultPageCreator.kt | 253 ++++++++++---------- .../translators/documentables/DriClashAwareName.kt | 4 +- .../documentables/PageContentBuilder.kt | 261 ++++++++++++--------- .../documentables/briefFromContentNodes.kt | 4 +- .../translators/psi/parsers/InheritDocResolver.kt | 4 - .../translators/psi/parsers/JavadocParser.kt | 4 - .../kotlin/translators/psi/parsers/JavadocTag.kt | 4 - plugins/gfm/api/gfm.api | 3 +- .../GfmTemplateProcessingPlugin.kt | 13 +- .../GfmTemplateProcessingStrategy.kt | 4 +- .../kotlin/org/jetbrains/dokka/gfm/GfmPlugin.kt | 20 +- .../org/jetbrains/dokka/gfm/gfmTemplating.kt | 21 +- .../dokka/gfm/location/MarkdownLocationProvider.kt | 7 +- .../dokka/gfm/renderer/BriefCommentPreprocessor.kt | 20 +- .../dokka/gfm/renderer/CommonmarkRenderer.kt | 5 +- plugins/javadoc/api/javadoc.api | 5 +- .../javadoc/JavadocDocumentableToPageTranslator.kt | 2 +- .../jetbrains/dokka/javadoc/JavadocPageCreator.kt | 19 +- .../org/jetbrains/dokka/javadoc/JavadocPlugin.kt | 47 ++-- .../javadoc/location/JavadocLocationProvider.kt | 16 +- .../location/JavadocLocationProviderFactory.kt | 7 +- .../dokka/javadoc/pages/JavadocContentNodes.kt | 81 ++++--- .../dokka/javadoc/pages/JavadocIndexExtra.kt | 4 +- .../dokka/javadoc/pages/JavadocPageNodes.kt | 108 +++++---- .../dokka/javadoc/pages/htmlPreprocessors.kt | 17 +- .../renderer/JavadocContentToHtmlTranslator.kt | 2 +- .../dokka/javadoc/renderer/KorteJavadocRenderer.kt | 19 +- .../dokka/javadoc/renderer/SearchScriptsCreator.kt | 6 +- .../javadoc/signatures/JavadocSignatureProvider.kt | 10 +- .../JavadocDocumentableJVMSourceSetFilter.kt | 4 +- .../documentables/JavadocPageContentBuilder.kt | 24 +- .../validity/MultiplatformConfiguredChecker.kt | 8 +- .../JekyllTemplateProcessingPlugin.kt | 8 +- plugins/jekyll/src/main/kotlin/JekyllPlugin.kt | 20 +- .../src/main/kotlin/KotlinAsJavaPlugin.kt | 14 +- .../kotlin/converters/KotlinToJavaConverter.kt | 4 +- .../kotlin/signatures/JavaSignatureProvider.kt | 10 +- .../main/kotlin/signatures/JavaSignatureUtils.kt | 14 +- .../src/main/kotlin/transformToJava.kt | 8 +- .../transformers/JvmNameDocumentableTransformer.kt | 2 +- .../main/kotlin/transformers/JvmNameProvider.kt | 14 +- .../KotlinAsJavaDocumentableTransformer.kt | 2 +- .../KotlinAsJavaDocumentableToPageTranslator.kt | 4 +- .../kotlin/translators/KotlinAsJavaPageCreator.kt | 2 +- plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt | 18 +- .../templates/AddToNavigationCommandHandler.kt | 6 +- .../src/main/kotlin/templates/CommandHandler.kt | 14 +- .../templates/DirectiveBasedTemplateProcessing.kt | 6 +- .../FallbackTemplateProcessingStrategy.kt | 2 +- .../JsonElementBasedTemplateProcessingStrategy.kt | 15 +- .../templates/PackageListProcessingStrategy.kt | 4 +- .../main/kotlin/templates/PathToRootSubstitutor.kt | 4 +- .../kotlin/templates/ProjectNameSubstitutor.kt | 4 +- .../templates/ReplaceVersionCommandHandler.kt | 4 +- .../SourcesetDependencyProcessingStrategy.kt | 4 +- .../kotlin/templates/SubstitutionCommandHandler.kt | 2 +- .../src/main/kotlin/templates/Substitutor.kt | 4 +- .../src/main/kotlin/templates/TemplateProcessor.kt | 35 +-- .../src/main/kotlin/templates/TemplatingPlugin.kt | 41 ++-- plugins/versioning/api/versioning.api | 2 +- .../DefaultPreviousDocumentationCopyPostAction.kt | 4 +- .../versioning/ReplaceVersionCommandConsumer.kt | 4 +- .../dokka/versioning/ReplaceVersionsCommand.kt | 4 +- .../dokka/versioning/VersioningConfiguration.kt | 18 +- .../jetbrains/dokka/versioning/VersioningPlugin.kt | 40 ++-- .../dokka/versioning/VersioningStorage.kt | 19 +- .../dokka/versioning/VersionsNavigationCreator.kt | 8 +- .../jetbrains/dokka/versioning/VersionsOrdering.kt | 10 +- .../dokka/versioning/htmlPreprocessors.kt | 8 +- .../kotlin/org/jetbrains/dokka/CliArgumentTypes.kt | 19 +- .../kotlin/org/jetbrains/dokka/GlobalArguments.kt | 38 +-- .../main/kotlin/org/jetbrains/dokka/LinkMapper.kt | 4 +- .../src/main/kotlin/org/jetbrains/dokka/main.kt | 4 +- runners/maven-plugin/src/main/kotlin/DokkaMojo.kt | 80 ++++--- .../kotlin/ExternalDocumentationLinkBuilder.kt | 9 +- .../src/main/kotlin/MavenDokkaLogger.kt | 28 ++- .../maven-plugin/src/main/kotlin/PackageOptions.kt | 2 +- .../src/main/kotlin/SourceLinkMapItem.kt | 8 +- .../dokka/analysis/java/JavaAnalysisPlugin.kt | 30 +-- .../jetbrains/dokka/analysis/java/JavadocTag.kt | 54 +++-- .../dokka/analysis/java/doccomment/DocComment.kt | 6 +- .../analysis/java/doccomment/DocCommentCreator.kt | 4 +- .../analysis/java/doccomment/DocCommentFactory.kt | 4 +- .../analysis/java/doccomment/DocCommentFinder.kt | 4 +- .../java/doccomment/DocumentationContent.kt | 6 +- .../analysis/java/parsers/DocCommentParser.kt | 6 +- .../dokka/analysis/java/parsers/JavadocParser.kt | 2 +- .../java/parsers/doctag/DocTagParserContext.kt | 10 +- .../parsers/doctag/InheritDocTagContentProvider.kt | 6 +- .../jetbrains/dokka/analysis/java/util/PsiUtil.kt | 10 +- .../dokka/analysis/kotlin/KotlinAnalysisPlugin.kt | 2 +- .../internal/DocumentableSourceLanguageParser.kt | 6 +- .../internal/ExternalDocumentablesProvider.kt | 4 +- .../kotlin/internal/FullClassHierarchyBuilder.kt | 8 +- .../analysis/kotlin/internal/InheritanceBuilder.kt | 6 +- .../internal/InternalKotlinAnalysisPlugin.kt | 19 +- .../kotlin/internal/KotlinToJavaService.kt | 4 +- .../ModuleAndPackageDocumentationReader.kt | 8 +- .../analysis/kotlin/internal/SampleProvider.kt | 14 +- .../internal/SyntheticDocumentableDetector.kt | 4 +- .../descriptors/compiler/AnalysisContextCreator.kt | 4 +- .../compiler/CompilerDescriptorAnalysisPlugin.kt | 26 +- .../compiler/CompilerExtensionPointProvider.kt | 10 +- .../descriptors/compiler/DescriptorFinder.kt | 4 +- .../kotlin/descriptors/compiler/KDocFinder.kt | 8 +- .../kotlin/descriptors/compiler/KLibService.kt | 6 +- .../descriptors/compiler/MockApplicationHack.kt | 4 +- .../compiler/configuration/AnalysisContext.kt | 12 +- .../compiler/configuration/AnalysisEnvironment.kt | 2 +- .../compiler/configuration/KotlinAnalysis.kt | 10 +- .../compiler/impl/KotlinSampleProvider.kt | 8 +- .../descriptors/ide/CoreKotlinCacheService.kt | 4 +- .../descriptors/ide/IdeDescriptorAnalysisPlugin.kt | 2 +- .../symbols/services/KotlinSampleProvider.kt | 8 +- .../dokka/analysis/markdown/jb/MarkdownApi.kt | 2 +- .../dokka/analysis/markdown/jb/MarkdownParser.kt | 8 +- .../dokka/analysis/markdown/jb/ParseUtils.kt | 2 +- .../jetbrains/dokka/analysis/markdown/jb/Parser.kt | 6 +- 311 files changed, 3158 insertions(+), 2578 deletions(-) delete mode 100644 core/src/main/kotlin/plugability/DefaultExtensions.kt delete mode 100644 plugins/base/src/main/kotlin/translators/psi/parsers/InheritDocResolver.kt delete mode 100644 plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt delete mode 100644 plugins/base/src/main/kotlin/translators/psi/parsers/JavadocTag.kt diff --git a/build-logic/src/main/kotlin/org/jetbrains/conventions/kotlin-jvm.gradle.kts b/build-logic/src/main/kotlin/org/jetbrains/conventions/kotlin-jvm.gradle.kts index 6093253f..d2425ce3 100644 --- a/build-logic/src/main/kotlin/org/jetbrains/conventions/kotlin-jvm.gradle.kts +++ b/build-logic/src/main/kotlin/org/jetbrains/conventions/kotlin-jvm.gradle.kts @@ -5,6 +5,7 @@ package org.jetbrains.conventions import org.jetbrains.configureDokkaVersion +import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { @@ -14,25 +15,44 @@ plugins { configureDokkaVersion() -val projectsWithoutOptInDependency = setOf( - ":integration-tests", ":integration-tests:gradle", ":integration-tests:maven", ":integration-tests:cli") +kotlin { + explicitApi = ExplicitApiMode.Strict + + compilerOptions { + allWarningsAsErrors.set(true) + languageVersion.set(dokkaBuild.kotlinLanguageLevel) + apiVersion.set(dokkaBuild.kotlinLanguageLevel) + + freeCompilerArgs.addAll( + listOf( + // need 1.4 support, otherwise there might be problems + // with Gradle 6.x (it's bundling Kotlin 1.4) + "-Xsuppress-version-warnings", + "-Xjsr305=strict", + "-Xskip-metadata-version-check", + ) + ) + } +} + +val projectsWithoutInternalDokkaApiUsage = setOf( + ":integration-tests", + ":integration-tests:gradle", + ":integration-tests:maven", + ":integration-tests:cli" +) tasks.withType().configureEach { // By path because Dokka has multiple projects with the same name (i.e. 'cli') - if (project.path in projectsWithoutOptInDependency) return@configureEach + if (project.path in projectsWithoutInternalDokkaApiUsage) { + return@configureEach + } compilerOptions { freeCompilerArgs.addAll( listOf( "-opt-in=kotlin.RequiresOptIn", "-opt-in=org.jetbrains.dokka.InternalDokkaApi", - "-Xjsr305=strict", - "-Xskip-metadata-version-check", - // need 1.4 support, otherwise there might be problems with Gradle 6.x (it's bundling Kotlin 1.4) - "-Xsuppress-version-warnings", ) ) - allWarningsAsErrors.set(true) - languageVersion.set(dokkaBuild.kotlinLanguageLevel) - apiVersion.set(dokkaBuild.kotlinLanguageLevel) } } diff --git a/core/api/core.api b/core/api/core.api index 6da499ee..2399880b 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -658,7 +658,7 @@ public final class org/jetbrains/dokka/model/ActualTypealias : org/jetbrains/dok public final class org/jetbrains/dokka/model/ActualTypealias$Companion : org/jetbrains/dokka/model/properties/ExtraProperty$Key { public synthetic fun mergeStrategyFor (Ljava/lang/Object;Ljava/lang/Object;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; - public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/ActualTypealias;Lorg/jetbrains/dokka/model/ActualTypealias;)Lorg/jetbrains/dokka/model/properties/MergeStrategy$Fail; + public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/ActualTypealias;Lorg/jetbrains/dokka/model/ActualTypealias;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; } public final class org/jetbrains/dokka/model/AdditionalExtrasKt { @@ -817,7 +817,7 @@ public final class org/jetbrains/dokka/model/CheckedExceptions : org/jetbrains/d public final class org/jetbrains/dokka/model/CheckedExceptions$Companion : org/jetbrains/dokka/model/properties/ExtraProperty$Key { public synthetic fun mergeStrategyFor (Ljava/lang/Object;Ljava/lang/Object;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; - public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/CheckedExceptions;Lorg/jetbrains/dokka/model/CheckedExceptions;)Lorg/jetbrains/dokka/model/properties/MergeStrategy$Replace; + public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/CheckedExceptions;Lorg/jetbrains/dokka/model/CheckedExceptions;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; } public abstract interface class org/jetbrains/dokka/model/ClassKind { @@ -1505,7 +1505,7 @@ public final class org/jetbrains/dokka/model/ExceptionInSupertypes : org/jetbrai public final class org/jetbrains/dokka/model/ExceptionInSupertypes$Companion : org/jetbrains/dokka/model/properties/ExtraProperty$Key { public synthetic fun mergeStrategyFor (Ljava/lang/Object;Ljava/lang/Object;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; - public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/ExceptionInSupertypes;Lorg/jetbrains/dokka/model/ExceptionInSupertypes;)Lorg/jetbrains/dokka/model/properties/MergeStrategy$Replace; + public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/ExceptionInSupertypes;Lorg/jetbrains/dokka/model/ExceptionInSupertypes;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; } public abstract interface class org/jetbrains/dokka/model/Expression { @@ -1707,7 +1707,7 @@ public final class org/jetbrains/dokka/model/ImplementedInterfaces : org/jetbrai public final class org/jetbrains/dokka/model/ImplementedInterfaces$Companion : org/jetbrains/dokka/model/properties/ExtraProperty$Key { public synthetic fun mergeStrategyFor (Ljava/lang/Object;Ljava/lang/Object;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; - public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/ImplementedInterfaces;Lorg/jetbrains/dokka/model/ImplementedInterfaces;)Lorg/jetbrains/dokka/model/properties/MergeStrategy$Replace; + public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/ImplementedInterfaces;Lorg/jetbrains/dokka/model/ImplementedInterfaces;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; } public final class org/jetbrains/dokka/model/InheritedMember : org/jetbrains/dokka/model/properties/ExtraProperty { @@ -1726,7 +1726,7 @@ public final class org/jetbrains/dokka/model/InheritedMember : org/jetbrains/dok public final class org/jetbrains/dokka/model/InheritedMember$Companion : org/jetbrains/dokka/model/properties/ExtraProperty$Key { public synthetic fun mergeStrategyFor (Ljava/lang/Object;Ljava/lang/Object;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; - public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/InheritedMember;Lorg/jetbrains/dokka/model/InheritedMember;)Lorg/jetbrains/dokka/model/properties/MergeStrategy$Replace; + public fun mergeStrategyFor (Lorg/jetbrains/dokka/model/InheritedMember;Lorg/jetbrains/dokka/model/InheritedMember;)Lorg/jetbrains/dokka/model/properties/MergeStrategy; } public final class org/jetbrains/dokka/model/IntValue : org/jetbrains/dokka/model/LiteralValue { @@ -4103,8 +4103,7 @@ public final class org/jetbrains/dokka/pages/MultimoduleRootPageNode : org/jetbr public fun getName ()Ljava/lang/String; public synthetic fun modified (Ljava/lang/String;Ljava/util/List;)Lorg/jetbrains/dokka/pages/PageNode; public fun modified (Ljava/lang/String;Ljava/util/List;)Lorg/jetbrains/dokka/pages/RootPageNode; - public synthetic fun modified (Ljava/lang/String;Lorg/jetbrains/dokka/pages/ContentNode;Ljava/util/Set;Ljava/util/List;Ljava/util/List;)Lorg/jetbrains/dokka/pages/ContentPage; - public fun modified (Ljava/lang/String;Lorg/jetbrains/dokka/pages/ContentNode;Ljava/util/Set;Ljava/util/List;Ljava/util/List;)Lorg/jetbrains/dokka/pages/MultimoduleRootPageNode; + public fun modified (Ljava/lang/String;Lorg/jetbrains/dokka/pages/ContentNode;Ljava/util/Set;Ljava/util/List;Ljava/util/List;)Lorg/jetbrains/dokka/pages/ContentPage; } public final class org/jetbrains/dokka/pages/MultimoduleTable : org/jetbrains/dokka/pages/Style { @@ -4166,7 +4165,7 @@ public final class org/jetbrains/dokka/pages/PlatformHintedContent : org/jetbrai public synthetic fun transformChildren (Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/dokka/pages/ContentComposite; public fun transformChildren (Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/dokka/pages/PlatformHintedContent; public synthetic fun withNewExtras (Lorg/jetbrains/dokka/model/properties/PropertyContainer;)Ljava/lang/Object; - public fun withNewExtras (Lorg/jetbrains/dokka/model/properties/PropertyContainer;)Ljava/lang/Void; + public fun withNewExtras (Lorg/jetbrains/dokka/model/properties/PropertyContainer;)Lorg/jetbrains/dokka/pages/ContentNode; public synthetic fun withSourceSets (Ljava/util/Set;)Lorg/jetbrains/dokka/pages/ContentNode; public fun withSourceSets (Ljava/util/Set;)Lorg/jetbrains/dokka/pages/PlatformHintedContent; } diff --git a/core/content-matcher-test-utils/src/main/kotlin/matchers/content/ContentMatchersDsl.kt b/core/content-matcher-test-utils/src/main/kotlin/matchers/content/ContentMatchersDsl.kt index 5a8de9ce..026f7b6b 100644 --- a/core/content-matcher-test-utils/src/main/kotlin/matchers/content/ContentMatchersDsl.kt +++ b/core/content-matcher-test-utils/src/main/kotlin/matchers/content/ContentMatchersDsl.kt @@ -12,7 +12,7 @@ import kotlin.test.assertEquals import kotlin.test.asserter // entry point: -fun ContentNode.assertNode(block: ContentMatcherBuilder.() -> Unit) { +public fun ContentNode.assertNode(block: ContentMatcherBuilder.() -> Unit) { val matcher = ContentMatcherBuilder(ContentComposite::class).apply(block).build() try { matcher.tryMatch(this) @@ -24,123 +24,161 @@ fun ContentNode.assertNode(block: ContentMatcherBuilder.() -> // DSL: @DslMarker -annotation class ContentMatchersDsl +public annotation class ContentMatchersDsl @ContentMatchersDsl -class ContentMatcherBuilder @PublishedApi internal constructor(private val kclass: KClass) { +public class ContentMatcherBuilder @PublishedApi internal constructor(private val kclass: KClass) { @PublishedApi - internal val children = mutableListOf() + internal val children: MutableList = mutableListOf() internal val assertions = mutableListOf Unit>() - fun build() = CompositeMatcher(kclass, childrenOrSkip()) { assertions.forEach { it() } } + public fun build(): CompositeMatcher = CompositeMatcher(kclass, childrenOrSkip()) { assertions.forEach { it() } } // part of DSL that cannot be defined as an extension - operator fun String.unaryPlus() { + public operator fun String.unaryPlus() { children += TextMatcher(this) } private fun childrenOrSkip() = if (children.isEmpty() && assertions.isNotEmpty()) listOf(Anything) else children } -fun ContentMatcherBuilder.check(assertion: T.() -> Unit) { +public fun ContentMatcherBuilder.check(assertion: T.() -> Unit) { assertions += assertion } private val ContentComposite.extractedText get() = withDescendants().filterIsInstance().joinToString(separator = "") { it.text } -fun ContentMatcherBuilder.hasExactText(expected: String) { +public fun ContentMatcherBuilder.hasExactText(expected: String) { assertions += { assertEquals(expected, this.extractedText) } } -inline fun ContentMatcherBuilder<*>.composite( +public inline fun ContentMatcherBuilder<*>.composite( block: ContentMatcherBuilder.() -> Unit ) { children += ContentMatcherBuilder(S::class).apply(block).build() } -inline fun ContentMatcherBuilder<*>.node(noinline assertions: S.() -> Unit = {}) { +public inline fun ContentMatcherBuilder<*>.node(noinline assertions: S.() -> Unit = {}) { children += NodeMatcher(S::class, assertions) } -fun ContentMatcherBuilder<*>.skipAllNotMatching() { +public fun ContentMatcherBuilder<*>.skipAllNotMatching() { children += Anything } // Convenience functions: -fun ContentMatcherBuilder<*>.group(block: ContentMatcherBuilder.() -> Unit) = composite(block) +public fun ContentMatcherBuilder<*>.group(block: ContentMatcherBuilder.() -> Unit) { + composite(block) +} -fun ContentMatcherBuilder<*>.tabbedGroup( +public fun ContentMatcherBuilder<*>.tabbedGroup( block: ContentMatcherBuilder.() -> Unit -) = composite { - block() - check { assertContains(this.style, ContentStyle.TabbedContent) } +) { + composite { + block() + check { assertContains(this.style, ContentStyle.TabbedContent) } + } } -fun ContentMatcherBuilder<*>.tab( +public fun ContentMatcherBuilder<*>.tab( tabbedContentType: TabbedContentType, block: ContentMatcherBuilder.() -> Unit -) = composite { - block() - check { - assertEquals(tabbedContentType, this.extra[TabbedContentTypeExtra]?.value) +) { + composite { + block() + check { + assertEquals(tabbedContentType, this.extra[TabbedContentTypeExtra]?.value) + } } } -fun ContentMatcherBuilder<*>.header(expectedLevel: Int? = null, block: ContentMatcherBuilder.() -> Unit) = +public fun ContentMatcherBuilder<*>.header(expectedLevel: Int? = null, block: ContentMatcherBuilder.() -> Unit) { composite { block() check { if (expectedLevel != null) assertEquals(expectedLevel, this.level) } } +} -fun ContentMatcherBuilder<*>.p(block: ContentMatcherBuilder.() -> Unit) = +public fun ContentMatcherBuilder<*>.p(block: ContentMatcherBuilder.() -> Unit) { composite { block() check { assertContains(this.style, TextStyle.Paragraph) } } +} -fun ContentMatcherBuilder<*>.link(block: ContentMatcherBuilder.() -> Unit) = composite(block) +public fun ContentMatcherBuilder<*>.link(block: ContentMatcherBuilder.() -> Unit) { + composite(block) +} -fun ContentMatcherBuilder<*>.table(block: ContentMatcherBuilder.() -> Unit) = composite(block) +public fun ContentMatcherBuilder<*>.table(block: ContentMatcherBuilder.() -> Unit) { + composite(block) +} -fun ContentMatcherBuilder<*>.platformHinted(block: ContentMatcherBuilder.() -> Unit) = +public fun ContentMatcherBuilder<*>.platformHinted(block: ContentMatcherBuilder.() -> Unit) { composite { group(block) } +} -fun ContentMatcherBuilder<*>.list(block: ContentMatcherBuilder.() -> Unit) = composite(block) +public fun ContentMatcherBuilder<*>.list(block: ContentMatcherBuilder.() -> Unit) { + composite(block) +} -fun ContentMatcherBuilder<*>.codeBlock(block: ContentMatcherBuilder.() -> Unit) = composite(block) +public fun ContentMatcherBuilder<*>.codeBlock(block: ContentMatcherBuilder.() -> Unit) { + composite(block) +} -fun ContentMatcherBuilder<*>.codeInline(block: ContentMatcherBuilder.() -> Unit) = composite(block) +public fun ContentMatcherBuilder<*>.codeInline(block: ContentMatcherBuilder.() -> Unit) { + composite(block) +} -fun ContentMatcherBuilder<*>.caption(block: ContentMatcherBuilder.() -> Unit) = composite { - block() - check { assertContains(this.style, ContentStyle.Caption) } +public fun ContentMatcherBuilder<*>.caption(block: ContentMatcherBuilder.() -> Unit) { + composite { + block() + check { assertContains(this.style, ContentStyle.Caption) } + } } -fun ContentMatcherBuilder<*>.br() = node() +public fun ContentMatcherBuilder<*>.br() { + node() +} -fun ContentMatcherBuilder<*>.somewhere(block: ContentMatcherBuilder<*>.() -> Unit) { +public fun ContentMatcherBuilder<*>.somewhere(block: ContentMatcherBuilder<*>.() -> Unit) { skipAllNotMatching() block() skipAllNotMatching() } -fun ContentMatcherBuilder<*>.divergentGroup(block: ContentMatcherBuilder.() -> Unit) = +public fun ContentMatcherBuilder<*>.divergentGroup( + block: ContentMatcherBuilder.() -> Unit +) { composite(block) +} -fun ContentMatcherBuilder.divergentInstance(block: ContentMatcherBuilder.() -> Unit) = +public fun ContentMatcherBuilder.divergentInstance( + block: ContentMatcherBuilder.() -> Unit +) { composite(block) +} -fun ContentMatcherBuilder.before(block: ContentMatcherBuilder.() -> Unit) = +public fun ContentMatcherBuilder.before( + block: ContentMatcherBuilder.() -> Unit +) { composite(block) +} -fun ContentMatcherBuilder.divergent(block: ContentMatcherBuilder.() -> Unit) = +public fun ContentMatcherBuilder.divergent( + block: ContentMatcherBuilder.() -> Unit +) { composite(block) +} -fun ContentMatcherBuilder.after(block: ContentMatcherBuilder.() -> Unit) = +public fun ContentMatcherBuilder.after( + block: ContentMatcherBuilder.() -> Unit +) { composite(block) +} /* * TODO replace with kotlin.test.assertContains after migrating to Kotlin language version 1.5+ diff --git a/core/content-matcher-test-utils/src/main/kotlin/matchers/content/contentMatchers.kt b/core/content-matcher-test-utils/src/main/kotlin/matchers/content/contentMatchers.kt index a6549b31..412f728b 100644 --- a/core/content-matcher-test-utils/src/main/kotlin/matchers/content/contentMatchers.kt +++ b/core/content-matcher-test-utils/src/main/kotlin/matchers/content/contentMatchers.kt @@ -14,15 +14,18 @@ import kotlin.reflect.KClass import kotlin.reflect.full.cast import kotlin.reflect.full.safeCast -sealed class MatcherElement +public sealed class MatcherElement -class TextMatcher(val text: String) : MatcherElement() +public class TextMatcher( + public val text: String +) : MatcherElement() -open class NodeMatcher( - val kclass: KClass, - val assertions: T.() -> Unit = {} +public open class NodeMatcher( + public val kclass: KClass, + public val assertions: T.() -> Unit = {} ) : MatcherElement() { - open fun tryMatch(node: ContentNode) { + + public open fun tryMatch(node: ContentNode) { kclass.safeCast(node)?.apply { try { assertions() @@ -37,11 +40,12 @@ open class NodeMatcher( } } -class CompositeMatcher( +public class CompositeMatcher( kclass: KClass, private val children: List, assertions: T.() -> Unit = {} ) : NodeMatcher(kclass, assertions) { + internal val normalizedChildren: List by lazy { children.fold(listOf()) { acc, e -> when { @@ -61,7 +65,7 @@ class CompositeMatcher( } } -object Anything : MatcherElement() +public object Anything : MatcherElement() private sealed class MatchWalkerState { abstract fun next(node: ContentNode): MatchWalkerState @@ -176,7 +180,7 @@ private fun ContentNode.debugRepresentation() = asPrintableTree { element -> ) } -data class MatcherError( +public data class MatcherError( override val message: String, val anchor: MatcherElement, val anchorAfter: Boolean = false, diff --git a/core/src/main/kotlin/ConfigurationJsonUtils.kt b/core/src/main/kotlin/ConfigurationJsonUtils.kt index 9e03b906..e693f4ef 100644 --- a/core/src/main/kotlin/ConfigurationJsonUtils.kt +++ b/core/src/main/kotlin/ConfigurationJsonUtils.kt @@ -9,15 +9,15 @@ import org.jetbrains.dokka.utilities.parseJson import org.jetbrains.dokka.utilities.serializeAsCompactJson import org.jetbrains.dokka.utilities.serializeAsPrettyJson -fun DokkaConfigurationImpl(json: String): DokkaConfigurationImpl = parseJson(json) +public fun DokkaConfigurationImpl(json: String): DokkaConfigurationImpl = parseJson(json) -fun GlobalDokkaConfiguration(json: String): GlobalDokkaConfiguration = parseJson(json) +public fun GlobalDokkaConfiguration(json: String): GlobalDokkaConfiguration = parseJson(json) @Deprecated("Renamed to better distinguish between compact/pretty prints", ReplaceWith("this.toCompactJsonString()")) -fun DokkaConfiguration.toJsonString(): String = this.toCompactJsonString() +public fun DokkaConfiguration.toJsonString(): String = this.toCompactJsonString() @Deprecated("Renamed to better distinguish between compact/pretty prints", ReplaceWith("this.toCompactJsonString()")) -fun T.toJsonString(): String = this.toCompactJsonString() +public fun T.toJsonString(): String = this.toCompactJsonString() /** * Serializes [DokkaConfiguration] as a machine-readable and compact JSON string. @@ -25,7 +25,7 @@ fun T.toJsonString(): String = this.toCompactJsonString( * The returned string is not very human friendly as it will be difficult to parse by eyes due to it * being compact and in one line. If you want to show the output to a human being, see [toPrettyJsonString]. */ -fun DokkaConfiguration.toCompactJsonString(): String = serializeAsCompactJson(this) +public fun DokkaConfiguration.toCompactJsonString(): String = serializeAsCompactJson(this) /** * Serializes [DokkaConfiguration] as a human-readable (pretty printed) JSON string. @@ -34,7 +34,7 @@ fun DokkaConfiguration.toCompactJsonString(): String = serializeAsCompactJson(th * desirable when passing this value between API consumers/producers. If you want * a machine-readable and compact json string, see [toCompactJsonString]. */ -fun DokkaConfiguration.toPrettyJsonString(): String = serializeAsPrettyJson(this) +public fun DokkaConfiguration.toPrettyJsonString(): String = serializeAsPrettyJson(this) /** * Serializes a [ConfigurableBlock] as a machine-readable and compact JSON string. @@ -42,7 +42,7 @@ fun DokkaConfiguration.toPrettyJsonString(): String = serializeAsPrettyJson(this * The returned string is not very human friendly as it will be difficult to parse by eyes due to it * being compact and in one line. If you want to show the output to a human being, see [toPrettyJsonString]. */ -fun T.toCompactJsonString(): String = serializeAsCompactJson(this) +public fun T.toCompactJsonString(): String = serializeAsCompactJson(this) /** * Serializes a [ConfigurableBlock] as a human-readable (pretty printed) JSON string. @@ -51,4 +51,4 @@ fun T.toCompactJsonString(): String = serializeAsCompact * desirable when passing this value between API consumers/producers. If you want * a machine-readable and compact json string, see [toCompactJsonString]. */ -fun T.toPrettyJsonString(): String = serializeAsCompactJson(this) +public fun T.toPrettyJsonString(): String = serializeAsCompactJson(this) diff --git a/core/src/main/kotlin/CoreExtensions.kt b/core/src/main/kotlin/CoreExtensions.kt index d689d102..ca2504e2 100644 --- a/core/src/main/kotlin/CoreExtensions.kt +++ b/core/src/main/kotlin/CoreExtensions.kt @@ -16,17 +16,25 @@ import org.jetbrains.dokka.transformers.sources.SourceToDocumentableTranslator import org.jetbrains.dokka.validity.PreGenerationChecker import kotlin.reflect.KProperty -object CoreExtensions { - - val preGenerationCheck by coreExtensionPoint() - val generation by coreExtensionPoint() - val sourceToDocumentableTranslator by coreExtensionPoint() - val documentableMerger by coreExtensionPoint() - val documentableTransformer by coreExtensionPoint() - val documentableToPageTranslator by coreExtensionPoint() - val pageTransformer by coreExtensionPoint() - val renderer by coreExtensionPoint() - val postActions by coreExtensionPoint() +public object CoreExtensions { + + public val preGenerationCheck: ExtensionPoint by coreExtensionPoint() + + public val generation: ExtensionPoint by coreExtensionPoint() + + public val sourceToDocumentableTranslator: ExtensionPoint by coreExtensionPoint() + + public val documentableMerger: ExtensionPoint by coreExtensionPoint() + + public val documentableTransformer: ExtensionPoint by coreExtensionPoint() + + public val documentableToPageTranslator: ExtensionPoint by coreExtensionPoint() + + public val pageTransformer: ExtensionPoint by coreExtensionPoint() + + public val renderer: ExtensionPoint by coreExtensionPoint() + + public val postActions: ExtensionPoint by coreExtensionPoint() private fun coreExtensionPoint() = object { operator fun provideDelegate(thisRef: CoreExtensions, property: KProperty<*>): Lazy> = diff --git a/core/src/main/kotlin/DokkaBootstrap.kt b/core/src/main/kotlin/DokkaBootstrap.kt index 13cc9ded..d3d82e39 100644 --- a/core/src/main/kotlin/DokkaBootstrap.kt +++ b/core/src/main/kotlin/DokkaBootstrap.kt @@ -6,10 +6,10 @@ package org.jetbrains.dokka import java.util.function.BiConsumer -interface DokkaBootstrap { +public interface DokkaBootstrap { @Throws(Throwable::class) - fun configure(serializedConfigurationJSON: String, logger: BiConsumer) + public fun configure(serializedConfigurationJSON: String, logger: BiConsumer) @Throws(Throwable::class) - fun generate() + public fun generate() } diff --git a/core/src/main/kotlin/DokkaBootstrapImpl.kt b/core/src/main/kotlin/DokkaBootstrapImpl.kt index c0af9a41..65f0ef72 100644 --- a/core/src/main/kotlin/DokkaBootstrapImpl.kt +++ b/core/src/main/kotlin/DokkaBootstrapImpl.kt @@ -13,9 +13,11 @@ import java.util.function.BiConsumer * Accessed with reflection */ @Suppress("unused") -class DokkaBootstrapImpl : DokkaBootstrap { +public class DokkaBootstrapImpl : DokkaBootstrap { - class DokkaProxyLogger(val consumer: BiConsumer) : DokkaLogger { + public class DokkaProxyLogger( + public val consumer: BiConsumer + ) : DokkaLogger { private val warningsCounter = AtomicInteger() private val errorsCounter = AtomicInteger() @@ -50,14 +52,18 @@ class DokkaBootstrapImpl : DokkaBootstrap { private lateinit var generator: DokkaGenerator - fun configure(logger: DokkaLogger, configuration: DokkaConfigurationImpl) { + public fun configure(logger: DokkaLogger, configuration: DokkaConfigurationImpl) { generator = DokkaGenerator(configuration, logger) } - override fun configure(serializedConfigurationJSON: String, logger: BiConsumer) = configure( - DokkaProxyLogger(logger), - DokkaConfigurationImpl(serializedConfigurationJSON) - ) + override fun configure(serializedConfigurationJSON: String, logger: BiConsumer) { + configure( + DokkaProxyLogger(logger), + DokkaConfigurationImpl(serializedConfigurationJSON) + ) + } - override fun generate() = generator.generate() + override fun generate() { + generator.generate() + } } diff --git a/core/src/main/kotlin/DokkaException.kt b/core/src/main/kotlin/DokkaException.kt index cc487175..f16a2649 100644 --- a/core/src/main/kotlin/DokkaException.kt +++ b/core/src/main/kotlin/DokkaException.kt @@ -4,4 +4,4 @@ package org.jetbrains.dokka -open class DokkaException(message: String) : RuntimeException(message) +public open class DokkaException(message: String) : RuntimeException(message) diff --git a/core/src/main/kotlin/DokkaGenerator.kt b/core/src/main/kotlin/DokkaGenerator.kt index 6132b92f..9ae3adb4 100644 --- a/core/src/main/kotlin/DokkaGenerator.kt +++ b/core/src/main/kotlin/DokkaGenerator.kt @@ -18,33 +18,35 @@ import org.jetbrains.dokka.utilities.DokkaLogger * * [generate] method has been split into submethods for test reasons */ -class DokkaGenerator( +public class DokkaGenerator( private val configuration: DokkaConfiguration, private val logger: DokkaLogger ) { - fun generate() = timed(logger) { - report("Initializing plugins") - val context = initializePlugins(configuration, logger) + public fun generate() { + timed(logger) { + report("Initializing plugins") + val context = initializePlugins(configuration, logger) - runCatching { - context.single(CoreExtensions.generation).run { - logger.progress("Dokka is performing: $generationName") - generate() + runCatching { + context.single(CoreExtensions.generation).run { + logger.progress("Dokka is performing: $generationName") + generate() + } + }.exceptionOrNull()?.let { e -> + finalizeCoroutines() + throw e } - }.exceptionOrNull()?.let { e -> - finalizeCoroutines() - throw e - } - finalizeCoroutines() - }.dump("\n\n === TIME MEASUREMENT ===\n") + finalizeCoroutines() + }.dump("\n\n === TIME MEASUREMENT ===\n") + } - fun initializePlugins( + public fun initializePlugins( configuration: DokkaConfiguration, logger: DokkaLogger, additionalPlugins: List = emptyList() - ) = DokkaContext.create(configuration, logger, additionalPlugins) + ): DokkaContext = DokkaContext.create(configuration, logger, additionalPlugins) @OptIn(DelicateCoroutinesApi::class) private fun finalizeCoroutines() { @@ -54,15 +56,15 @@ class DokkaGenerator( } } -class Timer internal constructor(startTime: Long, private val logger: DokkaLogger?) { +public class Timer internal constructor(startTime: Long, private val logger: DokkaLogger?) { private val steps = mutableListOf("" to startTime) - fun report(name: String) { + public fun report(name: String) { logger?.progress(name) steps += (name to System.currentTimeMillis()) } - fun dump(prefix: String = "") { + public fun dump(prefix: String = "") { logger?.info(prefix) val namePad = steps.map { it.first.length }.maxOrNull() ?: 0 val timePad = steps.windowed(2).map { (p1, p2) -> p2.second - p1.second }.maxOrNull()?.toString()?.length ?: 0 diff --git a/core/src/main/kotlin/DokkaVersion.kt b/core/src/main/kotlin/DokkaVersion.kt index 37ce77ba..d846988b 100644 --- a/core/src/main/kotlin/DokkaVersion.kt +++ b/core/src/main/kotlin/DokkaVersion.kt @@ -6,8 +6,8 @@ package org.jetbrains.dokka import java.util.* -object DokkaVersion { - val version: String by lazy { +public object DokkaVersion { + public val version: String by lazy { javaClass.getResourceAsStream("/META-INF/dokka/dokka-version.properties").use { stream -> Properties().apply { load(stream) }.getProperty("dokka-version") } diff --git a/core/src/main/kotlin/configuration.kt b/core/src/main/kotlin/configuration.kt index 9cbc6ea2..65035d04 100644 --- a/core/src/main/kotlin/configuration.kt +++ b/core/src/main/kotlin/configuration.kt @@ -9,53 +9,55 @@ import java.io.File import java.io.Serializable import java.net.URL -object DokkaDefaults { - val moduleName: String = "root" - val moduleVersion: String? = null - val outputDir = File("./dokka") - const val failOnWarning: Boolean = false - const val suppressObviousFunctions = true - const val suppressInheritedMembers = false - const val offlineMode: Boolean = false +public object DokkaDefaults { + public val moduleName: String = "root" + public val moduleVersion: String? = null + public val outputDir: File = File("./dokka") + public const val failOnWarning: Boolean = false + public const val suppressObviousFunctions: Boolean = true + public const val suppressInheritedMembers: Boolean = false + public const val offlineMode: Boolean = false - const val sourceSetDisplayName = "JVM" - const val sourceSetName = "main" - val analysisPlatform: Platform = Platform.DEFAULT + public const val sourceSetDisplayName: String = "JVM" + public const val sourceSetName: String = "main" + public val analysisPlatform: Platform = Platform.DEFAULT - const val suppress: Boolean = false - const val suppressGeneratedFiles: Boolean = true + public const val suppress: Boolean = false + public const val suppressGeneratedFiles: Boolean = true - const val skipEmptyPackages: Boolean = true - const val skipDeprecated: Boolean = false + public const val skipEmptyPackages: Boolean = true + public const val skipDeprecated: Boolean = false - const val reportUndocumented: Boolean = false + public const val reportUndocumented: Boolean = false - const val noStdlibLink: Boolean = false - const val noAndroidSdkLink: Boolean = false - const val noJdkLink: Boolean = false - const val jdkVersion: Int = 8 + public const val noStdlibLink: Boolean = false + public const val noAndroidSdkLink: Boolean = false + public const val noJdkLink: Boolean = false + public const val jdkVersion: Int = 8 - const val includeNonPublic: Boolean = false - val documentedVisibilities: Set = setOf(DokkaConfiguration.Visibility.PUBLIC) + public const val includeNonPublic: Boolean = false + public val documentedVisibilities: Set = setOf(DokkaConfiguration.Visibility.PUBLIC) - val pluginsConfiguration = mutableListOf() + public val pluginsConfiguration: List = mutableListOf() - const val delayTemplateSubstitution: Boolean = false + public const val delayTemplateSubstitution: Boolean = false - val cacheRoot: File? = null + public val cacheRoot: File? = null } -enum class Platform(val key: String) { +public enum class Platform( + public val key: String +) { jvm("jvm"), js("js"), wasm("wasm"), native("native"), common("common"); - companion object { - val DEFAULT = jvm + public companion object { + public val DEFAULT: Platform = jvm - fun fromString(key: String): Platform { + public fun fromString(key: String): Platform { return when (key.toLowerCase()) { jvm.key -> jvm js.key -> js @@ -70,14 +72,13 @@ enum class Platform(val key: String) { } } -fun interface DokkaConfigurationBuilder { - fun build(): T +public fun interface DokkaConfigurationBuilder { + public fun build(): T } -fun Iterable>.build(): List = this.map { it.build() } +public fun Iterable>.build(): List = this.map { it.build() } - -data class DokkaSourceSetID( +public data class DokkaSourceSetID( /** * Unique identifier of the scope that this source set is placed in. * Each scope provide only unique source set names. @@ -102,13 +103,13 @@ data class DokkaSourceSetID( * * @see [apply] to learn how to apply global configuration */ -data class GlobalDokkaConfiguration( +public data class GlobalDokkaConfiguration( val perPackageOptions: List?, val externalDocumentationLinks: List?, val sourceLinks: List? ) -fun DokkaConfiguration.apply(globals: GlobalDokkaConfiguration): DokkaConfiguration = this.apply { +public fun DokkaConfiguration.apply(globals: GlobalDokkaConfiguration): DokkaConfiguration = this.apply { sourceSets.forEach { it.perPackageOptions.cast>() .addAll(globals.perPackageOptions ?: emptyList()) @@ -124,21 +125,21 @@ fun DokkaConfiguration.apply(globals: GlobalDokkaConfiguration): DokkaConfigurat } } -interface DokkaConfiguration : Serializable { - val moduleName: String - val moduleVersion: String? - val outputDir: File - val cacheRoot: File? - val offlineMode: Boolean - val failOnWarning: Boolean - val sourceSets: List - val modules: List - val pluginsClasspath: List - val pluginsConfiguration: List - val delayTemplateSubstitution: Boolean - val suppressObviousFunctions: Boolean - val includes: Set - val suppressInheritedMembers: Boolean +public interface DokkaConfiguration : Serializable { + public val moduleName: String + public val moduleVersion: String? + public val outputDir: File + public val cacheRoot: File? + public val offlineMode: Boolean + public val failOnWarning: Boolean + public val sourceSets: List + public val modules: List + public val pluginsClasspath: List + public val pluginsConfiguration: List + public val delayTemplateSubstitution: Boolean + public val suppressObviousFunctions: Boolean + public val includes: Set + public val suppressInheritedMembers: Boolean /** * Whether coroutines dispatchers should be shutdown after @@ -157,46 +158,46 @@ interface DokkaConfiguration : Serializable { * and closing it down will leave the build in an inoperable state. * One such example is unit tests, for which finalization should be disabled. */ - val finalizeCoroutines: Boolean + public val finalizeCoroutines: Boolean - enum class SerializationFormat : Serializable { + public enum class SerializationFormat : Serializable { JSON, XML } - interface PluginConfiguration : Serializable { - val fqPluginName: String - val serializationFormat: SerializationFormat - val values: String + public interface PluginConfiguration : Serializable { + public val fqPluginName: String + public val serializationFormat: SerializationFormat + public val values: String } - interface DokkaSourceSet : Serializable { - val sourceSetID: DokkaSourceSetID - val displayName: String - val classpath: List - val sourceRoots: Set - val dependentSourceSets: Set - val samples: Set - val includes: Set + public interface DokkaSourceSet : Serializable { + public val sourceSetID: DokkaSourceSetID + public val displayName: String + public val classpath: List + public val sourceRoots: Set + public val dependentSourceSets: Set + public val samples: Set + public val includes: Set @Deprecated(message = "Use [documentedVisibilities] property for a more flexible control over documented visibilities") - val includeNonPublic: Boolean - val reportUndocumented: Boolean - val skipEmptyPackages: Boolean - val skipDeprecated: Boolean - val jdkVersion: Int - val sourceLinks: Set - val perPackageOptions: List - val externalDocumentationLinks: Set - val languageVersion: String? - val apiVersion: String? - val noStdlibLink: Boolean - val noJdkLink: Boolean - val suppressedFiles: Set - val analysisPlatform: Platform - val documentedVisibilities: Set + public val includeNonPublic: Boolean + public val reportUndocumented: Boolean + public val skipEmptyPackages: Boolean + public val skipDeprecated: Boolean + public val jdkVersion: Int + public val sourceLinks: Set + public val perPackageOptions: List + public val externalDocumentationLinks: Set + public val languageVersion: String? + public val apiVersion: String? + public val noStdlibLink: Boolean + public val noJdkLink: Boolean + public val suppressedFiles: Set + public val analysisPlatform: Platform + public val documentedVisibilities: Set } - enum class Visibility { + public enum class Visibility { /** * `public` modifier for Java, default visibility for Kotlin */ @@ -222,45 +223,45 @@ interface DokkaConfiguration : Serializable { */ PACKAGE; - companion object { - fun fromString(value: String) = valueOf(value.toUpperCase()) + public companion object { + public fun fromString(value: String): Visibility = valueOf(value.toUpperCase()) } } - interface SourceLinkDefinition : Serializable { - val localDirectory: String - val remoteUrl: URL - val remoteLineSuffix: String? + public interface SourceLinkDefinition : Serializable { + public val localDirectory: String + public val remoteUrl: URL + public val remoteLineSuffix: String? } - interface DokkaModuleDescription : Serializable { - val name: String - val relativePathToOutputDirectory: File - val sourceOutputDirectory: File - val includes: Set + public interface DokkaModuleDescription : Serializable { + public val name: String + public val relativePathToOutputDirectory: File + public val sourceOutputDirectory: File + public val includes: Set } - interface PackageOptions : Serializable { - val matchingRegex: String + public interface PackageOptions : Serializable { + public val matchingRegex: String @Deprecated("Use [documentedVisibilities] property for a more flexible control over documented visibilities") - val includeNonPublic: Boolean - val reportUndocumented: Boolean? - val skipDeprecated: Boolean - val suppress: Boolean - val documentedVisibilities: Set + public val includeNonPublic: Boolean + public val reportUndocumented: Boolean? + public val skipDeprecated: Boolean + public val suppress: Boolean + public val documentedVisibilities: Set } - interface ExternalDocumentationLink : Serializable { - val url: URL - val packageListUrl: URL + public interface ExternalDocumentationLink : Serializable { + public val url: URL + public val packageListUrl: URL - companion object + public companion object } } @Suppress("FunctionName") -fun ExternalDocumentationLink( +public fun ExternalDocumentationLink( url: URL? = null, packageListUrl: URL? = null ): ExternalDocumentationLinkImpl { @@ -273,7 +274,7 @@ fun ExternalDocumentationLink( } @Suppress("FunctionName") -fun ExternalDocumentationLink( +public fun ExternalDocumentationLink( url: String, packageListUrl: String? = null ): ExternalDocumentationLinkImpl = ExternalDocumentationLink(url.let(::URL), packageListUrl?.let(::URL)) diff --git a/core/src/main/kotlin/defaultConfiguration.kt b/core/src/main/kotlin/defaultConfiguration.kt index 2ea5e0ef..f858d8c0 100644 --- a/core/src/main/kotlin/defaultConfiguration.kt +++ b/core/src/main/kotlin/defaultConfiguration.kt @@ -8,7 +8,7 @@ import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet import java.io.File import java.net.URL -data class DokkaConfigurationImpl( +public data class DokkaConfigurationImpl( override val moduleName: String = DokkaDefaults.moduleName, override val moduleVersion: String? = DokkaDefaults.moduleVersion, override val outputDir: File = DokkaDefaults.outputDir, @@ -26,14 +26,14 @@ data class DokkaConfigurationImpl( override val finalizeCoroutines: Boolean = true, ) : DokkaConfiguration -data class PluginConfigurationImpl( +public data class PluginConfigurationImpl( override val fqPluginName: String, override val serializationFormat: DokkaConfiguration.SerializationFormat, override val values: String ) : DokkaConfiguration.PluginConfiguration -data class DokkaSourceSetImpl( +public data class DokkaSourceSetImpl( override val disp