From 2db888a646490424e5b36a836957b83db12756e8 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 14 Mar 2016 17:09:54 +0300 Subject: [PATCH] Accurate work with adding/removing context of tests. Need this because of KEEP_FIRST_COLUMN_COMMENT setting. Comments accidentally left on first collumn cause the bad formatting. #KT-4175 Fixed --- ...ractJavaToKotlinConverterSingleFileTest.kt | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt index 20b5d0a001a..6dc919c261b 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt +++ b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt @@ -89,7 +89,8 @@ abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJavaToKotli } private fun reformat(text: String, project: Project, inFunContext: Boolean): String { - val textToFormat = if (inFunContext) "fun convertedTemp() {\n$text\n}" else text + val funBody = text.lines().joinToString(separator = "\n", transform = { " $it" }) + val textToFormat = if (inFunContext) "fun convertedTemp() {\n$funBody\n}" else text val convertedFile = KotlinTestUtils.createFile("converted", textToFormat, project) WriteCommandAction.runWriteCommandAction(project) { @@ -111,18 +112,31 @@ abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJavaToKotli } private fun methodToKotlin(text: String, settings: ConverterSettings, project: Project): String { - val result = fileToKotlin("final class C {$text}", settings, project).replace("internal class C {", "").replace("internal object C {", "") - return result.substring(0, (result.lastIndexOf("}"))).trim() + val result = fileToKotlin("final class C {$text}", settings, project) + return result + .substringBeforeLast("}") + .replace("internal class C {", "\n") + .replace("internal object C {", "\n") + .trimIndent().trim() } private fun statementToKotlin(text: String, settings: ConverterSettings, project: Project): String { - val result = methodToKotlin("void main() {$text}", settings, project) - return result.substring(0, result.lastIndexOf("}")).replaceFirst("fun main() {", "").trim() + val funBody = text.lines().joinToString(separator = "\n", transform = { " $it" }) + val result = methodToKotlin("void main() {\n$funBody\n}", settings, project) + + return result + .substringBeforeLast("}") + .replaceFirst("fun main() {", "\n") + .trimIndent().trim() } private fun expressionToKotlin(code: String, settings: ConverterSettings, project: Project): String { val result = statementToKotlin("final Object o =$code}", settings, project) - return result.replaceFirst("val o:Any? = ", "").replaceFirst("val o:Any = ", "").replaceFirst("val o = ", "").trim() + return result + .replaceFirst("val o:Any? = ", "") + .replaceFirst("val o:Any = ", "") + .replaceFirst("val o = ", "") + .trim() } override fun getProjectDescriptor()