aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-05-20 02:05:30 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-05-20 02:05:30 +0000
commitaf0beecfae64434e4b3eaad51d0c5b072823403f (patch)
treec117e03be6ae505bed995e54f7989cf587b5672e
parente299432950d02cfc2d5e17bf91fdd129c9162495 (diff)
parent1ad092d0cb6416dd09351f1a401be808675e1087 (diff)
downloaddokka-af0beecfae64434e4b3eaad51d0c5b072823403f.tar.gz
Snap for 6511351 from 1ad092d0cb6416dd09351f1a401be808675e1087 to rvc-d1-release
Change-Id: If2101ac568a7566005e7d57ba8a61bf0399b9882
-rw-r--r--busytown.gradle1
-rw-r--r--core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt6
-rw-r--r--core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt1
-rw-r--r--core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt21
-rw-r--r--core/src/main/kotlin/Kotlin/DocumentationBuilder.kt9
-rw-r--r--core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html29
-rw-r--r--gradle.properties2
-rw-r--r--runners/cli/src/main/kotlin/cli/main.kt18
-rw-r--r--runners/gradle-plugin/build.gradle21
9 files changed, 91 insertions, 17 deletions
diff --git a/busytown.gradle b/busytown.gradle
index b6fb936e9..f16d8539a 100644
--- a/busytown.gradle
+++ b/busytown.gradle
@@ -15,6 +15,7 @@ allprojects { project ->
zipTask.from(report.destination)
}
}
+ task.ignoreFailures = true
}
if (project.rootProject == project) {
def zipMaven = project.tasks.create("zipMaven", Zip) {
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
index b62e51a78..7fbdb1819 100644
--- a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
+++ b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
@@ -456,7 +456,7 @@ open class JavaLayoutHtmlFormatOutputBuilder(
return
}
- val targetLink = node.links.singleOrNull()
+ val targetLink = node.links.firstOrNull()
if (targetLink?.kind == NodeKind.TypeParameter) {
+node.name
@@ -1106,8 +1106,8 @@ open class JavaLayoutHtmlFormatOutputBuilder(
filter { it.getClassExtensionReceiver() != null }
.groupBy {
val receiverType = it.getClassExtensionReceiver()!!
- receiverType.links(NodeKind.ExternalLink).firstOrNull()
- ?: receiverType.links.first { it.kind in NodeKind.classLike}
+ receiverType.links.filter { it.kind != NodeKind.ExternalLink}.firstOrNull() ?:
+ receiverType.links(NodeKind.ExternalLink).first()
}
private fun List<DocumentationNode>.externalExtensions(kind: NodeKind) =
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt
index 115e3f76d..dc0df2a9e 100644
--- a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt
+++ b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt
@@ -133,6 +133,7 @@ class JavaLayoutHtmlFormatGenerator @Inject constructor(
val normalized = uri.normalize()
uriToWriter[normalized]?.let { return it }
val file = root.resolve(normalized.path.removePrefix("/"))
+ file.parentFile.mkdirsOrFail()
val writer = file.bufferedWriter()
uriToWriter[normalized] = writer
return writer
diff --git a/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt b/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
index cc9c2c2bf..8776da4c2 100644
--- a/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
+++ b/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
@@ -206,13 +206,26 @@ class JavaPsiDocumentationBuilder : JavaDocumentationBuilder {
else -> NodeKind.Class
}
val node = nodeForElement(this, kind)
- superTypes.filter { !ignoreSupertype(it) }.forEach {
- node.appendType(it, NodeKind.Supertype)
- val superClass = it.resolve()
- if (superClass != null) {
+ superTypes.filter { !ignoreSupertype(it) }.forEach { superType ->
+ node.appendType(superType, NodeKind.Supertype)
+ val superClass = superType.resolve()
+ // parentNode is the actual DocumentationNode of this class's supertype
+ // It is necessary to create documentation links back to the superclass from inherited methods
+ val parentNode = refGraph.lookup(superType.typeSignature())
+ if (superClass != null && parentNode != null) {
link(superClass, node, RefKind.Inheritor)
+ // Explicitly add the methods of the superclass (which are not overridden) as nodes to this class
+ val overriddenMethods = methods.toList().flatMap { it.findSuperMethods().toList() }
+ val inheritedMethods = superClass.methods.filter { it !in overriddenMethods }.toTypedArray()
+
+ node.appendChildren(inheritedMethods, RefKind.InheritedMember) {
+ val child = build()
+ child.addReferenceTo(parentNode, RefKind.Owner)
+ return@appendChildren child
+ }
}
}
+
var methodsAndConstructors = methods
if (constructors.isEmpty()) {
diff --git a/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt b/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt
index adb8fa4be..0b5e74339 100644
--- a/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt
+++ b/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt
@@ -265,12 +265,11 @@ class DocumentationBuilder
node.append(targetNode, RefKind.ExternalType)
node.append(DocumentationNode(externalLink, Content.Empty, NodeKind.ExternalLink), RefKind.Link)
}
- } else {
- link(
- node, classifierDescriptor,
- if (classifierDescriptor.isBoringBuiltinClass()) RefKind.HiddenLink else RefKind.Link
- )
}
+ link(
+ node, classifierDescriptor,
+ if (classifierDescriptor.isBoringBuiltinClass()) RefKind.HiddenLink else RefKind.Link
+ )
if (classifierDescriptor !is TypeParameterDescriptor) {
node.append(
DocumentationNode(
diff --git a/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html b/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html
index a66d0bf6c..65e2addb0 100644
--- a/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html
+++ b/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html
@@ -60,6 +60,35 @@
</tr>
</tbody>
</table>
+ <table class="responsive" id="inhmethods">
+ <tbody>
+ <tr>
+ <th colSpan="2">
+ <devsite-heading ds-is="heading" text="Inherited functions" id="inherited-functions" level="h3" toc="" class="">
+ <h3 is-upgraded="">Inherited functions</h3>
+ </devsite-heading>
+ </th>
+ </tr>
+ <tr class="api apilevel-">
+ <td colSpan="2">
+ <div class="expandable jd-inherited-apis"><span class="expand-control exw-expanded">From class <code><a href="Parent.html#">Parent</a></code></span>
+ <table class="responsive exw-expanded-content">
+ <tbody>
+ <tr class="api apilevel-" data-version-added="ApiLevel:">
+ <td><code><span class="identifier">void</span></code></td>
+ <td width="100%"><code><a href="Parent.html#foo()">foo</a>()</code>
+ <p>
+ <p>Do a superclass foo</p>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
<h2>Public constructors</h2>
<a name="Child()"></a>
<div class="api apilevel-" data-version-added="">
diff --git a/gradle.properties b/gradle.properties
index 1152e80e8..4c10991b5 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
-dokka_version=0.9.17-g007
+dokka_version=0.9.17-g009
dokka_publication_channel=dokka
#Kotlin compiler and plugin
diff --git a/runners/cli/src/main/kotlin/cli/main.kt b/runners/cli/src/main/kotlin/cli/main.kt
index e7fb76f01..37be6e289 100644
--- a/runners/cli/src/main/kotlin/cli/main.kt
+++ b/runners/cli/src/main/kotlin/cli/main.kt
@@ -72,12 +72,22 @@ class DokkaArguments {
@set:Argument(value = "collectInheritedExtensionsFromLibraries", description = "Search for applicable extensions in libraries")
var collectInheritedExtensionsFromLibraries: Boolean = false
- @set:Argument(value = "generateClassIndexPage", description = "Generate classes.html index page.")
+ @set:Argument(value = "generateClassIndexPage", description = "Generate classes.html index page. [Deprecated]: use noGenerateClassIndexPage instead.")
+ @Deprecated("There is no way to set this to false.", replaceWith = ReplaceWith(
+ expression ="noGenerateClassIndexPage"))
var generateClassIndexPage: Boolean = true
- @set:Argument(value = "generatePackageIndexPage", description = "Generate packages.html index page.")
+ @set:Argument(value = "generatePackageIndexPage", description = "Generate packages.html index page. [Deprecated]: use noGeneratePackageIndexPage instead.")
+ @Deprecated("There is no way to set this to false.", replaceWith = ReplaceWith(
+ expression ="noGeneratePackageIndexPage"))
var generatePackageIndexPage: Boolean = true
+ @set:Argument(value = "noGenerateClassIndexPage", description = "Disable classes.html index page.")
+ var noGenerateClassIndexPage: Boolean = false
+
+ @set:Argument(value = "noGeneratePackageIndexPage", description = "Disable packages.html index page.")
+ var noGeneratePackageIndexPage: Boolean = false
+
@set:Argument(value = "outlineRoot", description = "Relative root directory the outline files. I.e. androidx/core/")
var outlineRoot: String = ""
@@ -142,8 +152,8 @@ object MainKt {
languageVersion = arguments.languageVersion,
apiVersion = arguments.apiVersion,
collectInheritedExtensionsFromLibraries = arguments.collectInheritedExtensionsFromLibraries,
- generateClassIndexPage = arguments.generateClassIndexPage,
- generatePackageIndexPage = arguments.generatePackageIndexPage,
+ generateClassIndexPage = !arguments.noGenerateClassIndexPage,
+ generatePackageIndexPage = !arguments.noGeneratePackageIndexPage,
outlineRoot = arguments.outlineRoot,
dacRoot = arguments.dacRoot,
noJdkLink = arguments.noJdkLink
diff --git a/runners/gradle-plugin/build.gradle b/runners/gradle-plugin/build.gradle
index a0670803c..4742dda5d 100644
--- a/runners/gradle-plugin/build.gradle
+++ b/runners/gradle-plugin/build.gradle
@@ -63,6 +63,27 @@ publishing {
}
project.shadow.component(publication)
+ publication.pom { pom ->
+ // Add dokka-fatjar as a runtime dependency.
+ // This is a workaround until the Shadow jar can put project dependencies into the .pom: https://github.com/johnrengelman/shadow/commit/da82b37522b349aff414f571d2037682acd84f27
+ pom.withXml { xml ->
+ def node = xml.asNode()
+ def deps = null
+ node.children().each { child ->
+ if (child.name().toString() == "dependencies") {
+ deps = child
+ }
+ }
+ if (deps == null) {
+ deps = node.appendNode("dependencies")
+ }
+ def dep = deps.appendNode("dependency")
+ dep.appendNode("groupId", "org.jetbrains.dokka")
+ dep.appendNode("artifactId", "dokka-fatjar")
+ dep.appendNode("version", dokka_version)
+ dep.appendNode("scope", "runtime")
+ }
+ }
}
}
}