diff options
author | Kamil Doległo <kamilok1965@interia.pl> | 2020-02-26 13:41:31 +0100 |
---|---|---|
committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-03-04 13:39:48 +0100 |
commit | 5a02fd66982b92984f76eaaca16ba6045f55ff31 (patch) | |
tree | d2e8820cf4066aef813ec74b1aeb14cbe264e7e8 /plugins/base/src | |
parent | bc55869d707e5abafbf8544b5f519e003a504ac6 (diff) | |
download | dokka-5a02fd66982b92984f76eaaca16ba6045f55ff31.tar.gz dokka-5a02fd66982b92984f76eaaca16ba6045f55ff31.tar.bz2 dokka-5a02fd66982b92984f76eaaca16ba6045f55ff31.zip |
Replace Visibility used in Documentables with custom classes
Diffstat (limited to 'plugins/base/src')
4 files changed, 33 insertions, 25 deletions
diff --git a/plugins/base/src/main/kotlin/transformers/psi/DefaultPsiToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/transformers/psi/DefaultPsiToDocumentableTranslator.kt index 1001ffb3..6146ce5f 100644 --- a/plugins/base/src/main/kotlin/transformers/psi/DefaultPsiToDocumentableTranslator.kt +++ b/plugins/base/src/main/kotlin/transformers/psi/DefaultPsiToDocumentableTranslator.kt @@ -61,11 +61,12 @@ object DefaultPsiToDocumentableTranslator : PsiToDocumentableTranslator { private fun PsiModifierListOwner.getVisibility() = modifierList?.children?.toList()?.let { ml -> when { - ml.any { it.text == PsiKeyword.PUBLIC } -> Visibilities.PUBLIC - ml.any { it.text == PsiKeyword.PROTECTED } -> Visibilities.PROTECTED - else -> Visibilities.PRIVATE + ml.any { it.text == PsiKeyword.PUBLIC } -> JavaVisibility.Public + ml.any { it.text == PsiKeyword.PROTECTED } -> JavaVisibility.Protected + ml.any { it.text == PsiKeyword.PRIVATE } -> JavaVisibility.Private + else -> JavaVisibility.Default } - } ?: Visibilities.PRIVATE + } ?: JavaVisibility.Default private val PsiMethod.hash: Int get() = "$returnType $name$parameterList".hashCode() diff --git a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt index cea408d7..83d3d178 100644 --- a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt +++ b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt @@ -16,6 +16,7 @@ import org.jetbrains.dokka.transformers.descriptors.DescriptorToDocumentableTran import org.jetbrains.kotlin.codegen.isJvmStaticInObjectOrClassOrInterface import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies import org.jetbrains.kotlin.idea.kdoc.findKDoc import org.jetbrains.kotlin.idea.refactoring.fqName.fqName @@ -103,7 +104,7 @@ open class DokkaDescriptorVisitor( // TODO: close this class and make it private properties = scope.properties(driWithPlatform), classlikes = scope.classlikes(driWithPlatform), sources = descriptor.createSources(), - visibility = PlatformDependent.from(platformData, descriptor.visibility), + visibility = PlatformDependent.from(platformData, descriptor.visibility.toDokkaVisibility()), supertypes = PlatformDependent.from(platformData, info.supertypes), documentation = info.docs, generics = descriptor.typeConstructor.parameters.map { it.toTypeParameter() }, @@ -125,7 +126,7 @@ open class DokkaDescriptorVisitor( // TODO: close this class and make it private properties = scope.properties(driWithPlatform), classlikes = scope.classlikes(driWithPlatform), sources = descriptor.createSources(), - visibility = PlatformDependent(mapOf(platformData to descriptor.visibility)), + visibility = PlatformDependent(mapOf(platformData to descriptor.visibility.toDokkaVisibility())), supertypes = PlatformDependent.from(platformData, info.supertypes), documentation = info.docs, platformData = listOf(platformData), @@ -147,7 +148,7 @@ open class DokkaDescriptorVisitor( // TODO: close this class and make it private properties = scope.properties(driWithPlatform), classlikes = scope.classlikes(driWithPlatform), sources = descriptor.createSources(), - visibility = PlatformDependent(mapOf(platformData to descriptor.visibility)), + visibility = PlatformDependent(mapOf(platformData to descriptor.visibility.toDokkaVisibility())), supertypes = PlatformDependent.from(platformData, info.supertypes), documentation = info.docs, companion = descriptor.companion(driWithPlatform), @@ -192,7 +193,7 @@ open class DokkaDescriptorVisitor( // TODO: close this class and make it private properties = scope.properties(driWithPlatform), classlikes = scope.classlikes(driWithPlatform), sources = actual, - visibility = PlatformDependent.from(platformData, descriptor.visibility), + visibility = PlatformDependent.from(platformData, descriptor.visibility.toDokkaVisibility()), generics = descriptor.typeConstructor.parameters.map { it.toTypeParameter() }, documentation = info.docs, modifier = descriptor.modifier(), @@ -215,12 +216,12 @@ open class DokkaDescriptorVisitor( // TODO: close this class and make it private }, sources = actual, getter = descriptor.accessors.filterIsInstance<PropertyGetterDescriptor>().singleOrNull()?.let { - visitPropertyAccessorDescriptor(it, descriptor, dri) + visitPropertyAccessorDescriptor(it, descriptor, dri) }!!, setter = descriptor.accessors.filterIsInstance<PropertySetterDescriptor>().singleOrNull()?.let { - visitPropertyAccessorDescriptor(it, descriptor, dri) + visitPropertyAccessorDescriptor(it, descriptor, dri) }, - visibility = PlatformDependent(mapOf(platformData to descriptor.visibility)), + visibility = PlatformDependent(mapOf(platformData to descriptor.visibility.toDokkaVisibility())), documentation = descriptor.resolveDescriptorData(platformData), modifier = descriptor.modifier(), type = KotlinTypeWrapper(descriptor.returnType!!), @@ -244,7 +245,7 @@ open class DokkaDescriptorVisitor( // TODO: close this class and make it private parameter(index, desc, DRIWithPlatformInfo(dri, actual)) }, sources = actual, - visibility = PlatformDependent.from(platformData, descriptor.visibility), + visibility = PlatformDependent.from(platformData, descriptor.visibility.toDokkaVisibility()), generics = descriptor.typeParameters.map { it.toTypeParameter() }, documentation = descriptor.resolveDescriptorData(platformData), modifier = descriptor.modifier(), @@ -268,7 +269,7 @@ open class DokkaDescriptorVisitor( // TODO: close this class and make it private parameter(index, desc, DRIWithPlatformInfo(dri, actual)) }, sources = actual, - visibility = PlatformDependent(mapOf(platformData to descriptor.visibility)), + visibility = PlatformDependent(mapOf(platformData to descriptor.visibility.toDokkaVisibility())), documentation = descriptor.resolveDescriptorData(platformData), type = KotlinTypeWrapper(descriptor.returnType), modifier = descriptor.modifier(), @@ -325,7 +326,7 @@ open class DokkaDescriptorVisitor( // TODO: close this class and make it private name, isConstructor = false, parameters = parameters, - visibility = PlatformDependent(mapOf(platformData to descriptor.visibility)), + visibility = PlatformDependent(mapOf(platformData to descriptor.visibility.toDokkaVisibility())), documentation = descriptor.resolveDescriptorData(platformData), type = KotlinTypeWrapper(descriptor.returnType!!), generics = descriptor.typeParameters.map { it.toTypeParameter() }, @@ -431,7 +432,7 @@ open class DokkaDescriptorVisitor( // TODO: close this class and make it private else -> WithAbstraction.Modifier.Empty } - private fun MemberDescriptor.createSources(): PlatformDependent<DocumentableSource> = if(isExpect()) { + private fun MemberDescriptor.createSources(): PlatformDependent<DocumentableSource> = if (isExpect()) { PlatformDependent(emptyMap(), DescriptorDocumentableSource(this)) } else { PlatformDependent(mapOf(platformData to DescriptorDocumentableSource(this))) @@ -489,4 +490,12 @@ open class DokkaDescriptorVisitor( // TODO: close this class and make it private container + AdditionalModifiers(this) data class ClassInfo(val supertypes: List<DRI>, val docs: PlatformDependent<DocumentationNode>) + + private fun Visibility.toDokkaVisibility(): org.jetbrains.dokka.model.Visibility = when (this) { + Visibilities.PUBLIC -> KotlinVisibility.Public + Visibilities.PROTECTED -> KotlinVisibility.Protected + Visibilities.INTERNAL -> KotlinVisibility.Internal + Visibilities.PRIVATE -> KotlinVisibility.Private + else -> KotlinVisibility.Public + } } diff --git a/plugins/base/src/test/kotlin/model/ClassesTest.kt b/plugins/base/src/test/kotlin/model/ClassesTest.kt index 18288442..a22bd775 100644 --- a/plugins/base/src/test/kotlin/model/ClassesTest.kt +++ b/plugins/base/src/test/kotlin/model/ClassesTest.kt @@ -2,9 +2,7 @@ package model import org.jetbrains.dokka.model.* import org.jetbrains.dokka.model.Function -import org.jetbrains.dokka.model.Object import org.jetbrains.dokka.model.WithAbstraction.Modifier -import org.jetbrains.kotlin.descriptors.Visibilities import org.junit.Test import utils.AbstractModelTest import utils.assertNotNull @@ -52,7 +50,7 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class children counts 4 with(constructors.firstOrNull().assertNotNull("Constructor")) { - visibility.values allEquals Visibilities.PUBLIC + visibility.values allEquals KotlinVisibility.Public parameters counts 1 with(parameters.firstOrNull().assertNotNull("Constructor parameter")) { name equals "name" @@ -80,7 +78,7 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class with((this / "fn").cast<Function>()) { type.constructorFqName equals "kotlin.Unit" parameters counts 0 - visibility.values allEquals Visibilities.PUBLIC + visibility.values allEquals KotlinVisibility.Public } } } @@ -150,7 +148,7 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class ) { with((this / "classes" / "Klass").cast<Class>()) { name equals "Klass" - visibility.values allEquals Visibilities.PUBLIC + visibility.values allEquals KotlinVisibility.Public with(extra[AdditionalModifiers.AdditionalKey].assertNotNull("Extras")) { content.find{it == ExtraModifiers.DATA}.assertNotNull("data modifier") } @@ -174,7 +172,7 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class ) { with((this / "classes" / "Klass").cast<Class>()) { name equals "Klass" - modifier equals WithAbstraction.Modifier.Sealed + modifier equals Modifier.Sealed } } } @@ -391,7 +389,7 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class with((this / "Companion").cast<Object>()) { name equals "Companion" - visibility.values allEquals Visibilities.PRIVATE + visibility.values allEquals KotlinVisibility.Private with((this / "fn").cast<Function>()) { name equals "fn" diff --git a/plugins/base/src/test/kotlin/model/PropertyTest.kt b/plugins/base/src/test/kotlin/model/PropertyTest.kt index 633796e7..e4ef0aec 100644 --- a/plugins/base/src/test/kotlin/model/PropertyTest.kt +++ b/plugins/base/src/test/kotlin/model/PropertyTest.kt @@ -1,8 +1,8 @@ package model +import org.jetbrains.dokka.model.KotlinVisibility import org.jetbrains.dokka.model.Package import org.jetbrains.dokka.model.Property -import org.jetbrains.kotlin.descriptors.Visibilities import org.junit.Test import utils.AbstractModelTest import utils.assertNotNull @@ -80,7 +80,7 @@ class PropertyTest : AbstractModelTest("/src/main/kotlin/property/Test.kt", "pro with(getter.assertNotNull("Getter")) { type.constructorFqName equals "kotlin.String" } - visibility.values allEquals Visibilities.PUBLIC + visibility.values allEquals KotlinVisibility.Public } } } @@ -103,7 +103,7 @@ class PropertyTest : AbstractModelTest("/src/main/kotlin/property/Test.kt", "pro with(getter.assertNotNull("Getter")) { type.constructorFqName equals "kotlin.Int" } - visibility.values allEquals Visibilities.PUBLIC + visibility.values allEquals KotlinVisibility.Public } } } |