Delete JvmClassName.getAsmType()

This commit is contained in:
Alexander Udalov
2013-10-02 19:48:48 +04:00
parent 521496b188
commit fc78971aea
6 changed files with 22 additions and 27 deletions
@@ -90,7 +90,7 @@ public class AsmUtil {
for (JvmPrimitiveType primitiveType : JvmPrimitiveType.values()) {
Type asmType = asmTypeForPrimitive(primitiveType);
typeBySortBuilder.put(asmType.getSort(), primitiveType);
typeByWrapperBuilder.put(primitiveType.getWrapper().getAsmType(), asmType);
typeByWrapperBuilder.put(asmTypeByFqNameWithoutInnerClasses(primitiveType.getWrapperFqName()), asmType);
}
primitiveTypeByAsmSort = typeBySortBuilder.build();
primitiveTypeByBoxedType = typeByWrapperBuilder.build();
@@ -102,7 +102,7 @@ public class AsmUtil {
@NotNull
public static Type boxType(@NotNull Type type) {
JvmPrimitiveType jvmPrimitiveType = primitiveTypeByAsmSort.get(type.getSort());
return jvmPrimitiveType != null ? jvmPrimitiveType.getWrapper().getAsmType() : type;
return jvmPrimitiveType != null ? asmTypeByFqNameWithoutInnerClasses(jvmPrimitiveType.getWrapperFqName()) : type;
}
@NotNull
@@ -30,7 +30,6 @@ import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants;
import org.jetbrains.jet.lang.resolve.java.JvmPrimitiveType;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
import org.jetbrains.jet.lexer.JetTokens;
@@ -252,11 +251,8 @@ public abstract class StackValue {
}
}
else if (fromType.getSort() == Type.OBJECT) {
if (toType.getSort() == Type.BOOLEAN) {
coerce(fromType, JvmPrimitiveType.BOOLEAN.getWrapper().getAsmType(), v);
}
else if (toType.getSort() == Type.CHAR) {
coerce(fromType, JvmPrimitiveType.CHAR.getWrapper().getAsmType(), v);
if (toType.getSort() == Type.BOOLEAN || toType.getSort() == Type.CHAR) {
coerce(fromType, boxType(toType), v);
}
else {
coerce(fromType, getType(Number.class), v);
@@ -23,6 +23,7 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants;
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
import org.jetbrains.jet.lang.resolve.java.JvmPrimitiveType;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
@@ -62,7 +63,9 @@ public class KotlinToJavaTypesMap extends JavaToKotlinClassMapBuilder {
FqName fqName = builtInsFqName.child(primitiveType.getTypeName());
register(fqName, asmType);
registerNullable(fqName, jvmPrimitiveType.getWrapper().getAsmType());
JvmClassName wrapperName = JvmClassName.byFqNameWithoutInnerClasses(jvmPrimitiveType.getWrapperFqName());
registerNullable(fqName, Type.getObjectType(wrapperName.getInternalName()));
register(builtInsFqName.child(primitiveType.getArrayTypeName()), Type.getType("[" + asmType.getDescriptor()));
}
@@ -18,7 +18,6 @@ package org.jetbrains.jet.lang.resolve.java;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.asm4.Type;
import org.jetbrains.jet.lang.resolve.name.FqName;
public class JvmClassName {
@@ -73,7 +72,6 @@ public class JvmClassName {
private final String internalName;
private FqName fqName;
private Type asmType;
private JvmClassName(@NotNull String internalName) {
this.internalName = internalName;
@@ -92,14 +90,6 @@ public class JvmClassName {
return internalName;
}
@NotNull
public Type getAsmType() {
if (asmType == null) {
asmType = Type.getType("L" + internalName + ';');
}
return asmType;
}
@Override
public String toString() {
return getInternalName();
@@ -16,6 +16,8 @@
package org.jetbrains.jet.lang.resolve.java;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.types.lang.PrimitiveType;
public enum JvmPrimitiveType {
@@ -31,23 +33,26 @@ public enum JvmPrimitiveType {
private final PrimitiveType primitiveType;
private final String name;
private final JvmClassName wrapper;
private final FqName wrapperFqName;
private JvmPrimitiveType(PrimitiveType primitiveType, String name, String wrapperClassName) {
private JvmPrimitiveType(@NotNull PrimitiveType primitiveType, @NotNull String name, @NotNull String wrapperClassName) {
this.primitiveType = primitiveType;
this.name = name;
this.wrapper = JvmClassName.byFqNameWithoutInnerClasses(wrapperClassName);
this.wrapperFqName = new FqName(wrapperClassName);
}
@NotNull
public PrimitiveType getPrimitiveType() {
return primitiveType;
}
@NotNull
public String getName() {
return name;
}
public JvmClassName getWrapper() {
return wrapper;
@NotNull
public FqName getWrapperFqName() {
return wrapperFqName;
}
}
@@ -69,11 +69,12 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements
for (JvmPrimitiveType jvmPrimitiveType : JvmPrimitiveType.values()) {
PrimitiveType primitiveType = jvmPrimitiveType.getPrimitiveType();
String name = jvmPrimitiveType.getName();
register(jvmPrimitiveType.getWrapper().getFqName(), builtIns.getPrimitiveClassDescriptor(primitiveType));
FqName wrapperFqName = jvmPrimitiveType.getWrapperFqName();
register(wrapperFqName, builtIns.getPrimitiveClassDescriptor(primitiveType));
primitiveTypesMap.put(name, builtIns.getPrimitiveJetType(primitiveType));
primitiveTypesMap.put("[" + name, builtIns.getPrimitiveArrayJetType(primitiveType));
primitiveTypesMap.put(jvmPrimitiveType.getWrapper().getFqName().asString(), builtIns.getNullablePrimitiveJetType(
primitiveType));
primitiveTypesMap.put(wrapperFqName.asString(), builtIns.getNullablePrimitiveJetType(primitiveType));
}
primitiveTypesMap.put("void", KotlinBuiltIns.getInstance().getUnitType());
}