Skip to content

Commit

Permalink
Merge constructors
Browse files Browse the repository at this point in the history
  • Loading branch information
vmishenev committed Jan 19, 2022
1 parent 3be10e0 commit b0f6a11
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 19 deletions.
Expand Up @@ -371,27 +371,30 @@ open class DefaultPageCreator(
+contentForComments(documentables)
val csWithConstructor = cs.filterIsInstance<WithConstructors>()
if (csWithConstructor.isNotEmpty()) {
block(
val constructorsToDocumented = csWithConstructor.flatMap { it.constructors }
.filter { it.extra[PrimaryConstructorExtra] == null || it.documentation.isNotEmpty() }
multiBlock(
"Constructors",
2,
ContentKind.Constructors,
csWithConstructor.flatMap { it.constructors }
.filter { it.extra[PrimaryConstructorExtra] == null || it.documentation.isNotEmpty() },
constructorsToDocumented.groupBy { it.parameters }.map { (_,v) -> v.first().name to v },
@Suppress("UNCHECKED_CAST")
(csWithConstructor as List<Documentable>).sourceSets,
needsAnchors = true,
extra = PropertyContainer.empty<ContentNode>() + SimpleAttr.header("Constructors")
) {
link(it.name, it.dri, kind = ContentKind.Main)
) { key, ds ->
link(key, ds.first().dri, kind = ContentKind.Main)
sourceSetDependentHint(
it.dri,
it.sourceSets.toSet(),
ds.dri,
ds.sourceSets,
kind = ContentKind.SourceSetDependentHint,
styles = emptySet(),
extra = PropertyContainer.empty<ContentNode>()
) {
+buildSignature(it)
contentForBrief(it)
ds.forEach {
+buildSignature(it)
contentForBrief(it)
}
}
}
}
Expand Down
Expand Up @@ -29,34 +29,29 @@ import org.jetbrains.dokka.model.AnnotationTarget
import org.jetbrains.dokka.model.doc.DocumentationNode
import org.jetbrains.dokka.model.doc.Param
import org.jetbrains.dokka.model.properties.PropertyContainer
import org.jetbrains.dokka.model.properties.WithExtraProperties
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.plugability.plugin
import org.jetbrains.dokka.plugability.querySingle
import org.jetbrains.dokka.transformers.sources.AsyncSourceToDocumentableTranslator
import org.jetbrains.dokka.transformers.sources.SourceToDocumentableTranslator
import org.jetbrains.dokka.utilities.DokkaLogger
import org.jetbrains.dokka.utilities.parallelForEach
import org.jetbrains.dokka.utilities.parallelMap
import org.jetbrains.dokka.utilities.parallelMapNotNull
import org.jetbrains.kotlin.asJava.classes.KtUltraLightClass
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.descriptors.java.JavaVisibilities
import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.util.javaResolutionFacade
import org.jetbrains.kotlin.idea.caches.resolve.util.resolveToDescriptor
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.load.java.propertyNameByGetMethodName
import org.jetbrains.kotlin.load.java.propertyNamesBySetMethodName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.psiUtil.getChildOfType
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import java.io.File

Expand Down Expand Up @@ -169,7 +164,12 @@ class DefaultPsiToDocumentableTranslator(
setOf(sourceSetData)
)
}

private fun resolveLazyUltraLightClassContentIfNeeded(psi: PsiClass) {
val lightClass = psi as? KtUltraLightClass ?: return
val resolutionFacade = psi.javaResolutionFacade() ?: return
val descriptor = lightClass.resolveToDescriptor(resolutionFacade) as? LazyClassDescriptor ?: return
descriptor.forceResolveAllContents()
}
private suspend fun parseClasslike(psi: PsiClass, parent: DRI): DClasslike = coroutineScope {
with(psi) {
val dri = parent.withClass(name.toString())
Expand All @@ -196,6 +196,7 @@ class DefaultPsiToDocumentableTranslator(

superTypes.forEach { type ->
(type as? PsiClassType)?.resolve()?.let {
//resolveLazyUltraLightClassContentIfNeeded(it)
val definedAt = DRI.from(it)
it.methods.forEach { method ->
val hash = method.hash
Expand Down Expand Up @@ -658,4 +659,5 @@ class DefaultPsiToDocumentableTranslator(
val superclass: TypeConstructor?,
val interfaces: List<TypeConstructor>
)

}

0 comments on commit b0f6a11

Please sign in to comment.