diff --git a/j2k/src/org/jetbrains/kotlin/j2k/ConstructorConverter.kt b/j2k/src/org/jetbrains/kotlin/j2k/ConstructorConverter.kt index 09c6f85f92e..e71df65d718 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/ConstructorConverter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/ConstructorConverter.kt @@ -214,7 +214,11 @@ class ConstructorConverter( if (isVal(converter.referenceSearcher, field)) Parameter.VarValModifier.Val else Parameter.VarValModifier.Var, converter.convertAnnotations(parameter) + converter.convertAnnotations(field), accessModifiers, - default).assignPrototypes(listOf(parameter, field), CommentsAndSpacesInheritance(spacesBefore = SpacesInheritance.NONE)) + default) + .assignPrototypes( + PrototypeInfo(parameter, CommentsAndSpacesInheritance(spacesBefore = SpacesInheritance.LINE_BREAKS)), + PrototypeInfo(field, CommentsAndSpacesInheritance(spacesBefore = SpacesInheritance.NONE)) + ) } }, correctCodeConverter = { correct() }) diff --git a/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt b/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt index afd00265d4a..ebee5e0a566 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt @@ -545,7 +545,7 @@ class Converter private constructor( Nullability.Nullable -> type = type.toNullableType() } return Parameter(parameter.declarationIdentifier(), type, varValModifier, - convertAnnotations(parameter), modifiers, defaultValue).assignPrototype(parameter) + convertAnnotations(parameter), modifiers, defaultValue).assignPrototype(parameter, CommentsAndSpacesInheritance(spacesBefore = SpacesInheritance.LINE_BREAKS)) } public fun convertIdentifier(identifier: PsiIdentifier?): Identifier { diff --git a/j2k/src/org/jetbrains/kotlin/j2k/ast/Element.kt b/j2k/src/org/jetbrains/kotlin/j2k/ast/Element.kt index 5a976644444..bda0d3eb029 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/ast/Element.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/ast/Element.kt @@ -24,8 +24,8 @@ fun TElement.assignPrototype(prototype: PsiElement?, inherit return this } -fun TElement.assignPrototypes(prototypes: List, inheritance: CommentsAndSpacesInheritance): TElement { - this.prototypes = prototypes.map { PrototypeInfo(it, inheritance) } +fun TElement.assignPrototypes(vararg prototypes: PrototypeInfo): TElement { + this.prototypes = prototypes.asList() return this } diff --git a/j2k/testData/fileOrElement/constructors/lineBreaksBetweenParameters.java b/j2k/testData/fileOrElement/constructors/lineBreaksBetweenParameters.java new file mode 100644 index 00000000000..dcdc479bd2a --- /dev/null +++ b/j2k/testData/fileOrElement/constructors/lineBreaksBetweenParameters.java @@ -0,0 +1,23 @@ +class C1 { + C1(int arg1, + int arg2, + int arg3) { + } + + C1(int x, + int y) { + this(x, x + y, 0); + } +} + +class C2 { + private int arg1; + private int arg2; + + C2(int arg1, + int arg2, + int arg3) { + this.arg1 = arg1; + this.arg2 = arg2; + } +} diff --git a/j2k/testData/fileOrElement/constructors/lineBreaksBetweenParameters.kt b/j2k/testData/fileOrElement/constructors/lineBreaksBetweenParameters.kt new file mode 100644 index 00000000000..76d12031d20 --- /dev/null +++ b/j2k/testData/fileOrElement/constructors/lineBreaksBetweenParameters.kt @@ -0,0 +1,12 @@ +class C1(arg1: Int, + arg2: Int, + arg3: Int) { + + constructor(x: Int, + y: Int) : this(x, x + y, 0) { + } +} + +class C2(private val arg1: Int, + private val arg2: Int, + arg3: Int) diff --git a/j2k/testData/fileOrElement/function/lineBreaksBetweenParameters.java b/j2k/testData/fileOrElement/function/lineBreaksBetweenParameters.java new file mode 100644 index 00000000000..57e90347270 --- /dev/null +++ b/j2k/testData/fileOrElement/function/lineBreaksBetweenParameters.java @@ -0,0 +1,19 @@ +class C { + public void foo1(int p1, int p2) { + } + + public void foo2( + int p1, + int p2) { + } + + public void foo3(int p1, + int p2) { + } + + public void foo4( + int p1, int p2, + int p3, int p4 + ) { + } +} \ No newline at end of file diff --git a/j2k/testData/fileOrElement/function/lineBreaksBetweenParameters.kt b/j2k/testData/fileOrElement/function/lineBreaksBetweenParameters.kt new file mode 100644 index 00000000000..959616fa353 --- /dev/null +++ b/j2k/testData/fileOrElement/function/lineBreaksBetweenParameters.kt @@ -0,0 +1,18 @@ +class C { + public fun foo1(p1: Int, p2: Int) { + } + + public fun foo2( + p1: Int, + p2: Int) { + } + + public fun foo3(p1: Int, + p2: Int) { + } + + public fun foo4( + p1: Int, p2: Int, + p3: Int, p4: Int) { + } +} diff --git a/j2k/testData/fileOrElement/mutableCollections/FunctionParameters.kt b/j2k/testData/fileOrElement/mutableCollections/FunctionParameters.kt index d6f0a1f5546..0d7419538a0 100644 --- a/j2k/testData/fileOrElement/mutableCollections/FunctionParameters.kt +++ b/j2k/testData/fileOrElement/mutableCollections/FunctionParameters.kt @@ -2,7 +2,10 @@ import java.util.* class A { - fun foo(nonMutableCollection: Collection, mutableCollection: MutableCollection, mutableSet: MutableSet, mutableMap: MutableMap) { + fun foo(nonMutableCollection: Collection, + mutableCollection: MutableCollection, + mutableSet: MutableSet, + mutableMap: MutableMap) { mutableCollection.addAll(nonMutableCollection) mutableSet.add(mutableMap.remove("a")) } diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java index aaa0fa2214b..aab181c0227 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java @@ -1162,6 +1162,12 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("lineBreaksBetweenParameters.java") + public void testLineBreaksBetweenParameters() throws Exception { + String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/constructors/lineBreaksBetweenParameters.java"); + doTest(fileName); + } + @TestMetadata("methodCallInFactoryFun.java") public void testMethodCallInFactoryFun() throws Exception { String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/constructors/methodCallInFactoryFun.java"); @@ -2224,6 +2230,12 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("lineBreaksBetweenParameters.java") + public void testLineBreaksBetweenParameters() throws Exception { + String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/function/lineBreaksBetweenParameters.java"); + doTest(fileName); + } + @TestMetadata("main.java") public void testMain() throws Exception { String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/function/main.java"); diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java index 536b309d158..0f2bcfcf5e9 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java @@ -1162,6 +1162,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("lineBreaksBetweenParameters.java") + public void testLineBreaksBetweenParameters() throws Exception { + String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/constructors/lineBreaksBetweenParameters.java"); + doTest(fileName); + } + @TestMetadata("methodCallInFactoryFun.java") public void testMethodCallInFactoryFun() throws Exception { String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/constructors/methodCallInFactoryFun.java"); @@ -2224,6 +2230,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("lineBreaksBetweenParameters.java") + public void testLineBreaksBetweenParameters() throws Exception { + String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/function/lineBreaksBetweenParameters.java"); + doTest(fileName); + } + @TestMetadata("main.java") public void testMain() throws Exception { String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/function/main.java");