From f6f619ea2790c7e2085d278dbcfc5938dc2a8ca6 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 27 Nov 2018 14:29:05 +0300 Subject: [PATCH] New J2K: Add blockStatementWithoutBrackets to `for` statement conversion --- .../kotlin/j2k/conversions/ForConversion.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ForConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ForConversion.kt index b6f79322455..32f78cd8bbf 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ForConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ForConversion.kt @@ -50,13 +50,14 @@ class ForConversion(private val context: ConversionContext) : RecursiveApplicabl if (element !is JKContinueStatement) return recurse(element) val elementPsi = element.psi()!! if (elementPsi.findContinuedStatement()?.toContinuedLoop() != loopStatement.psi()) return recurse(element) - val statements = loopStatement.updaters + element - return recurse(JKBlockStatementImpl(JKBlockImpl(statements))) + val statements = loopStatement.updaters.map { it.copyTreeAndDetach() } + element.copyTreeAndDetach() + return if (element.parent is JKBlock) + JKBlockStatementWithoutBracketsImpl(JKBlockImpl(statements)) + else JKBlockStatementImpl(JKBlockImpl(statements)) } - } - val body = loopStatement::body.detached() + val body = continueStatementConverter.applyToElement(loopStatement::body.detached()) if (body is JKBlockStatement) { val initializer = loopStatement.initializer @@ -72,14 +73,14 @@ class ForConversion(private val context: ConversionContext) : RecursiveApplicabl val statements = if (hasNameConflict) { - listOf(continueStatementConverter.applyToElement(body) as JKStatement) + loopStatement::updaters.detached() + listOf(body) + loopStatement::updaters.detached() } else { body.block::statements.detached() + loopStatement::updaters.detached() } return JKBlockStatementImpl(JKBlockImpl(statements)) } else { val statements = - listOf(continueStatementConverter.applyToElement(body) as JKStatement) + loopStatement::updaters.detached() + listOf(body as JKStatement) + loopStatement::updaters.detached() return JKBlockStatementImpl(JKBlockImpl(statements)) } }