From 6b383541d110ba4f32c9c9ae6c0af8aeeedd0b80 Mon Sep 17 00:00:00 2001
From: Marcin Aman <marcin.aman@gmail.com>
Date: Thu, 3 Dec 2020 12:39:39 +0100
Subject: Resolve DRI-s from valueOf and values in java enum (#1655)

---
 .../kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

(limited to 'plugins/base/src/main')

diff --git a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
index 61af1db1..9a1b05d5 100644
--- a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
+++ b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
@@ -199,7 +199,7 @@ class DefaultPsiToDocumentableTranslator(
                 parseSupertypes(superTypes)
                 val (regularFunctions, accessors) = splitFunctionsAndAccessors()
                 val documentation = javadocParser.parseDocumentation(this).toSourceSetDependent()
-                val allFunctions = async { regularFunctions.parallelMapNotNull { if (!it.isConstructor) parseFunction(it) else null } +
+                val allFunctions = async { regularFunctions.parallelMapNotNull { if (!it.isConstructor) parseFunction(it, parentDRI = dri) else null } +
                         superMethods.parallelMap { parseFunction(it.first, inheritedFrom = it.second) } }
                 val source = PsiDocumentableSource(this).toSourceSetDependent()
                 val classlikes = async { innerClasses.asIterable().parallelMap { parseClasslike(it, dri) } }
@@ -337,9 +337,12 @@ class DefaultPsiToDocumentableTranslator(
         private fun parseFunction(
             psi: PsiMethod,
             isConstructor: Boolean = false,
-            inheritedFrom: DRI? = null
+            inheritedFrom: DRI? = null,
+            parentDRI: DRI? = null
         ): DFunction {
-            val dri = DRI.from(psi)
+            val dri = parentDRI?.let { dri ->
+                DRI.from(psi).copy(packageName = dri.packageName, classNames = dri.classNames)
+            } ?: DRI.from(psi)
             val docs = javadocParser.parseDocumentation(psi)
             return DFunction(
                 dri,
-- 
cgit