Skip to content

Commit 1674dcd

Browse files
committed
Merge branch 'master' into adam/support-agp-kotlin-builtin
2 parents 6caea6a + 7903495 commit 1674dcd

File tree

13 files changed

+281
-87
lines changed

13 files changed

+281
-87
lines changed

dokka-integration-tests/gradle/projects/it-android/expectedData/html/it-android/it.android/-integration-test-activity/index.html

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dokka-runners/dokka-gradle-plugin/settings.gradle.kts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ dependencyResolutionManagement {
3333
google {
3434
setUrl("https://cache-redirector.jetbrains.com/dl.google.com/dl/android/maven2")
3535
name = "Google-JBCache"
36+
mavenContent {
37+
// https://github.com/gradle/gradle/issues/35562
38+
includeGroupAndSubgroups("com.android")
39+
includeGroupAndSubgroups("com.google")
40+
includeGroupAndSubgroups("androidx")
41+
}
3642
}
3743
}
3844

dokka-subprojects/analysis-kotlin-descriptors-compiler/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/compiler/configuration/TypeReferenceFactory.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.jetbrains.dokka.links.*
99
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
1010
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
1111
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
12+
import org.jetbrains.kotlin.resolve.calls.components.isVararg
1213
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
1314
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
1415
import org.jetbrains.kotlin.types.KotlinType
@@ -27,7 +28,10 @@ internal fun TypeReference.Companion.from(d: ReceiverParameterDescriptor): TypeR
2728
}
2829

2930
internal fun TypeReference.Companion.from(d: ValueParameterDescriptor): TypeReference =
30-
fromPossiblyNullable(d.type, emptyList())
31+
when {
32+
d.isVararg -> Vararg(fromPossiblyNullable(d.varargElementType!!, emptyList()))
33+
else -> fromPossiblyNullable(d.type, emptyList())
34+
}
3135

3236
internal fun TypeReference.Companion.from(@Suppress("UNUSED_PARAMETER") p: PsiClass) = TypeReference
3337

@@ -54,6 +58,7 @@ private fun TypeReference.Companion.from(t: KotlinType, paramTrace: List<KotlinT
5458
is TypeParameterDescriptor -> TypeParam(
5559
d.upperBounds.map { fromPossiblyNullable(it, paramTrace + t) }
5660
)
61+
5762
else -> TypeConstructor(
5863
t.constructorName.orEmpty(),
5964
t.arguments.map { fromProjection(it, paramTrace) }

dokka-subprojects/analysis-kotlin-symbols/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/symbols/translators/DRIFactory.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ internal fun KaSession.getDRIFromConstructor(symbol: KaConstructorSymbol): DRI {
5757
return containingClassId.createDRI().copy(
5858
callable = Callable(
5959
name = containingClassId.shortClassName.asString(),
60-
params = symbol.valueParameters.map { getTypeReferenceFrom(it.returnType) }
60+
params = symbol.valueParameters.map { getTypeReferenceFrom(it.returnType, isVararg = it.isVararg) }
6161
)
6262
)
6363
}
@@ -71,7 +71,7 @@ internal fun KaSession.getDRIFromVariable(symbol: KaVariableSymbol): DRI {
7171

7272

7373
internal fun KaSession.getDRIFromFunction(symbol: KaFunctionSymbol): DRI {
74-
val params = symbol.valueParameters.map { getTypeReferenceFrom(it.returnType) }
74+
val params = symbol.valueParameters.map { getTypeReferenceFrom(it.returnType, isVararg = it.isVararg) }
7575
val contextParams = @OptIn(KaExperimentalApi::class) symbol.contextParameters.map { getTypeReferenceFrom(it.returnType) }
7676
val receiver = symbol.receiverType?.let {
7777
getTypeReferenceFrom(it)
@@ -100,7 +100,7 @@ internal fun KaSession.getDRIFromReceiverParameter(receiverParameterSymbol: KaRe
100100
getDRIFromReceiverType(receiverParameterSymbol.returnType)
101101

102102
private fun KaSession.getDRIFromReceiverType(type: KaType): DRI {
103-
return when(type) {
103+
return when (type) {
104104
is KaClassType -> getDRIFromClassType(type)
105105
is KaTypeParameterType -> getDRIFromTypeParameter(type.symbol)
106106
is KaDefinitelyNotNullType -> getDRIFromReceiverType(type.original)
@@ -149,7 +149,7 @@ private fun KaSession.getDRIFromLocalFunction(symbol: KaFunctionSymbol): DRI {
149149
return containingSymbolDRI.copy(
150150
callable = Callable(
151151
(symbol as? KaNamedSymbol)?.name?.asString() ?: "",
152-
params = symbol.valueParameters.map { getTypeReferenceFrom(it.returnType) },
152+
params = symbol.valueParameters.map { getTypeReferenceFrom(it.returnType, isVararg = it.isVararg) },
153153
receiver = symbol.receiverType?.let {
154154
getTypeReferenceFrom(it)
155155
}

dokka-subprojects/analysis-kotlin-symbols/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/symbols/translators/DefaultSymbolToDocumentableTranslator.kt

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ internal class DokkaSymbolVisitor(
753753
extra = PropertyContainer.withAll(
754754
valueParameterSymbol.additionalExtras()?.toSourceSetDependent()?.toAdditionalModifiers(),
755755
getDokkaAnnotationsFrom(valueParameterSymbol)?.toSourceSetDependent()?.toAnnotations(),
756-
valueParameterSymbol.getDefaultValue()?.let { DefaultValue(it.toSourceSetDependent()) }
756+
getDefaultValue(valueParameterSymbol, index)?.let { DefaultValue(it.toSourceSetDependent()) }
757757
)
758758
)
759759

@@ -788,9 +788,29 @@ internal class DokkaSymbolVisitor(
788788
)
789789
)
790790

791-
private fun KaValueParameterSymbol.getDefaultValue(): Expression? =
792-
if (origin == KaSymbolOrigin.SOURCE) (psi as? KtParameter)?.defaultValue?.toDefaultValueExpression()
793-
else null
791+
/**
792+
* TODO https://youtrack.jetbrains.com/issue/KT-61254/Analysis-API-Add-a-default-value-for-KtValueParameterSymbol
793+
* Retrieves the default value of a value parameter, if available from sources.
794+
* It may be `null` if the owner function comes from a non-source file.
795+
*/
796+
private fun KaSession.getDefaultValue(symbol: KaValueParameterSymbol, parameterIndex: Int): Expression? {
797+
fun KaValueParameterSymbol.getExplicitDefaultValue(): Expression? =
798+
if (origin == KaSymbolOrigin.SOURCE) (psi as? KtParameter)?.defaultValue?.toDefaultValueExpression() else null
799+
fun KaDeclarationSymbol.findMatchingParameterWithDefaultValue(): Expression? =
800+
(this as? KaFunctionSymbol)?.valueParameters?.getOrNull(parameterIndex)?.getExplicitDefaultValue()
801+
802+
val result = symbol.getExplicitDefaultValue()
803+
return if (result != null)
804+
result
805+
else { // in the case of fake declarations
806+
val ownerFunction = symbol.containingDeclaration as? KaNamedFunctionSymbol ?: return null
807+
808+
//overriding function
809+
if (ownerFunction.isOverride)
810+
ownerFunction.allOverriddenSymbols.firstNotNullOfOrNull { it.findMatchingParameterWithDefaultValue() }
811+
else null
812+
}
813+
}
794814

795815
@OptIn(KaExperimentalApi::class) // due to `KaPropertySymbol.initializer`
796816
private fun KaPropertySymbol.getDefaultValue(): Expression? =

dokka-subprojects/analysis-kotlin-symbols/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/symbols/translators/TypeReferenceFactory.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,13 @@ import org.jetbrains.dokka.links.*
88
import org.jetbrains.kotlin.analysis.api.KaSession
99
import org.jetbrains.kotlin.analysis.api.types.*
1010

11-
internal fun KaSession.getTypeReferenceFrom(type: KaType): TypeReference =
12-
getTypeReferenceFromPossiblyRecursive(type, emptyList())
11+
internal fun KaSession.getTypeReferenceFrom(type: KaType, isVararg: Boolean = false): TypeReference {
12+
val typeReference = getTypeReferenceFromPossiblyRecursive(type, emptyList())
13+
return when {
14+
isVararg -> Vararg(typeReference)
15+
else -> typeReference
16+
}
17+
}
1318

1419

1520
// see `deep recursive typebound #1342` test

dokka-subprojects/core/api/dokka-core.api

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,17 @@ public abstract class org/jetbrains/dokka/links/TypeReference {
665665
public final class org/jetbrains/dokka/links/TypeReference$Companion {
666666
}
667667

668+
public final class org/jetbrains/dokka/links/Vararg : org/jetbrains/dokka/links/TypeReference {
669+
public fun <init> (Lorg/jetbrains/dokka/links/TypeReference;)V
670+
public final fun component1 ()Lorg/jetbrains/dokka/links/TypeReference;
671+
public final fun copy (Lorg/jetbrains/dokka/links/TypeReference;)Lorg/jetbrains/dokka/links/Vararg;
672+
public static synthetic fun copy$default (Lorg/jetbrains/dokka/links/Vararg;Lorg/jetbrains/dokka/links/TypeReference;ILjava/lang/Object;)Lorg/jetbrains/dokka/links/Vararg;
673+
public fun equals (Ljava/lang/Object;)Z
674+
public final fun getElementType ()Lorg/jetbrains/dokka/links/TypeReference;
675+
public fun hashCode ()I
676+
public fun toString ()Ljava/lang/String;
677+
}
678+
668679
public final class org/jetbrains/dokka/model/ActualTypealias : org/jetbrains/dokka/model/properties/ExtraProperty {
669680
public static final field Companion Lorg/jetbrains/dokka/model/ActualTypealias$Companion;
670681
public fun <init> (Lorg/jetbrains/dokka/model/DTypeAlias;)V

dokka-subprojects/core/src/main/kotlin/org/jetbrains/dokka/links/DRI.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,10 @@ public data class Nullable(val wrapped: TypeReference) : TypeReference() {
146146
override fun toString(): String = "$wrapped?"
147147
}
148148

149+
public data class Vararg(val elementType: TypeReference) : TypeReference() {
150+
override fun toString(): String = "vararg($elementType)"
151+
}
152+
149153
public object StarProjection : TypeReference() {
150154
override fun toString(): String = "*"
151155
}

dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/resolvers/external/javadoc/JavadocExternalLocationProvider.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ public open class JavadocExternalLocationProvider(
6464
is StarProjection -> "?"
6565

6666
// TODO #3502
67-
is TypeConstructor -> fullyQualifiedName +
68-
(if (params.isNotEmpty()) "[${params.joinToString(",") { it.toJavadocURL() }}]" else "")
67+
is TypeConstructor -> fullyQualifiedName
6968
is TypeParam -> toString()
7069
is RecursiveType -> "^".repeat(rank + 1)
70+
is Vararg -> "${elementType.toJavadocURL()}..."
7171
}
7272
}
7373
}

0 commit comments

Comments
 (0)