From 7d734def7a18de00749181457423ad09203c0da5 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 27 Mar 2017 23:21:52 +0100 Subject: Escape char literals --- .../java/org/zwobble/couscous/backends/SourceCodeWriter.java | 12 ++++++++++-- .../tests/backends/csharp/CsharpSerializerTests.java | 7 +++++++ 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'src') 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 @@ -62,6 +62,13 @@ public class CsharpSerializerTests { assertEquals("'\\''", serialize(literal('\''))); } + @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")); -- cgit v1.2.3