From 8602e2bb41eb78210677971e7535b0103000b58d Mon Sep 17 00:00:00 2001 From: Marcin Aman Date: Fri, 8 Jan 2021 15:09:46 +0100 Subject: Fix displaying unresolved receiver types in DRI --- .../org/jetbrains/dokka/analysis/TypeReferenceFactory.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'kotlin-analysis/src/main/kotlin') diff --git a/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/TypeReferenceFactory.kt b/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/TypeReferenceFactory.kt index aae1f189..169831d4 100644 --- a/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/TypeReferenceFactory.kt +++ b/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/TypeReferenceFactory.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeProjection +import org.jetbrains.kotlin.types.UnresolvedType fun TypeReference.Companion.from(d: ReceiverParameterDescriptor): TypeReference? = when (d.value) { @@ -33,8 +34,14 @@ private fun TypeReference.Companion.fromPossiblyRecursive(t: KotlinType, paramTr ?.let(::RecursiveType) ?: from(t, paramTrace) -private fun TypeReference.Companion.from(t: KotlinType, paramTrace: List): TypeReference = - when (val d = t.constructor.declarationDescriptor) { +private fun TypeReference.Companion.from(t: KotlinType, paramTrace: List): TypeReference { + if (t is UnresolvedType) { + println("Unresolved type with presentable name: ${t.presentableName}") + return TypeConstructor( + t.presentableName, t.arguments.map { fromProjection(it, paramTrace) } + ) + } + return when (val d = t.constructor.declarationDescriptor) { is TypeParameterDescriptor -> TypeParam( d.upperBounds.map { fromPossiblyNullable(it, paramTrace + t) } ) @@ -43,6 +50,7 @@ private fun TypeReference.Companion.from(t: KotlinType, paramTrace: List): TypeReference = if (t.isStarProjection) { -- cgit