From d621b73b041b81028083836bc5d88b8d1073f0ea Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Wed, 14 Dec 2011 14:06:22 +0400 Subject: [PATCH] KT-820 and KT-824 fixed --- src/org/jetbrains/jet/j2k/Converter.java | 5 +++-- testData/ast/issues/file/kt-820-string.jav | 6 ++++++ testData/ast/issues/file/kt-820-string.kt | 8 ++++++++ testData/ast/issues/file/kt-824-isDir.jav | 18 ++++++++++++++++++ testData/ast/issues/file/kt-824-isDir.kt | 19 +++++++++++++++++++ 5 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 testData/ast/issues/file/kt-820-string.jav create mode 100644 testData/ast/issues/file/kt-820-string.kt create mode 100644 testData/ast/issues/file/kt-824-isDir.jav create mode 100644 testData/ast/issues/file/kt-824-isDir.kt diff --git a/src/org/jetbrains/jet/j2k/Converter.java b/src/org/jetbrains/jet/j2k/Converter.java index b5eb951ec58..0f44eef8c30 100644 --- a/src/org/jetbrains/jet/j2k/Converter.java +++ b/src/org/jetbrains/jet/j2k/Converter.java @@ -593,7 +593,8 @@ public class Converter { if (actualType != null) { if (isConversionNeeded(actualType, expectedType)) conversion += getPrimitiveTypeConversion(expectedType.getCanonicalText()); - if (expression instanceof PsiReferenceExpression && Node.PRIMITIVE_TYPES.contains(actualType.getCanonicalText()) && ((PsiReferenceExpression) expression).isQualified()) + if (Node.PRIMITIVE_TYPES.contains(actualType.getCanonicalText()) && (expression instanceof PsiReferenceExpression && ((PsiReferenceExpression) expression).isQualified() || + expression instanceof PsiMethodCallExpression)) conversion += ".sure()"; } } @@ -651,7 +652,7 @@ public class Converter { @NotNull public static SureCallChainExpression createSureCallOnlyForChain(PsiExpression expression, PsiType type) { - String conversion = (expression != null && expression instanceof PsiReferenceExpression && ((PsiReferenceExpression) expression).isQualified()) ? + String conversion = (expression != null && (expression instanceof PsiReferenceExpression || expression instanceof PsiMethodCallExpression)) ? createConversionForExpression(expression, type) : ""; return new SureCallChainExpression(expressionToExpression(expression), conversion); } diff --git a/testData/ast/issues/file/kt-820-string.jav b/testData/ast/issues/file/kt-820-string.jav new file mode 100644 index 00000000000..9bc81004c38 --- /dev/null +++ b/testData/ast/issues/file/kt-820-string.jav @@ -0,0 +1,6 @@ +class Test { + public static String toFileSystemSafeName(String name) { + int size = name.length(); + return name; + } +} \ No newline at end of file diff --git a/testData/ast/issues/file/kt-820-string.kt b/testData/ast/issues/file/kt-820-string.kt new file mode 100644 index 00000000000..53c1ae343e2 --- /dev/null +++ b/testData/ast/issues/file/kt-820-string.kt @@ -0,0 +1,8 @@ +open class Test() { +class object { +open public fun toFileSystemSafeName(name : String?) : String? { +var size : Int = name?.length().sure() +return name +} +} +} \ No newline at end of file diff --git a/testData/ast/issues/file/kt-824-isDir.jav b/testData/ast/issues/file/kt-824-isDir.jav new file mode 100644 index 00000000000..3429c9be45f --- /dev/null +++ b/testData/ast/issues/file/kt-824-isDir.jav @@ -0,0 +1,18 @@ +package test; +import java.io.File; + +/** + * User: ignatov + */ +public class Test { + public static boolean isDir(File parent) { + if (parent == null || !parent.exists()) { + return false; + } + boolean result = true; + if (parent.isDirectory()) { + return true; + } else + return false; + } +} \ No newline at end of file diff --git a/testData/ast/issues/file/kt-824-isDir.kt b/testData/ast/issues/file/kt-824-isDir.kt new file mode 100644 index 00000000000..9bae2da71ea --- /dev/null +++ b/testData/ast/issues/file/kt-824-isDir.kt @@ -0,0 +1,19 @@ +namespace test +import java.io.File +public open class Test() { +class object { +open public fun isDir(parent : File?) : Boolean { +if (((parent == null) || (!parent?.exists()))) +{ +return false +} +var result : Boolean = true +if (parent?.isDirectory().sure()) +{ +return true +} +else +return false +} +} +} \ No newline at end of file