aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-07-31 18:06:33 +0100
committerMichael Williamson <mike@zwobble.org>2016-07-31 18:06:33 +0100
commit1b0bd2dd2eac9883d81d9e2ccb0eecdb50add59c (patch)
tree07aa3ae827d79991f0fc62193d584fec399a651a /src/main/java/org/zwobble/couscous/backends
parent879f53add0eb030ba6eee502d11b919d9ae25997 (diff)
Read for-each as sugared statements
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java9
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java4
2 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java
index 75a23ec..f542625 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java
@@ -5,6 +5,7 @@ import org.zwobble.couscous.ast.Node;
import org.zwobble.couscous.ast.visitors.NodeTransformer;
import org.zwobble.couscous.backends.csharp.primitives.CsharpPrimitiveMethods;
import org.zwobble.couscous.backends.naming.Naming;
+import org.zwobble.couscous.transforms.DesugarForEachToWhile;
import org.zwobble.couscous.types.*;
import java.util.Map;
@@ -42,7 +43,13 @@ public class CsharpCodeGenerator {
}
private Node generateCode(Node node) {
- return nodeTransformer.transform(CsharpPrimitiveMethods.TRANSFORMER.transform(node));
+ return nodeTransformer.transform(
+ CsharpPrimitiveMethods.TRANSFORMER.transform(
+ DesugarForEachToWhile.transformer().transform(
+ node
+ )
+ )
+ );
}
private Type transformType(Type type) {
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
index 84ffdbd..f0f2e00 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
@@ -10,6 +10,7 @@ import org.zwobble.couscous.ast.visitors.DynamicNodeMapper;
import org.zwobble.couscous.ast.visitors.NodeTransformer;
import org.zwobble.couscous.backends.naming.Names;
import org.zwobble.couscous.backends.python.ast.*;
+import org.zwobble.couscous.transforms.DesugarForEachToWhile;
import org.zwobble.couscous.transforms.DesugarSwitchToIfElse;
import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.types.Type;
@@ -60,7 +61,8 @@ import static org.zwobble.couscous.util.ExtraLists.*;
public class PythonCodeGenerator {
public static PythonModuleNode generateCode(TypeNode sugaredTypeNode) {
NodeTransformer switchTransformer = DesugarSwitchToIfElse.transformer();
- TypeNode typeNode = switchTransformer.transformTypeDeclaration(sugaredTypeNode);
+ NodeTransformer forEachTransformer = DesugarForEachToWhile.transformer();
+ TypeNode typeNode = forEachTransformer.transformTypeDeclaration(switchTransformer.transformTypeDeclaration(sugaredTypeNode));
Iterator<PythonImportNode> imports = generateImports(typeNode).iterator();