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