added mapping for Iterable

jet.Iterable -> java.lang.Iterable
 jet.Iterator -> java.util.Iterator
 in generating java byte code
This commit is contained in:
Svetlana Isakova
2012-08-14 14:53:45 +04:00
parent 3d1f71b355
commit 7f9c332326
2 changed files with 6 additions and 2 deletions
@@ -68,6 +68,8 @@ public class JetTypeMapper {
public static final Type JL_ENUM_TYPE = Type.getObjectType("java/lang/Enum");
public static final Type JL_CHAR_SEQUENCE_TYPE = Type.getObjectType("java/lang/CharSequence");
private static final Type JL_COMPARABLE_TYPE = Type.getObjectType("java/lang/Comparable");
private static final Type JL_ITERABLE_TYPE = Type.getObjectType("java/lang/Iterable");
private static final Type JL_ITERATOR_TYPE = Type.getObjectType("java/util/Iterator");
public static final Type JL_CLASS_TYPE = Type.getObjectType("java/lang/Class");
public static final Type JL_BOOLEAN_TYPE = Type.getObjectType("java/lang/Boolean");
@@ -148,6 +150,8 @@ public class JetTypeMapper {
register(JetStandardLibraryNames.THROWABLE, TYPE_THROWABLE, TYPE_THROWABLE);
register(JetStandardLibraryNames.COMPARABLE, JL_COMPARABLE_TYPE, JL_COMPARABLE_TYPE);
register(JetStandardLibraryNames.ENUM, JL_ENUM_TYPE, JL_ENUM_TYPE);
register(JetStandardLibraryNames.ITERABLE, JL_ITERABLE_TYPE, JL_ITERABLE_TYPE);
register(JetStandardLibraryNames.ITERATOR, JL_ITERATOR_TYPE, JL_ITERATOR_TYPE);
for (JvmPrimitiveType jvmPrimitiveType : JvmPrimitiveType.values()) {
PrimitiveType primitiveType = jvmPrimitiveType.getPrimitiveType();
@@ -444,7 +448,7 @@ public class JetTypeMapper {
// TODO: enable and fix tests
//throw new IllegalStateException("must not map known type to IMPL when not compiling builtins: " + jetType);
}
// fall through
return mapKnownAsmType(jetType, known, signatureVisitor);
}
else {
throw new IllegalStateException("unknown kind: " + kind);
@@ -57,7 +57,7 @@ public class ArrayIterator implements IntrinsicMethod {
assert funDescriptor != null;
ClassDescriptor containingDeclaration = (ClassDescriptor) funDescriptor.getContainingDeclaration().getOriginal();
if (JetStandardLibraryNames.ARRAY.is(containingDeclaration)) {
v.invokestatic("jet/runtime/ArrayIterator", "iterator", "([Ljava/lang/Object;)Ljet/Iterator;");
v.invokestatic("jet/runtime/ArrayIterator", "iterator", "([Ljava/lang/Object;)Ljava/util/Iterator;");
return StackValue.onStack(JetTypeMapper.TYPE_ITERATOR);
}
else {