J2K: convert hex Java literal to hex Kotlin literal
This commit is contained in:
@@ -297,8 +297,18 @@ class DefaultExpressionConverter : JavaElementVisitor(), ExpressionConverter {
|
|||||||
text = text.replace("l", "L")
|
text = text.replace("l", "L")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun isHexLiteral(text: String) = text.startsWith("0x") || text.startsWith("0X")
|
||||||
|
fun isLongField(element: PsiElement): Boolean {
|
||||||
|
val fieldType = (element as? PsiVariable)?.type ?: return false
|
||||||
|
return when (fieldType) {
|
||||||
|
is PsiPrimitiveType -> fieldType.canonicalText == "long"
|
||||||
|
else -> PsiPrimitiveType.getUnboxedType(fieldType)?.canonicalText == "long"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (typeStr == "int") {
|
if (typeStr == "int") {
|
||||||
text = if (value != null) value.toString() else text
|
val toIntIsNeeded = value != null && value.toString().toInt() < 0 && !isLongField(expression.parent)
|
||||||
|
text = if (value != null && !isHexLiteral(text)) value.toString() else text + (if (toIntIsNeeded) ".toInt()" else "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,5 +3,11 @@ class Test {
|
|||||||
void test() {
|
void test() {
|
||||||
int i1 = 0x21;
|
int i1 = 0x21;
|
||||||
Int i2 = 0x33;
|
Int i2 = 0x33;
|
||||||
|
int i3 = 0xffffffff;
|
||||||
|
int i4 = 0XCCCC;
|
||||||
|
int i5 = 0x6fffffff;
|
||||||
|
long l1 = 0xffffffff;
|
||||||
|
Long l2 = 0xffffffffl;
|
||||||
|
long l3 = 0xffffffffffL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+8
-2
@@ -1,6 +1,12 @@
|
|||||||
internal class Test {
|
internal class Test {
|
||||||
fun test() {
|
fun test() {
|
||||||
val i1 = 33
|
val i1 = 0x21
|
||||||
val i2 = 51
|
val i2 = 0x33
|
||||||
|
val i3 = 0xffffffff.toInt()
|
||||||
|
val i4 = 0XCCCC
|
||||||
|
val i5 = 0x6fffffff
|
||||||
|
val l1: Long = 0xffffffff
|
||||||
|
val l2 = 0xffffffffL
|
||||||
|
val l3 = 0xffffffffffL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user