This commit is contained in:
Sergey Ignatov
2011-12-16 16:11:52 +04:00
parent bb499697fc
commit 5e6a4ce437
4 changed files with 55 additions and 39 deletions
+20 -18
View File
@@ -14,6 +14,8 @@ import org.jetbrains.jet.j2k.visitors.*;
import java.util.*;
import static org.jetbrains.jet.j2k.visitors.TypeVisitor.*;
/**
* @author ignatov
*/
@@ -378,7 +380,7 @@ public class Converter {
if (containing != null) {
for (PsiClassType s : containing.getSuperTypes()) {
String canonicalText = s.getCanonicalText();
if (!canonicalText.equals("java.lang.Object") && !getClassIdentifiers().contains(canonicalText)) {
if (!canonicalText.equals(JAVA_LANG_OBJECT) && !getClassIdentifiers().contains(canonicalText)) {
return true;
}
}
@@ -391,7 +393,7 @@ public class Converter {
for (HierarchicalMethodSignature s : method.getHierarchicalMethodSignature().getSuperSignatures()) {
PsiClass containingClass = s.getMethod().getContainingClass();
String qualifiedName = containingClass != null ? containingClass.getQualifiedName() : "";
if (qualifiedName != null && !qualifiedName.equals("java.lang.Object"))
if (qualifiedName != null && !qualifiedName.equals(JAVA_LANG_OBJECT))
counter++;
}
return counter > 0;
@@ -402,7 +404,7 @@ public class Converter {
for (HierarchicalMethodSignature s : superSignatures) {
PsiClass containingClass = s.getMethod().getContainingClass();
String qualifiedName = containingClass != null ? containingClass.getQualifiedName() : "";
if (qualifiedName != null && qualifiedName.equals("java.lang.Object"))
if (qualifiedName != null && qualifiedName.equals(JAVA_LANG_OBJECT))
return true;
}
return false;
@@ -413,7 +415,7 @@ public class Converter {
if (superSignatures.size() == 1) {
final PsiClass containingClass = superSignatures.get(0).getMethod().getContainingClass();
final String qualifiedName = containingClass != null ? containingClass.getQualifiedName() : "";
if (qualifiedName != null && qualifiedName.equals("java.lang.Object"))
if (qualifiedName != null && qualifiedName.equals(JAVA_LANG_OBJECT))
return true;
}
return false;
@@ -640,13 +642,13 @@ public class Converter {
if (actual == null || expected == null)
return false;
Map<String, String> typeMap = new HashMap<String, String>();
typeMap.put("java.lang.Byte", "byte");
typeMap.put("java.lang.Short", "short");
typeMap.put("java.lang.Integer", "int");
typeMap.put("java.lang.Long", "long");
typeMap.put("java.lang.Float", "float");
typeMap.put("java.lang.Double", "double");
typeMap.put("java.lang.Character", "char");
typeMap.put(JAVA_LANG_BYTE, "byte");
typeMap.put(JAVA_LANG_SHORT, "short");
typeMap.put(JAVA_LANG_INTEGER, "int");
typeMap.put(JAVA_LANG_LONG, "long");
typeMap.put(JAVA_LANG_FLOAT, "float");
typeMap.put(JAVA_LANG_DOUBLE, "double");
typeMap.put(JAVA_LANG_CHARACTER, "char");
String expectedStr = expected.getCanonicalText();
String actualStr = actual.getCanonicalText();
boolean o1 = AstUtil.getOrElse(typeMap, actualStr, "").equals(expectedStr);
@@ -665,13 +667,13 @@ public class Converter {
conversions.put("double", "dbl");
conversions.put("char", "chr");
conversions.put("java.lang.Byte", "byt");
conversions.put("java.lang.Short", "sht");
conversions.put("java.lang.Integer", "int");
conversions.put("java.lang.Long", "lng");
conversions.put("java.lang.Float", "flt");
conversions.put("java.lang.Double", "dbl");
conversions.put("java.lang.Character", "chr");
conversions.put(JAVA_LANG_BYTE, "byt");
conversions.put(JAVA_LANG_SHORT, "sht");
conversions.put(JAVA_LANG_INTEGER, "int");
conversions.put(JAVA_LANG_LONG, "lng");
conversions.put(JAVA_LANG_FLOAT, "flt");
conversions.put(JAVA_LANG_DOUBLE, "dbl");
conversions.put(JAVA_LANG_CHARACTER, "chr");
if (conversions.containsKey(type))
return "." + conversions.get(type);
@@ -10,6 +10,7 @@ import java.util.Collections;
import java.util.List;
import static org.jetbrains.jet.j2k.Converter.*;
import static org.jetbrains.jet.j2k.visitors.TypeVisitor.*;
/**
* @author ignatov
@@ -175,18 +176,18 @@ public class ExpressionVisitor extends StatementVisitor {
final PsiType type = expression.getType();
if (type != null) {
String canonicalTypeStr = type.getCanonicalText();
if (canonicalTypeStr.equals("double") || canonicalTypeStr.equals("java.lang.Double"))
if (canonicalTypeStr.equals("double") || canonicalTypeStr.equals(JAVA_LANG_DOUBLE))
text = text.replace("D", "").replace("d", "");
if (canonicalTypeStr.equals("float") || canonicalTypeStr.equals("java.lang.Float"))
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"))
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
if (canonicalTypeStr.equals("int") || canonicalTypeStr.equals(JAVA_LANG_INTEGER)) // need for hex support
text = value != null ? value.toString() : text;
if (canonicalTypeStr.equals("java.lang.String"))
if (canonicalTypeStr.equals(JAVA_LANG_STRING))
isQuotingNeeded = false;
if (canonicalTypeStr.equals("char") || canonicalTypeStr.equals("java.lang.Character"))
if (canonicalTypeStr.equals("char") || canonicalTypeStr.equals(JAVA_LANG_CHARACTER))
isQuotingNeeded = false;
}
myResult = new LiteralExpression(new IdentifierImpl(text, false, isQuotingNeeded));
@@ -7,6 +7,8 @@ import org.jetbrains.jet.j2k.ast.DummyMethodCallExpression;
import org.jetbrains.jet.j2k.ast.DummyStringExpression;
import org.jetbrains.jet.j2k.ast.IdentifierImpl;
import static org.jetbrains.jet.j2k.visitors.TypeVisitor.JAVA_LANG_OBJECT;
/**
* @author ignatov
*/
@@ -34,7 +36,7 @@ public class ExpressionVisitorForDirectObjectInheritors extends ExpressionVisito
if (referenceName != null && referenceName.equals(methodName)) {
if (qualifierExpression instanceof PsiSuperExpression) {
PsiType type = qualifierExpression.getType();
if (type != null && type.getCanonicalText().equals("java.lang.Object"))
if (type != null && type.getCanonicalText().equals(JAVA_LANG_OBJECT))
return true;
}
}
@@ -6,7 +6,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.j2k.ast.*;
import org.jetbrains.jet.j2k.util.AstUtil;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
@@ -17,6 +16,18 @@ import static org.jetbrains.jet.j2k.Converter.typesToTypeList;
* @author ignatov
*/
public class TypeVisitor extends PsiTypeVisitor<Type> {
public static final String JAVA_LANG_BYTE = "java.lang.Byte";
public static final String JAVA_LANG_CHARACTER = "java.lang.Character";
public static final String JAVA_LANG_DOUBLE = "java.lang.Double";
public static final String JAVA_LANG_FLOAT = "java.lang.Float";
public static final String JAVA_LANG_INTEGER = "java.lang.Integer";
public static final String JAVA_LANG_LONG = "java.lang.Long";
public static final String JAVA_LANG_SHORT = "java.lang.Short";
public static final String JAVA_LANG_BOOLEAN = "java.lang.Boolean";
public static final String JAVA_LANG_OBJECT = "java.lang.Object";
public static final String JAVA_LANG_STRING = "java.lang.String";
public static final String JAVA_LANG_ITERABLE = "java.lang.Iterable";
public static final String JAVA_UTIL_ITERATOR = "java.util.Iterator";
private Type myResult = Type.EMPTY_TYPE;
@NotNull
@@ -63,10 +74,10 @@ public class TypeVisitor extends PsiTypeVisitor<Type> {
if (psiClass != null) {
String qualifiedName = psiClass.getQualifiedName();
if (qualifiedName != null) {
if (qualifiedName.equals("java.lang.Iterable"))
return new IdentifierImpl("java.lang.Iterable");
if (qualifiedName.equals("java.util.Iterator"))
return new IdentifierImpl("java.util.Iterator");
if (qualifiedName.equals(JAVA_LANG_ITERABLE))
return new IdentifierImpl(JAVA_LANG_ITERABLE);
if (qualifiedName.equals(JAVA_UTIL_ITERATOR))
return new IdentifierImpl(JAVA_UTIL_ITERATOR);
}
}
final String classTypeName = createQualifiedName(classType);
@@ -115,15 +126,15 @@ public class TypeVisitor extends PsiTypeVisitor<Type> {
@NotNull
private static String getClassTypeName(@NotNull PsiClassType classType) {
String canonicalTypeStr = classType.getCanonicalText();
if (canonicalTypeStr.equals("java.lang.Object")) return "Any";
if (canonicalTypeStr.equals("java.lang.Byte")) return "Byte";
if (canonicalTypeStr.equals("java.lang.Character")) return "Char";
if (canonicalTypeStr.equals("java.lang.Double")) return "Double";
if (canonicalTypeStr.equals("java.lang.Float")) return "Float";
if (canonicalTypeStr.equals("java.lang.Integer")) return "Int";
if (canonicalTypeStr.equals("java.lang.Long")) return "Long";
if (canonicalTypeStr.equals("java.lang.Short")) return "Short";
if (canonicalTypeStr.equals("java.lang.Boolean")) return "Boolean";
if (canonicalTypeStr.equals(JAVA_LANG_OBJECT)) return "Any";
if (canonicalTypeStr.equals(JAVA_LANG_BYTE)) return "Byte";
if (canonicalTypeStr.equals(JAVA_LANG_CHARACTER)) return "Char";
if (canonicalTypeStr.equals(JAVA_LANG_DOUBLE)) return "Double";
if (canonicalTypeStr.equals(JAVA_LANG_FLOAT)) return "Float";
if (canonicalTypeStr.equals(JAVA_LANG_INTEGER)) return "Int";
if (canonicalTypeStr.equals(JAVA_LANG_LONG)) return "Long";
if (canonicalTypeStr.equals(JAVA_LANG_SHORT)) return "Short";
if (canonicalTypeStr.equals(JAVA_LANG_BOOLEAN)) return "Boolean";
return classType.getClassName() != null ? classType.getClassName() : classType.getCanonicalText();
}