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 814407c0bd2..80cea81bd52 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 @@ -1018,6 +1018,8 @@ class KPackage(model: KModel, val descriptor: NamespaceDescriptor, } fun packageFunctions() = functions.filter{ it.extensionClass == null } + + fun packageProperties() = properties.filter{ it.extensionClass == null && it.isPublic() } } class KType(val jetType: JetType, model: KModel, val klass: KClass?, val arguments: List = ArrayList()) @@ -1175,6 +1177,11 @@ class KProperty(val owner: KClassOrPackage, val descriptor: PropertyDescriptor, fun kind(): String = if (isVar()) "var" else "val" + fun isPublic(): Boolean { + val visibility = descriptor.getVisibility() + return visibility.isPublicAPI() + } + fun toString() = "property $name" } diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/KDocTemplate.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/KDocTemplate.kt index fde1ad99b78..e892dfc7877 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/KDocTemplate.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/KDocTemplate.kt @@ -36,6 +36,13 @@ abstract class KDocTemplate() : TextTemplate() { } } + /** + * Generates a link to a package level property + */ + open fun href(pkg: KPackage, p: KProperty): String { + return "${href(pkg)}#${p.link}" + } + open fun href(f: KProperty): String { return if (f.owner is KClass) { "${href(f.owner)}#${f.link}" diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageFrameTemplate.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageFrameTemplate.kt index a1cffaf8a75..81a7ca8889d 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageFrameTemplate.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageFrameTemplate.kt @@ -38,6 +38,7 @@ ${stylesheets()} printClasses("enum", "Enums") printClasses("annotation", "Annotations") printClasses("exception", "Exceptions") + printPackageProperties() printFunctions() printExtensionFunctions() @@ -104,6 +105,24 @@ ${stylesheets()} } } println(""" +""") + } + } + protected fun printPackageProperties(): Unit { + val list = pkg.packageProperties() + if (list.notEmpty()) { + println(""" + +
Properties  + +
""") + for (c in list) { + if (c != null) { + println("""${c.name} +
""") + } + } + println("""
""") } } diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageSummaryTemplate.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageSummaryTemplate.kt index e6302cd5d0f..67968ef9618 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageSummaryTemplate.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageSummaryTemplate.kt @@ -121,8 +121,9 @@ ${pkg.description(this)} printClasses("annotation", "Annotations") printClasses("exception", "Exceptions") + printPropertySummary(pkg.packageProperties()) printFunctionSummary(pkg.packageFunctions()) - //printFunctions() + printExtensionFunctions() println("""