diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-08-29 16:10:23 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-08-29 16:10:23 +0100 |
| commit | 1a39bb268c68bc2c2452263ca539297d9905de8c (patch) | |
| tree | 940a92f686399766a826db95c637a7d259fcb7ea /src/main/java/org/zwobble/couscous/backends/csharp | |
| parent | 1d80de2bb51d053bf072c991e5c8788a3e64403b (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.java | 7 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java | 26 |
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 ); } |
