aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuperAuguste <auguste.rame@gmail.com>2020-04-05 19:06:43 -0400
committerSuperAuguste <auguste.rame@gmail.com>2020-04-05 19:06:43 -0400
commit6106cf44197393a3ffa6bab9da0757ee4cecd311 (patch)
tree88ee69a0010b90a629adcd66fcda90c4025c973a
parent027e2a16734d5a1ac884474ed688ecea9a785e73 (diff)
downloadzig-6106cf44197393a3ffa6bab9da0757ee4cecd311.tar.gz
zig-6106cf44197393a3ffa6bab9da0757ee4cecd311.zip
fixes
-rw-r--r--src-self-hosted/translate_c.zig5
-rw-r--r--test/translate_c.zig6
2 files changed, 7 insertions, 4 deletions
diff --git a/src-self-hosted/translate_c.zig b/src-self-hosted/translate_c.zig
index d18f9bb5e0..124a142f94 100644
--- a/src-self-hosted/translate_c.zig
+++ b/src-self-hosted/translate_c.zig
@@ -5387,10 +5387,7 @@ fn parseCPrimaryExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8,
switch (tok.id) {
.CharLiteral => {
const first_tok = it.list.at(0);
- if (
- (source[tok.start+1] == '\\' and tok.end - tok.start == 4)
- or (source[tok.start+1] != '\\' and tok.end - tok.start == 3)
- ) {
+ if (source[tok.start] != '\'' or source[tok.start + 1] == '\\' or tok.end - tok.start == 3) {
const token = try appendToken(c, .CharLiteral, try zigifyEscapeSequences(c, source[tok.start..tok.end], source[first_tok.start..first_tok.end], source_loc));
const node = try c.a().create(ast.Node.CharLiteral);
node.* = .{
diff --git a/test/translate_c.zig b/test/translate_c.zig
index 8c84526a49..b850cc4a09 100644
--- a/test/translate_c.zig
+++ b/test/translate_c.zig
@@ -2847,4 +2847,10 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
, &[_][]const u8{
\\pub const FOO = "a" ++ ("b" ++ "c");
});
+
+ cases.add("multibyte character literals",
+ \\#define FOO 'abcd'
+ , &[_][]const u8{
+ \\pub const FOO = 0x61626364;
+ });
}