diff --git a/j2k/src/org/jetbrains/jet/j2k/Converter.kt b/j2k/src/org/jetbrains/jet/j2k/Converter.kt index d3256aabe5f..1589d1bcf8f 100644 --- a/j2k/src/org/jetbrains/jet/j2k/Converter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/Converter.kt @@ -159,10 +159,16 @@ 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, setOf(Modifier.PRIVATE), + val parameters = finalOrWithEmptyInitializerFields.map { field -> + val varValModifier = if (field.modifiers.contains(Modifier.FINAL)) Parameter.VarValModifier.Val else Parameter.VarValModifier.Var + Parameter(field.identifier, field.`type`, varValModifier, field.modifiers.filter { ACCESS_MODIFIERS.contains(it) }) + } + classBodyElements.add(PrimaryConstructor(this, + MemberComments.Empty, + setOf(Modifier.PRIVATE), ParameterList(parameters), - Block(createInitStatementsFromFields(finalOrWithEmptyInitializerFields)))) + Block.Empty)) + classBodyElements.removeAll(finalOrWithEmptyInitializerFields) } val baseClassParams: List = run { @@ -459,15 +465,6 @@ public class Converter(val project: Project, val settings: ConverterSettings) { return expression } - private fun createInitStatementsFromFields(fields: List): List { - val result = ArrayList() - for (field in fields) { - val kotlinIdentifier = field.identifier.toKotlin() - result.add(DummyStringExpression(kotlinIdentifier + " = " + "_" + kotlinIdentifier)) - } - return result - } - private fun createPrimaryConstructorInvocation(s: String, fields: List, initializers: Map): String { return s + "(" + fields.map { initializers[it.identifier.toKotlin()] }.makeString(", ") + ")" } diff --git a/j2k/tests/testData/ast/constructors/genericIdentifier.ide.kt b/j2k/tests/testData/ast/constructors/genericIdentifier.ide.kt index 6dd51cd9378..0bbd7ccfb40 100644 --- a/j2k/tests/testData/ast/constructors/genericIdentifier.ide.kt +++ b/j2k/tests/testData/ast/constructors/genericIdentifier.ide.kt @@ -1,17 +1,10 @@ -public class Identifier private(_myName: T, _myHasDollar: Boolean) { - private val myName: T - private var myHasDollar: Boolean = false +public class Identifier private(private val myName: T, private var myHasDollar: Boolean) { private var myNullable: Boolean = true public fun getName(): T { return myName } - { - myName = _myName - myHasDollar = _myHasDollar - } - class object { public fun init(name: T): Identifier { diff --git a/j2k/tests/testData/ast/constructors/genericIdentifier.kt b/j2k/tests/testData/ast/constructors/genericIdentifier.kt index 361806f4065..c344f30c54c 100644 --- a/j2k/tests/testData/ast/constructors/genericIdentifier.kt +++ b/j2k/tests/testData/ast/constructors/genericIdentifier.kt @@ -1,17 +1,10 @@ -public open class Identifier private(_myName: T?, _myHasDollar: Boolean) { - private val myName: T? - private var myHasDollar: Boolean = false +public open class Identifier private(private val myName: T?, private var myHasDollar: Boolean) { private var myNullable: Boolean = true public open fun getName(): T? { return myName } - { - myName = _myName - myHasDollar = _myHasDollar - } - class object { public open fun init(name: T?): Identifier { diff --git a/j2k/tests/testData/ast/constructors/identifier.ide.kt b/j2k/tests/testData/ast/constructors/identifier.ide.kt index 779ed2a1463..5e6c067fe8f 100644 --- a/j2k/tests/testData/ast/constructors/identifier.ide.kt +++ b/j2k/tests/testData/ast/constructors/identifier.ide.kt @@ -1,17 +1,10 @@ -public class Identifier private(_myName: String, _myHasDollar: Boolean) { - private val myName: String - private var myHasDollar: Boolean = false +public class Identifier private(private val myName: String, private var myHasDollar: Boolean) { private var myNullable: Boolean = true public fun getName(): String { return myName } - { - myName = _myName - myHasDollar = _myHasDollar - } - class object { public fun init(name: String): Identifier { diff --git a/j2k/tests/testData/ast/constructors/identifier.kt b/j2k/tests/testData/ast/constructors/identifier.kt index 48afec47e58..f675f5923c8 100644 --- a/j2k/tests/testData/ast/constructors/identifier.kt +++ b/j2k/tests/testData/ast/constructors/identifier.kt @@ -1,17 +1,10 @@ -public open class Identifier private(_myName: String?, _myHasDollar: Boolean) { - private val myName: String? - private var myHasDollar: Boolean = false +public open class Identifier private(private val myName: String?, private var myHasDollar: Boolean) { private var myNullable: Boolean = true public open fun getName(): String? { return myName } - { - myName = _myName - myHasDollar = _myHasDollar - } - class object { public open fun init(name: String?): Identifier { diff --git a/j2k/tests/testData/ast/constructors/withManyDefaultParams.ide.kt b/j2k/tests/testData/ast/constructors/withManyDefaultParams.ide.kt index 9a6eae2954f..9a651b687c1 100644 --- a/j2k/tests/testData/ast/constructors/withManyDefaultParams.ide.kt +++ b/j2k/tests/testData/ast/constructors/withManyDefaultParams.ide.kt @@ -1,24 +1,4 @@ -public class Test private(_myName: String, _a: Boolean, _b: Double, _c: Float, _d: Long, _e: Int, _f: Short, _g: Char) { - private val myName: String - private var a: Boolean = false - private var b: Double = 0.toDouble() - private var c: Float = 0.toFloat() - private var d: Long = 0 - private var e: Int = 0 - private var f: Short = 0 - private var g: Char = ' ' - - { - myName = _myName - a = _a - b = _b - c = _c - d = _d - e = _e - f = _f - g = _g - } - +public class Test private(private val myName: String, private var a: Boolean, private var b: Double, private var c: Float, private var d: Long, private var e: Int, private var f: Short, private var g: Char) { class object { public fun init(): Test { diff --git a/j2k/tests/testData/ast/constructors/withManyDefaultParams.kt b/j2k/tests/testData/ast/constructors/withManyDefaultParams.kt index 9ef98c15e53..7ffc9bc3e15 100644 --- a/j2k/tests/testData/ast/constructors/withManyDefaultParams.kt +++ b/j2k/tests/testData/ast/constructors/withManyDefaultParams.kt @@ -1,24 +1,4 @@ -public open class Test private(_myName: String?, _a: Boolean, _b: Double, _c: Float, _d: Long, _e: Int, _f: Short, _g: Char) { - private val myName: String? - private var a: Boolean = false - private var b: Double = 0.toDouble() - private var c: Float = 0.toFloat() - private var d: Long = 0 - private var e: Int = 0 - private var f: Short = 0 - private var g: Char = ' ' - - { - myName = _myName - a = _a - b = _b - c = _c - d = _d - e = _e - f = _f - g = _g - } - +public open class Test private(private val myName: String?, private var a: Boolean, private var b: Double, private var c: Float, private var d: Long, private var e: Int, private var f: Short, private var g: Char) { class object { public open fun init(): Test { diff --git a/j2k/tests/testData/ast/issues/kt-638.ide.kt b/j2k/tests/testData/ast/issues/kt-638.ide.kt index 89273b835c8..5e8777317de 100644 --- a/j2k/tests/testData/ast/issues/kt-638.ide.kt +++ b/j2k/tests/testData/ast/issues/kt-638.ide.kt @@ -1,17 +1,10 @@ -public class Identifier private(_myName: T, _myHasDollar: Boolean) { - private val myName: T - private var myHasDollar: Boolean = false +public class Identifier private(private val myName: T, private var myHasDollar: Boolean) { private var myNullable: Boolean = true public fun getName(): T { return myName } - { - myName = _myName - myHasDollar = _myHasDollar - } - class object { public fun init(name: T): Identifier { diff --git a/j2k/tests/testData/ast/issues/kt-638.kt b/j2k/tests/testData/ast/issues/kt-638.kt index e99cb9fd469..deb2ebc93d4 100644 --- a/j2k/tests/testData/ast/issues/kt-638.kt +++ b/j2k/tests/testData/ast/issues/kt-638.kt @@ -1,17 +1,10 @@ -public open class Identifier private(_myName: T?, _myHasDollar: Boolean) { - private val myName: T? - private var myHasDollar: Boolean = false +public open class Identifier private(private val myName: T?, private var myHasDollar: Boolean) { private var myNullable: Boolean = true public open fun getName(): T? { return myName } - { - myName = _myName - myHasDollar = _myHasDollar - } - class object { public open fun init(name: T?): Identifier {