literals supported more correctly
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package org.jetbrains.jet.j2k.visitors;
|
package org.jetbrains.jet.j2k.visitors;
|
||||||
|
|
||||||
import com.intellij.psi.*;
|
import com.intellij.psi.*;
|
||||||
import com.intellij.psi.impl.source.tree.java.PsiLiteralExpressionImpl;
|
|
||||||
import com.intellij.psi.tree.IElementType;
|
import com.intellij.psi.tree.IElementType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -158,11 +157,23 @@ public class ExpressionVisitor extends StatementVisitor {
|
|||||||
@Override
|
@Override
|
||||||
public void visitLiteralExpression(PsiLiteralExpression expression) {
|
public void visitLiteralExpression(PsiLiteralExpression expression) {
|
||||||
super.visitLiteralExpression(expression);
|
super.visitLiteralExpression(expression);
|
||||||
myResult = new LiteralExpression(
|
|
||||||
new IdentifierImpl(
|
final Object value = expression.getValue();
|
||||||
((PsiLiteralExpressionImpl) expression).getCanonicalText() // TODO
|
String text = expression.getText();
|
||||||
)
|
|
||||||
);
|
final PsiType type = expression.getType();
|
||||||
|
if (type != null) {
|
||||||
|
String canonicalTypeStr = type.getCanonicalText();
|
||||||
|
if (canonicalTypeStr.equals("double") || canonicalTypeStr.equals("java.lang.Double"))
|
||||||
|
text = text.replace("D", "").replace("d", "");
|
||||||
|
if (canonicalTypeStr.equals("float") || canonicalTypeStr.equals("java.lang.Float"))
|
||||||
|
text = text.replace("F", "").replace("f", "") + "." + "flt";
|
||||||
|
if (canonicalTypeStr.equals("long") || canonicalTypeStr.equals("java.lang.Long"))
|
||||||
|
text = text.replace("L", "").replace("l", "");
|
||||||
|
if (canonicalTypeStr.equals("int") || canonicalTypeStr.equals("java.lang.Integer")) // need for hex support
|
||||||
|
text = value != null ? value.toString() : text;
|
||||||
|
}
|
||||||
|
myResult = new LiteralExpression(new IdentifierImpl(text));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -406,3 +417,10 @@ public class ExpressionVisitor extends StatementVisitor {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class Test {
|
||||||
|
void test() {
|
||||||
|
char c1 = 'c';
|
||||||
|
Character c2 = 'C';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
class Test {
|
||||||
|
void test() {
|
||||||
|
char c1 = 'c';
|
||||||
|
Character c2 = 'C';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
open class Test() {
|
||||||
|
open fun test() : Unit {
|
||||||
|
var c1 : Char = 'c'
|
||||||
|
var c2 : Char? = 'C'
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
class Test {
|
||||||
|
void test() {
|
||||||
|
long l1 = 10L;
|
||||||
|
double d1 = 10.0D;
|
||||||
|
float f1 = 10.0F;
|
||||||
|
|
||||||
|
long l2 = 10l;
|
||||||
|
double d2 = 10.0d;
|
||||||
|
float f2 = 10.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
void testBoxed() {
|
||||||
|
Long l1 = 10L;
|
||||||
|
Double d1 = 10.0D;
|
||||||
|
Float f1 = 10.0F;
|
||||||
|
|
||||||
|
Long l2 = 10l;
|
||||||
|
Double d2 = 10.0d;
|
||||||
|
Float f2 = 10.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
open class Test() {
|
||||||
|
open fun test() : Unit {
|
||||||
|
var l1 : Long = 10
|
||||||
|
var d1 : Double = 10.0
|
||||||
|
var f1 : Float = 10.0.flt
|
||||||
|
var l2 : Long = 10
|
||||||
|
var d2 : Double = 10.0
|
||||||
|
var f2 : Float = 10.0.flt
|
||||||
|
}
|
||||||
|
open fun testBoxed() : Unit {
|
||||||
|
var l1 : Long? = 10
|
||||||
|
var d1 : Double? = 10.0
|
||||||
|
var f1 : Float? = 10.0.flt
|
||||||
|
var l2 : Long? = 10
|
||||||
|
var d2 : Double? = 10.0
|
||||||
|
var f2 : Float? = 10.0.flt
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
class Test {
|
||||||
|
void test() {
|
||||||
|
int i1 = 0x21;
|
||||||
|
Int i2 = 0x33;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
open class Test() {
|
||||||
|
open fun test() : Unit {
|
||||||
|
var i1 : Int = 33
|
||||||
|
var i2 : Int? = 51
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
class Test {
|
||||||
|
void test() {
|
||||||
|
int i1 = 045;
|
||||||
|
Int i2 = 032;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
open class Test() {
|
||||||
|
open fun test() : Unit {
|
||||||
|
var i1 : Int = 37
|
||||||
|
var i2 : Int? = 26
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
class Test {
|
||||||
|
void test() {
|
||||||
|
boolean t1 = true;
|
||||||
|
Boolean t2 = true;
|
||||||
|
|
||||||
|
boolean f1 = false;
|
||||||
|
Boolean f2 = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
open class Test() {
|
||||||
|
open fun test() : Unit {
|
||||||
|
var t1 : Boolean = true
|
||||||
|
var t2 : Boolean? = true
|
||||||
|
var f1 : Boolean = false
|
||||||
|
var f2 : Boolean? = false
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user