diff options
Diffstat (limited to 'src/main/java')
3 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonBackend.java b/src/main/java/org/zwobble/couscous/backends/python/PythonBackend.java index a6c6772..2a3701e 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PythonBackend.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PythonBackend.java @@ -21,6 +21,7 @@ public class PythonBackend implements Backend { "java.lang.Object", "java.lang.Integer", "java.lang.String", + "java.util.Arrays", "_couscous"); private final Path root; diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java index 6b71684..512030d 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java @@ -23,6 +23,7 @@ import static org.zwobble.couscous.ast.VariableReferenceNode.reference; import static org.zwobble.couscous.ast.WhileNode.whileLoop; import static org.zwobble.couscous.ast.sugar.SwitchCaseNode.switchCase; import static org.zwobble.couscous.frontends.java.JavaTypes.typeOf; +import static org.zwobble.couscous.types.BoundTypeParameter.boundTypeParameter; import static org.zwobble.couscous.util.ExtraLists.*; import static org.zwobble.couscous.util.Fold.foldRight; import static org.zwobble.couscous.util.Tails.tail; @@ -234,7 +235,7 @@ class JavaStatementReader { LocalVariableDeclarationNode iterator = scope.temporaryVariable(iteratorValue); ExpressionNode hasNext = methodCall(reference(iterator), "hasNext", list(), Types.BOOLEAN); - ExpressionNode next = methodCall(reference(iterator), "next", list(), elementType); + ExpressionNode next = methodCall(reference(iterator), "next", list(), boundTypeParameter(JavaTypes.ITERATOR_TYPE_PARAMETER, elementType)); IVariableBinding parameterBinding = parameter.resolveBinding(); WhileNode loop = whileLoop(hasNext, cons( scope.localVariable(parameterBinding.getKey(), parameterBinding.getName(), elementType, next), diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java index 9b634b9..37cee36 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java @@ -17,6 +17,7 @@ import java.util.Set; import static com.google.common.collect.Iterables.transform; import static java.util.Arrays.asList; import static org.zwobble.couscous.types.ParameterizedType.parameterizedType; +import static org.zwobble.couscous.types.TypeParameter.typeParameter; import static org.zwobble.couscous.types.Types.erasure; import static org.zwobble.couscous.util.Casts.tryCast; import static org.zwobble.couscous.util.ExtraLists.eagerMap; @@ -142,7 +143,10 @@ public class JavaTypes { return parameterizedType(ScalarType.of("java.lang.Iterable"), list(elementType)); } + private static final ScalarType RAW_ITERATOR = ScalarType.of("java.util.Iterator"); + public static TypeParameter ITERATOR_TYPE_PARAMETER = typeParameter(Identifiers.type(Identifiers.TOP, RAW_ITERATOR.getQualifiedName()), "T"); + public static Type iterator(Type elementType) { - return parameterizedType(ScalarType.of("java.util.Iterator"), list(elementType)); + return parameterizedType(RAW_ITERATOR, list(elementType)); } } |
