From 6adec744f12028f866b4815f7ab503000d44dd58 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Wed, 4 Dec 2013 22:08:39 +0400 Subject: [PATCH] Migrated kdoc to package views & fragments instead of namespace descriptors. --- .../jetbrains/kotlin/doc/model/KotlinModel.kt | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt index e46c57dfb61..77ee2966cac 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt @@ -12,7 +12,6 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor import org.jetbrains.jet.lang.descriptors.ClassKind import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor import org.jetbrains.jet.lang.descriptors.ModuleDescriptor -import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor import org.jetbrains.jet.lang.descriptors.PropertyDescriptor import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor @@ -37,6 +36,7 @@ import org.pegdown.ast.AutoLinkNode import org.pegdown.ast.ExpLinkNode import org.pegdown.ast.RefLinkNode import org.pegdown.ast.WikiLinkNode +import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor /** * Returns the collection of functions with duplicate function names filtered out @@ -57,9 +57,13 @@ fun containerName(descriptor: DeclarationDescriptor): String = qualifiedName(des fun qualifiedName(descriptor: DeclarationDescriptor?): String { if (descriptor == null || descriptor is ModuleDescriptor) { return "" - } else { + } + else if (descriptor is PackageFragmentDescriptor) { + return descriptor.getFqName().asString() + } + else { val parent = containerName(descriptor) - var name = descriptor.getName()?.asString() ?: "" + var name = descriptor.getName().asString() if (name.startsWith("<")) { name = "" } @@ -236,27 +240,25 @@ class KModel(val context: BindingContext, val config: KDocConfig, val sourceDirs ;{ /** Loads the model from the given set of source files */ - val allNamespaces = HashSet() + val allPackageFragments = HashSet() for (source in sources) { // We retrieve a descriptor by a PSI element from the context - val namespaceDescriptor = BindingContextUtils.namespaceDescriptor(context, source) - if (namespaceDescriptor != null) { - allNamespaces.add(namespaceDescriptor); + val packageFragment = context.get(BindingContext.FILE_TO_PACKAGE_FRAGMENT, source) + if (packageFragment != null) { + allPackageFragments.add(packageFragment); } else { warning("No NamespaceDescriptor for source $source") } } val allClasses = HashSet() - for (namespace in allNamespaces) { - getPackage(namespace) - for (descriptor in namespace.getMemberScope().getAllDescriptors()) { + for (packageFragment in allPackageFragments) { + getPackage(packageFragment) + for (descriptor in packageFragment.getMemberScope().getAllDescriptors()) { if (descriptor is ClassDescriptor) { val klass = getClass(descriptor) if (klass != null) { allClasses.add(klass) } - } else if (descriptor is NamespaceDescriptor) { - getPackage(descriptor) } } } @@ -286,7 +288,7 @@ class KModel(val context: BindingContext, val config: KDocConfig, val sourceDirs fun getPackage(name: String): KPackage? = packageMap.get(name) /** Returns the package for the given descriptor, creating one if its not available */ - fun getPackage(descriptor: NamespaceDescriptor): KPackage { + fun getPackage(descriptor: PackageFragmentDescriptor): KPackage { val name = qualifiedName(descriptor) var created = false val pkg = packageMap.getOrPut(name) { @@ -708,7 +710,7 @@ $highlight""" var dec: DeclarationDescriptor? = classElement.getContainingDeclaration() while (dec != null) { val container = dec - if (container is NamespaceDescriptor) { + if (container is PackageFragmentDescriptor) { val pkg = getPackage(container) return pkg.getClass(classElement) } else { @@ -936,7 +938,7 @@ abstract class KNamed(val name: String, model: KModel, declarationDescriptor: De } -class KPackage(model: KModel, val descriptor: NamespaceDescriptor, +class KPackage(model: KModel, val descriptor: PackageFragmentDescriptor, val name: String, var local: Boolean = false, var useExternalLink: Boolean = false): KClassOrPackage(model, descriptor), Comparable {