aboutsummaryrefslogtreecommitdiff
path: root/subprojects/analysis-java-psi/src
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/analysis-java-psi/src')
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DefaultPsiToDocumentableTranslator.kt87
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaAnalysisPlugin.kt110
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavadocTag.kt54
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/SynheticElementDocumentationProvider.kt46
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocComment.kt18
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentCreator.kt13
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFactory.kt24
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFinder.kt68
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocumentationContent.kt15
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocComment.kt88
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocCommentCreator.kt15
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/PsiDocumentationContent.kt26
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/CommentResolutionContext.kt13
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/DocCommentParser.kt16
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/DokkaPsiParser.kt803
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/JavaDocCommentParser.kt232
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/JavadocParser.kt28
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/DocTagParserContext.kt51
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/HtmlToDocTagConverter.kt118
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/InheritDocTagContentProvider.kt14
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/InheritDocTagResolver.kt118
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/PsiDocTagParser.kt43
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/parsers/doctag/PsiElementToHtmlConverter.kt218
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/CoreCopyPaste.kt24
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/NoopIntellijLogger.kt47
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PropertiesConventionUtil.kt105
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiAccessorConventionUtil.kt102
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiCommentsUtils.kt53
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/PsiUtil.kt126
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/StdlibUtil.kt37
-rw-r--r--subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/util/resolveToGetDri.kt11
-rw-r--r--subprojects/analysis-java-psi/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin5
32 files changed, 0 insertions, 2728 deletions
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
deleted file mode 100644
index 3b8ff25b..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/DefaultPsiToDocumentableTranslator.kt
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.analysis.java
-
-import com.intellij.openapi.vfs.VirtualFileManager
-import com.intellij.psi.PsiJavaFile
-import com.intellij.psi.PsiKeyword
-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
-import org.jetbrains.dokka.model.JavaVisibility
-import org.jetbrains.dokka.plugability.DokkaContext
-import org.jetbrains.dokka.plugability.plugin
-import org.jetbrains.dokka.plugability.query
-import org.jetbrains.dokka.plugability.querySingle
-import org.jetbrains.dokka.transformers.sources.AsyncSourceToDocumentableTranslator
-import org.jetbrains.dokka.utilities.parallelMap
-import org.jetbrains.dokka.utilities.parallelMapNotNull
-
-internal class DefaultPsiToDocumentableTranslator : AsyncSourceToDocumentableTranslator {
-
- override suspend fun invokeSuspending(sourceSet: DokkaSourceSet, context: DokkaContext): DModule {
- return coroutineScope {
- val projectProvider = context.plugin<JavaAnalysisPlugin>().querySingle { projectProvider }
- val project = projectProvider.getProject(sourceSet, context)
-
- val sourceRootsExtractor = context.plugin<JavaAnalysisPlugin>().querySingle { sourceRootsExtractor }
- val sourceRoots = sourceRootsExtractor.extract(sourceSet, context)
-
- val localFileSystem = VirtualFileManager.getInstance().getFileSystem("file")
-
- val psiFiles = sourceRoots.parallelMap { sourceRoot ->
- sourceRoot.absoluteFile.walkTopDown().mapNotNull {
- localFileSystem.findFileByPath(it.path)?.let { vFile ->
- PsiManager.getInstance(project).findFile(vFile) as? PsiJavaFile
- }
- }.toList()
- }.flatten()
-
- val docParser = createPsiParser(sourceSet, context)
-
- DModule(
- name = context.configuration.moduleName,
- packages = psiFiles.parallelMapNotNull { it }.groupBy { it.packageName }.toList()
- .parallelMap { (packageName: String, psiFiles: List<PsiJavaFile>) ->
- docParser.parsePackage(packageName, psiFiles)
- },
- documentation = emptyMap(),
- expectPresentInSet = null,
- sourceSets = setOf(sourceSet)
- )
- }
- }
-
- private fun createPsiParser(sourceSet: DokkaSourceSet, context: DokkaContext): DokkaPsiParser {
- val projectProvider = context.plugin<JavaAnalysisPlugin>().querySingle { projectProvider }
- val docCommentParsers = context.plugin<JavaAnalysisPlugin>().query { docCommentParsers }
- return DokkaPsiParser(
- sourceSetData = sourceSet,
- project = projectProvider.getProject(sourceSet, context),
- logger = context.logger,
- javadocParser = JavadocParser(
- docCommentParsers = docCommentParsers,
- docCommentFinder = context.plugin<JavaAnalysisPlugin>().docCommentFinder
- ),
- javaPsiDocCommentParser = docCommentParsers.single { it is JavaPsiDocCommentParser } as JavaPsiDocCommentParser,
- lightMethodChecker = context.plugin<JavaAnalysisPlugin>().querySingle { kotlinLightMethodChecker }
- )
- }
-}
-
-internal fun PsiModifierListOwner.getVisibility() = modifierList?.let {
- val ml = it.children.toList()
- when {
- ml.any { it.text == PsiKeyword.PUBLIC } || it.hasModifierProperty("public") -> JavaVisibility.Public
- ml.any { it.text == PsiKeyword.PROTECTED } || it.hasModifierProperty("protected") -> JavaVisibility.Protected
- ml.any { it.text == PsiKeyword.PRIVATE } || it.hasModifierProperty("private") -> JavaVisibility.Private
- else -> JavaVisibility.Default
- }
-} ?: JavaVisibility.Default
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
deleted file mode 100644
index 9426adf1..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavaAnalysisPlugin.kt
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.analysis.java
-
-import com.intellij.lang.jvm.annotation.JvmAnnotationAttribute
-import com.intellij.openapi.diagnostic.Logger
-import com.intellij.openapi.project.Project
-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.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
-
-
-@InternalDokkaApi
-public interface ProjectProvider {
- public fun getProject(sourceSet: DokkaSourceSet, context: DokkaContext): Project
-}
-
-@InternalDokkaApi
-public interface SourceRootsExtractor {
- public fun extract(sourceSet: DokkaSourceSet, context: DokkaContext): List<File>
-}
-
-@InternalDokkaApi
-public interface BreakingAbstractionKotlinLightMethodChecker {
- // TODO [beresnev] not even sure it's needed, but left for compatibility and to preserve behaviour
- public fun isLightAnnotation(annotation: PsiAnnotation): Boolean
- public fun isLightAnnotationAttribute(attribute: JvmAnnotationAttribute): Boolean
-}
-
-@InternalDokkaApi
-public class JavaAnalysisPlugin : DokkaPlugin() {
-
- // single
- public val projectProvider: ExtensionPoint<ProjectProvider> by extensionPoint()
-
- // single
- public val sourceRootsExtractor: ExtensionPoint<SourceRootsExtractor> by extensionPoint()
-
- // multiple
- public val docCommentCreators: ExtensionPoint<DocCommentCreator> by extensionPoint()
-
- // multiple
- public val docCommentParsers: ExtensionPoint<DocCommentParser> by extensionPoint()
-
- // none or more
- public val inheritDocTagContentProviders: ExtensionPoint<InheritDocTagContentProvider> by extensionPoint()
-
- // TODO [beresnev] figure out a better way depending on what it's used for
- public val kotlinLightMethodChecker: ExtensionPoint<BreakingAbstractionKotlinLightMethodChecker> by extensionPoint()
-
- private val docCommentFactory by lazy {
- DocCommentFactory(query { docCommentCreators }.reversed())
- }
-
- public val docCommentFinder: DocCommentFinder by lazy {
- DocCommentFinder(logger, docCommentFactory)
- }
-
- internal val javaDocCommentCreator by extending {
- docCommentCreators providing { JavaDocCommentCreator() }
- }
-
- private val psiDocTagParser by lazy {
- PsiDocTagParser(
- inheritDocTagResolver = InheritDocTagResolver(
- docCommentFactory = docCommentFactory,
- docCommentFinder = docCommentFinder,
- contentProviders = query { inheritDocTagContentProviders }
- )
- )
- }
-
- internal val javaDocCommentParser by extending {
- docCommentParsers providing {
- JavaPsiDocCommentParser(
- psiDocTagParser
- )
- }
- }
-
- internal val psiToDocumentableTranslator by extending {
- CoreExtensions.sourceToDocumentableTranslator providing { DefaultPsiToDocumentableTranslator() }
- }
-
- @OptIn(DokkaPluginApiPreview::class)
- override fun pluginApiPreviewAcknowledgement(): PluginApiPreviewAcknowledgement = PluginApiPreviewAcknowledgement
-
- private companion object {
- init {
- // Suppress messages emitted by the IntelliJ logger since
- // there's not much the end user can do about it
- Logger.setFactory(NoopIntellijLoggerFactory())
- }
- }
-}
diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavadocTag.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavadocTag.kt
deleted file mode 100644
index 23aee764..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/JavadocTag.kt
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.analysis.java
-
-import com.intellij.psi.PsiMethod
-import org.jetbrains.dokka.InternalDokkaApi
-
-@InternalDokkaApi
-public sealed class JavadocTag(
- public val name: String
-)
-
-public object AuthorJavadocTag : JavadocTag("author")
-public object DeprecatedJavadocTag : JavadocTag("deprecated")
-public object DescriptionJavadocTag : JavadocTag("description")
-public object ReturnJavadocTag : JavadocTag("return")
-public object SinceJavadocTag : JavadocTag("since")
-
-public class ParamJavadocTag(
- public val method: PsiMethod,
- public val paramName: String,
- public val paramIndex: Int
-) : JavadocTag(name) {
- public companion object {
- public const val name: String = "param"
- }
-}
-
-public class SeeJavadocTag(
- public val qualifiedReference: String
-) : JavadocTag(name) {
- public companion object {
- public const val name: String = "see"
- }
-}
-
-public sealed class ThrowingExceptionJavadocTag(
- name: String,
- public val exceptionQualifiedName: String?
-) : JavadocTag(name)
-
-public class ThrowsJavadocTag(exceptionQualifiedName: String?) : ThrowingExceptionJavadocTag(name, exceptionQualifiedName) {
- public companion object {
- public const val name: String = "throws"
- }
-}
-
-public class ExceptionJavadocTag(exceptionQualifiedName: String?) : ThrowingExceptionJavadocTag(name, exceptionQualifiedName) {
- public companion object {
- public const val name: String = "exception"
- }
-}
diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/SynheticElementDocumentationProvider.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/SynheticElementDocumentationProvider.kt
deleted file mode 100644
index 5b19a42d..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/SynheticElementDocumentationProvider.kt
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.analysis.java
-
-import com.intellij.openapi.project.Project
-import com.intellij.psi.JavaPsiFacade
-import com.intellij.psi.PsiElement
-import com.intellij.psi.PsiMethod
-import com.intellij.psi.SyntheticElement
-import com.intellij.psi.javadoc.PsiDocComment
-import org.jetbrains.dokka.analysis.java.parsers.JavaPsiDocCommentParser
-import org.jetbrains.dokka.model.doc.DocumentationNode
-
-private const val ENUM_VALUEOF_TEMPLATE_PATH = "/dokka/docs/javadoc/EnumValueOf.java.template"
-private const val ENUM_VALUES_TEMPLATE_PATH = "/dokka/docs/javadoc/EnumValues.java.template"
-
-internal class SyntheticElementDocumentationProvider(
- private val javadocParser: JavaPsiDocCommentParser,
- private val project: Project
-) {
- fun isDocumented(psiElement: PsiElement): Boolean = psiElement is PsiMethod
- && (psiElement.isSyntheticEnumValuesMethod() || psiElement.isSyntheticEnumValueOfMethod())
-
- fun getDocumentation(psiElement: PsiElement): DocumentationNode? {
- val psiMethod = psiElement as? PsiMethod ?: return null
- val templatePath = when {
- psiMethod.isSyntheticEnumValuesMethod() -> ENUM_VALUES_TEMPLATE_PATH
- psiMethod.isSyntheticEnumValueOfMethod() -> ENUM_VALUEOF_TEMPLATE_PATH
- else -> return null
- }
- val docComment = loadSyntheticDoc(templatePath) ?: return null
- return javadocParser.parsePsiDocComment(docComment, psiElement)
- }
-
- private fun loadSyntheticDoc(path: String): PsiDocComment? {
- val text = javaClass.getResource(path)?.readText() ?: return null
- return JavaPsiFacade.getElementFactory(project).createDocCommentFromText(text)
- }
-}
-
-private fun PsiMethod.isSyntheticEnumValuesMethod() = this.isSyntheticEnumFunction() && this.name == "values"
-private fun PsiMethod.isSyntheticEnumValueOfMethod() = this.isSyntheticEnumFunction() && this.name == "valueOf"
-private fun PsiMethod.isSyntheticEnumFunction() = this is SyntheticElement && this.containingClass?.isEnum == true
-
diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocComment.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocComment.kt
deleted file mode 100644
index be5f7eaa..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocComment.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.analysis.java.doccomment
-
-import org.jetbrains.dokka.InternalDokkaApi
-import org.jetbrains.dokka.analysis.java.JavadocTag
-
-/**
- * MUST override equals and hashcode
- */
-@InternalDokkaApi
-public interface DocComment {
- public fun hasTag(tag: JavadocTag): Boolean
-
- public fun resolveTag(tag: JavadocTag): List<DocumentationContent>
-}
diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentCreator.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentCreator.kt
deleted file mode 100644
index 2e22c77c..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentCreator.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.analysis.java.doccomment
-
-import com.intellij.psi.PsiNamedElement
-import org.jetbrains.dokka.InternalDokkaApi
-
-@InternalDokkaApi
-public interface DocCommentCreator {
- public fun create(element: PsiNamedElement): DocComment?
-}
diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFactory.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFactory.kt
deleted file mode 100644
index 4647d4d9..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFactory.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.analysis.java.doccomment
-
-import com.intellij.psi.PsiNamedElement
-import org.jetbrains.dokka.InternalDokkaApi
-
-@InternalDokkaApi
-public class DocCommentFactory(
- private val docCommentCreators: List<DocCommentCreator>
-) {
- public fun fromElement(element: PsiNamedElement): DocComment? {
- docCommentCreators.forEach { creator ->
- val comment = creator.create(element)
- if (comment != null) {
- return comment
- }
- }
- return null
- }
-}
-
diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFinder.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFinder.kt
deleted file mode 100644
index 18463e0e..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocCommentFinder.kt
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.analysis.java.doccomment
-
-import com.intellij.psi.PsiClass
-import com.intellij.psi.PsiMethod
-import com.intellij.psi.PsiNamedElement
-import com.intellij.psi.javadoc.PsiDocComment
-import org.jetbrains.dokka.InternalDokkaApi
-import org.jetbrains.dokka.analysis.java.util.from
-import org.jetbrains.dokka.links.DRI
-import org.jetbrains.dokka.utilities.DokkaLogger
-
-@InternalDokkaApi
-public class DocCommentFinder(
- private val logger: DokkaLogger,
- private val docCommentFactory: DocCommentFactory,
-) {
- public fun findClosestToElement(element: PsiNamedElement): DocComment? {
- val docComment = docCommentFactory.fromElement(element)
- if (docComment != null) {
- return docComment
- }
-
- return if (element is PsiMethod) {
- findClosestToMethod(element)
- } else {
- element.children
- .filterIsInstance<PsiDocComment>()
- .firstOrNull()
- ?.let { JavaDocComment(it) }
- }
- }
-
- private fun findClosestToMethod(method: PsiMethod): DocComment? {
- val superMethods = method.findSuperMethods()
- if (superMethods.isEmpty()) return null
-
- if (superMethods.size == 1) {
- return findClosestToElement(superMethods.single())
- }
-
- val superMethodDocumentation = superMethods.map { superMethod -> findClosestToElement(superMethod) }.distinct()
- if (superMethodDocumentation.size == 1) {
- return superMethodDocumentation.single()
- }
-
- logger.debug(
- "Conflicting documentation for ${DRI.from(method)}" +
- "${superMethods.map { DRI.from(it) }}"
- )
-
- /* Prioritize super class over interface */
- val indexOfSuperClass = superMethods.indexOfFirst { superMethod ->
- val parent = superMethod.parent
- if (parent is PsiClass) !parent.isInterface
- else false
- }
-
- return if (indexOfSuperClass >= 0) {
- superMethodDocumentation[indexOfSuperClass]
- } else {
- superMethodDocumentation.first()
- }
- }
-}
diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocumentationContent.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocumentationContent.kt
deleted file mode 100644
index 64e9ceb8..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/DocumentationContent.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.analysis.java.doccomment
-
-import org.jetbrains.dokka.InternalDokkaApi
-import org.jetbrains.dokka.analysis.java.JavadocTag
-
-@InternalDokkaApi
-public interface DocumentationContent {
- public val tag: JavadocTag
-
- public fun resolveSiblings(): List<DocumentationContent>
-}
diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocComment.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocComment.kt
deleted file mode 100644
index 066b5162..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocComment.kt
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-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
-import org.jetbrains.dokka.analysis.java.util.resolveToElement
-import org.jetbrains.dokka.utilities.firstIsInstanceOrNull
-
-internal class JavaDocComment(val comment: PsiDocComment) : DocComment {
- override fun hasTag(tag: JavadocTag): Boolean {
- return when (tag) {
- is ThrowingExceptionJavadocTag -> hasTag(tag)
- else -> comment.hasTag(tag)
- }
- }
-
- private fun hasTag(tag: ThrowingExceptionJavadocTag): Boolean =
- comment.hasTag(tag) && comment.resolveTag(tag).firstIsInstanceOrNull<PsiDocTag>()
- ?.resolveToElement()
- ?.getKotlinFqName() == tag.exceptionQualifiedName
-
- override fun resolveTag(tag: JavadocTag): List<DocumentationContent> {
- return when (tag) {
- is ParamJavadocTag -> resolveParamTag(tag)
- is ThrowingExceptionJavadocTag -> resolveThrowingTag(tag)
- else -> comment.resolveTag(tag).map { PsiDocumentationContent(it, tag) }
- }
- }
-
- private fun resolveParamTag(tag: ParamJavadocTag): List<DocumentationContent> {
- val resolvedParamElements = comment.resolveTag(tag)
- .filterIsInstance<PsiDocTag>()
- .map { it.contentElementsWithSiblingIfNeeded() }
- .firstOrNull {
- it.firstOrNull()?.text == tag.method.parameterList.parameters[tag.paramIndex].name
- }.orEmpty()
-
- return resolvedParamElements
- .withoutReferenceLink()
- .map { PsiDocumentationContent(it, tag) }
- }
-
- private fun resolveThrowingTag(tag: ThrowingExceptionJavadocTag): List<DocumentationContent> {
- val resolvedElements = comment.resolveTag(tag)
- .flatMap {
- when (it) {
- is PsiDocTag -> it.contentElementsWithSiblingIfNeeded()
- else -> listOf(it)
- }
- }
-
- return resolvedElements
- .withoutReferenceLink()
- .map { PsiDocumentationContent(it, tag) }
- }
-
- private fun PsiDocComment.resolveTag(tag: JavadocTag): List<PsiElement> {
- return when (tag) {
- DescriptionJavadocTag -> this.descriptionElements.toList()
- else -> this.findTagsByName(tag.name).toList()
- }
- }
-
- private fun List<PsiElement>.withoutReferenceLink(): List<PsiElement> = drop(1)
-
- override fun equals(other: Any?): Boolean {
- if (this === other) return true
- if (javaClass != other?.javaClass) return false
-
- other as JavaDocComment
-
- if (comment != other.comment) return false
-
- return true
- }
-
- override fun hashCode(): Int {
- return comment.hashCode()
- }
-}
diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocCommentCreator.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocCommentCreator.kt
deleted file mode 100644
index 79da0ee2..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/JavaDocCommentCreator.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package org.jetbrains.dokka.analysis.java.doccomment
-
-import com.intellij.psi.PsiDocCommentOwner
-import com.intellij.psi.PsiNamedElement
-
-internal class JavaDocCommentCreator : DocCommentCreator {
- override fun create(element: PsiNamedElement): DocComment? {
- val psiDocComment = (element as? PsiDocCommentOwner)?.docComment ?: return null
- return JavaDocComment(psiDocComment)
- }
-}
diff --git a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/PsiDocumentationContent.kt b/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/PsiDocumentationContent.kt
deleted file mode 100644
index aa1fe120..00000000
--- a/subprojects/analysis-java-psi/src/main/kotlin/org/jetbrains/dokka/analysis/java/doccomment/PsiDocumentationContent.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-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(
- val psiElement: PsiElement,
- override val tag: JavadocTag
-) : Doc