From 8ce3673aafbffa8370e22cb9d450a4b8511d6f47 Mon Sep 17 00:00:00 2001 From: Dimach Date: Wed, 6 Jun 2018 19:43:32 +0300 Subject: [PATCH] New J2K: Fixed array initializer --- .../org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index a34e1bed76f..dbcc057b6f8 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -62,6 +62,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { operands.map { it.toJK() }, Array(operands.lastIndex) { getTokenBeforeOperand(operands[it + 1]) }.map { it?.toJK() ?: TODO() } ) + is PsiArrayInitializerExpression -> toJK() else -> { throw RuntimeException("Not supported: ${this::class}") } @@ -135,13 +136,14 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { } } + fun PsiArrayInitializerExpression.toJK(): JKExpression { + return JKJavaNewArrayImpl(initializers.map { it.toJK() }) + } + fun PsiNewExpression.toJK(): JKExpression { assert(this is PsiNewExpressionImpl) if ((this as PsiNewExpressionImpl).findChildByRole(ChildRole.LBRACKET) != null) { - val arrayInitializer = arrayInitializer - if (arrayInitializer != null) { - return JKJavaNewArrayImpl(arrayInitializer.initializers.map { it.toJK() }) - } else { + return arrayInitializer?.toJK() ?: run { val dimensions = mutableListOf() var child = firstChild while (child != null) { @@ -155,7 +157,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { } child = child.nextSibling } - return JKJavaNewEmptyArrayImpl(dimensions.map { it?.toJK() }) + JKJavaNewEmptyArrayImpl(dimensions.map { it?.toJK() }) } } val constructedClass = classOrAnonymousClassReference?.resolve()