Java to Kotlin conversion: keep constructor access modifier
This commit is contained in:
@@ -160,7 +160,7 @@ public class Converter(val project: Project, val settings: ConverterSettings) {
|
||||
|
||||
//TODO: comments?
|
||||
val parameters = finalOrWithEmptyInitializerFields.map { Parameter(Identifier("_" + it.identifier.name), it.`type`, Parameter.VarValModifier.None, listOf()) }
|
||||
classBodyElements.add(PrimaryConstructor(this, MemberComments.Empty, Collections.emptySet<Modifier>(),
|
||||
classBodyElements.add(PrimaryConstructor(this, MemberComments.Empty, setOf(),
|
||||
ParameterList(parameters),
|
||||
Block(createInitStatementsFromFields(finalOrWithEmptyInitializerFields))))
|
||||
}
|
||||
|
||||
@@ -47,10 +47,8 @@ open class Class(
|
||||
|
||||
protected val classMembers: ClassMembers = ClassMembers.fromBodyElements(bodyElements)
|
||||
|
||||
protected open fun primaryConstructorSignatureToKotlin(): String {
|
||||
val constructor = classMembers.primaryConstructor
|
||||
return if (constructor != null) constructor.signatureToKotlin() else "()"
|
||||
}
|
||||
protected open fun primaryConstructorSignatureToKotlin(): String
|
||||
= classMembers.primaryConstructor?.signatureToKotlin() ?: "()"
|
||||
|
||||
protected fun primaryConstructorBodyToKotlin(): String {
|
||||
val constructor = classMembers.primaryConstructor
|
||||
|
||||
@@ -35,7 +35,11 @@ class PrimaryConstructor(converter: Converter,
|
||||
block: Block)
|
||||
: Constructor(converter, comments, modifiers, parameterList, block) {
|
||||
|
||||
public fun signatureToKotlin(): String = "(" + parameterList.toKotlin() + ")"
|
||||
public fun signatureToKotlin(): String {
|
||||
val accessModifier = modifiers.accessModifier()
|
||||
val modifiersString = if (accessModifier != null && accessModifier != Modifier.PUBLIC) " " + accessModifier.toKotlin() else ""
|
||||
return modifiersString + "(" + parameterList.toKotlin() + ")"
|
||||
}
|
||||
|
||||
public fun bodyToKotlin(): String = block!!.toKotlin()
|
||||
}
|
||||
|
||||
@@ -31,23 +31,20 @@ class Enum(
|
||||
) : Class(converter, name, comments, modifiers, typeParameterList,
|
||||
extendsTypes, baseClassParams, implementsTypes, bodyElements) {
|
||||
|
||||
override fun primaryConstructorSignatureToKotlin(): String {
|
||||
val s: String = super.primaryConstructorSignatureToKotlin()
|
||||
return if (s.equals("()")) "" else s
|
||||
}
|
||||
override fun primaryConstructorSignatureToKotlin(): String
|
||||
= classMembers.primaryConstructor?.signatureToKotlin() ?: ""
|
||||
|
||||
override fun isDefinitelyFinal() = true
|
||||
|
||||
override fun toKotlin(): String {
|
||||
val primaryConstructorBody = primaryConstructorBodyToKotlin() ?: ""
|
||||
return modifiersToKotlin() +
|
||||
"enum class " + name.toKotlin() +
|
||||
primaryConstructorSignatureToKotlin() +
|
||||
typeParameterList.toKotlin() +
|
||||
implementTypesToKotlin() +
|
||||
" {" +
|
||||
classMembers.allMembers.toKotlin() +
|
||||
( if (primaryConstructorBody.isEmpty()) "" else primaryConstructorBody) +
|
||||
"}"
|
||||
"enum class " + name.toKotlin() +
|
||||
primaryConstructorSignatureToKotlin() +
|
||||
typeParameterList.toKotlin() +
|
||||
implementTypesToKotlin() +
|
||||
" {" +
|
||||
classMembers.allMembers.toKotlin() +
|
||||
primaryConstructorBodyToKotlin() +
|
||||
"}"
|
||||
}
|
||||
}
|
||||
@@ -765,6 +765,11 @@ public class JavaToKotlinConverterBasicTestGenerated extends AbstractJavaToKotli
|
||||
doTest("j2k/tests/testData/ast/constructors/identifier.java");
|
||||
}
|
||||
|
||||
@TestMetadata("privateConstructors.java")
|
||||
public void testPrivateConstructors() throws Exception {
|
||||
doTest("j2k/tests/testData/ast/constructors/privateConstructors.java");
|
||||
}
|
||||
|
||||
@TestMetadata("withManyDefaultParams.java")
|
||||
public void testWithManyDefaultParams() throws Exception {
|
||||
doTest("j2k/tests/testData/ast/constructors/withManyDefaultParams.java");
|
||||
|
||||
+5
@@ -765,6 +765,11 @@ public class JavaToKotlinConverterPluginTestGenerated extends AbstractJavaToKotl
|
||||
doTest("j2k/tests/testData/ast/constructors/identifier.java");
|
||||
}
|
||||
|
||||
@TestMetadata("privateConstructors.java")
|
||||
public void testPrivateConstructors() throws Exception {
|
||||
doTest("j2k/tests/testData/ast/constructors/privateConstructors.java");
|
||||
}
|
||||
|
||||
@TestMetadata("withManyDefaultParams.java")
|
||||
public void testWithManyDefaultParams() throws Exception {
|
||||
doTest("j2k/tests/testData/ast/constructors/withManyDefaultParams.java");
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
class C private(arg1: Int, arg2: Int, arg3: Int) {
|
||||
class object {
|
||||
|
||||
private fun init(arg1: Int, arg2: Int): C {
|
||||
val __ = C(arg1, arg2, 0)
|
||||
return __
|
||||
}
|
||||
|
||||
public fun init(arg1: Int): C {
|
||||
val __ = C(arg1, 0, 0)
|
||||
return __
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
//file
|
||||
class C {
|
||||
private C(int arg1, int arg2, int arg3) {
|
||||
}
|
||||
|
||||
private C(int arg1, int arg2) {
|
||||
this(arg1, arg2, 0);
|
||||
}
|
||||
|
||||
public C(int arg1) {
|
||||
this(arg1, 0, 0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
open class C private(arg1: Int, arg2: Int, arg3: Int) {
|
||||
class object {
|
||||
|
||||
private fun init(arg1: Int, arg2: Int): C {
|
||||
val __ = C(arg1, arg2, 0)
|
||||
return __
|
||||
}
|
||||
|
||||
public open fun init(arg1: Int): C {
|
||||
val __ = C(arg1, 0, 0)
|
||||
return __
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package demo
|
||||
|
||||
enum class MyEnum(private val color: Int) {
|
||||
enum class MyEnum private(private val color: Int) {
|
||||
RED : MyEnum(10)
|
||||
BLUE : MyEnum(20)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package demo
|
||||
|
||||
enum class MyEnum(private val color: Int) {
|
||||
enum class MyEnum private(private val color: Int) {
|
||||
RED : MyEnum(10)
|
||||
BLUE : MyEnum(20)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
enum class Color(private var code: Int) {
|
||||
enum class Color private(private var code: Int) {
|
||||
WHITE : Color(21)
|
||||
BLACK : Color(22)
|
||||
RED : Color(23)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
enum class Color(private var code: Int) {
|
||||
enum class Color private(private var code: Int) {
|
||||
WHITE : Color(21)
|
||||
BLACK : Color(22)
|
||||
RED : Color(23)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package demo
|
||||
|
||||
enum class Color(private var code: Int) {
|
||||
enum class Color private(private var code: Int) {
|
||||
|
||||
public fun getCode(): Int {
|
||||
return code
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package demo
|
||||
|
||||
enum class Color(private var code: Int) {
|
||||
enum class Color private(private var code: Int) {
|
||||
|
||||
public fun getCode(): Int {
|
||||
return code
|
||||
|
||||
Reference in New Issue
Block a user