From d1e7efbf5adab7516a19fd35c9fa9a3fdca2e769 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 1 Apr 2016 10:50:28 +0100 Subject: Mangle reserved identifiers in C# backend --- .../tests/backends/csharp/CsharpSerializerTests.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/test/java/org/zwobble') 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 89cb9c1..b16c6b5 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 @@ -62,6 +62,12 @@ public class CsharpSerializerTests { assertEquals("x", output); } + @Test + public void identifierIsEscapedWithAtSymbolIfItsAReservedWord() { + String output = serialize(reference(var(TestIds.ANY_ID, "internal", ScalarType.of("X")))); + assertEquals("@internal", output); + } + @Test public void thisReferenceUsesThisKeyword() { String output = serialize(thisReference(ScalarType.of("X"))); @@ -191,6 +197,16 @@ public class CsharpSerializerTests { @Test public void localVariableDeclarationCanDeclareVariable() { + String output = serialize(localVariableDeclaration( + TestIds.ANY_ID, + "x", + ScalarType.of("X"), + literal("[value]"))); + assertEquals("X x = \"[value]\";\n", output); + } + + @Test + public void builtinTypesAreNotMangled() { String output = serialize(localVariableDeclaration( TestIds.ANY_ID, "x", @@ -384,14 +400,14 @@ public class CsharpSerializerTests { @Test public void interfaceWithMethod() { - MethodNode method = MethodNode.builder("get").isAbstract().returns(Types.INT).build(); + MethodNode method = MethodNode.builder("get").isAbstract().returns(ScalarType.of("X")).build(); Node node = new ClassNodeBuilder(ScalarType.of("com.example.Example")) .method(method) .buildInterface(); String output = serialize(node); - assertEquals("namespace com.example {\n internal interface Example {\n int get();\n }\n}\n", output); + assertEquals("namespace com.example {\n internal interface Example {\n X get();\n }\n}\n", output); } private String serialize(Node node) { -- cgit v1.2.3