diff options
author | Andrzej Ratajczak <andrzej.ratajczak98@gmail.com> | 2020-09-17 13:35:13 +0200 |
---|---|---|
committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-09-28 17:22:14 +0200 |
commit | 64ec7ad22e9541b639e854aa413a2cffd650e8d0 (patch) | |
tree | 42106fc356b23ce1a3c394deccb59e74d80ff0f0 /plugins/base/src/main/kotlin/translators/psi | |
parent | 2274d9261a59570cc3a1a26c3f7ddc167678fe8b (diff) | |
download | dokka-64ec7ad22e9541b639e854aa413a2cffd650e8d0.tar.gz dokka-64ec7ad22e9541b639e854aa413a2cffd650e8d0.tar.bz2 dokka-64ec7ad22e9541b639e854aa413a2cffd650e8d0.zip |
Add better handling of functional types in rendered output
Diffstat (limited to 'plugins/base/src/main/kotlin/translators/psi')
-rw-r--r-- | plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt index c413f5c8..d67bd9f5 100644 --- a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt +++ b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt @@ -22,9 +22,11 @@ import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.transformers.sources.SourceToDocumentableTranslator import org.jetbrains.dokka.utilities.DokkaLogger import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation +import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot import org.jetbrains.kotlin.descriptors.Visibilities +import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.load.java.propertyNameByGetMethodName @@ -139,7 +141,7 @@ class DefaultPsiToDocumentableTranslator( psiClass.isInterface -> DRI.from(psiClass) to JavaClassKindTypes.INTERFACE else -> DRI.from(psiClass) to JavaClassKindTypes.CLASS } - TypeConstructor( + GenericTypeConstructor( dri, psi.parameters.map(::getProjection) ) to javaClassKind @@ -370,11 +372,19 @@ class DefaultPsiToDocumentableTranslator( dri = DRI.from(resolved), name = resolved.name.orEmpty() ) - else -> - TypeConstructor(DRI.from(resolved), type.parameters.map { getProjection(it) }) + Regex("kotlin\\.jvm\\.functions\\.Function.*").matches(resolved.qualifiedName ?: "") || + Regex("java\\.util\\.function\\.Function.*").matches( + resolved.qualifiedName ?: "" + ) -> FunctionalTypeConstructor( + DRI.from(resolved), + type.parameters.map { getProjection(it) } + ) + else -> GenericTypeConstructor( + DRI.from(resolved), + type.parameters.map { getProjection(it) }) } } - is PsiArrayType -> TypeConstructor( + is PsiArrayType -> GenericTypeConstructor( DRI("kotlin", "Array"), listOf(getProjection(type.componentType)) ) @@ -411,6 +421,7 @@ class DefaultPsiToDocumentableTranslator( DTypeParameter( dri.copy(target = dri.target.nextTarget()), type.name.orEmpty(), + null, javadocParser.parseDocumentation(type).toSourceSetDependent(), null, mapBounds(type.bounds), |