From e84c753e9919c90fce4c9241f5800588c58bda97 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 4 Jul 2014 21:35:25 +0400 Subject: [PATCH] Fixed KT-5396 J2K: properly format "else if" on conversion #KT-5396 Fixed --- j2k/src/org/jetbrains/jet/j2k/ast/Statements.kt | 4 +++- .../test/JavaToKotlinConverterTestGenerated.java | 5 +++++ j2k/tests/testData/ast/ifStatement/elseIf.java | 16 ++++++++++++++++ j2k/tests/testData/ast/ifStatement/elseIf.kt | 14 ++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 j2k/tests/testData/ast/ifStatement/elseIf.java create mode 100644 j2k/tests/testData/ast/ifStatement/elseIf.kt diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Statements.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Statements.kt index 8258f5420c9..d45abc90f50 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Statements.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Statements.kt @@ -58,12 +58,14 @@ class IfStatement( val elseStatement: Element, singleLine: Boolean ) : Expression() { + private val br = if (singleLine) " " else "\n" + private val brAfterElse = if (singleLine || elseStatement is IfStatement) " " else "\n" override fun generateCode(builder: CodeBuilder) { builder append "if (" append condition append ")" append br append thenStatement if (!elseStatement.isEmpty) { - builder append br append "else" append br append elseStatement + builder append br append "else" append brAfterElse append elseStatement } } } diff --git a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java index 266b3920c5c..2e6473f4a08 100644 --- a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java +++ b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java @@ -1512,6 +1512,11 @@ public class JavaToKotlinConverterTestGenerated extends AbstractJavaToKotlinConv JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("j2k/tests/testData/ast/ifStatement"), Pattern.compile("^(.+)\\.java$"), true); } + @TestMetadata("elseIf.java") + public void testElseIf() throws Exception { + doTest("j2k/tests/testData/ast/ifStatement/elseIf.java"); + } + @TestMetadata("multiLine.java") public void testMultiLine() throws Exception { doTest("j2k/tests/testData/ast/ifStatement/multiLine.java"); diff --git a/j2k/tests/testData/ast/ifStatement/elseIf.java b/j2k/tests/testData/ast/ifStatement/elseIf.java new file mode 100644 index 00000000000..bc8640154fe --- /dev/null +++ b/j2k/tests/testData/ast/ifStatement/elseIf.java @@ -0,0 +1,16 @@ +//method +void foo() { + if (a) + System.out.println("a") + else if (b) + System.out.println("b") + else + System.out.println("else") + + if (c) { + System.out.println("c") + } + else if (d) { + System.out.println("d") + } +} \ No newline at end of file diff --git a/j2k/tests/testData/ast/ifStatement/elseIf.kt b/j2k/tests/testData/ast/ifStatement/elseIf.kt new file mode 100644 index 00000000000..7af2dea972a --- /dev/null +++ b/j2k/tests/testData/ast/ifStatement/elseIf.kt @@ -0,0 +1,14 @@ +fun foo() { + if (a) + System.out.println("a") + else if (b) + System.out.println("b") + else + System.out.println("else") + + if (c) { + System.out.println("c") + } else if (d) { + System.out.println("d") + } +} \ No newline at end of file