J2K: preserving line breaks between arguments
This commit is contained in:
@@ -479,21 +479,27 @@ class DefaultExpressionConverter : JavaElementVisitor(), ExpressionConverter {
|
||||
if (isExtension && arguments.isNotEmpty()) {
|
||||
arguments = arguments.drop(1)
|
||||
}
|
||||
|
||||
val resolved = expression.resolveMethod()
|
||||
val parameters = resolved?.getParameterList()?.getParameters()
|
||||
val expectedTypes = parameters?.map { it.getType() } ?: listOf()
|
||||
|
||||
return if (arguments.size() == expectedTypes.size())
|
||||
(0..arguments.lastIndex).map { i ->
|
||||
val commentsAndSpacesInheritance = CommentsAndSpacesInheritance(spacesBefore = SpacesInheritance.LINE_BREAKS)
|
||||
|
||||
return if (arguments.size() == expectedTypes.size()) {
|
||||
arguments.indices.map { i ->
|
||||
val argument = arguments[i]
|
||||
val converted = codeConverter.convertExpression(argument, expectedTypes[i])
|
||||
if (parameters != null && i == arguments.lastIndex && parameters[i].isVarArgs() && argument.getType() is PsiArrayType)
|
||||
StarExpression(converted).assignNoPrototype()
|
||||
val result = if (parameters != null && i == arguments.lastIndex && parameters[i].isVarArgs() && argument.getType() is PsiArrayType)
|
||||
StarExpression(converted)
|
||||
else
|
||||
converted
|
||||
result.assignPrototype(argument, commentsAndSpacesInheritance)
|
||||
}
|
||||
else
|
||||
arguments.map { codeConverter.convertExpression(it) }
|
||||
}
|
||||
else {
|
||||
arguments.map { codeConverter.convertExpression(it).assignPrototype(it, commentsAndSpacesInheritance) }
|
||||
}
|
||||
}
|
||||
|
||||
private fun getOperatorString(tokenType: IElementType): String {
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
class F {
|
||||
void f1(int p1, int p2, int p3, int p4, int... p5) {
|
||||
}
|
||||
|
||||
void f2(int[] array) {
|
||||
f1(1, 2,
|
||||
3, 4,
|
||||
array);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
class F {
|
||||
fun f1(p1: Int, p2: Int, p3: Int, p4: Int, vararg p5: Int) {
|
||||
}
|
||||
|
||||
fun f2(array: IntArray) {
|
||||
f1(1, 2,
|
||||
3, 4,
|
||||
*array)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
class C {
|
||||
C(int p1, int p2, int p3){}
|
||||
}
|
||||
|
||||
class User {
|
||||
void foo() {
|
||||
new C(1,
|
||||
2,
|
||||
3);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
class C(p1: Int, p2: Int, p3: Int)
|
||||
|
||||
class User {
|
||||
fun foo() {
|
||||
C(1,
|
||||
2,
|
||||
3)
|
||||
}
|
||||
}
|
||||
@@ -2155,6 +2155,12 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/testData/fileOrElement/formatting"), Pattern.compile("^(.+)\\.java$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("lineBreaksBetweenArguments.java")
|
||||
public void testLineBreaksBetweenArguments() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/formatting/lineBreaksBetweenArguments.java");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("nonStaticMembers.java")
|
||||
public void testNonStaticMembers() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/formatting/nonStaticMembers.java");
|
||||
@@ -3223,6 +3229,12 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("lineBreaks.java")
|
||||
public void testLineBreaks() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/newClassExpression/lineBreaks.java");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("newAnonymousClass.java")
|
||||
public void testNewAnonymousClass() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/newClassExpression/newAnonymousClass.java");
|
||||
|
||||
@@ -2155,6 +2155,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/testData/fileOrElement/formatting"), Pattern.compile("^(.+)\\.java$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("lineBreaksBetweenArguments.java")
|
||||
public void testLineBreaksBetweenArguments() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/formatting/lineBreaksBetweenArguments.java");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("nonStaticMembers.java")
|
||||
public void testNonStaticMembers() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/formatting/nonStaticMembers.java");
|
||||
@@ -3223,6 +3229,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("lineBreaks.java")
|
||||
public void testLineBreaks() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/newClassExpression/lineBreaks.java");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("newAnonymousClass.java")
|
||||
public void testNewAnonymousClass() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/newClassExpression/newAnonymousClass.java");
|
||||
|
||||
Reference in New Issue
Block a user