New J2K: Add boxed types support to PrimitiveTypesInitializersConversion
This commit is contained in:
committed by
Ilya Kirillov
parent
f14aa2292f
commit
d4077a1622
+6
-3
@@ -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
|
||||
|
||||
@@ -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 ||
|
||||
|
||||
+1
-1
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package test
|
||||
|
||||
import javaApi.*
|
||||
import javaApi.Listener
|
||||
|
||||
class Test {
|
||||
private val listener = Listener { visibility -> val a = visibility and 1 }
|
||||
|
||||
Reference in New Issue
Block a user