From eb54d69a5cd8e27b1235a23b9098e285c408cb23 Mon Sep 17 00:00:00 2001 From: Andrey Tyrin Date: Tue, 31 Jan 2023 13:25:38 +0100 Subject: fill packageName and classNames for constructors from parent (#2837) --- .../translators/psi/DefaultPsiToDocumentableTranslator.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'plugins/base/src/main/kotlin/translators/psi') diff --git a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt index f67ee15c..c410104c 100644 --- a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt +++ b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt @@ -300,7 +300,7 @@ class DefaultPsiToDocumentableTranslator( classlikes = classlikes.await(), visibility = visibility, companion = null, - constructors = parseConstructors(), + constructors = parseConstructors(dri), generics = mapTypeParameters(dri), sourceSets = setOf(sourceSetData), isExpectActual = false, @@ -340,7 +340,7 @@ class DefaultPsiToDocumentableTranslator( classlikes = classlikes.await(), visibility = visibility, companion = null, - constructors = parseConstructors(), + constructors = parseConstructors(dri), supertypes = ancestors, sourceSets = setOf(sourceSetData), isExpectActual = false, @@ -376,7 +376,7 @@ class DefaultPsiToDocumentableTranslator( else -> DClass( dri = dri, name = name.orEmpty(), - constructors = parseConstructors(), + constructors = parseConstructors(dri), functions = allFunctions.await(), properties = allFields.await(), classlikes = classlikes.await(), @@ -401,13 +401,17 @@ class DefaultPsiToDocumentableTranslator( } } - private fun PsiClass.parseConstructors(): List { + /* + * Parameter `parentDRI` required for substitute package name: + * in the case of synthetic constructor, it will return empty from [DRI.Companion.from]. + */ + private fun PsiClass.parseConstructors(parentDRI: DRI): List { val constructors = when { isAnnotationType || isInterface -> emptyArray() isEnum -> this.constructors else -> this.constructors.takeIf { it.isNotEmpty() } ?: arrayOf(createDefaultConstructor()) } - return constructors.map { parseFunction(it, true) } + return constructors.map { parseFunction(psi = it, isConstructor = true, parentDRI = parentDRI) } } /** -- cgit