From b45b0e6c3a726ec74512f8c7e47b0375578a56f1 Mon Sep 17 00:00:00 2001 From: Santeri Hiltunen Date: Mon, 11 Feb 2013 11:01:34 +0200 Subject: [PATCH] Calls to Java's primitive class methods work. Calls to Java's primitive classes that had the same name as the corresponding primitive in Kotlin didn't work. Now calls like Short.valueOf() is turned to java.lang.Short.valueOf() in Kotlin. --- src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.kt | 9 +++++++++ tests/testData/ast/boxedType/file/kt-671.jav | 3 ++- tests/testData/ast/boxedType/file/kt-671.kt | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.kt b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.kt index 1c69ae4dbb8..087a182ac84 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.kt +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.kt @@ -12,6 +12,7 @@ import java.util.ArrayList import java.util.Collections import com.intellij.psi.CommonClassNames.* import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.jet.lang.types.lang.PrimitiveType public open class ExpressionVisitor(converter: Converter): StatementVisitor(converter) { { @@ -235,6 +236,14 @@ public open class ExpressionVisitor(converter: Converter): StatementVisitor(conv } else if (qualifier == null) { val resolved = expression.getReference()?.resolve() + if (resolved is PsiClass) { + val clazz = resolved as PsiClass + + if (PrimitiveType.values() any { it.getTypeName().getName() == clazz.getName() }) { + myResult = Identifier(clazz.getQualifiedName()!!, false) + return + } + } if (resolved is PsiMember && resolved.hasModifierProperty(PsiModifier.STATIC) && resolved.getContainingClass() != null && PsiTreeUtil.getParentOfType(expression, javaClass()) != resolved.getContainingClass() && diff --git a/tests/testData/ast/boxedType/file/kt-671.jav b/tests/testData/ast/boxedType/file/kt-671.jav index 520765b7b08..c0ba6a8bc30 100644 --- a/tests/testData/ast/boxedType/file/kt-671.jav +++ b/tests/testData/ast/boxedType/file/kt-671.jav @@ -3,6 +3,7 @@ package demo; class Test { void test() { Integer i = Integer.valueOf(100); - Short s = Short.valueOf(100); + short s = 3; + Short ss = Short.valueOf(s); } } \ No newline at end of file diff --git a/tests/testData/ast/boxedType/file/kt-671.kt b/tests/testData/ast/boxedType/file/kt-671.kt index 11419363e4b..bb5c163ee24 100644 --- a/tests/testData/ast/boxedType/file/kt-671.kt +++ b/tests/testData/ast/boxedType/file/kt-671.kt @@ -2,6 +2,7 @@ package demo open class Test() { open fun test() : Unit { var i : Int? = Integer.valueOf(100) -var s : Short? = Short.valueOf(100) +var s : Short = 3 +var ss : Short? = java.lang.Short.valueOf(s) } } \ No newline at end of file