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() {
|
class PrimitiveTypesInitializersConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
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 literalInitializer = element.initializer as? JKJavaLiteralExpression ?: return recurse(element)
|
||||||
val literalType = literalInitializer.type.toPrimitiveType() ?: return recurse(element)
|
val literalType = literalInitializer.type.toPrimitiveType()
|
||||||
val fieldType = element.type.type as? JKJavaPrimitiveType ?: return recurse(element)
|
?: 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 {
|
createPrimitiveTypeInitializer(literalInitializer.copyTreeAndDetach(), literalType, fieldType)?.also {
|
||||||
element.initializer = it
|
element.initializer = it
|
||||||
|
|||||||
@@ -189,6 +189,18 @@ fun JKJavaPrimitiveType.toLiteralType(): JKLiteralExpression.LiteralType? =
|
|||||||
else -> null
|
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() =
|
fun JKJavaPrimitiveType.isNumberType() =
|
||||||
this == JKJavaPrimitiveTypeImpl.INT ||
|
this == JKJavaPrimitiveTypeImpl.INT ||
|
||||||
this == JKJavaPrimitiveTypeImpl.LONG ||
|
this == JKJavaPrimitiveTypeImpl.LONG ||
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ public class Test {
|
|||||||
private Listener listener = new Listener() {
|
private Listener listener = new Listener() {
|
||||||
@Override
|
@Override
|
||||||
public void onChange(int visibility) {
|
public void onChange(int visibility) {
|
||||||
val a = (visibility & 1)
|
int a = (visibility & 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
import javaApi.*
|
import javaApi.Listener
|
||||||
|
|
||||||
class Test {
|
class Test {
|
||||||
private val listener = Listener { visibility -> val a = visibility and 1 }
|
private val listener = Listener { visibility -> val a = visibility and 1 }
|
||||||
|
|||||||
Reference in New Issue
Block a user