aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/csharp
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-08-29 16:10:23 +0100
committerMichael Williamson <mike@zwobble.org>2016-08-29 16:10:23 +0100
commit1a39bb268c68bc2c2452263ca539297d9905de8c (patch)
tree940a92f686399766a826db95c637a7d259fcb7ea /src/main/java/org/zwobble/couscous/backends/csharp
parent1d80de2bb51d053bf072c991e5c8788a3e64403b (diff)
Apply node transformers across lists of types
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/csharp')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java7
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java26
2 files changed, 16 insertions, 17 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
index a086fe2..d97b23d 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
@@ -25,11 +25,8 @@ public class CsharpBackend implements Backend {
Files.write(
outputFilePath,
transform(
- classes,
- classNode -> compileClass(classNode)));
+ CsharpCodeGenerator.generateCode(classes, namespace),
+ CsharpSerializer::serialize));
}
- private String compileClass(TypeNode classNode) {
- return CsharpSerializer.serialize(CsharpCodeGenerator.generateCode(classNode, namespace));
- }
}
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 3fccce9..e576102 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java
@@ -1,7 +1,7 @@
package org.zwobble.couscous.backends.csharp;
import com.google.common.collect.ImmutableMap;
-import org.zwobble.couscous.ast.Node;
+import org.zwobble.couscous.ast.TypeNode;
import org.zwobble.couscous.ast.visitors.NodeTransformer;
import org.zwobble.couscous.backends.csharp.primitives.CsharpPrimitiveMethods;
import org.zwobble.couscous.backends.naming.Naming;
@@ -9,9 +9,11 @@ import org.zwobble.couscous.transforms.DesugarForEachToFor;
import org.zwobble.couscous.transforms.DesugarForToWhile;
import org.zwobble.couscous.types.*;
+import java.util.List;
import java.util.Map;
import static org.zwobble.couscous.util.ExtraLists.eagerMap;
+import static org.zwobble.couscous.util.ExtraLists.list;
public class CsharpCodeGenerator {
public static final Naming NAMING = Naming.noMangling();
@@ -31,8 +33,8 @@ public class CsharpCodeGenerator {
private final String namespace;
private final NodeTransformer nodeTransformer;
- public static Node generateCode(Node node, String namespace) {
- return new CsharpCodeGenerator(NAMING, namespace).generateCode(node);
+ public static List<TypeNode> generateCode(List<TypeNode> types, String namespace) {
+ return new CsharpCodeGenerator(NAMING, namespace).generateCode(types);
}
private CsharpCodeGenerator(Naming naming, String namespace) {
@@ -44,15 +46,15 @@ public class CsharpCodeGenerator {
.build();
}
- private Node generateCode(Node node) {
- return nodeTransformer.transform(
- CsharpPrimitiveMethods.TRANSFORMER.transform(
- DesugarForToWhile.transformer().transform(
- DesugarForEachToFor.transformer().transform(
- node
- )
- )
- )
+ private List<TypeNode> generateCode(List<TypeNode> types) {
+ return NodeTransformer.applyAll(
+ list(
+ DesugarForEachToFor.transformer(),
+ DesugarForToWhile.transformer(),
+ CsharpPrimitiveMethods.TRANSFORMER,
+ nodeTransformer
+ ),
+ types
);
}