diff options
3 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/StatementBlockNode.java b/src/main/java/org/zwobble/couscous/ast/StatementBlockNode.java index 0c24295..79b092a 100644 --- a/src/main/java/org/zwobble/couscous/ast/StatementBlockNode.java +++ b/src/main/java/org/zwobble/couscous/ast/StatementBlockNode.java @@ -11,6 +11,10 @@ public class StatementBlockNode implements StatementNode { this.statements = statements; } + public List<StatementNode> getStatements() { + return statements; + } + @Override public int type() { return NodeTypes.STATEMENT_BLOCK; diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java index 88ea37c..3e21f1b 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -426,6 +426,12 @@ public class CsharpSerializer { }); } + public void visit(StatementBlockNode block) { + writer.writeStatement(() -> { + writeBlock(block.getStatements()); + }); + } + public void visit(TryNode tryStatement) { writer.writeStatement(() -> { writer.writeKeyword("try"); diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java index e3dc9ba..e5ddb02 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java @@ -339,6 +339,15 @@ public class CsharpSerializerTests { } @Test + public void statementBlockPrintsStatementsSurroundedByCurlyBraces() { + String output = serialize(new StatementBlockNode(list( + returns(literal(1)) + ))); + // TODO: remove leading space + assertEquals(" {\n return 1;\n}\n", output); + } + + @Test public void tryStatementCanHaveBodyAndMultipleHandlers() { VariableDeclaration varX = var(TestIds.variable("x"), "x", ScalarType.of("X")); VariableDeclaration varY = var(TestIds.variable("y"), "y", ScalarType.of("Y")); |
