diff options
| author | Michael Williamson <mike@zwobble.org> | 2017-03-27 23:21:52 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2017-03-27 23:21:52 +0100 |
| commit | 7d734def7a18de00749181457423ad09203c0da5 (patch) | |
| tree | 161ebfacfabb4537bce254dc79751ba5df260683 /src | |
| parent | db0da7284cc5813a14e4582fd67fb1e0b2729555 (diff) | |
Escape char literals
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java | 12 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java | 7 |
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); |
