aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/kotlin/translators
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/base/src/main/kotlin/translators')
-rw-r--r--plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt154
-rw-r--r--plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt117
2 files changed, 143 insertions, 128 deletions
diff --git a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
index a8175405..bf92c849 100644
--- a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
+++ b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
@@ -146,7 +146,10 @@ private class DokkaDescriptorVisitor(
generics = descriptor.declaredTypeParameters.map { it.toTypeParameter() },
companion = descriptor.companion(driWithPlatform),
sourceSets = listOf(sourceSet),
- extra = PropertyContainer.withAll(descriptor.additionalExtras(), descriptor.getAnnotations())
+ extra = PropertyContainer.withAll(
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
+ )
)
}
@@ -169,7 +172,10 @@ private class DokkaDescriptorVisitor(
supertypes = info.supertypes.toSourceSetDependent(),
documentation = info.docs,
sourceSets = listOf(sourceSet),
- extra = PropertyContainer.withAll(descriptor.additionalExtras(), descriptor.getAnnotations())
+ extra = PropertyContainer.withAll(
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
+ )
)
}
@@ -194,7 +200,10 @@ private class DokkaDescriptorVisitor(
documentation = info.docs,
companion = descriptor.companion(driWithPlatform),
sourceSets = listOf(sourceSet),
- extra = PropertyContainer.withAll(descriptor.additionalExtras(), descriptor.getAnnotations())
+ extra = PropertyContainer.withAll(
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
+ )
)
}
@@ -213,8 +222,8 @@ private class DokkaDescriptorVisitor(
sourceSets = listOf(sourceSet),
expectPresentInSet = sourceSet.takeIf { isExpect },
extra = PropertyContainer.withAll(
- descriptor.additionalExtras(),
- descriptor.getAnnotations(),
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotations().toSourceSetDependent().toAnnotations(),
ConstructorValues(descriptor.getAppliedConstructorParameters().toSourceSetDependent())
)
)
@@ -233,7 +242,10 @@ private class DokkaDescriptorVisitor(
properties = scope.properties(driWithPlatform),
expectPresentInSet = null,
sourceSets = listOf(sourceSet),
- extra = PropertyContainer.withAll(descriptor.additionalExtras(), descriptor.getAnnotations()),
+ extra = PropertyContainer.withAll(
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
+ ),
companion = descriptor.companionObjectDescriptor?.let { objectDescriptor(it, driWithPlatform) },
visibility = descriptor.visibility.toDokkaVisibility().toSourceSetDependent(),
generics = descriptor.declaredTypeParameters.map { it.toTypeParameter() },
@@ -271,7 +283,10 @@ private class DokkaDescriptorVisitor(
modifier = descriptor.modifier().toSourceSetDependent(),
companion = descriptor.companion(driWithPlatform),
sourceSets = listOf(sourceSet),
- extra = PropertyContainer.withAll(descriptor.additionalExtras(), descriptor.getAnnotations())
+ extra = PropertyContainer.withAll(
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
+ )
)
}
@@ -301,9 +316,9 @@ private class DokkaDescriptorVisitor(
sourceSets = listOf(sourceSet),
generics = descriptor.typeParameters.map { it.toTypeParameter() },
extra = PropertyContainer.withAll(
- (descriptor.additionalExtras() + (descriptor.backingField?.getAnnotationsAsExtraModifiers()?.entries?.single()?.value
- ?: emptyList())).toProperty(),
- descriptor.getAllAnnotations()
+ (descriptor.additionalExtras() + descriptor.getAnnotationsWithBackingField()
+ .toAdditionalExtras()).toSet().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotationsWithBackingField().toSourceSetDependent().toAnnotations()
)
)
}
@@ -339,7 +354,8 @@ private class DokkaDescriptorVisitor(
sourceSets = listOf(sourceSet),
extra = PropertyContainer.withAll(
InheritedFunction(isInherited),
- descriptor.additionalExtras(), descriptor.getAnnotations()
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
)
)
}
@@ -379,12 +395,14 @@ private class DokkaDescriptorVisitor(
modifier = descriptor.modifier().toSourceSetDependent(),
generics = descriptor.typeParameters.map { it.toTypeParameter() },
sourceSets = listOf(sourceSet),
- extra = PropertyContainer.withAll<DFunction>(descriptor.additionalExtras(), descriptor.getAnnotations())
- .let {
- if (descriptor.isPrimary) {
- it + PrimaryConstructorExtra
- } else it
- }
+ extra = PropertyContainer.withAll<DFunction>(
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
+ ).let {
+ if (descriptor.isPrimary) {
+ it + PrimaryConstructorExtra
+ } else it
+ }
)
}
@@ -398,7 +416,7 @@ private class DokkaDescriptorVisitor(
expectPresentInSet = null,
documentation = descriptor.resolveDescriptorData(),
sourceSets = listOf(sourceSet),
- extra = PropertyContainer.withAll(descriptor.getAnnotations())
+ extra = PropertyContainer.withAll(descriptor.getAnnotations().toSourceSetDependent().toAnnotations())
)
private fun visitPropertyAccessorDescriptor(
@@ -418,7 +436,10 @@ private class DokkaDescriptorVisitor(
expectPresentInSet = sourceSet.takeIf { isExpect },
documentation = descriptor.resolveDescriptorData(),
sourceSets = listOf(sourceSet),
- extra = PropertyContainer.withAll(descriptor.additionalExtras(), getAllAnnotations())
+ extra = PropertyContainer.withAll(
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ getAnnotationsWithBackingField().toSourceSetDependent().toAnnotations()
+ )
)
val name = run {
@@ -453,7 +474,10 @@ private class DokkaDescriptorVisitor(
},
sources = descriptor.createSources(),
sourceSets = listOf(sourceSet),
- extra = PropertyContainer.withAll(descriptor.additionalExtras(), descriptor.getAnnotations())
+ extra = PropertyContainer.withAll(
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
+ )
)
}
@@ -479,12 +503,11 @@ private class DokkaDescriptorVisitor(
expectPresentInSet = null,
documentation = descriptor.resolveDescriptorData(),
sourceSets = listOf(sourceSet),
- extra = PropertyContainer.withAll(
- listOfNotNull(
- descriptor.additionalExtras(),
- descriptor.getAnnotations(),
- descriptor.getDefaultValue()?.let { DefaultValue(it) })
- )
+ extra = PropertyContainer.withAll(listOfNotNull(
+ descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
+ descriptor.getAnnotations().toSourceSetDependent().toAnnotations(),
+ descriptor.getDefaultValue()?.let { DefaultValue(it) }
+ ))
)
private fun MemberScope.getContributedDescriptors(kindFilter: DescriptorKindFilter, shouldFilter: Boolean) =
@@ -542,7 +565,7 @@ private class DokkaDescriptorVisitor(
null,
upperBounds.map { it.toBound() },
listOf(sourceSet),
- extra = PropertyContainer.withAll(additionalExtras())
+ extra = PropertyContainer.withAll(additionalExtras().toSourceSetDependent().toAdditionalModifiers())
)
private fun KotlinType.toBound(): Bound = when (this) {
@@ -606,28 +629,26 @@ private class DokkaDescriptorVisitor(
ExtraModifiers.KotlinOnlyModifiers.TailRec.takeIf { isTailrec },
ExtraModifiers.KotlinOnlyModifiers.External.takeIf { isExternal },
ExtraModifiers.KotlinOnlyModifiers.Override.takeIf { DescriptorUtils.isOverride(this) }
- ).toProperty()
+ ).toSet()
private fun ClassDescriptor.additionalExtras() = listOfNotNull(
ExtraModifiers.KotlinOnlyModifiers.Inline.takeIf { isInline },
ExtraModifiers.KotlinOnlyModifiers.External.takeIf { isExternal },
ExtraModifiers.KotlinOnlyModifiers.Inner.takeIf { isInner },
ExtraModifiers.KotlinOnlyModifiers.Data.takeIf { isData }
- ).toProperty()
-
- private fun ValueParameterDescriptor.additionalExtras() =
- listOfNotNull(
- ExtraModifiers.KotlinOnlyModifiers.NoInline.takeIf { isNoinline },
- ExtraModifiers.KotlinOnlyModifiers.CrossInline.takeIf { isCrossinline },
- ExtraModifiers.KotlinOnlyModifiers.Const.takeIf { isConst },
- ExtraModifiers.KotlinOnlyModifiers.LateInit.takeIf { isLateInit },
- ExtraModifiers.KotlinOnlyModifiers.VarArg.takeIf { isVararg }
- ).toProperty()
-
- private fun TypeParameterDescriptor.additionalExtras() =
- listOfNotNull(
- ExtraModifiers.KotlinOnlyModifiers.Reified.takeIf { isReified }
- ).toProperty()
+ ).toSet()
+
+ private fun ValueParameterDescriptor.additionalExtras() = listOfNotNull(
+ ExtraModifiers.KotlinOnlyModifiers.NoInline.takeIf { isNoinline },
+ ExtraModifiers.KotlinOnlyModifiers.CrossInline.takeIf { isCrossinline },
+ ExtraModifiers.KotlinOnlyModifiers.Const.takeIf { isConst },
+ ExtraModifiers.KotlinOnlyModifiers.LateInit.takeIf { isLateInit },
+ ExtraModifiers.KotlinOnlyModifiers.VarArg.takeIf { isVararg }
+ ).toSet()
+
+ private fun TypeParameterDescriptor.additionalExtras() = listOfNotNull(
+ ExtraModifiers.KotlinOnlyModifiers.Reified.takeIf { isReified }
+ ).toSet()
private fun PropertyDescriptor.additionalExtras() = listOfNotNull(
ExtraModifiers.KotlinOnlyModifiers.Const.takeIf { isConst },
@@ -637,13 +658,7 @@ private class DokkaDescriptorVisitor(
ExtraModifiers.KotlinOnlyModifiers.Override.takeIf { DescriptorUtils.isOverride(this) }
)
- private fun List<ExtraModifiers>.toProperty() =
- AdditionalModifiers(this.toSet())
-
- private fun Annotated.getAnnotations() = getListOfSourceSetDependentAnnotations().let(::Annotations)
-
- private fun Annotated.getListOfSourceSetDependentAnnotations() =
- mapOf(sourceSet to annotations.mapNotNull { it.toAnnotation() })
+ private fun Annotated.getAnnotations() = annotations.mapNotNull { it.toAnnotation() }
private fun ConstantValue<*>.toValue(): AnnotationParameterValue? = when (this) {
is ConstantsAnnotationValue -> value.toAnnotation()?.let { AnnotationValue(it) }
@@ -670,30 +685,31 @@ private class DokkaDescriptorVisitor(
}
private fun AnnotationDescriptor.toAnnotation(): Annotations.Annotation? =
- DRI.from(annotationClass as DeclarationDescriptor)
- .takeIf { it.classNames != "<ERROR CLASS>" }?.let {
- Annotations.Annotation(
- it,
- allValueArguments.map { it.key.asString() to it.value.toValue() }.filter {
- it.second != null
- }.toMap() as Map<String, AnnotationParameterValue>
- )
- }
+ if(annotationClass?.visibility == Visibilities.PUBLIC)
+ DRI.from(annotationClass as DeclarationDescriptor)
+ .takeIf { it.classNames != "<ERROR CLASS>" }?.let {
+ Annotations.Annotation(
+ it,
+ allValueArguments.map { it.key.asString() to it.value.toValue() }.filter {
+ it.second != null
+ }.toMap() as Map<String, AnnotationParameterValue>
+ )
+ }
+ else
+ null
- private fun PropertyDescriptor.getAllAnnotations(): Annotations =
- (getListOfSourceSetDependentAnnotations() + (backingField?.getListOfSourceSetDependentAnnotations()
- ?: emptyMap())).let(::Annotations)
+ private fun PropertyDescriptor.getAnnotationsWithBackingField(): List<Annotations.Annotation> =
+ getAnnotations() + (backingField?.getAnnotations() ?: emptyList())
- private fun FieldDescriptor.getAnnotationsAsExtraModifiers() = getAnnotations().content.mapValues {
- it.value.mapNotNull {
- try {
- ExtraModifiers.valueOf(it.dri.classNames?.toLowerCase() ?: "")
- } catch (e: IllegalArgumentException) {
- null
- }
+ private fun List<Annotations.Annotation>.toAdditionalExtras() = mapNotNull {
+ try {
+ ExtraModifiers.valueOf(it.dri.classNames?.toLowerCase() ?: "")
+ } catch (e: IllegalArgumentException) {
+ null
}
}
+
private fun ValueParameterDescriptor.getDefaultValue(): String? =
(source as? KotlinSourceElement)?.psi?.children?.find { it is KtExpression }?.text
diff --git a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
index 1f52b2d9..d68f0e01 100644
--- a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
+++ b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
@@ -116,8 +116,7 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
return false
}
- private fun <T> T.toPlatformDependant() =
- mapOf(sourceSetData to this)
+ private fun <T> T.toSourceSetDependent() = mapOf(sourceSetData to this)
fun parseClasslike(psi: PsiClass, parent: DRI): DClasslike = with(psi) {
val dri = parent.withClass(name.toString())
@@ -144,14 +143,14 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
}
parseSupertypes(superTypes)
val (regularFunctions, accessors) = splitFunctionsAndAccessors()
- val documentation = javadocParser.parseDocumentation(this).toPlatformDependant()
+ val documentation = javadocParser.parseDocumentation(this).toSourceSetDependent()
val allFunctions = regularFunctions.mapNotNull { if (!it.isConstructor) parseFunction(it) else null } +
superMethods.map { parseFunction(it, isInherited = true) }
- val source = PsiDocumentableSource(this).toPlatformDependant()
+ val source = PsiDocumentableSource(this).toSourceSetDependent()
val classlikes = innerClasses.map { parseClasslike(it, dri) }
- val visibility = getVisibility().toPlatformDependant()
- val ancestors = ancestorsSet.toList().toPlatformDependant()
- val modifiers = getModifier().toPlatformDependant()
+ val visibility = getVisibility().toSourceSetDependent()
+ val ancestors = ancestorsSet.toList().toSourceSetDependent()
+ val modifiers = getModifier().toSourceSetDependent()
return when {
isAnnotationType ->
DAnnotation(
@@ -168,8 +167,8 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
constructors.map { parseFunction(it, true) },
mapTypeParameters(dri),
listOf(sourceSetData),
- PropertyContainer.empty<DAnnotation>() + annotations.toList().toListOfAnnotations()
- .let(::Annotations)
+ PropertyContainer.empty<DAnnotation>() + annotations.toList().getAnnotations()
+ .toSourceSetDependent().toAnnotations()
)
isEnum -> DEnum(
dri,
@@ -178,14 +177,14 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
DEnumEntry(
dri.withClass("$name.${entry.name}"),
entry.name.orEmpty(),
- javadocParser.parseDocumentation(entry).toPlatformDependant(),
+ javadocParser.parseDocumentation(entry).toSourceSetDependent(),
null,
emptyList(),
emptyList(),
emptyList(),
listOf(sourceSetData),
- PropertyContainer.empty<DEnumEntry>() + entry.annotations.toList().toListOfAnnotations()
- .let(::Annotations)
+ PropertyContainer.empty<DEnumEntry>() + entry.annotations.toList().getAnnotations()
+ .toSourceSetDependent().toAnnotations()
)
},
documentation,
@@ -199,7 +198,8 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
constructors.map { parseFunction(it, true) },
ancestors,
listOf(sourceSetData),
- PropertyContainer.empty<DEnum>() + annotations.toList().toListOfAnnotations().let(::Annotations)
+ PropertyContainer.empty<DEnum>() + annotations.toList().getAnnotations().toSourceSetDependent()
+ .toAnnotations()
)
isInterface -> DInterface(
dri,
@@ -215,8 +215,8 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
mapTypeParameters(dri),
ancestors,
listOf(sourceSetData),
- PropertyContainer.empty<DInterface>() + annotations.toList().toListOfAnnotations()
- .let(::Annotations)
+ PropertyContainer.empty<DInterface>() + annotations.toList().getAnnotations().toSourceSetDependent()
+ .toAnnotations()
)
else -> DClass(
dri,
@@ -234,7 +234,8 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
null,
modifiers,
listOf(sourceSetData),
- PropertyContainer.empty<DClass>() + annotations.toList().toListOfAnnotations().let(::Annotations)
+ PropertyContainer.empty<DClass>() + annotations.toList().getAnnotations().toSourceSetDependent()
+ .toAnnotations()
)
}
}
@@ -253,49 +254,49 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
DParameter(
dri.copy(target = dri.target.nextTarget()),
psiParameter.name,
- javadocParser.parseDocumentation(psiParameter).toPlatformDependant(),
+ javadocParser.parseDocumentation(psiParameter).toSourceSetDependent(),
null,
getBound(psiParameter.type),
listOf(sourceSetData)
)
},
- javadocParser.parseDocumentation(psi).toPlatformDependant(),
+ javadocParser.parseDocumentation(psi).toSourceSetDependent(),
null,
- PsiDocumentableSource(psi).toPlatformDependant(),
- psi.getVisibility().toPlatformDependant(),
+ PsiDocumentableSource(psi).toSourceSetDependent(),
+ psi.getVisibility().toSourceSetDependent(),
psi.returnType?.let { getBound(type = it) } ?: Void,
psi.mapTypeParameters(dri),
null,
- psi.getModifier().toPlatformDependant(),
+ psi.getModifier().toSourceSetDependent(),
listOf(sourceSetData),
psi.additionalExtras().let {
PropertyContainer.withAll(
InheritedFunction(isInherited),
- it,
- (psi.annotations.toList().toListOfAnnotations() + it.toListOfAnnotations()).let(::Annotations)
+ it.toSourceSetDependent().toAdditionalModifiers(),
+ (psi.annotations.toList().getAnnotations() + it.getAnnotations()).toSourceSetDependent()
+ .toAnnotations()
)
}
)
}
- private fun PsiModifierListOwner.additionalExtras() = AdditionalModifiers(
- listOfNotNull(
- ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },
- ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },
- ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },
- ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },
- ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },
- ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },
- ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }
- ).toSet()
- )
+ private fun PsiModifierListOwner.additionalExtras() = listOfNotNull(
+ ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },
+ ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },
+ ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },
+ ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },
+ ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },
+ ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },
+ ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }
+ ).toSet()
+
- private fun AdditionalModifiers.toListOfAnnotations() = mapOf(sourceSetData to this.content.map {
+ private fun Set<ExtraModifiers>.getAnnotations() = map {
if (it !is ExtraModifiers.JavaOnlyModifiers.Static)
Annotations.Annotation(DRI("kotlin.jvm", it.name.toLowerCase().capitalize()), emptyMap())
else
Annotations.Annotation(DRI("kotlin.jvm", "JvmStatic"), emptyMap())
- })
+ }
private fun getBound(type: PsiType): Bound =
cachedBounds.getOrPut(type.canonicalText) {
@@ -346,7 +347,7 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
DTypeParameter(
dri.copy(target = dri.target.nextTarget()),
type.name.orEmpty(),
- javadocParser.parseDocumentation(type).toPlatformDependant(),
+ javadocParser.parseDocumentation(type).toSourceSetDependent(),
null,
mapBounds(type.bounds),
listOf(sourceSetData)
@@ -383,41 +384,39 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
return DProperty(
dri,
psi.name!!, // TODO: Investigate if this is indeed nullable
- javadocParser.parseDocumentation(psi).toPlatformDependant(),
+ javadocParser.parseDocumentation(psi).toSourceSetDependent(),
null,
- PsiDocumentableSource(psi).toPlatformDependant(),
- psi.getVisibility().toPlatformDependant(),
+ PsiDocumentableSource(psi).toSourceSetDependent(),
+ psi.getVisibility().toSourceSetDependent(),
getBound(psi.type),
null,
accessors.firstOrNull { it.hasParameters() }?.let { parseFunction(it) },
accessors.firstOrNull { it.returnType == psi.type }?.let { parseFunction(it) },
- psi.getModifier().toPlatformDependant(),
+ psi.getModifier().toSourceSetDependent(),
listOf(sourceSetData),
emptyList(),
psi.additionalExtras().let {
PropertyContainer.withAll<DProperty>(
- it,
- (psi.annotations.toList().toListOfAnnotations() + it.toListOfAnnotations()).let(::Annotations)
+ it.toSourceSetDependent().toAdditionalModifiers(),
+ (psi.annotations.toList().getAnnotations() + it.getAnnotations()).toSourceSetDependent()
+ .toAnnotations()
)
}
)
}
- private fun Collection<PsiAnnotation>.toListOfAnnotations() =
- mapOf(sourceSetData to filter { it !is KtLightAbstractAnnotation }.mapNotNull { it.toAnnotation() })
+ private fun Collection<PsiAnnotation>.getAnnotations() =
+ filter { it !is KtLightAbstractAnnotation }.mapNotNull { it.toAnnotation() }
private fun JvmAnnotationAttribute.toValue(): AnnotationParameterValue = when (this) {
is PsiNameValuePair -> value?.toValue() ?: StringValue("")
else -> StringValue(this.attributeName)
}
- private fun PsiAnnotationMemberValue.toValue(): AnnotationParameterValue = when (this) {
- is PsiAnnotation -> AnnotationValue(toAnnotation())
- is PsiArrayInitializerMemberValue -> ArrayValue(initializers.map { it.toValue() })
- is PsiReferenceExpression -> EnumValue(
- text ?: "",
- driOfReference()
- )
+ private fun PsiAnnotationMemberValue.toValue(): AnnotationParameterValue? = when (this) {
+ is PsiAnnotation -> toAnnotation()?.let { AnnotationValue(it) }
+ is PsiArrayInitializerMemberValue -> ArrayValue(initializers.mapNotNull { it.toValue() })
+ is PsiReferenceExpression -> driOfReference()?.let { EnumValue(text ?: "", it) }
is PsiClassObjectAccessExpression -> ClassValue(
text ?: "",
DRI.from(((type as PsiImmediateClassType).parameters.single() as PsiClassReferenceType).resolve()!!)
@@ -425,16 +424,16 @@ object DefaultPsiToDocumentableTranslator : SourceToDocumentableTranslator {
else -> StringValue(text ?: "")
}
- private fun PsiAnnotation.toAnnotation() = Annotations.Annotation(
- driOfReference(),
- attributes.filter { it !is KtLightAbstractAnnotation }.mapNotNull { it.attributeName to it.toValue() }
- .toMap()
- )
+ private fun PsiAnnotation.toAnnotation() = driOfReference()?.let {
+ Annotations.Annotation(
+ it,
+ attributes.filter { it !is KtLightAbstractAnnotation }.mapNotNull { it.attributeName to it.toValue() }
+ .toMap()
+ )
+ }
private fun PsiElement.driOfReference() = getChildOfType<PsiJavaCodeReferenceElement>()?.resolve()?.let {
DRI.from(it)
- } ?: DRI("", getChildOfType<PsiJavaCodeReferenceElement>()?.qualifiedName ?: "").also {
- logger.error("$this cannot be resolved to symbol!")
}
}
}