diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-01 10:22:50 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-01 10:22:50 +0100 |
| commit | 2c96d40d14215b600bc1255c56126d67eff48625 (patch) | |
| tree | b3372e46690499c8f798534cbe9997bf09b942ce /src/main/java/org/zwobble | |
| parent | 9ff78407129e7a1fbc96848ca09a5f28cf7080ed (diff) | |
Generate nicer else if branches in C#
Diffstat (limited to 'src/main/java/org/zwobble')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 27 |
1 files changed, 18 insertions, 9 deletions
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 |
