From 4db46658f922a486dd07e054e814509c91e0b9f5 Mon Sep 17 00:00:00 2001 From: James Strachan Date: Mon, 5 Mar 2012 12:00:39 +0000 Subject: [PATCH] fixed bugs in missing functions in kdoc --- .../org/jetbrains/kotlin/model/KotlinModel.kt | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/kdoc/src/main/kotlin/org/jetbrains/kotlin/model/KotlinModel.kt b/kdoc/src/main/kotlin/org/jetbrains/kotlin/model/KotlinModel.kt index 901ad7b43aa..c6eefeb0399 100644 --- a/kdoc/src/main/kotlin/org/jetbrains/kotlin/model/KotlinModel.kt +++ b/kdoc/src/main/kotlin/org/jetbrains/kotlin/model/KotlinModel.kt @@ -43,7 +43,6 @@ fun inheritedExtensionFunctions(functions: Collection): Map): SortedMap> { val map = extensionFunctions(functions) // for each class, lets walk its base classes and add any other extension functions from base classes - val classes = map.keySet().toList() val answer = TreeMap>() for (c in map.keySet()) { val allFunctions = map.get(c).notNull().toSortedSet() @@ -72,7 +71,6 @@ fun inheritedExtensionFunctions(functions: Collection): Map): Map> { val map = extensionProperties(properties) // for each class, lets walk its base classes and add any other extension properties from base classes - val classes = map.keySet().toList() val answer = TreeMap>() for (c in map.keySet()) { val allProperties = map.get(c).notNull().toSortedSet() @@ -228,18 +226,19 @@ class KModel(var context: BindingContext, var title: String = "Documentation", v val returnType = getType(descriptor.getReturnType()) if (returnType != null) { val name = descriptor.getName() ?: "null" - val function = KFunction(descriptor, owner, name, returnType) - addTypeParameters(function.typeParameters, descriptor.getTypeParameters()) - function.description = commentsFor(descriptor) + val parameters = ArrayList() val params = descriptor.getValueParameters() for (param in params) { if (param != null) { val p = createParameter(param) if (p != null) { - function.parameters.add(p) + parameters.add(p) } } } + val function = KFunction(descriptor, owner, name, returnType, parameters) + addTypeParameters(function.typeParameters, descriptor.getTypeParameters()) + function.description = commentsFor(descriptor) val receiver = descriptor.getReceiverParameter() if (receiver is ExtensionReceiver) { function.extensionClass = getType(receiver.getType())?.klass @@ -525,25 +524,33 @@ class KClass(val pkg: KPackage, val descriptor: ClassDescriptor, class KFunction(val descriptor: CallableDescriptor, val owner: KClassOrPackage, val name: String, var returnType: KType, + var parameters: List, var extensionClass: KClass? = null, var modifiers: List = arrayList(), var typeParameters: List = arrayList(), - var parameters: List = arrayList(), var exceptions: List = arrayList(), var annotations: List = arrayList(), var sourceLine: Int = 2) : KAnnotated(), Comparable { + public val parameterTypeText: String = parameters.map{ it.aType.name }.join(", ") + override fun compareTo(other: KFunction): Int { var answer = name.compareTo(other.name) if (answer == 0) { answer = parameterTypeText.compareTo(other.parameterTypeText) + if (answer == 0) { + val ec1 = extensionClass?.name ?: "" + val ec2 = other.extensionClass?.name ?: "" + answer = ec1.compareTo(ec2) + } } return answer } - fun equals(other: KFunction) = name == other.name + fun equals(other: KFunction) = name == other.name && this.parameterTypeText == other.parameterTypeText && + this.extensionClass == other.extensionClass && this.owner == other.owner - fun toString() = "fun ($name)" + fun toString() = "fun $name($parameterTypeText): $returnType" public val link: String = "$name($parameterTypeText)" @@ -552,14 +559,16 @@ class KFunction(val descriptor: CallableDescriptor, val owner: KClassOrPackage, get() = typeParameters.map{ it.name }.join(", ") /** Returns a list of parameter value types */ + /* private var _parameterTypeText: String? = null public val parameterTypeText: String get() { if (_parameterTypeText == null) { - _parameterTypeText = typeParameters.map{ it.name }.join(", ") + _parameterTypeText = parameters.map{ it.aType.name }.join(", ") } return _parameterTypeText.sure() } + */ } class KProperty(val owner: KClassOrPackage, val descriptor: PropertyDescriptor, val name: String, @@ -571,7 +580,7 @@ class KProperty(val owner: KClassOrPackage, val descriptor: PropertyDescriptor, fun equals(other: KFunction) = name == other.name - fun toString() = "property $name}" + fun toString() = "property $name" } class KParameter(val name: String,