diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/PrimitiveTypesInitializersConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/PrimitiveTypesInitializersConversion.kt index 7e065165ea1..3e5c0ad9d83 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/PrimitiveTypesInitializersConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/PrimitiveTypesInitializersConversion.kt @@ -13,10 +13,13 @@ import org.jetbrains.kotlin.j2k.tree.impl.* class PrimitiveTypesInitializersConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() { override fun applyToElement(element: JKTreeElement): JKTreeElement { - if (element !is JKJavaField) return recurse(element) + if (element !is JKVariable) return recurse(element) val literalInitializer = element.initializer as? JKJavaLiteralExpression ?: return recurse(element) - val literalType = literalInitializer.type.toPrimitiveType() ?: return recurse(element) - val fieldType = element.type.type as? JKJavaPrimitiveType ?: return recurse(element) + val literalType = literalInitializer.type.toPrimitiveType() + ?: return recurse(element) + val fieldType = element.type.type as? JKJavaPrimitiveType + ?: (element.type.type as? JKClassType)?.toPrimitiveType() + ?: return recurse(element) createPrimitiveTypeInitializer(literalInitializer.copyTreeAndDetach(), literalType, fieldType)?.also { element.initializer = it diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt index 72d0f1566ee..d687453e176 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt @@ -189,6 +189,18 @@ fun JKJavaPrimitiveType.toLiteralType(): JKLiteralExpression.LiteralType? = else -> null } +fun JKClassType.toPrimitiveType(): JKJavaPrimitiveType? = + when (classReference.fqName) { + "java.lang.Character" -> JKJavaPrimitiveTypeImpl.CHAR + "java.lang.Boolean" -> JKJavaPrimitiveTypeImpl.BOOLEAN + "java.lang.Integer" -> JKJavaPrimitiveTypeImpl.INT + "java.lang.Long" -> JKJavaPrimitiveTypeImpl.LONG + "java.lang.Float" -> JKJavaPrimitiveTypeImpl.FLOAT + "java.lang.Double" -> JKJavaPrimitiveTypeImpl.DOUBLE + "java.lang.Byte" -> JKJavaPrimitiveTypeImpl.BYTE + else -> null + } + fun JKJavaPrimitiveType.isNumberType() = this == JKJavaPrimitiveTypeImpl.INT || this == JKJavaPrimitiveTypeImpl.LONG || diff --git a/j2k/testData/fileOrElement/class/anonymousClass.java b/j2k/testData/fileOrElement/class/anonymousClass.java index 12eec758f10..51a3aacb598 100644 --- a/j2k/testData/fileOrElement/class/anonymousClass.java +++ b/j2k/testData/fileOrElement/class/anonymousClass.java @@ -6,7 +6,7 @@ public class Test { private Listener listener = new Listener() { @Override public void onChange(int visibility) { - val a = (visibility & 1) + int a = (visibility & 1) } } } \ No newline at end of file diff --git a/j2k/testData/fileOrElement/class/anonymousClass.kt b/j2k/testData/fileOrElement/class/anonymousClass.kt index 5070cdc215c..6b7b76286da 100644 --- a/j2k/testData/fileOrElement/class/anonymousClass.kt +++ b/j2k/testData/fileOrElement/class/anonymousClass.kt @@ -1,6 +1,6 @@ package test -import javaApi.* +import javaApi.Listener class Test { private val listener = Listener { visibility -> val a = visibility and 1 }