aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java12
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java7
2 files changed, 17 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
index b39fbc0..6d26e8b 100644
--- a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
+++ b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
@@ -40,9 +40,17 @@ public class SourceCodeWriter {
public void writeChar(char value) {
builder.append("'");
if (value == '\'') {
- builder.append("\\");
+ builder.append("\\'");
+ } else if (value == '\n') {
+ builder.append("\\n");
+ } else if (value == '\r') {
+ builder.append("\\r");
+ } else if (value == '\t') {
+ builder.append("\\t");
+ } else {
+ builder.append(value);
}
- builder.append(value).append("'");
+ builder.append("'");
}
public void writeStringLiteral(String value) {
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 ca15ba9..dd1a051 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
@@ -63,6 +63,13 @@ public class CsharpSerializerTests {
}
@Test
+ public void charLiteralsAreEscaped() {
+ assertEquals("'\\n'", serialize(literal('\n')));
+ assertEquals("'\\r'", serialize(literal('\r')));
+ assertEquals("'\\t'", serialize(literal('\t')));
+ }
+
+ @Test
public void stringLiteralsUseDoubleQuotes() {
String output = serialize(literal("blah"));
assertEquals("\"blah\"", output);