diff options
author | Aurimas Liutikas <aurimas@google.com> | 2020-01-29 11:52:22 -0800 |
---|---|---|
committer | Aurimas Liutikas <aurimas@google.com> | 2020-01-29 15:17:28 -0800 |
commit | adf8cd7d913a55cd2b080967e3a6dee7168b1736 (patch) | |
tree | 894976de1ee282275e25a4177fa81995c3773446 /core | |
parent | 5291d504c5d5192df860c62564b5f5c1ce741cb6 (diff) | |
download | dokka-adf8cd7d913a55cd2b080967e3a6dee7168b1736.tar.gz |
Start showing visibility modifiers in full method details.
This matches how doclava and koltin html output handles it.
The logic closely matches KotlinLanguageService#renderFunction
Bug: 146661040
Test: Modified test data for DacAsJavaFormatTest to match
the new expectation of having new visibility modifiers in
the method description.
Alsod added a new test to test all method visibilities
Change-Id: Ie2e15fa9f915f20b2b1ff9b72b2e1e55f60d2f17
Diffstat (limited to 'core')
7 files changed, 133 insertions, 7 deletions
diff --git a/core/src/main/kotlin/Languages/NewJavaLanguageService.kt b/core/src/main/kotlin/Languages/NewJavaLanguageService.kt index 793706a89..10715d0da 100644 --- a/core/src/main/kotlin/Languages/NewJavaLanguageService.kt +++ b/core/src/main/kotlin/Languages/NewJavaLanguageService.kt @@ -8,7 +8,7 @@ import org.jetbrains.dokka.LanguageService.RenderMode */ class NewJavaLanguageService : CommonLanguageService() { override fun showModifierInSummary(node: DocumentationNode): Boolean { - return true + return node.name !in fullOnlyModifiers } private val fullOnlyModifiers = setOf("public", "protected", "private") @@ -25,7 +25,7 @@ class NewJavaLanguageService : CommonLanguageService() { NodeKind.UpperBound -> renderType(node) NodeKind.Parameter -> renderParameter(node) NodeKind.Constructor, - NodeKind.Function -> renderFunction(node) + NodeKind.Function -> renderFunction(node, renderMode) NodeKind.Property -> renderProperty(node) NodeKind.Field -> renderField(node, renderMode) NodeKind.EnumItem -> renderClass(node, renderMode) @@ -191,7 +191,11 @@ class NewJavaLanguageService : CommonLanguageService() { } } - private fun ContentBlock.renderFunction(node: DocumentationNode) { + private fun ContentBlock.renderFunction( + node: DocumentationNode, + renderMode: RenderMode + ) { + renderModifiersForNode(node, renderMode) when (node.kind) { NodeKind.Constructor -> identifier(node.owner?.name ?: "") NodeKind.Function -> { diff --git a/core/src/test/kotlin/format/DacAsJavaFormatTest.kt b/core/src/test/kotlin/format/DacAsJavaFormatTest.kt index e47240fda..7c625c9b2 100644 --- a/core/src/test/kotlin/format/DacAsJavaFormatTest.kt +++ b/core/src/test/kotlin/format/DacAsJavaFormatTest.kt @@ -31,4 +31,8 @@ class DacAsJavaFormatTest: DacFormatTestCase() { @Test fun javaDefaultConstructor() { verifyJavaHtmlNode("javaDefaultConstructor") } + + @Test fun javaMethodVisibilities() { + verifyJavaHtmlNode("javaMethodVisibilities") + } }
\ No newline at end of file diff --git a/core/testdata/format/dac-as-java/javaConstructor.html b/core/testdata/format/dac-as-java/javaConstructor.html index a28232bf7..5717ecf6b 100644 --- a/core/testdata/format/dac-as-java/javaConstructor.html +++ b/core/testdata/format/dac-as-java/javaConstructor.html @@ -35,7 +35,7 @@ <a name="Foo()"></a> <div class="api apilevel-" data-version-added=""> <h3 class="api-name">Foo</h3> - <pre class="api-signature no-pretty-print"><span class="identifier">Foo</span><span class="symbol">(</span><span class="symbol">)</span></pre> + <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="identifier">Foo</span><span class="symbol">(</span><span class="symbol">)</span></pre> </div> </body> </html> diff --git a/core/testdata/format/dac-as-java/javaDefaultConstructor.html b/core/testdata/format/dac-as-java/javaDefaultConstructor.html index a28232bf7..5717ecf6b 100644 --- a/core/testdata/format/dac-as-java/javaDefaultConstructor.html +++ b/core/testdata/format/dac-as-java/javaDefaultConstructor.html @@ -35,7 +35,7 @@ <a name="Foo()"></a> <div class="api apilevel-" data-version-added=""> <h3 class="api-name">Foo</h3> - <pre class="api-signature no-pretty-print"><span class="identifier">Foo</span><span class="symbol">(</span><span class="symbol">)</span></pre> + <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="identifier">Foo</span><span class="symbol">(</span><span class="symbol">)</span></pre> </div> </body> </html> diff --git a/core/testdata/format/dac-as-java/javaMethodVisibilities.html b/core/testdata/format/dac-as-java/javaMethodVisibilities.html new file mode 100644 index 000000000..7f494c467 --- /dev/null +++ b/core/testdata/format/dac-as-java/javaMethodVisibilities.html @@ -0,0 +1,113 @@ +<html devsite="true"> + <head> + <title>Foo</title> +{% setvar book_path %}/_book.yaml{% endsetvar %} +{% include "_shared/_reference-head-tags.html" %} + </head> + <body> + <div id="api-info-block"></div> + <h1>Foo</h1> + <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">java.lang.Object</span></pre> + <table class="jd-inheritance-table"> + <tr> + <td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Foo</a></td> + </tr> + </table> + <h2>Summary</h2> + <table class="responsive" id="pubctors"> + <tbody> + <tr> + <th colSpan="2"> + <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class=""> + <h3 is-upgraded="">Public constructors</h3> + </devsite-heading> + </th> + </tr> + <tr> + <td> + <div><code><a href="#Foo()">Foo</a>()</code></div> + <p></p> + </td> + </tr> + </tbody> + </table> + <table class="responsive" id="pubmethods"> + <tbody> + <tr> + <th colSpan="2"> + <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class=""> + <h3 is-upgraded="">Public methods</h3> + </devsite-heading> + </th> + </tr> + <tr> + <td><span class="identifier">void</span></td> + <td> + <div><code><a href="#publicBar()">publicBar</a>()</code></div> + <p></p> + </td> + </tr> + </tbody> + </table> + <table class="responsive" id="promethods"> + <tbody> + <tr> + <th colSpan="2"> + <devsite-heading ds-is="heading" text="Protected methods" id="promethods" level="h3" toc="" class=""> + <h3 is-upgraded="">Protected methods</h3> + </devsite-heading> + </th> + </tr> + <tr> + <td><span class="identifier">void</span></td> + <td> + <div><code><a href="#protectedBar()">protectedBar</a>()</code></div> + <p></p> + </td> + </tr> + </tbody> + </table> + <table class="responsive" id="primethods"> + <tbody> + <tr> + <th colSpan="2"> + <devsite-heading ds-is="heading" text="Private methods" id="primethods" level="h3" toc="" class=""> + <h3 is-upgraded="">Private methods</h3> + </devsite-heading> + </th> + </tr> + <tr> + <td><span class="identifier">void</span></td> + <td> + <div><code><a href="#privateBar()">privateBar</a>()</code></div> + <p></p> + </td> + </tr> + </tbody> + </table> + <h2>Public constructors</h2> +<a name="Foo()"></a> + <div class="api apilevel-" data-version-added=""> + <h3 class="api-name">Foo</h3> + <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="identifier">Foo</span><span class="symbol">(</span><span class="symbol">)</span></pre> + </div> + <h2>Public methods</h2> +<a name="publicBar()"></a> + <div class="api apilevel-" data-version-added=""> + <h3 class="api-name">publicBar</h3> + <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="identifier">void</span> <span class="identifier">publicBar</span><span class="symbol">(</span><span class="symbol">)</span></pre> + </div> + <h2>Protected methods</h2> +<a name="protectedBar()"></a> + <div class="api apilevel-" data-version-added=""> + <h3 class="api-name">protectedBar</h3> + <pre class="api-signature no-pretty-print"><span class="keyword">protected</span> <span class="identifier">void</span> <span class="identifier">protectedBar</span><span class="symbol">(</span><span class="symbol">)</span></pre> + </div> + <h2>Private methods</h2> +<a name="privateBar()"></a> + <div class="api apilevel-" data-version-added=""> + <h3 class="api-name">privateBar</h3> + <pre class="api-signature no-pretty-print"><span class="keyword">private</span> <span class="identifier">void</span> <span class="identifier">privateBar</span><span class="symbol">(</span><span class="symbol">)</span></pre> + </div> + </body> +</html> diff --git a/core/testdata/format/dac-as-java/javaMethodVisibilities.java b/core/testdata/format/dac-as-java/javaMethodVisibilities.java new file mode 100644 index 000000000..936632df9 --- /dev/null +++ b/core/testdata/format/dac-as-java/javaMethodVisibilities.java @@ -0,0 +1,5 @@ +public class Foo { + public void publicBar() {} + protected void protectedBar() {} + private void privateBar() {} +}
\ No newline at end of file diff --git a/core/testdata/format/dac-as-java/javaSeeTag.html b/core/testdata/format/dac-as-java/javaSeeTag.html index 44ac16841..6a6b5045c 100644 --- a/core/testdata/format/dac-as-java/javaSeeTag.html +++ b/core/testdata/format/dac-as-java/javaSeeTag.html @@ -53,13 +53,13 @@ <a name="Foo()"></a> <div class="api apilevel-" data-version-added=""> <h3 class="api-name">Foo</h3> - <pre class="api-signature no-pretty-print"><span class="identifier">Foo</span><span class="symbol">(</span><span class="symbol">)</span></pre> + <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="identifier">Foo</span><span class="symbol">(</span><span class="symbol">)</span></pre> </div> <h2>Public methods</h2> <a name="bar()"></a> <div class="api apilevel-" data-version-added=""> <h3 class="api-name">bar</h3> - <pre class="api-signature no-pretty-print"><span class="identifier">void</span> <span class="identifier">bar</span><span class="symbol">(</span><span class="symbol">)</span></pre> + <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="identifier">void</span> <span class="identifier">bar</span><span class="symbol">(</span><span class="symbol">)</span></pre> </div> </body> </html> |