properly read/write int?
This commit is contained in:
+18
@@ -24,6 +24,7 @@ public class JavaTypeTransformer {
|
|||||||
private final JetStandardLibrary standardLibrary;
|
private final JetStandardLibrary standardLibrary;
|
||||||
private Map<String, JetType> primitiveTypesMap;
|
private Map<String, JetType> primitiveTypesMap;
|
||||||
private Map<String, JetType> classTypesMap;
|
private Map<String, JetType> classTypesMap;
|
||||||
|
private Map<String, ClassDescriptor> classDescriptorMap;
|
||||||
|
|
||||||
public JavaTypeTransformer(JavaSemanticServices javaSemanticServices, JetStandardLibrary standardLibrary, JavaDescriptorResolver resolver) {
|
public JavaTypeTransformer(JavaSemanticServices javaSemanticServices, JetStandardLibrary standardLibrary, JavaDescriptorResolver resolver) {
|
||||||
this.javaSemanticServices = javaSemanticServices;
|
this.javaSemanticServices = javaSemanticServices;
|
||||||
@@ -199,4 +200,21 @@ public class JavaTypeTransformer {
|
|||||||
}
|
}
|
||||||
return classTypesMap;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-1
@@ -96,7 +96,13 @@ public abstract class JetTypeJetSignatureReader extends JetSignatureExceptionsAd
|
|||||||
@Override
|
@Override
|
||||||
public void visitClassType(String name, boolean nullable) {
|
public void visitClassType(String name, boolean nullable) {
|
||||||
String ourName = name.replace('/', '.');
|
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) {
|
if (this.classDescriptor == null) {
|
||||||
throw new IllegalStateException("class not found by name: " + ourName); // TODO: wrong exception
|
throw new IllegalStateException("class not found by name: " + ourName); // TODO: wrong exception
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
fun fff(): Int = 1
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
fun fff(): Int? = 1
|
||||||
@@ -210,8 +210,8 @@ public class WriteSignatureTest extends TestCaseWithTmpdir {
|
|||||||
new ClassReader(classInputStream).accept(visitor,
|
new ClassReader(classInputStream).accept(visitor,
|
||||||
ClassReader.SKIP_CODE|ClassReader.SKIP_DEBUG|ClassReader.SKIP_FRAMES);
|
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;
|
return visitor.readSignature;
|
||||||
} finally {
|
} finally {
|
||||||
Closeables.closeQuietly(classInputStream);
|
Closeables.closeQuietly(classInputStream);
|
||||||
|
|||||||
Reference in New Issue
Block a user