diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-05-20 02:05:30 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-05-20 02:05:30 +0000 |
commit | af0beecfae64434e4b3eaad51d0c5b072823403f (patch) | |
tree | c117e03be6ae505bed995e54f7989cf587b5672e | |
parent | e299432950d02cfc2d5e17bf91fdd129c9162495 (diff) | |
parent | 1ad092d0cb6416dd09351f1a401be808675e1087 (diff) | |
download | dokka-af0beecfae64434e4b3eaad51d0c5b072823403f.tar.gz |
Snap for 6511351 from 1ad092d0cb6416dd09351f1a401be808675e1087 to rvc-d1-release
Change-Id: If2101ac568a7566005e7d57ba8a61bf0399b9882
-rw-r--r-- | busytown.gradle | 1 | ||||
-rw-r--r-- | core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt | 6 | ||||
-rw-r--r-- | core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt | 1 | ||||
-rw-r--r-- | core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt | 21 | ||||
-rw-r--r-- | core/src/main/kotlin/Kotlin/DocumentationBuilder.kt | 9 | ||||
-rw-r--r-- | core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html | 29 | ||||
-rw-r--r-- | gradle.properties | 2 | ||||
-rw-r--r-- | runners/cli/src/main/kotlin/cli/main.kt | 18 | ||||
-rw-r--r-- | runners/gradle-plugin/build.gradle | 21 |
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") + } + } } } } |