diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-06 12:58:13 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-06 12:58:13 +0000 |
| commit | 5493e26227c374fe6a4c26eab9e3cf3018700dd7 (patch) | |
| tree | 42b12b5e15768a040c07cab50067e41b298b6636 | |
| parent | 552beeaab859156ce4aea3e9a27783ec69b965c3 (diff) | |
Implement local variable declarations in C# backend
3 files changed, 21 insertions, 6 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 680e93f..b16f684 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -192,7 +192,16 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(LocalVariableDeclarationNode localVariableDeclaration) { - throw new UnsupportedOperationException(); + writer.writeStatement(() -> { + writeTypeReference(localVariableDeclaration.getType()); + writer.writeSpace(); + writer.writeIdentifier(localVariableDeclaration.getName()); + writer.writeSpace(); + writer.writeSymbol("="); + writer.writeSpace(); + write(localVariableDeclaration.getInitialValue()); + writer.writeSymbol(";"); + }); } @Override diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerMethodTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerMethodTests.java index fcacda0..6a3424e 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerMethodTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerMethodTests.java @@ -13,11 +13,6 @@ public class CsharpCompilerMethodTests extends BackendMethodTests { @Ignore @Test - public void canDeclareVariable() { - } - - @Ignore - @Test public void canDeclareVariableAndThenAssignValues() { } 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 22da6d2..cc686e5 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 @@ -14,6 +14,7 @@ import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess; import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg; import static org.zwobble.couscous.ast.IfStatementNode.ifStatement; import static org.zwobble.couscous.ast.LiteralNode.literal; +import static org.zwobble.couscous.ast.LocalVariableDeclarationNode.localVariableDeclaration; import static org.zwobble.couscous.ast.MethodCallNode.methodCall; import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall; import static org.zwobble.couscous.ast.Operations.not; @@ -159,6 +160,16 @@ public class CsharpSerializerTests { } @Test + public void localVariableDeclarationCanDeclareVariable() { + String output = serialize(localVariableDeclaration( + TestIds.ANY_ID, + "x", + TypeName.of("string"), + literal("[value]"))); + assertEquals("string x = \"[value]\";\n", output); + } + + @Test public void ifElseStatementPrintsBothBranches() { String output = serialize(ifStatement( literal(true), |
