From 97b1715e90e385a196f47efafb2012bf36bd3a92 Mon Sep 17 00:00:00 2001 From: IgnatBeresnev Date: Tue, 4 Jul 2023 13:10:40 +0200 Subject: [PATCH] Add documentation and improve java-analysis structure --- core/api/core.api | 2 +- core/src/main/kotlin/model/Documentable.kt | 10 +- .../annotations/SinceKotlinTransformer.kt | 4 +- .../comments/DocTagToContentConverter.kt | 4 +- .../sourcelinks/SourceLinksTransformer.kt | 2 +- .../src/test/kotlin/markdown/ParserTest.kt | 96 +++++++++---------- ...PackageDocumentationTransformerUnitTest.kt | 4 +- .../api/analysis-java-psi.api | 80 ++++++++-------- .../analysis-java-psi/build.gradle.kts | 1 - .../DefaultPsiToDocumentableTranslator.kt | 1 + .../dokka/analysis/java/JavaAnalysisPlugin.kt | 9 +- .../java/{ => doccomment}/DocComment.kt | 3 +- .../{ => doccomment}/DocCommentCreator.kt | 2 +- .../{ => doccomment}/DocCommentFactory.kt | 2 +- .../java/{ => doccomment}/DocCommentFinder.kt | 2 +- .../{ => doccomment}/DocumentationContent.kt | 3 +- .../java/{ => doccomment}/JavaDocComment.kt | 3 +- .../{ => doccomment}/JavaDocCommentCreator.kt | 2 +- .../PsiDocumentationContent.kt | 3 +- .../java/{ => parsers}/DocCommentParser.kt | 3 +- .../java/{ => parsers}/DokkaPsiParser.kt | 7 +- .../java/parsers/JavaDocCommentParser.kt | 8 +- .../analysis/java/parsers/JavadocParser.kt | 3 +- .../doctag/DocTagParserContext.kt | 2 +- .../parsers/doctag/HtmlToDocTagConverter.kt | 1 - .../doctag/InheritDocTagContentProvider.kt | 4 +- .../parsers/doctag/InheritDocTagResolver.kt | 4 +- .../java/parsers/doctag/PsiDocTagParser.kt | 2 - .../doctag/PsiElementToHtmlConverter.kt | 5 +- .../java/{ => util}/NoopIntellijLogger.kt | 2 +- .../analysis/java/util/PsiCommentsUtils.kt | 1 - .../dokka/analysis/java/util/PsiUtil.kt | 13 ++- .../resolveToGetDri.kt} | 2 +- .../build.gradle.kts | 9 ++ .../CompilerDescriptorAnalysisPlugin.kt | 4 +- .../configuration/AnalysisEnvironment.kt | 7 -- .../compiler/configuration/Documentable.kt | 5 +- .../java/DescriptorDocumentationContent.kt | 2 +- ...mment.kt => DescriptorKotlinDocComment.kt} | 10 +- ...t => DescriptorKotlinDocCommentCreator.kt} | 8 +- ...kt => DescriptorKotlinDocCommentParser.kt} | 12 +-- .../KotlinAnalysisSourceRootsExtractor.kt | 1 + .../KotlinInheritDocTagContentProvider.kt | 12 +-- ...uleAndPackageDocumentationFragmentsTest.kt | 6 +- .../ide/build.gradle.kts | 1 - .../ide/IdeDescriptorAnalysisPlugin.kt | 2 +- .../api/analysis-markdown-jb.api | 2 +- .../dokka/analysis/markdown/jb/MarkdownApi.kt | 3 +- .../factories/DocTagsFromIElementFactory.kt | 4 +- 49 files changed, 200 insertions(+), 178 deletions(-) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => doccomment}/DocComment.kt (69%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => doccomment}/DocCommentCreator.kt (78%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => doccomment}/DocCommentFactory.kt (89%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => doccomment}/DocCommentFinder.kt (97%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => doccomment}/DocumentationContent.kt (62%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => doccomment}/JavaDocComment.kt (96%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => doccomment}/JavaDocCommentCreator.kt (86%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => doccomment}/PsiDocumentationContent.kt (85%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => parsers}/DocCommentParser.kt (74%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => parsers}/DokkaPsiParser.kt (99%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => parsers}/doctag/DocTagParserContext.kt (95%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => parsers}/doctag/InheritDocTagContentProvider.kt (67%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{ => util}/NoopIntellijLogger.kt (97%) rename subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/{parsers/exceptionTag.kt => util/resolveToGetDri.kt} (74%) rename subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/{KotlinDocComment.kt => DescriptorKotlinDocComment.kt} (88%) rename subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/{KotlinDocCommentCreator.kt => DescriptorKotlinDocCommentCreator.kt} (78%) rename subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/{KotlinDocCommentParser.kt => DescriptorKotlinDocCommentParser.kt} (82%) diff --git a/core/api/core.api b/core/api/core.api index 059284f28e..9530899d89 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -1459,7 +1459,7 @@ public final class org/jetbrains/dokka/model/DocumentableKt { } public abstract interface class org/jetbrains/dokka/model/DocumentableSource { - public abstract fun getLineNumber ()Ljava/lang/Integer; + public abstract fun computeLineNumber ()Ljava/lang/Integer; public abstract fun getPath ()Ljava/lang/String; } diff --git a/core/src/main/kotlin/model/Documentable.kt b/core/src/main/kotlin/model/Documentable.kt index 2094a5a835..64c3e14c40 100644 --- a/core/src/main/kotlin/model/Documentable.kt +++ b/core/src/main/kotlin/model/Documentable.kt @@ -518,7 +518,15 @@ fun SourceSetDependent?.orEmpty(): SourceSetDependent = this ?: emptyM interface DocumentableSource { val path: String - val lineNumber: Int? + + /** + * Computes the first line number of the documentable's declaration/signature/identifier. + * + * Numbering is always 1-based. + * + * May return null if the sources could not be found - for example, for synthetic/generated declarations. + */ + fun computeLineNumber(): Int? } data class TypeConstructorWithKind(val typeConstructor: TypeConstructor, val kind: ClassKind) diff --git a/plugins/base/src/main/kotlin/transformers/pages/annotations/SinceKotlinTransformer.kt b/plugins/base/src/main/kotlin/transformers/pages/annotations/SinceKotlinTransformer.kt index abbc7d21a4..23b3f62588 100644 --- a/plugins/base/src/main/kotlin/transformers/pages/annotations/SinceKotlinTransformer.kt +++ b/plugins/base/src/main/kotlin/transformers/pages/annotations/SinceKotlinTransformer.kt @@ -3,7 +3,7 @@ package org.jetbrains.dokka.base.transformers.pages.annotations import org.jetbrains.dokka.DokkaConfiguration import org.jetbrains.dokka.Platform -import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_FILE_NAME +import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_ELEMENT_FILE_NAME import org.jetbrains.dokka.base.signatures.KotlinSignatureUtils.annotations import org.jetbrains.dokka.model.* import org.jetbrains.dokka.model.doc.CustomDocTag @@ -156,7 +156,7 @@ class SinceKotlinTransformer(val context: DokkaContext) : DocumentableTransforme version.toString() ) ), - name = MARKDOWN_FILE_NAME + name = MARKDOWN_ELEMENT_FILE_NAME ), "Since Kotlin" ) diff --git a/plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt b/plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt index 03ca3e9bd3..083a82cc59 100644 --- a/plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt +++ b/plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt @@ -2,7 +2,7 @@ package org.jetbrains.dokka.base.transformers.pages.comments import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet -import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_FILE_NAME +import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_ELEMENT_FILE_NAME import org.jetbrains.dokka.model.doc.* import org.jetbrains.dokka.model.properties.PropertyContainer import org.jetbrains.dokka.model.properties.plus @@ -262,5 +262,5 @@ open class DocTagToContentConverter : CommentsToContentConverter { } } - private fun CustomDocTag.isNonemptyFile() = name == MARKDOWN_FILE_NAME && children.size > 1 + private fun CustomDocTag.isNonemptyFile() = name == MARKDOWN_ELEMENT_FILE_NAME && children.size > 1 } diff --git a/plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt b/plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt index ba73bfb4e5..f2c3d3f03a 100644 --- a/plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt +++ b/plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt @@ -73,7 +73,7 @@ class SourceLinksTransformer(val context: DokkaContext) : PageTransformer { val sourcePath = File(this.path).invariantSeparatorsPath val sourceLinkPath = File(sourceLink.path).invariantSeparatorsPath - val lineNumber = this.lineNumber + val lineNumber = this.computeLineNumber() return sourceLink.url + sourcePath.split(sourceLinkPath)[1] + sourceLink.lineSuffix + diff --git a/plugins/base/src/test/kotlin/markdown/ParserTest.kt b/plugins/base/src/test/kotlin/markdown/ParserTest.kt index 74cdeba7aa..41b086eea8 100644 --- a/plugins/base/src/test/kotlin/markdown/ParserTest.kt +++ b/plugins/base/src/test/kotlin/markdown/ParserTest.kt @@ -2,7 +2,7 @@ package org.jetbrains.dokka.tests import markdown.KDocTest -import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_FILE_NAME +import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_ELEMENT_FILE_NAME import org.jetbrains.dokka.analysis.markdown.jb.MarkdownParser import org.jetbrains.dokka.model.doc.* import org.junit.jupiter.api.Disabled @@ -26,7 +26,7 @@ class ParserTest : KDocTest() { Description( CustomDocTag( listOf(P(listOf(Text("This is simple test of string Next line")))), - name = MARKDOWN_FILE_NAME + name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -53,7 +53,7 @@ class ParserTest : KDocTest() { ) ) ), - name = MARKDOWN_FILE_NAME + name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -82,7 +82,7 @@ class ParserTest : KDocTest() { B(listOf(I(listOf(Text("line"))))) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -100,7 +100,7 @@ class ParserTest : KDocTest() { Description( CustomDocTag( listOf(P(listOf(Text("This is simple text with: colon!")))), - name = MARKDOWN_FILE_NAME + name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -120,7 +120,7 @@ class ParserTest : KDocTest() { Description( CustomDocTag( listOf(P(listOf(Text("Text and String")))), - name = MARKDOWN_FILE_NAME + name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -144,7 +144,7 @@ class ParserTest : KDocTest() { listOf( P(listOf(Text("Paragraph number one"))), P(listOf(Text("Paragraph"), Br, Text("number two"))) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -160,7 +160,7 @@ class ParserTest : KDocTest() { Description( CustomDocTag( listOf(P(listOf(I(listOf(Text("text")))))), - name = MARKDOWN_FILE_NAME + name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -176,7 +176,7 @@ class ParserTest : KDocTest() { Description( CustomDocTag( listOf(P(listOf(Text("text_with_underscores")))), - name = MARKDOWN_FILE_NAME + name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -192,7 +192,7 @@ class ParserTest : KDocTest() { Description( CustomDocTag( listOf(P(listOf(I(listOf(Text("text")))))), - name = MARKDOWN_FILE_NAME + name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -221,7 +221,7 @@ class ParserTest : KDocTest() { Text("x\".") ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -250,7 +250,7 @@ class ParserTest : KDocTest() { Text("x\".") ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -267,7 +267,7 @@ class ParserTest : KDocTest() { CustomDocTag( listOf( P(listOf(Text("Embedded*Star"))) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -293,7 +293,7 @@ class ParserTest : KDocTest() { Li(listOf(P(listOf(Text("list item 2"))))) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -320,7 +320,7 @@ class ParserTest : KDocTest() { Li(listOf(P(listOf(Text("list item 2"), Br, Text("continue 2"))))) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -367,7 +367,7 @@ class ParserTest : KDocTest() { ) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -415,7 +415,7 @@ class ParserTest : KDocTest() { ) ), P(listOf(Text("New paragraph"))) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -441,7 +441,7 @@ class ParserTest : KDocTest() { ), mapOf("start" to "1") ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -468,7 +468,7 @@ class ParserTest : KDocTest() { ), mapOf("start" to "9") ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -496,7 +496,7 @@ class ParserTest : KDocTest() { ), mapOf("start" to "2") ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -544,7 +544,7 @@ class ParserTest : KDocTest() { ), mapOf("start" to "1") ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -595,7 +595,7 @@ class ParserTest : KDocTest() { mapOf("start" to "1") ), P(listOf(Text("New paragraph"))) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -645,7 +645,7 @@ class ParserTest : KDocTest() { mapOf("start" to "1") ), P(listOf(Text("New paragraph"))) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -669,7 +669,7 @@ class ParserTest : KDocTest() { H1(listOf(Text("Header 1"))), P(listOf(Text("Following text"))), P(listOf(Text("New paragraph"))) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -711,7 +711,7 @@ class ParserTest : KDocTest() { P(listOf(Text("Text 5"))), H6(listOf(Text("Header 6"))), P(listOf(Text("Text 6"))) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -737,7 +737,7 @@ class ParserTest : KDocTest() { B(listOf(Text("line 2"))) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -772,7 +772,7 @@ class ParserTest : KDocTest() { HorizontalRule, P(listOf(Text("text 4"))), HorizontalRule - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -810,7 +810,7 @@ class ParserTest : KDocTest() { P(listOf(Text("Quote"))) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -855,7 +855,7 @@ class ParserTest : KDocTest() { P(listOf(Text("Quote"))) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -917,7 +917,7 @@ class ParserTest : KDocTest() { P(listOf(Text("Quote"))) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -942,7 +942,7 @@ class ParserTest : KDocTest() { Text(" Sample text") ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -983,7 +983,7 @@ class ParserTest : KDocTest() { mapOf("lang" to "kotlin") ), P(listOf(Text("Sample text"))) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1010,7 +1010,7 @@ class ParserTest : KDocTest() { ) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1036,7 +1036,7 @@ class ParserTest : KDocTest() { ) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1064,7 +1064,7 @@ class ParserTest : KDocTest() { ) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1092,7 +1092,7 @@ class ParserTest : KDocTest() { ) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1122,7 +1122,7 @@ class ParserTest : KDocTest() { Text(".") ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1152,7 +1152,7 @@ class ParserTest : KDocTest() { Text(" and sometimes example.com (but not on Github, for example).") ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1241,7 +1241,7 @@ class ParserTest : KDocTest() { ) ), P(listOf(Text("Some text to show that the reference links can follow later."))) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1262,7 +1262,7 @@ class ParserTest : KDocTest() { Text("text text") ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1289,7 +1289,7 @@ class ParserTest : KDocTest() { ) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1316,7 +1316,7 @@ class ParserTest : KDocTest() { A(listOf(Text("link to Google!")), mapOf("href" to "http://google.com")) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1349,7 +1349,7 @@ class ParserTest : KDocTest() { ) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1414,7 +1414,7 @@ class ParserTest : KDocTest() { ) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1438,7 +1438,7 @@ class ParserTest : KDocTest() { Strikethrough(listOf(Text("strikethroughed"))) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1465,7 +1465,7 @@ class ParserTest : KDocTest() { ) ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1515,7 +1515,7 @@ class ParserTest : KDocTest() { ) ) ), - name = MARKDOWN_FILE_NAME + name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) @@ -1538,7 +1538,7 @@ class ParserTest : KDocTest() { CodeInline(listOf(Text("``` "))), ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) diff --git a/plugins/base/src/test/kotlin/transformers/ModuleAndPackageDocumentationTransformerUnitTest.kt b/plugins/base/src/test/kotlin/transformers/ModuleAndPackageDocumentationTransformerUnitTest.kt index 5610c03605..e773a4da98 100644 --- a/plugins/base/src/test/kotlin/transformers/ModuleAndPackageDocumentationTransformerUnitTest.kt +++ b/plugins/base/src/test/kotlin/transformers/ModuleAndPackageDocumentationTransformerUnitTest.kt @@ -2,7 +2,7 @@ package transformers import org.jetbrains.dokka.DokkaConfiguration -import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_FILE_NAME +import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_ELEMENT_FILE_NAME import org.jetbrains.dokka.base.transformers.documentables.ModuleAndPackageDocumentationTransformer import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.model.DModule @@ -251,6 +251,6 @@ class ModuleAndPackageDocumentationTransformerUnitTest { private fun documentationNode(vararg texts: String): DocumentationNode { return DocumentationNode( texts.toList() - .map { Description(CustomDocTag(listOf(Text(it)), name = MARKDOWN_FILE_NAME)) }) + .map { Description(CustomDocTag(listOf(Text(it)), name = MARKDOWN_ELEMENT_FILE_NAME)) }) } } diff --git a/subprojects/analysis-java-psi/api/analysis-java-psi.api b/subprojects/analysis-java-psi/api/analysis-java-psi.api index aab52cd30f..404249f818 100644 --- a/subprojects/analysis-java-psi/api/analysis-java-psi.api +++ b/subprojects/analysis-java-psi/api/analysis-java-psi.api @@ -15,35 +15,6 @@ public final class org/jetbrains/dokka/analysis/java/DescriptionJavadocTag : org public static final field INSTANCE Lorg/jetbrains/dokka/analysis/java/DescriptionJavadocTag; } -public abstract interface class org/jetbrains/dokka/analysis/java/DocComment { - public abstract fun hasTag (Lorg/jetbrains/dokka/analysis/java/JavadocTag;)Z - public abstract fun resolveTag (Lorg/jetbrains/dokka/analysis/java/JavadocTag;)Ljava/util/List; -} - -public abstract interface class org/jetbrains/dokka/analysis/java/DocCommentCreator { - public abstract fun create (Lcom/intellij/psi/PsiNamedElement;)Lorg/jetbrains/dokka/analysis/java/DocComment; -} - -public final class org/jetbrains/dokka/analysis/java/DocCommentFactory { - public fun (Ljava/util/List;)V - public final fun fromElement (Lcom/intellij/psi/PsiNamedElement;)Lorg/jetbrains/dokka/analysis/java/DocComment; -} - -public final class org/jetbrains/dokka/analysis/java/DocCommentFinder { - public fun (Lorg/jetbrains/dokka/utilities/DokkaLogger;Lorg/jetbrains/dokka/analysis/java/DocCommentFactory;)V - public final fun findClosestToElement (Lcom/intellij/psi/PsiNamedElement;)Lorg/jetbrains/dokka/analysis/java/DocComment; -} - -public abstract interface class org/jetbrains/dokka/analysis/java/DocCommentParser { - public abstract fun canParse (Lorg/jetbrains/dokka/analysis/java/DocComment;)Z - public abstract fun parse (Lorg/jetbrains/dokka/analysis/java/DocComment;Lcom/intellij/psi/PsiNamedElement;)Lorg/jetbrains/dokka/model/doc/DocumentationNode; -} - -public abstract interface class org/jetbrains/dokka/analysis/java/DocumentationContent { - public abstract fun getTag ()Lorg/jetbrains/dokka/analysis/java/JavadocTag; - public abstract fun resolveSiblings ()Ljava/util/List; -} - public final class org/jetbrains/dokka/analysis/java/ExceptionJavadocTag : org/jetbrains/dokka/analysis/java/ThrowingExceptionJavadocTag { public static final field Companion Lorg/jetbrains/dokka/analysis/java/ExceptionJavadocTag$Companion; public static final field name Ljava/lang/String; @@ -56,7 +27,7 @@ public final class org/jetbrains/dokka/analysis/java/ExceptionJavadocTag$Compani public final class org/jetbrains/dokka/analysis/java/JavaAnalysisPlugin : org/jetbrains/dokka/plugability/DokkaPlugin { public fun ()V public final fun getDocCommentCreators ()Lorg/jetbrains/dokka/plugability/ExtensionPoint; - public final fun getDocCommentFinder ()Lorg/jetbrains/dokka/analysis/java/DocCommentFinder; + public final fun getDocCommentFinder ()Lorg/jetbrains/dokka/analysis/java/doccomment/DocCommentFinder; public final fun getDocCommentParsers ()Lorg/jetbrains/dokka/plugability/ExtensionPoint; public final fun getInheritDocTagContentProviders ()Lorg/jetbrains/dokka/plugability/ExtensionPoint; public final fun getKotlinLightMethodChecker ()Lorg/jetbrains/dokka/plugability/ExtensionPoint; @@ -121,7 +92,41 @@ public final class org/jetbrains/dokka/analysis/java/ThrowsJavadocTag : org/jetb public final class org/jetbrains/dokka/analysis/java/ThrowsJavadocTag$Companion { } -public final class org/jetbrains/dokka/analysis/java/doctag/DocTagParserContext { +public abstract interface class org/jetbrains/dokka/analysis/java/doccomment/DocComment { + public abstract fun hasTag (Lorg/jetbrains/dokka/analysis/java/JavadocTag;)Z + public abstract fun resolveTag (Lorg/jetbrains/dokka/analysis/java/JavadocTag;)Ljava/util/List; +} + +public abstract interface class org/jetbrains/dokka/analysis/java/doccomment/DocCommentCreator { + public abstract fun create (Lcom/intellij/psi/PsiNamedElement;)Lorg/jetbrains/dokka/analysis/java/doccomment/DocComment; +} + +public final class org/jetbrains/dokka/analysis/java/doccomment/DocCommentFactory { + public fun (Ljava/util/List;)V + public final fun fromElement (Lcom/intellij/psi/PsiNamedElement;)Lorg/jetbrains/dokka/analysis/java/doccomment/DocComment; +} + +public final class org/jetbrains/dokka/analysis/java/doccomment/DocCommentFinder { + public fun (Lorg/jetbrains/dokka/utilities/DokkaLogger;Lorg/jetbrains/dokka/analysis/java/doccomment/DocCommentFactory;)V + public final fun findClosestToElement (Lcom/intellij/psi/PsiNamedElement;)Lorg/jetbrains/dokka/analysis/java/doccomment/DocComment; +} + +public abstract interface class org/jetbrains/dokka/analysis/java/doccomment/DocumentationContent { + public abstract fun getTag ()Lorg/jetbrains/dokka/analysis/java/JavadocTag; + public abstract fun resolveSiblings ()Ljava/util/List; +} + +public abstract interface class org/jetbrains/dokka/analysis/java/parsers/DocCommentParser { + public abstract fun canParse (Lorg/jetbrains/dokka/analysis/java/doccomment/DocComment;)Z + public abstract fun parse (Lorg/jetbrains/dokka/analysis/java/doccomment/DocComment;Lcom/intellij/psi/PsiNamedElement;)Lorg/jetbrains/dokka/model/doc/DocumentationNode; +} + +public final class org/jetbrains/dokka/analysis/java/parsers/JavadocParser : org/jetbrains/dokka/analysis/java/parsers/JavaDocumentationParser { + public fun (Ljava/util/List;Lorg/jetbrains/dokka/analysis/java/doccomment/DocCommentFinder;)V + public fun parseDocumentation (Lcom/intellij/psi/PsiNamedElement;)Lorg/jetbrains/dokka/model/doc/DocumentationNode; +} + +public final class org/jetbrains/dokka/analysis/java/parsers/doctag/DocTagParserContext { public fun ()V public final fun getDocumentationNode (Ljava/lang/String;)Lorg/jetbrains/dokka/model/doc/DocumentationNode; public final fun getDri (Ljava/lang/String;)Lorg/jetbrains/dokka/links/DRI; @@ -129,19 +134,14 @@ public final class org/jetbrains/dokka/analysis/java/doctag/DocTagParserContext public final fun store (Lorg/jetbrains/dokka/model/doc/DocumentationNode;)Ljava/lang/String; } -public abstract interface class org/jetbrains/dokka/analysis/java/doctag/InheritDocTagContentProvider { - public abstract fun canConvert (Lorg/jetbrains/dokka/analysis/java/DocumentationContent;)Z - public abstract fun convertToHtml (Lorg/jetbrains/dokka/analysis/java/DocumentationContent;Lorg/jetbrains/dokka/analysis/java/doctag/DocTagParserContext;)Ljava/lang/String; -} - -public final class org/jetbrains/dokka/analysis/java/parsers/JavadocParser : org/jetbrains/dokka/analysis/java/parsers/JavaDocumentationParser { - public fun (Ljava/util/List;Lorg/jetbrains/dokka/analysis/java/DocCommentFinder;)V - public fun parseDocumentation (Lcom/intellij/psi/PsiNamedElement;)Lorg/jetbrains/dokka/model/doc/DocumentationNode; +public abstract interface class org/jetbrains/dokka/analysis/java/parsers/doctag/InheritDocTagContentProvider { + public abstract fun canConvert (Lorg/jetbrains/dokka/analysis/java/doccomment/DocumentationContent;)Z + public abstract fun convertToHtml (Lorg/jetbrains/dokka/analysis/java/doccomment/DocumentationContent;Lorg/jetbrains/dokka/analysis/java/parsers/doctag/DocTagParserContext;)Ljava/lang/String; } public final class org/jetbrains/dokka/analysis/java/util/PsiDocumentableSource : org/jetbrains/dokka/model/DocumentableSource { public fun (Lcom/intellij/psi/PsiNamedElement;)V - public fun getLineNumber ()Ljava/lang/Integer; + public fun computeLineNumber ()Ljava/lang/Integer; public fun getPath ()Ljava/lang/String; public final fun getPsi ()Lcom/intellij/psi/PsiNamedElement; } diff --git a/subprojects/analysis-java-psi/build.gradle.kts b/subprojects/analysis-java-psi/build.gradle.kts index f7e13237b5..88d043ee2a 100644 --- a/subprojects/analysis-java-psi/build.gradle.kts +++ b/subprojects/analysis-java-psi/build.gradle.kts @@ -12,7 +12,6 @@ dependencies { implementation(libs.intellij.java.psi.impl) implementation(libs.intellij.platform.util.api) implementation(libs.intellij.platform.util.rt) - implementation(libs.intellij.platform.jpsModel.impl) implementation(libs.kotlinx.coroutines.core) implementation(libs.jsoup) diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DefaultPsiToDocumentableTranslator.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DefaultPsiToDocumentableTranslator.kt index 1695e7f09e..72cf45d9f6 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DefaultPsiToDocumentableTranslator.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DefaultPsiToDocumentableTranslator.kt @@ -7,6 +7,7 @@ import com.intellij.psi.PsiManager import com.intellij.psi.PsiModifierListOwner import kotlinx.coroutines.coroutineScope import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet +import org.jetbrains.dokka.analysis.java.parsers.DokkaPsiParser import org.jetbrains.dokka.analysis.java.parsers.JavaPsiDocCommentParser import org.jetbrains.dokka.analysis.java.parsers.JavadocParser import org.jetbrains.dokka.model.DModule diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaAnalysisPlugin.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaAnalysisPlugin.kt index 5db0f29acb..8884d44413 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaAnalysisPlugin.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaAnalysisPlugin.kt @@ -7,10 +7,16 @@ import com.intellij.psi.PsiAnnotation import org.jetbrains.dokka.CoreExtensions import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet import org.jetbrains.dokka.InternalDokkaApi -import org.jetbrains.dokka.analysis.java.doctag.InheritDocTagContentProvider +import org.jetbrains.dokka.analysis.java.doccomment.DocCommentCreator +import org.jetbrains.dokka.analysis.java.doccomment.DocCommentFactory +import org.jetbrains.dokka.analysis.java.doccomment.DocCommentFinder +import org.jetbrains.dokka.analysis.java.doccomment.JavaDocCommentCreator +import org.jetbrains.dokka.analysis.java.parsers.DocCommentParser +import org.jetbrains.dokka.analysis.java.parsers.doctag.InheritDocTagContentProvider import org.jetbrains.dokka.analysis.java.parsers.JavaPsiDocCommentParser import org.jetbrains.dokka.analysis.java.parsers.doctag.InheritDocTagResolver import org.jetbrains.dokka.analysis.java.parsers.doctag.PsiDocTagParser +import org.jetbrains.dokka.analysis.java.util.NoopIntellijLoggerFactory import org.jetbrains.dokka.plugability.* import java.io.File @@ -27,6 +33,7 @@ interface SourceRootsExtractor { @InternalDokkaApi interface BreakingAbstractionKotlinLightMethodChecker { + // TODO [beresnev] not even sure it's needed, but left for compatibility and to preserve behaviour fun isLightAnnotation(annotation: PsiAnnotation): Boolean fun isLightAnnotationAttribute(attribute: JvmAnnotationAttribute): Boolean } diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocComment.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocComment.kt similarity index 69% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocComment.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocComment.kt index 4f4a5844ac..6cc32233e6 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocComment.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocComment.kt @@ -1,6 +1,7 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.doccomment import org.jetbrains.dokka.InternalDokkaApi +import org.jetbrains.dokka.analysis.java.JavadocTag /** * MUST override equals and hashcode diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentCreator.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentCreator.kt similarity index 78% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentCreator.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentCreator.kt index cac7e7bb1b..3d7d4247ea 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentCreator.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentCreator.kt @@ -1,4 +1,4 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.doccomment import com.intellij.psi.PsiNamedElement import org.jetbrains.dokka.InternalDokkaApi diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentFactory.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFactory.kt similarity index 89% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentFactory.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFactory.kt index 3566a4ce8d..96245ac2c6 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentFactory.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFactory.kt @@ -1,4 +1,4 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.doccomment import com.intellij.psi.PsiNamedElement import org.jetbrains.dokka.InternalDokkaApi diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentFinder.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFinder.kt similarity index 97% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentFinder.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFinder.kt index 2ed3c448f9..32c8dc6522 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentFinder.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFinder.kt @@ -1,4 +1,4 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.doccomment import com.intellij.psi.PsiClass import com.intellij.psi.PsiMethod diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocumentationContent.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocumentationContent.kt similarity index 62% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocumentationContent.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocumentationContent.kt index 78fc1c58cc..c06ed496b6 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocumentationContent.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocumentationContent.kt @@ -1,6 +1,7 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.doccomment import org.jetbrains.dokka.InternalDokkaApi +import org.jetbrains.dokka.analysis.java.JavadocTag @InternalDokkaApi interface DocumentationContent { diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaDocComment.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocComment.kt similarity index 96% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaDocComment.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocComment.kt index 180024d2c3..5c9be88750 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaDocComment.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocComment.kt @@ -1,8 +1,9 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.doccomment import com.intellij.psi.PsiElement import com.intellij.psi.javadoc.PsiDocComment import com.intellij.psi.javadoc.PsiDocTag +import org.jetbrains.dokka.analysis.java.* import org.jetbrains.dokka.analysis.java.util.contentElementsWithSiblingIfNeeded import org.jetbrains.dokka.analysis.java.util.getKotlinFqName import org.jetbrains.dokka.analysis.java.util.hasTag diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaDocCommentCreator.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocCommentCreator.kt similarity index 86% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaDocCommentCreator.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocCommentCreator.kt index 888f1b7f08..00efeb0aff 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaDocCommentCreator.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocCommentCreator.kt @@ -1,4 +1,4 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.doccomment import com.intellij.psi.PsiDocCommentOwner import com.intellij.psi.PsiNamedElement diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/PsiDocumentationContent.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/PsiDocumentationContent.kt similarity index 85% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/PsiDocumentationContent.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/PsiDocumentationContent.kt index 458dd95f5e..c36ce50d23 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/PsiDocumentationContent.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/PsiDocumentationContent.kt @@ -1,7 +1,8 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.doccomment import com.intellij.psi.PsiElement import com.intellij.psi.javadoc.PsiDocTag +import org.jetbrains.dokka.analysis.java.JavadocTag import org.jetbrains.dokka.analysis.java.util.contentElementsWithSiblingIfNeeded internal data class PsiDocumentationContent( diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentParser.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/DocCommentParser.kt similarity index 74% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentParser.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/DocCommentParser.kt index 2f2158677e..3f691799dc 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DocCommentParser.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/DocCommentParser.kt @@ -1,7 +1,8 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.parsers import com.intellij.psi.PsiNamedElement import org.jetbrains.dokka.InternalDokkaApi +import org.jetbrains.dokka.analysis.java.doccomment.DocComment import org.jetbrains.dokka.model.doc.DocumentationNode @InternalDokkaApi diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DokkaPsiParser.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/DokkaPsiParser.kt similarity index 99% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DokkaPsiParser.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/DokkaPsiParser.kt index 2b12103add..45f44338d9 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DokkaPsiParser.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/DokkaPsiParser.kt @@ -1,4 +1,4 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.parsers import com.intellij.lang.jvm.JvmModifier import com.intellij.lang.jvm.annotation.JvmAnnotationAttribute @@ -11,8 +11,9 @@ import com.intellij.psi.* import kotlinx.coroutines.async import kotlinx.coroutines.coroutineScope import org.jetbrains.dokka.DokkaConfiguration -import org.jetbrains.dokka.analysis.java.parsers.JavaPsiDocCommentParser -import org.jetbrains.dokka.analysis.java.parsers.JavadocParser +import org.jetbrains.dokka.analysis.java.BreakingAbstractionKotlinLightMethodChecker +import org.jetbrains.dokka.analysis.java.SyntheticElementDocumentationProvider +import org.jetbrains.dokka.analysis.java.getVisibility import org.jetbrains.dokka.analysis.java.util.* import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.links.nextTarget diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/JavaDocCommentParser.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/JavaDocCommentParser.kt index 7fd01ef49f..9c47505468 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/JavaDocCommentParser.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/JavaDocCommentParser.kt @@ -10,9 +10,11 @@ import com.intellij.psi.javadoc.PsiDocComment import com.intellij.psi.javadoc.PsiDocTag import org.jetbrains.dokka.analysis.java.* +import org.jetbrains.dokka.analysis.java.doccomment.DocComment +import org.jetbrains.dokka.analysis.java.doccomment.JavaDocComment import org.jetbrains.dokka.analysis.java.parsers.doctag.PsiDocTagParser import org.jetbrains.dokka.analysis.java.util.* -import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_FILE_NAME +import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_ELEMENT_FILE_NAME import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.model.doc.* import org.jetbrains.dokka.model.doc.Deprecated @@ -194,11 +196,11 @@ internal class JavaPsiDocCommentParser( } private fun wrapTagIfNecessary(tags: List): CustomDocTag { - val isFile = (tags.singleOrNull() as? CustomDocTag)?.name == MARKDOWN_FILE_NAME + val isFile = (tags.singleOrNull() as? CustomDocTag)?.name == MARKDOWN_ELEMENT_FILE_NAME return if (isFile) { tags.first() as CustomDocTag } else { - CustomDocTag(tags, name = MARKDOWN_FILE_NAME) + CustomDocTag(tags, name = MARKDOWN_ELEMENT_FILE_NAME) } } diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/JavadocParser.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/JavadocParser.kt index b80426e6d6..b8eba878ca 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/JavadocParser.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/JavadocParser.kt @@ -2,8 +2,7 @@ package org.jetbrains.dokka.analysis.java.parsers import com.intellij.psi.PsiNamedElement import org.jetbrains.dokka.InternalDokkaApi -import org.jetbrains.dokka.analysis.java.DocCommentFinder -import org.jetbrains.dokka.analysis.java.DocCommentParser +import org.jetbrains.dokka.analysis.java.doccomment.DocCommentFinder import org.jetbrains.dokka.model.doc.DocumentationNode internal fun interface JavaDocumentationParser { diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doctag/DocTagParserContext.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/DocTagParserContext.kt similarity index 95% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doctag/DocTagParserContext.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/DocTagParserContext.kt index ac0b9ee3f5..050736f0ec 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doctag/DocTagParserContext.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/DocTagParserContext.kt @@ -1,4 +1,4 @@ -package org.jetbrains.dokka.analysis.java.doctag +package org.jetbrains.dokka.analysis.java.parsers.doctag import org.jetbrains.dokka.InternalDokkaApi import org.jetbrains.dokka.links.DRI diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/HtmlToDocTagConverter.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/HtmlToDocTagConverter.kt index e36b02ae97..ea1997b859 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/HtmlToDocTagConverter.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/HtmlToDocTagConverter.kt @@ -1,6 +1,5 @@ package org.jetbrains.dokka.analysis.java.parsers.doctag -import org.jetbrains.dokka.analysis.java.doctag.DocTagParserContext import org.jetbrains.dokka.analysis.markdown.jb.parseHtmlEncodedWithNormalisedSpaces import org.jetbrains.dokka.model.doc.* import org.jsoup.Jsoup diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doctag/InheritDocTagContentProvider.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/InheritDocTagContentProvider.kt similarity index 67% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doctag/InheritDocTagContentProvider.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/InheritDocTagContentProvider.kt index a588624fb8..3114989841 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doctag/InheritDocTagContentProvider.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/InheritDocTagContentProvider.kt @@ -1,7 +1,7 @@ -package org.jetbrains.dokka.analysis.java.doctag +package org.jetbrains.dokka.analysis.java.parsers.doctag import org.jetbrains.dokka.InternalDokkaApi -import org.jetbrains.dokka.analysis.java.DocumentationContent +import org.jetbrains.dokka.analysis.java.doccomment.DocumentationContent @InternalDokkaApi interface InheritDocTagContentProvider { diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/InheritDocTagResolver.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/InheritDocTagResolver.kt index bf70687b0a..031a7b328d 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/InheritDocTagResolver.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/InheritDocTagResolver.kt @@ -4,8 +4,8 @@ import com.intellij.psi.PsiClass import com.intellij.psi.PsiMethod import com.intellij.psi.javadoc.PsiDocComment import org.jetbrains.dokka.analysis.java.* -import org.jetbrains.dokka.analysis.java.doctag.DocTagParserContext -import org.jetbrains.dokka.analysis.java.doctag.InheritDocTagContentProvider +import org.jetbrains.dokka.analysis.java.doccomment.* +import org.jetbrains.dokka.analysis.java.doccomment.JavaDocComment import org.jetbrains.dokka.analysis.java.parsers.CommentResolutionContext internal class InheritDocTagResolver( diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/PsiDocTagParser.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/PsiDocTagParser.kt index 5e7da7ed95..803eabcbeb 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/PsiDocTagParser.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/PsiDocTagParser.kt @@ -2,10 +2,8 @@ package org.jetbrains.dokka.analysis.java.parsers.doctag import com.intellij.psi.PsiElement import com.intellij.psi.javadoc.PsiDocTag -import org.jetbrains.dokka.analysis.java.doctag.DocTagParserContext import org.jetbrains.dokka.analysis.java.parsers.CommentResolutionContext import org.jetbrains.dokka.model.doc.* -import java.util.* /** * Parses [PsiElement] of [PsiDocTag] into Dokka's [DocTag] diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/PsiElementToHtmlConverter.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/PsiElementToHtmlConverter.kt index 75ed93c31d..0c20a9b728 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/PsiElementToHtmlConverter.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/PsiElementToHtmlConverter.kt @@ -7,10 +7,9 @@ import com.intellij.psi.impl.source.tree.LeafPsiElement import com.intellij.psi.javadoc.PsiDocTagValue import com.intellij.psi.javadoc.PsiDocToken import com.intellij.psi.javadoc.PsiInlineDocTag -import org.jetbrains.dokka.analysis.java.DocumentationContent +import org.jetbrains.dokka.analysis.java.doccomment.DocumentationContent import org.jetbrains.dokka.analysis.java.JavadocTag -import org.jetbrains.dokka.analysis.java.PsiDocumentationContent -import org.jetbrains.dokka.analysis.java.doctag.DocTagParserContext +import org.jetbrains.dokka.analysis.java.doccomment.PsiDocumentationContent import org.jetbrains.dokka.analysis.java.parsers.CommentResolutionContext import org.jetbrains.dokka.analysis.java.util.* import org.jetbrains.dokka.links.DRI diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/NoopIntellijLogger.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/NoopIntellijLogger.kt similarity index 97% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/NoopIntellijLogger.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/NoopIntellijLogger.kt index 9ee0a0dfdf..82482e3503 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/NoopIntellijLogger.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/NoopIntellijLogger.kt @@ -1,4 +1,4 @@ -package org.jetbrains.dokka.analysis.java +package org.jetbrains.dokka.analysis.java.util import com.intellij.openapi.diagnostic.Attachment import com.intellij.openapi.diagnostic.DefaultLogger diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiCommentsUtils.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiCommentsUtils.kt index f156ae5d94..10bb79c757 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiCommentsUtils.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiCommentsUtils.kt @@ -11,7 +11,6 @@ import com.intellij.psi.javadoc.PsiDocToken import com.intellij.psi.util.PsiTreeUtil import org.jetbrains.dokka.analysis.java.DescriptionJavadocTag import org.jetbrains.dokka.analysis.java.JavadocTag -import org.jetbrains.dokka.analysis.java.parsers.resolveToGetDri internal fun PsiDocComment.hasTag(tag: JavadocTag): Boolean = when (tag) { diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiUtil.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiUtil.kt index 4655f1ac32..ed58eb56c4 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiUtil.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiUtil.kt @@ -90,13 +90,12 @@ internal fun PsiElement.getNextSiblingIgnoringWhitespace(withItself: Boolean = f class PsiDocumentableSource(val psi: PsiNamedElement) : DocumentableSource { override val path = psi.containingFile.virtualFile.path - override val lineNumber: Int? - get() = this.psi.let { - val range = it.getChildOfType()?.textRange ?: it.textRange - val doc = PsiDocumentManager.getInstance(it.project).getDocument(it.containingFile) - // IJ uses 0-based line-numbers; external source browsers use 1-based - return doc?.getLineNumber(range.startOffset)?.plus(1) - } + override fun computeLineNumber(): Int? { + val range = psi.getChildOfType()?.textRange ?: psi.textRange + val doc = PsiDocumentManager.getInstance(psi.project).getDocument(psi.containingFile) + // IJ uses 0-based line-numbers; external source browsers use 1-based + return doc?.getLineNumber(range.startOffset)?.plus(1) + } } inline fun PsiElement.getChildOfType(): T? { diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/exceptionTag.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/resolveToGetDri.kt similarity index 74% rename from subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/exceptionTag.kt rename to subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/resolveToGetDri.kt index 82117e7bca..2972c0098d 100644 --- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/exceptionTag.kt +++ b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/resolveToGetDri.kt @@ -1,4 +1,4 @@ -package org.jetbrains.dokka.analysis.java.parsers +package org.jetbrains.dokka.analysis.java.util import com.intellij.psi.PsiElement diff --git a/subprojects/analysis-kotlin-descriptors/build.gradle.kts b/subprojects/analysis-kotlin-descriptors/build.gradle.kts index b2da78eb05..3f02809012 100644 --- a/subprojects/analysis-kotlin-descriptors/build.gradle.kts +++ b/subprojects/analysis-kotlin-descriptors/build.gradle.kts @@ -14,6 +14,15 @@ dependencies { } tasks { + // There are several reasons for shadowing all dependencies in one place: + // 1. Some of the artifacts Dokka depends on, like com.jetbrains.intellij.java:java-psi, are not + // published to Maven Central, so the users would need to add custom repositories to their build scripts. + // 2. There are many intertwining transitive dependencies of different versions, as well as direct copy-paste, + // that can lead to runtime errors due to classpath conflicts, so it's best to let Gradle take care of + // dependency resolution, and then pack everything into a single jar in a single place that can be tuned. + // 3. The compiler and ide modules are internal details that are likely to change, so packing everything into + // a single jar provides some stability for the CLI users, while not exposing too many internals. Publishing + // the compiler, ide and other subprojects separately would make it difficult to refactor the project structure. shadowJar { val dokka_version: String by project diff --git a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/CompilerDescriptorAnalysisPlugin.kt b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/CompilerDescriptorAnalysisPlugin.kt index f8ffc1e2aa..535e628e16 100644 --- a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/CompilerDescriptorAnalysisPlugin.kt +++ b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/CompilerDescriptorAnalysisPlugin.kt @@ -95,13 +95,13 @@ class CompilerDescriptorAnalysisPlugin : DokkaPlugin() { internal val kotlinDocCommentCreator by extending { javaAnalysisPlugin.docCommentCreators providing { - KotlinDocCommentCreator(querySingle { kdocFinder }, querySingle { descriptorFinder }) + DescriptorKotlinDocCommentCreator(querySingle { kdocFinder }, querySingle { descriptorFinder }) } } internal val kotlinDocCommentParser by extending { javaAnalysisPlugin.docCommentParsers providing { context -> - KotlinDocCommentParser( + DescriptorKotlinDocCommentParser( context, context.logger ) diff --git a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/configuration/AnalysisEnvironment.kt b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/configuration/AnalysisEnvironment.kt index db20498d1b..611d132562 100644 --- a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/configuration/AnalysisEnvironment.kt +++ b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/configuration/AnalysisEnvironment.kt @@ -271,13 +271,6 @@ class AnalysisEnvironment( val resolverForModule = resolverForProject.resolverForModule(module) -// val libraryResolutionFacade = -// DokkaResolutionFacade( -// environment.project, -// libraryModuleDescriptor, -// resolverForLibrary -// ) - return analysisContextCreator.create( environment.project as MockProject, moduleDescriptor, diff --git a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/configuration/Documentable.kt b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/configuration/Documentable.kt index e573a1ad8b..55a93ad59d 100644 --- a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/configuration/Documentable.kt +++ b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/configuration/Documentable.kt @@ -11,8 +11,8 @@ import org.jetbrains.kotlin.resolve.source.getPsi internal class DescriptorDocumentableSource(val descriptor: DeclarationDescriptor) : DocumentableSource { override val path = descriptor.toSourceElement.containingFile.toString() - override val lineNumber: Int? - get() = (this.descriptor as DeclarationDescriptorWithSource) + override fun computeLineNumber(): Int? { + return (this.descriptor as DeclarationDescriptorWithSource) .source.getPsi() ?.let { val range = it.node?.findChildByType(KtTokens.IDENTIFIER)?.textRange ?: it.textRange @@ -20,4 +20,5 @@ internal class DescriptorDocumentableSource(val descriptor: DeclarationDescripto // IJ uses 0-based line-numbers; external source browsers use 1-based doc?.getLineNumber(range.startOffset)?.plus(1) } + } } diff --git a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorDocumentationContent.kt b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorDocumentationContent.kt index e11e3118ec..5adf119466 100644 --- a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorDocumentationContent.kt +++ b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorDocumentationContent.kt @@ -1,6 +1,6 @@ package org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.java -import org.jetbrains.dokka.analysis.java.DocumentationContent +import org.jetbrains.dokka.analysis.java.doccomment.DocumentationContent import org.jetbrains.dokka.analysis.java.JavadocTag import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag diff --git a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinDocComment.kt b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorKotlinDocComment.kt similarity index 88% rename from subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinDocComment.kt rename to subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorKotlinDocComment.kt index 9af9dfff59..da7d514064 100644 --- a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinDocComment.kt +++ b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorKotlinDocComment.kt @@ -1,10 +1,12 @@ package org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.java import org.jetbrains.dokka.analysis.java.* +import org.jetbrains.dokka.analysis.java.doccomment.DocComment +import org.jetbrains.dokka.analysis.java.doccomment.DocumentationContent import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag -internal class KotlinDocComment( +internal class DescriptorKotlinDocComment( val comment: KDocTag, val descriptor: DeclarationDescriptor ) : DocComment { @@ -59,10 +61,10 @@ internal class KotlinDocComment( if (this === other) return true if (javaClass != other?.javaClass) return false - other as KotlinDocComment + other as DescriptorKotlinDocComment if (comment != other.comment) return false - if (descriptor != other.descriptor) return false + if (descriptor.name != other.descriptor.name) return false if (tagsWithContent != other.tagsWithContent) return false return true @@ -70,7 +72,7 @@ internal class KotlinDocComment( override fun hashCode(): Int { var result = comment.hashCode() - result = 31 * result + descriptor.hashCode() + result = 31 * result + descriptor.name.hashCode() result = 31 * result + tagsWithContent.hashCode() return result } diff --git a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinDocCommentCreator.kt b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorKotlinDocCommentCreator.kt similarity index 78% rename from subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinDocCommentCreator.kt rename to subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorKotlinDocCommentCreator.kt index d5f5348601..b191355d7e 100644 --- a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinDocCommentCreator.kt +++ b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorKotlinDocCommentCreator.kt @@ -1,14 +1,14 @@ package org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.java import com.intellij.psi.PsiNamedElement -import org.jetbrains.dokka.analysis.java.DocComment -import org.jetbrains.dokka.analysis.java.DocCommentCreator +import org.jetbrains.dokka.analysis.java.doccomment.DocComment +import org.jetbrains.dokka.analysis.java.doccomment.DocCommentCreator import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.KDocFinder import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.DescriptorFinder import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtElement -internal class KotlinDocCommentCreator( +internal class DescriptorKotlinDocCommentCreator( private val kdocFinder: KDocFinder, private val descriptorFinder: DescriptorFinder ) : DocCommentCreator { @@ -21,6 +21,6 @@ internal class KotlinDocCommentCreator( (element.navigationElement as? KtDeclaration)?.findDescriptor() } ?: return null - return KotlinDocComment(kdoc, descriptor) + return DescriptorKotlinDocComment(kdoc, descriptor) } } diff --git a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinDocCommentParser.kt b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorKotlinDocCommentParser.kt similarity index 82% rename from subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinDocCommentParser.kt rename to subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorKotlinDocCommentParser.kt index 0360e8f6f2..28565f2d91 100644 --- a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinDocCommentParser.kt +++ b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/DescriptorKotlinDocCommentParser.kt @@ -2,8 +2,8 @@ package org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.java import com.intellij.psi.PsiNamedElement import org.jetbrains.dokka.Platform -import org.jetbrains.dokka.analysis.java.DocComment -import org.jetbrains.dokka.analysis.java.DocCommentParser +import org.jetbrains.dokka.analysis.java.doccomment.DocComment +import org.jetbrains.dokka.analysis.java.parsers.DocCommentParser import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.CompilerDescriptorAnalysisPlugin import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.configuration.from import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.translator.parseFromKDocTag @@ -14,21 +14,21 @@ import org.jetbrains.dokka.plugability.plugin import org.jetbrains.dokka.plugability.querySingle import org.jetbrains.dokka.utilities.DokkaLogger -internal class KotlinDocCommentParser( +internal class DescriptorKotlinDocCommentParser( private val context: DokkaContext, private val logger: DokkaLogger ) : DocCommentParser { override fun canParse(docComment: DocComment): Boolean { - return docComment is KotlinDocComment + return docComment is DescriptorKotlinDocComment } override fun parse(docComment: DocComment, context: PsiNamedElement): DocumentationNode { - val kotlinDocComment = docComment as KotlinDocComment + val kotlinDocComment = docComment as DescriptorKotlinDocComment return parseDocumentation(kotlinDocComment) } - fun parseDocumentation(element: KotlinDocComment, parseWithChildren: Boolean = true): DocumentationNode { + fun parseDocumentation(element: DescriptorKotlinDocComment, parseWithChildren: Boolean = true): DocumentationNode { val sourceSet = context.configuration.sourceSets.let { sourceSets -> sourceSets.firstOrNull { it.sourceSetID.sourceSetName == "jvmMain" } ?: sourceSets.first { it.analysisPlatform == Platform.jvm } diff --git a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinAnalysisSourceRootsExtractor.kt b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinAnalysisSourceRootsExtractor.kt index 8673774d4c..ed6b8c5394 100644 --- a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinAnalysisSourceRootsExtractor.kt +++ b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinAnalysisSourceRootsExtractor.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot import java.io.File internal class KotlinAnalysisSourceRootsExtractor : SourceRootsExtractor { + override fun extract(sourceSet: DokkaConfiguration.DokkaSourceSet, context: DokkaContext): List { val kotlinAnalysis = context.plugin().querySingle { kotlinAnalysis } val environment = kotlinAnalysis[sourceSet].environment diff --git a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinInheritDocTagContentProvider.kt b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinInheritDocTagContentProvider.kt index 3a1972c589..3c92fc65c0 100644 --- a/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinInheritDocTagContentProvider.kt +++ b/subprojects/analysis-kotlin-descriptors/compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/java/KotlinInheritDocTagContentProvider.kt @@ -1,9 +1,9 @@ package org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.java -import org.jetbrains.dokka.analysis.java.DocumentationContent +import org.jetbrains.dokka.analysis.java.doccomment.DocumentationContent import org.jetbrains.dokka.analysis.java.JavaAnalysisPlugin -import org.jetbrains.dokka.analysis.java.doctag.DocTagParserContext -import org.jetbrains.dokka.analysis.java.doctag.InheritDocTagContentProvider +import org.jetbrains.dokka.analysis.java.parsers.doctag.DocTagParserContext +import org.jetbrains.dokka.analysis.java.parsers.doctag.InheritDocTagContentProvider import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.plugability.plugin import org.jetbrains.dokka.plugability.query @@ -12,9 +12,9 @@ internal class KotlinInheritDocTagContentProvider( context: DokkaContext ) : InheritDocTagContentProvider { - val parser: KotlinDocCommentParser by lazy { + val parser: DescriptorKotlinDocCommentParser by lazy { context.plugin().query { docCommentParsers } - .single { it is KotlinDocCommentParser } as KotlinDocCommentParser + .single { it is DescriptorKotlinDocCommentParser } as DescriptorKotlinDocCommentParser } override fun canConvert(content: DocumentationContent): Boolean = content is DescriptorDocumentationContent @@ -22,7 +22,7 @@ internal class KotlinInheritDocTagContentProvider( override fun convertToHtml(content: DocumentationContent, docTagParserContext: DocTagParserContext): String { val descriptorContent = content as DescriptorDocumentationContent val inheritedDocNode = parser.parseDocumentation( - KotlinDocComment(descriptorContent.element, descriptorContent.descriptor), + DescriptorKotlinDocComment(descriptorContent.element, descriptorContent.descriptor), parseWithChildren = false ) val id = docTagParserContext.store(inheritedDocNode) diff --git a/subprojects/analysis-kotlin-descriptors/compiler/src/test/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ParseModuleAndPackageDocumentationFragmentsTest.kt b/subprojects/analysis-kotlin-descriptors/compiler/src/test/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ParseModuleAndPackageDocumentationFragmentsTest.kt index 7d32b408f9..321aba45da 100644 --- a/subprojects/analysis-kotlin-descriptors/compiler/src/test/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ParseModuleAndPackageDocumentationFragmentsTest.kt +++ b/subprojects/analysis-kotlin-descriptors/compiler/src/test/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ParseModuleAndPackageDocumentationFragmentsTest.kt @@ -3,7 +3,7 @@ package org.jetbrains.dokka.analysis.kotlin.descriptors import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.impl.moduledocs.* import org.jetbrains.dokka.analysis.kotlin.descriptors.compiler.impl.moduledocs.ModuleAndPackageDocumentation.Classifier.* -import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_FILE_NAME +import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_ELEMENT_FILE_NAME import org.jetbrains.dokka.model.doc.* import org.jetbrains.dokka.utilities.DokkaLogger import org.junit.jupiter.api.Assertions.assertTrue @@ -257,14 +257,14 @@ class ParseModuleAndPackageDocumentationFragmentsTest { Text("@Smth") ) ) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ), Author( CustomDocTag( listOf( P(listOf(Text("Smb"))) - ), name = MARKDOWN_FILE_NAME + ), name = MARKDOWN_ELEMENT_FILE_NAME ) ) ) diff --git a/subprojects/analysis-kotlin-descriptors/ide/build.gradle.kts b/subprojects/analysis-kotlin-descriptors/ide/build.gradle.kts index 1470259c1c..79777256ca 100644 --- a/subprojects/analysis-kotlin-descriptors/ide/build.gradle.kts +++ b/subprojects/analysis-kotlin-descriptors/ide/build.gradle.kts @@ -7,7 +7,6 @@ dependencies { compileOnly(projects.subprojects.analysisKotlinApi) implementation(projects.subprojects.analysisKotlinDescriptors.compiler) - implementation(projects.subprojects.analysisMarkdownJb) api(libs.kotlin.idePlugin.common) api(libs.kotlin.idePlugin.idea) diff --git a/subprojects/analysis-kotlin-descriptors/ide/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ide/IdeDescriptorAnalysisPlugin.kt b/subprojects/analysis-kotlin-descriptors/ide/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ide/IdeDescriptorAnalysisPlugin.kt index a921f978d1..930e4a3f47 100644 --- a/subprojects/analysis-kotlin-descriptors/ide/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ide/IdeDescriptorAnalysisPlugin.kt +++ b/subprojects/analysis-kotlin-descriptors/ide/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ide/IdeDescriptorAnalysisPlugin.kt @@ -9,7 +9,7 @@ import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement @InternalDokkaApi class IdeDescriptorAnalysisPlugin : DokkaPlugin() { - internal val IdeKdocFinder by extending { + internal val ideKdocFinder by extending { plugin().kdocFinder providing ::IdePluginKDocFinder } diff --git a/subprojects/analysis-markdown-jb/api/analysis-markdown-jb.api b/subprojects/analysis-markdown-jb/api/analysis-markdown-jb.api index f9da7f4e20..3a8c37c5be 100644 --- a/subprojects/analysis-markdown-jb/api/analysis-markdown-jb.api +++ b/subprojects/analysis-markdown-jb/api/analysis-markdown-jb.api @@ -1,5 +1,5 @@ public final class org/jetbrains/dokka/analysis/markdown/jb/MarkdownApiKt { - public static final fun getMARKDOWN_FILE_NAME ()Ljava/lang/String; + public static final fun getMARKDOWN_ELEMENT_FILE_NAME ()Ljava/lang/String; } public class org/jetbrains/dokka/analysis/markdown/jb/MarkdownParser : org/jetbrains/dokka/analysis/markdown/jb/Parser { diff --git a/subprojects/analysis-markdown-jb/src/main/kotlin/org/jetbrains/dokka/analysis/markdown/jb/MarkdownApi.kt b/subprojects/analysis-markdown-jb/src/main/kotlin/org/jetbrains/dokka/analysis/markdown/jb/MarkdownApi.kt index 0959b64388..e873819054 100644 --- a/subprojects/analysis-markdown-jb/src/main/kotlin/org/jetbrains/dokka/analysis/markdown/jb/MarkdownApi.kt +++ b/subprojects/analysis-markdown-jb/src/main/kotlin/org/jetbrains/dokka/analysis/markdown/jb/MarkdownApi.kt @@ -3,5 +3,6 @@ package org.jetbrains.dokka.analysis.markdown.jb import org.intellij.markdown.MarkdownElementTypes import org.jetbrains.dokka.InternalDokkaApi +// TODO [beresnev] move/rename if it's only used for CustomDocTag. for now left as is for compatibility @InternalDokkaApi -val MARKDOWN_FILE_NAME = MarkdownElementTypes.MARKDOWN_FILE.name +val MARKDOWN_ELEMENT_FILE_NAME = MarkdownElementTypes.MARKDOWN_FILE.name diff --git a/subprojects/analysis-markdown-jb/src/main/kotlin/org/jetbrains/dokka/analysis/markdown/jb/factories/DocTagsFromIElementFactory.kt b/subprojects/analysis-markdown-jb/src/main/kotlin/org/jetbrains/dokka/analysis/markdown/jb/factories/DocTagsFromIElementFactory.kt index 5c469d2cf9..86de8000ba 100644 --- a/subprojects/analysis-markdown-jb/src/main/kotlin/org/jetbrains/dokka/analysis/markdown/jb/factories/DocTagsFromIElementFactory.kt +++ b/subprojects/analysis-markdown-jb/src/main/kotlin/org/jetbrains/dokka/analysis/markdown/jb/factories/DocTagsFromIElementFactory.kt @@ -5,7 +5,7 @@ import org.intellij.markdown.MarkdownElementTypes import org.intellij.markdown.MarkdownTokenTypes import org.intellij.markdown.flavours.gfm.GFMElementTypes import org.intellij.markdown.flavours.gfm.GFMTokenTypes -import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_FILE_NAME +import org.jetbrains.dokka.analysis.markdown.jb.MARKDOWN_ELEMENT_FILE_NAME import org.jetbrains.dokka.analysis.markdown.jb.parseHtmlEncodedWithNormalisedSpaces import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.model.doc.* @@ -54,7 +54,7 @@ internal object DocTagsFromIElementFactory { GFMElementTypes.HEADER -> Th(children, params) GFMElementTypes.ROW -> Tr(children, params) GFMTokenTypes.CELL -> Td(children, params) - MarkdownElementTypes.MARKDOWN_FILE -> CustomDocTag(children, params, MARKDOWN_FILE_NAME) + MarkdownElementTypes.MARKDOWN_FILE -> CustomDocTag(children, params, MARKDOWN_ELEMENT_FILE_NAME) MarkdownElementTypes.HTML_BLOCK, MarkdownTokenTypes.HTML_TAG, MarkdownTokenTypes.HTML_BLOCK_CONTENT -> Text(body.orEmpty(), params = params + contentTypeParam("html"))