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
}
+3
View File
@@ -0,0 +1,3 @@
package test
fun fff(): Int = 1
+3
View File
@@ -0,0 +1,3 @@
package test
fun fff(): Int? = 1
@@ -210,8 +210,8 @@ public class WriteSignatureTest extends TestCaseWithTmpdir {
new ClassReader(classInputStream).accept(visitor,
ClassReader.SKIP_CODE|ClassReader.SKIP_DEBUG|ClassReader.SKIP_FRAMES);
Assert.assertNotNull(visitor.readSignature);
Assert.assertNotNull("method not found: " + className + "::" + methodName, visitor.readSignature);
return visitor.readSignature;
} finally {
Closeables.closeQuietly(classInputStream);