diff --git a/j2k/src/org/jetbrains/jet/j2k/Converter.kt b/j2k/src/org/jetbrains/jet/j2k/Converter.kt index 65408e0014b..41d2a7c7894 100644 --- a/j2k/src/org/jetbrains/jet/j2k/Converter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/Converter.kt @@ -69,13 +69,11 @@ public class Converter(val project: Project, val settings: ConverterSettings) { is PsiStatement -> statementToStatement(element) is PsiExpression -> expressionToExpression(element) is PsiComment -> Comment(element.getText()!!) + is PsiImportList -> importsToImportList(element) else -> null } public fun fileToFile(javaFile: PsiJavaFile): File { - val psiImportList = javaFile.getImportList() - val importList = if (psiImportList != null) importsToImportList(psiImportList) else null - val body = ArrayList() for (element in javaFile.getChildren()) { if (element !is PsiImportStatementBase) { @@ -85,7 +83,7 @@ public class Converter(val project: Project, val settings: ConverterSettings) { } } } - return File(quoteKeywords(javaFile.getPackageName()), importList, body, createMainFunction(javaFile)) + return File(quoteKeywords(javaFile.getPackageName()), body, createMainFunction(javaFile)) } public fun anonymousClassToAnonymousClass(anonymousClass: PsiAnonymousClass): AnonymousClass { diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/File.kt b/j2k/src/org/jetbrains/jet/j2k/ast/File.kt index b5b81c90f97..42a9db6a6ad 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/File.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/File.kt @@ -17,12 +17,11 @@ package org.jetbrains.jet.j2k.ast public open class File(val packageName: String, - val imports: ImportList?, val body: MutableList, val mainFunction: String) : Node { public override fun toKotlin(): String { - val common = (imports?.toKotlin() ?: "") + "\n\n" + body.toKotlin("\n") + "\n" + mainFunction + val common = body.toKotlin("\n") + "\n" + mainFunction if (packageName.isEmpty()) { return common } diff --git a/j2k/tests/test/org/jetbrains/jet/j2k/test/AbstractJavaToKotlinConverterTest.kt b/j2k/tests/test/org/jetbrains/jet/j2k/test/AbstractJavaToKotlinConverterTest.kt index e4f335d686a..29971e119cc 100644 --- a/j2k/tests/test/org/jetbrains/jet/j2k/test/AbstractJavaToKotlinConverterTest.kt +++ b/j2k/tests/test/org/jetbrains/jet/j2k/test/AbstractJavaToKotlinConverterTest.kt @@ -37,7 +37,7 @@ public abstract class AbstractJavaToKotlinConverterBasicTest() : AbstractJavaToK public abstract class AbstractJavaToKotlinConverterTest(val kotlinFileExtension: String, val settings: ConverterSettings) : UsefulTestCase() { - val testHeaderPattern = Pattern.compile("//(expression|statement|method|class|file|comp)\n") + val testHeaderPattern = Pattern.compile("//(element|expression|statement|method|class|file|comp)\n") protected fun doTest(javaPath: String) { val jetCoreEnvironment = createEnvironmentWithMockJdkAndIdeaAnnotations(getTestRootDisposable(), ConfigurationKind.JDK_ONLY) @@ -56,6 +56,7 @@ public abstract class AbstractJavaToKotlinConverterTest(val kotlinFileExtension: val prefix = matcher.group().trim().substring(2) val javaCode = matcher.replaceFirst("") val actual = when (prefix) { + "element" -> elementToKotlin(converter, javaCode) "expression" -> expressionToKotlin(converter, javaCode) "statement" -> statementToKotlin(converter, javaCode) "method" -> methodToKotlin(converter, javaCode) @@ -77,6 +78,12 @@ public abstract class AbstractJavaToKotlinConverterTest(val kotlinFileExtension: Assert.assertEquals(expected, actual) } + private fun elementToKotlin(converter: Converter, text: String): String { + val fileWithText = JavaToKotlinTranslator.createFile(converter.project, text)!! + val element = fileWithText.getFirstChild()!! + return prettify(converter.elementToKotlin(element)) + } + private fun fileToKotlin(converter: Converter, text: String): String { return generateKotlinCode(converter, JavaToKotlinTranslator.createFile(converter.project, text)) } diff --git a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterBasicTestGenerated.java b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterBasicTestGenerated.java index 0809b08d74f..a0cd88819d0 100644 --- a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterBasicTestGenerated.java +++ b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterBasicTestGenerated.java @@ -1233,6 +1233,16 @@ public class JavaToKotlinConverterBasicTestGenerated extends AbstractJavaToKotli doTest("j2k/tests/testData/ast/importStatement/importWithStar.jav"); } + @TestMetadata("oneImport.jav") + public void testOneImport() throws Exception { + doTest("j2k/tests/testData/ast/importStatement/oneImport.jav"); + } + + @TestMetadata("onlyImports.jav") + public void testOnlyImports() throws Exception { + doTest("j2k/tests/testData/ast/importStatement/onlyImports.jav"); + } + @TestMetadata("simpleImport.jav") public void testSimpleImport() throws Exception { doTest("j2k/tests/testData/ast/importStatement/simpleImport.jav"); diff --git a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterPluginTestGenerated.java b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterPluginTestGenerated.java index 4f3eee51455..71177d709fc 100644 --- a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterPluginTestGenerated.java +++ b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterPluginTestGenerated.java @@ -1233,6 +1233,16 @@ public class JavaToKotlinConverterPluginTestGenerated extends AbstractJavaToKotl doTest("j2k/tests/testData/ast/importStatement/importWithStar.jav"); } + @TestMetadata("oneImport.jav") + public void testOneImport() throws Exception { + doTest("j2k/tests/testData/ast/importStatement/oneImport.jav"); + } + + @TestMetadata("onlyImports.jav") + public void testOnlyImports() throws Exception { + doTest("j2k/tests/testData/ast/importStatement/onlyImports.jav"); + } + @TestMetadata("simpleImport.jav") public void testSimpleImport() throws Exception { doTest("j2k/tests/testData/ast/importStatement/simpleImport.jav"); diff --git a/j2k/tests/testData/ast/importStatement/oneImport.ide.kt b/j2k/tests/testData/ast/importStatement/oneImport.ide.kt new file mode 100644 index 00000000000..94e87657f16 --- /dev/null +++ b/j2k/tests/testData/ast/importStatement/oneImport.ide.kt @@ -0,0 +1 @@ +import java.util.Arrays \ No newline at end of file diff --git a/j2k/tests/testData/ast/importStatement/oneImport.jav b/j2k/tests/testData/ast/importStatement/oneImport.jav new file mode 100644 index 00000000000..7927c677822 --- /dev/null +++ b/j2k/tests/testData/ast/importStatement/oneImport.jav @@ -0,0 +1,2 @@ +//element +import java.util.Arrays; \ No newline at end of file diff --git a/j2k/tests/testData/ast/importStatement/oneImport.kt b/j2k/tests/testData/ast/importStatement/oneImport.kt new file mode 100644 index 00000000000..94e87657f16 --- /dev/null +++ b/j2k/tests/testData/ast/importStatement/oneImport.kt @@ -0,0 +1 @@ +import java.util.Arrays \ No newline at end of file diff --git a/j2k/tests/testData/ast/importStatement/onlyImports.ide.kt b/j2k/tests/testData/ast/importStatement/onlyImports.ide.kt new file mode 100644 index 00000000000..584cb68ce05 --- /dev/null +++ b/j2k/tests/testData/ast/importStatement/onlyImports.ide.kt @@ -0,0 +1,2 @@ +import java.util.Arrays +import java.util.concurrent.ArrayBlockingQueue \ No newline at end of file diff --git a/j2k/tests/testData/ast/importStatement/onlyImports.jav b/j2k/tests/testData/ast/importStatement/onlyImports.jav new file mode 100644 index 00000000000..d5c369c26e1 --- /dev/null +++ b/j2k/tests/testData/ast/importStatement/onlyImports.jav @@ -0,0 +1,3 @@ +//element +import java.util.Arrays; +import java.util.concurrent.ArrayBlockingQueue; diff --git a/j2k/tests/testData/ast/importStatement/onlyImports.kt b/j2k/tests/testData/ast/importStatement/onlyImports.kt new file mode 100644 index 00000000000..584cb68ce05 --- /dev/null +++ b/j2k/tests/testData/ast/importStatement/onlyImports.kt @@ -0,0 +1,2 @@ +import java.util.Arrays +import java.util.concurrent.ArrayBlockingQueue \ No newline at end of file