literals supported more correctly
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package org.jetbrains.jet.j2k.visitors;
|
||||
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.tree.java.PsiLiteralExpressionImpl;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -158,11 +157,23 @@ public class ExpressionVisitor extends StatementVisitor {
|
||||
@Override
|
||||
public void visitLiteralExpression(PsiLiteralExpression expression) {
|
||||
super.visitLiteralExpression(expression);
|
||||
myResult = new LiteralExpression(
|
||||
new IdentifierImpl(
|
||||
((PsiLiteralExpressionImpl) expression).getCanonicalText() // TODO
|
||||
)
|
||||
);
|
||||
|
||||
final Object value = expression.getValue();
|
||||
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
|
||||
@@ -405,4 +416,11 @@ public class ExpressionVisitor extends StatementVisitor {
|
||||
getOperatorString(expression.getOperationTokenType())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
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