From 2c96d40d14215b600bc1255c56126d67eff48625 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 1 Apr 2016 10:22:50 +0100 Subject: Generate nicer else if branches in C# --- .../couscous/backends/csharp/CsharpSerializer.java | 27 ++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'src/main/java/org') 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 63bb283..d33dafa 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -226,19 +226,28 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(IfStatementNode ifStatement) { writer.writeStatement(() -> { - writer.writeKeyword("if"); - writer.writeSpace(); - writer.writeSymbol("("); - write(ifStatement.getCondition()); - writer.writeSymbol(")"); + writeIfContent(ifStatement); + }); + } + + private void writeIfContent(IfStatementNode ifStatement) { + writer.writeKeyword("if"); + writer.writeSpace(); + writer.writeSymbol("("); + write(ifStatement.getCondition()); + writer.writeSymbol(")"); - writeBlock(ifStatement.getTrueBranch()); + writeBlock(ifStatement.getTrueBranch()); - writer.writeSpace(); - writer.writeKeyword("else"); + writer.writeSpace(); + writer.writeKeyword("else"); + if (ifStatement.getFalseBranch().size() == 1 && ifStatement.getFalseBranch().get(0) instanceof IfStatementNode) { + writer.writeSpace(); + writeIfContent((IfStatementNode) ifStatement.getFalseBranch().get(0)); + } else { writeBlock(ifStatement.getFalseBranch()); - }); + } } @Override -- cgit v1.2.3