From af93b82ed92faf2dba538443df653b581531b1c1 Mon Sep 17 00:00:00 2001 From: James Strachan Date: Wed, 7 Mar 2012 10:39:15 +0000 Subject: [PATCH] minor refactor to ensure a KAnnotated always has a declarationDescriptor --- .../jetbrains/kotlin/doc/model/KotlinModel.kt | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/libraries/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt b/libraries/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt index 2e6a5ba30a1..fe167bbecce 100644 --- a/libraries/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt +++ b/libraries/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt @@ -120,7 +120,7 @@ fun extensionProperties(properties: Collection): Map = TreeSet() @@ -381,9 +381,10 @@ class KModel(var context: BindingContext, val config: KDocConfig, var title: Str } } -class TemplateLinkRenderer(template: KDocTemplate) : LinkRenderer() { +class TemplateLinkRenderer(val annotated: KAnnotated, val template: KDocTemplate) : LinkRenderer() { override fun render(node : WikiLinkNode?) : Rendering? { + annotated.declarationDescriptor.getContainingDeclaration() println("LinkRenderer.render(WikiLinkNode): $node") // TODO translate the wiki link to a Class/function/property/extensionFunction etc return super.render(node) @@ -405,7 +406,7 @@ class TemplateLinkRenderer(template: KDocTemplate) : LinkRenderer() { } } -abstract class KAnnotated(val model: KModel) { +abstract class KAnnotated(val model: KModel, val declarationDescriptor: DeclarationDescriptor) { public open var wikiDescription: String = "" public open var deprecated: Boolean = false @@ -421,11 +422,11 @@ abstract class KAnnotated(val model: KModel) { } fun detailedDescription(template: KDocTemplate): String { - return model.wikiConvert(wikiDescription, TemplateLinkRenderer(template)) + return model.wikiConvert(wikiDescription, TemplateLinkRenderer(this, template)) } } -abstract class KNamed(val name: String, model: KModel) : KAnnotated(model), Comparable { +abstract class KNamed(val name: String, model: KModel, declarationDescriptor: DeclarationDescriptor) : KAnnotated(model, declarationDescriptor), Comparable { override fun compareTo(other: KNamed): Int = name.compareTo(other.name) @@ -437,7 +438,7 @@ abstract class KNamed(val name: String, model: KModel) : KAnnotated(model), Comp class KPackage(model: KModel, val descriptor: NamespaceDescriptor, val name: String, - var local: Boolean = false) : KClassOrPackage(model), Comparable { + var local: Boolean = false) : KClassOrPackage(model, descriptor), Comparable { override fun compareTo(other: KPackage): Int = name.compareTo(other.name) @@ -525,7 +526,8 @@ class KPackage(model: KModel, val descriptor: NamespaceDescriptor, fun packageFunctions() = functions.filter{ it.extensionClass == null } } -class KType(val jetType: JetType, model: KModel, val klass: KClass?, val arguments: List = ArrayList()) : KNamed(klass?.name ?: jetType.toString(), model) { +class KType(val jetType: JetType, model: KModel, val klass: KClass?, val arguments: List = ArrayList()) + : KNamed(klass?.name ?: jetType.toString(), model, jetType.getConstructor().getDeclarationDescriptor().sure()) { { if (klass != null) { this.wikiDescription = klass.wikiDescription @@ -556,7 +558,7 @@ class KClass(val pkg: KPackage, val descriptor: ClassDescriptor, var authors: List = arrayList(), var baseClasses: List = arrayList(), var nestedClasses: List = arrayList(), - var sourceLine: Int = 2) : KClassOrPackage(pkg.model), Comparable { + var sourceLine: Int = 2) : KClassOrPackage(pkg.model, descriptor), Comparable { override fun compareTo(other: KClass): Int = name.compareTo(other.name) @@ -604,7 +606,7 @@ class KFunction(val descriptor: CallableDescriptor, val owner: KClassOrPackage, var typeParameters: List = arrayList(), var exceptions: List = arrayList(), var annotations: List = arrayList(), - var sourceLine: Int = 2) : KAnnotated(owner.model), Comparable { + var sourceLine: Int = 2) : KAnnotated(owner.model, descriptor), Comparable { public val parameterTypeText: String = parameters.map{ it.aType.name }.join(", ") @@ -634,7 +636,7 @@ class KFunction(val descriptor: CallableDescriptor, val owner: KClassOrPackage, } class KProperty(val owner: KClassOrPackage, val descriptor: PropertyDescriptor, val name: String, - val returnType: KType, val extensionClass: KClass?) : KAnnotated(owner.model), Comparable { + val returnType: KType, val extensionClass: KClass?) : KAnnotated(owner.model, descriptor), Comparable { override fun compareTo(other: KProperty): Int = name.compareTo(other.name) @@ -646,7 +648,7 @@ class KProperty(val owner: KClassOrPackage, val descriptor: PropertyDescriptor, } class KParameter(val name: String, - var aType: KType) : KAnnotated(aType.model) { + var aType: KType) : KAnnotated(aType.model, aType.declarationDescriptor) { fun toString() = "$name: ${aType.name}" } @@ -654,12 +656,12 @@ class KParameter(val name: String, class KTypeParameter(val name: String, val descriptor: TypeParameterDescriptor, model: KModel, - var extends: List = arrayList()) : KAnnotated(model) { + var extends: List = arrayList()) : KAnnotated(model, descriptor) { fun toString() = "$name" } -class KAnnotation(var klass: KClass) : KAnnotated(klass.model) { +class KAnnotation(var klass: KClass) : KAnnotated(klass.model, klass.descriptor) { // TODO add some parameter values?