New J2K: handle spaces in array dimensions declaration
#KT-36891 fixed
This commit is contained in:
@@ -46,9 +46,7 @@ import org.jetbrains.kotlin.nj2k.tree.*
|
||||
import org.jetbrains.kotlin.nj2k.tree.JKLiteralExpression.LiteralType.*
|
||||
import org.jetbrains.kotlin.nj2k.types.*
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isExtensionDeclaration
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
@@ -492,21 +490,21 @@ class JavaToJKTreeBuilder constructor(
|
||||
val newExpression =
|
||||
if (findChildByRole(ChildRole.LBRACKET) != null) {
|
||||
arrayInitializer?.toJK() ?: run {
|
||||
val dimensions = mutableListOf<PsiExpression?>()
|
||||
val dimensions = mutableListOf<JKExpression>()
|
||||
var child = firstChild
|
||||
while (child != null) {
|
||||
if (child.node.elementType == JavaTokenType.LBRACKET) {
|
||||
child = child.nextSibling
|
||||
dimensions += if (child.node.elementType == JavaTokenType.RBRACKET) {
|
||||
null
|
||||
child = child.getNextSiblingIgnoringWhitespaceAndComments()
|
||||
if (child.node.elementType == JavaTokenType.RBRACKET) {
|
||||
dimensions += JKStubExpression()
|
||||
} else {
|
||||
child as PsiExpression? //TODO
|
||||
child.safeAs<PsiExpression>()?.toJK()?.also { dimensions += it }
|
||||
}
|
||||
}
|
||||
child = child.nextSibling
|
||||
}
|
||||
JKJavaNewEmptyArray(
|
||||
dimensions.map { it?.toJK()?.withLineBreaksFrom(it) ?: JKStubExpression() },
|
||||
dimensions,
|
||||
JKTypeElement(generateSequence(type?.toJK()) { it.safeAs<JKJavaArrayType>()?.type }.last())
|
||||
).also {
|
||||
it.psi = this
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
//statement
|
||||
int[][]d2=new int[ 5 ][ ];
|
||||
+1
@@ -0,0 +1 @@
|
||||
val d2 = arrayOfNulls<IntArray>(5)
|
||||
+5
@@ -320,6 +320,11 @@ public class NewJavaToKotlinConverterSingleFileTestGenerated extends AbstractNew
|
||||
runTest("nj2k/testData/newJ2k/arrayType/arrayInitializationStatementWithDimension3d.java");
|
||||
}
|
||||
|
||||
@TestMetadata("arrayInitializationStatementWithDimensionAndSpace.java")
|
||||
public void testArrayInitializationStatementWithDimensionAndSpace() throws Exception {
|
||||
runTest("nj2k/testData/newJ2k/arrayType/arrayInitializationStatementWithDimensionAndSpace.java");
|
||||
}
|
||||
|
||||
@TestMetadata("arrayInitializationStatementWithDimensionExplicit.java")
|
||||
public void testArrayInitializationStatementWithDimensionExplicit() throws Exception {
|
||||
runTest("nj2k/testData/newJ2k/arrayType/arrayInitializationStatementWithDimensionExplicit.java");
|
||||
|
||||
Reference in New Issue
Block a user