From ffcd1ee375388c6208b026bea68f26c67dd532d4 Mon Sep 17 00:00:00 2001 From: tripolkaandrey Date: Tue, 24 May 2022 13:06:16 +0300 Subject: [PATCH 1/3] Include access modifiers for Java functions --- .../src/main/kotlin/signatures/JavaSignatureProvider.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/kotlin-as-java/src/main/kotlin/signatures/JavaSignatureProvider.kt b/plugins/kotlin-as-java/src/main/kotlin/signatures/JavaSignatureProvider.kt index 1f5719eae3..2b56a2bf02 100644 --- a/plugins/kotlin-as-java/src/main/kotlin/signatures/JavaSignatureProvider.kt +++ b/plugins/kotlin-as-java/src/main/kotlin/signatures/JavaSignatureProvider.kt @@ -131,6 +131,7 @@ class JavaSignatureProvider internal constructor(ctcc: CommentsToContentConverte sourceSets = setOf(sourceSet) ) { annotationsBlock(f) + f.visibility[sourceSet]?.takeIf { it !in ignoredVisibilities }?.name?.let { keyword("$it ") } f.modifier[sourceSet]?.takeIf { it !in ignoredModifiers }?.name?.plus(" ")?.let { keyword(it) } f.modifiers()[sourceSet]?.toSignatureString()?.let { keyword(it) } val returnType = f.type From 89c51bcddb45725f3b863984293368b27493045b Mon Sep 17 00:00:00 2001 From: tripolkaandrey Date: Tue, 24 May 2022 13:09:30 +0300 Subject: [PATCH 2/3] Test that access modifiers are present --- .../src/test/kotlin/KotlinAsJavaPluginTest.kt | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaPluginTest.kt b/plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaPluginTest.kt index 635abf5ab0..debb69def2 100644 --- a/plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaPluginTest.kt +++ b/plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaPluginTest.kt @@ -583,6 +583,52 @@ class KotlinAsJavaPluginTest : BaseAbstractTest() { } } } + + @Test + fun `Java function should keep its access modifier`(){ + val className = "Test" + val accessModifier = "public" + val methodName = "method" + + val testClassQuery = """ + |/src/main/kotlin/kotlinAsJavaPlugin/${className}.java + |package kotlinAsJavaPlugin; + | + |public class $className { + | $accessModifier void ${methodName}() { + | + | } + |} + """.trimMargin() + + val configuration = dokkaConfiguration { + sourceSets { + sourceSet { + sourceRoots = listOf("src/") + } + } + } + + val writerPlugin = TestOutputWriterPlugin() + + testInline( + testClassQuery, + configuration, + pluginOverrides = listOf(writerPlugin), + cleanupOutput = true + ) { + renderingStage = { _, _ -> + val methodDocumentation = "root/kotlinAsJavaPlugin/-${className.toLowerCase()}/${methodName}.html" + + writerPlugin.writer.renderedContent(methodDocumentation) + .firstSignature() + .match( + "$accessModifier void ", A(methodName), "()", Span(), + ignoreSpanWithTokenStyle = true + ) + } + } + } } private val ContentNode.mainContents: List From 347f2c4821a30045e8888d06e8423d009c12f3fa Mon Sep 17 00:00:00 2001 From: tripolkaandrey Date: Tue, 24 May 2022 13:18:03 +0300 Subject: [PATCH 3/3] Modify existing tests due to including access modifier in output --- .../src/test/kotlin/KotlinAsJavaPluginTest.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaPluginTest.kt b/plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaPluginTest.kt index debb69def2..b77dc23c13 100644 --- a/plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaPluginTest.kt +++ b/plugins/kotlin-as-java/src/test/kotlin/KotlinAsJavaPluginTest.kt @@ -176,7 +176,7 @@ class KotlinAsJavaPluginTest : BaseAbstractTest() { divergentInstance { divergent { group { - +"final " + +"public final " group { link { +"String" @@ -331,7 +331,7 @@ class KotlinAsJavaPluginTest : BaseAbstractTest() { ) { renderingStage = { _, _ -> writerPlugin.writer.renderedContent("root/kotlinAsJavaPlugin/-a-b-c/some-fun.html").firstSignature().match( - "final ", A("Integer"), A("someFun"), "(", Parameters( + "public final ", A("Integer"), A("someFun"), "(", Parameters( Parameter(A("Integer"), "xd") ), ")", Span(), ignoreSpanWithTokenStyle = true ) @@ -370,7 +370,7 @@ class KotlinAsJavaPluginTest : BaseAbstractTest() { ) { renderingStage = { _, _ -> writerPlugin.writer.renderedContent("root/kotlinAsJavaPlugin/-a-b-c/some-fun.html").firstSignature().match( - "final ", A("Integer"), A("someFun"), "(", Parameters( + "public final ", A("Integer"), A("someFun"), "(", Parameters( Parameter(A("Map"), "<", A("String"), ", ", A("Integer"), "> xd"), ), ")", Span(), ignoreSpanWithTokenStyle = true ) @@ -436,7 +436,7 @@ class KotlinAsJavaPluginTest : BaseAbstractTest() { ) { renderingStage = { _, _ -> writerPlugin.writer.renderedContent("root/kotlinAsJavaPlugin/-test-kt/sample.html").firstSignature().match( - "final static ", A("String"), A("sample"), "(", Parameters( + "public final static ", A("String"), A("sample"), "(", Parameters( Parameter(A("Integer"), "a"), ), ")", Span(), ignoreSpanWithTokenStyle = true )