From d8aa18ab0f7e0cd1c09c80a1baf17c656c63e617 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 28 Nov 2011 16:56:10 +0400 Subject: [PATCH] KT-635 Import std.java.compatibility --- src/org/jetbrains/jet/j2k/Converter.java | 8 ++++++++ .../org/jetbrains/jet/j2k/JavaToKotlinConverterTest.java | 9 +++++++++ testData/ast/file/comp/intNullability.jav | 9 +++++++++ testData/ast/file/comp/intNullability.kt | 9 +++++++++ 4 files changed, 35 insertions(+) create mode 100644 testData/ast/file/comp/intNullability.jav create mode 100644 testData/ast/file/comp/intNullability.kt diff --git a/src/org/jetbrains/jet/j2k/Converter.java b/src/org/jetbrains/jet/j2k/Converter.java index e261e4421a4..d0de988b550 100644 --- a/src/org/jetbrains/jet/j2k/Converter.java +++ b/src/org/jetbrains/jet/j2k/Converter.java @@ -37,6 +37,14 @@ public class Converter { return new File(quoteKeywords(javaFile.getPackageName()), imports, classesToClassList(javaFile.getClasses())); } + @NotNull + public static File fileToFileWithCompatibilityImport(@NotNull PsiJavaFile javaFile) { + final PsiImportList importList = javaFile.getImportList(); + List imports = importList == null ? Collections.emptyList() : importsToImportList(importList.getAllImportStatements()); + imports.add(new Import("std.java.compatibility.*")); + return new File(quoteKeywords(javaFile.getPackageName()), imports, classesToClassList(javaFile.getClasses())); + } + @NotNull private static String quoteKeywords(@NotNull String packageName) { List result = new LinkedList(); diff --git a/test/org/jetbrains/jet/j2k/JavaToKotlinConverterTest.java b/test/org/jetbrains/jet/j2k/JavaToKotlinConverterTest.java index 9c1231e817f..6b7a168efb3 100644 --- a/test/org/jetbrains/jet/j2k/JavaToKotlinConverterTest.java +++ b/test/org/jetbrains/jet/j2k/JavaToKotlinConverterTest.java @@ -47,6 +47,7 @@ public class JavaToKotlinConverterTest extends LightDaemonAnalyzerTestCase { else if (javaFile.getParent().endsWith("/method")) actual = methodToKotlin(javaCode); else if (javaFile.getParent().endsWith("/class")) actual = fileToKotlin(javaCode); else if (javaFile.getParent().endsWith("/file")) actual = fileToKotlin(javaCode); + else if (javaFile.getParent().endsWith("/comp")) actual = fileToFileWithCompatibilityImport(javaCode); assert !actual.isEmpty() : "Specify what is it: file, class, method, statement or expression"; @@ -100,9 +101,17 @@ public class JavaToKotlinConverterTest extends LightDaemonAnalyzerTestCase { private static void setClassIdentifiers() { ClassVisitor c = new ClassVisitor(); myFile.accept(c); + Converter.clearClassIdentifiers(); Converter.setClassIdentifiers(c.getClassIdentifiers()); } + @NotNull + private static String fileToFileWithCompatibilityImport(String text) throws IOException { + configureFromText(text); + setClassIdentifiers(); + return prettify(Converter.fileToFileWithCompatibilityImport((PsiJavaFile) myFile).toKotlin()); + } + @NotNull private static String fileToKotlin(String text) throws IOException { configureFromText(text); diff --git a/testData/ast/file/comp/intNullability.jav b/testData/ast/file/comp/intNullability.jav new file mode 100644 index 00000000000..328d9cb6ee2 --- /dev/null +++ b/testData/ast/file/comp/intNullability.jav @@ -0,0 +1,9 @@ +package demo; + +class Test { + void test() { + Integer i = 10; + Integer j = 10; + System.out.println(i + j); + } +} \ No newline at end of file diff --git a/testData/ast/file/comp/intNullability.kt b/testData/ast/file/comp/intNullability.kt new file mode 100644 index 00000000000..01080101de7 --- /dev/null +++ b/testData/ast/file/comp/intNullability.kt @@ -0,0 +1,9 @@ +namespace demo +import std.java.compatibility.* +open class Test() { +open fun test() : Unit { +var i : Int? = 10 +var j : Int? = 10 +System.out?.println((i + j)) +} +} \ No newline at end of file