properly read/write int?

This commit is contained in:
Stepan Koltsov
2012-01-06 23:21:35 +04:00
parent 2338af30a0
commit 7ebf1ad433
5 changed files with 33 additions and 3 deletions
@@ -24,6 +24,7 @@ public class JavaTypeTransformer {
private final JetStandardLibrary standardLibrary;
private Map<String, JetType> primitiveTypesMap;
private Map<String, JetType> classTypesMap;
private Map<String, ClassDescriptor> classDescriptorMap;
public JavaTypeTransformer(JavaSemanticServices javaSemanticServices, JetStandardLibrary standardLibrary, JavaDescriptorResolver resolver) {
this.javaSemanticServices = javaSemanticServices;
@@ -199,4 +200,21 @@ public class JavaTypeTransformer {
}
return classTypesMap;
}
public Map<String, ClassDescriptor> getPrimitiveWrappersClassDescriptorMap() {
if (classDescriptorMap == null) {
classDescriptorMap = new HashMap<String, ClassDescriptor>();
classDescriptorMap.put("java.lang.Byte", standardLibrary.getByte());
classDescriptorMap.put("java.lang.Short", standardLibrary.getShort());
classDescriptorMap.put("java.lang.Character", standardLibrary.getChar());
classDescriptorMap.put("java.lang.Integer", standardLibrary.getInt());
classDescriptorMap.put("java.lang.Long", standardLibrary.getLong());
classDescriptorMap.put("java.lang.Float", standardLibrary.getFloat());
classDescriptorMap.put("java.lang.Double", standardLibrary.getDouble());
classDescriptorMap.put("java.lang.Boolean", standardLibrary.getBoolean());
//classDescriptorMap.put("java.lang.Object", standardLibrary.get
classDescriptorMap.put("java.lang.String", standardLibrary.getString());
}
return classDescriptorMap;
}
}
@@ -96,7 +96,13 @@ public abstract class JetTypeJetSignatureReader extends JetSignatureExceptionsAd
@Override
public void visitClassType(String name, boolean nullable) {
String ourName = name.replace('/', '.');
this.classDescriptor = javaDescriptorResolver.resolveClass(ourName);
this.classDescriptor = this.javaSemanticServices.getTypeTransformer().getPrimitiveWrappersClassDescriptorMap().get(ourName);
if (this.classDescriptor == null) {
this.classDescriptor = javaDescriptorResolver.resolveClass(ourName);
}
if (this.classDescriptor == null) {
throw new IllegalStateException("class not found by name: " + ourName); // TODO: wrong exception
}