Commit 6106cf4419

SuperAuguste <auguste.rame@gmail.com>
2020-04-06 01:06:43
fixes
1 parent 027e2a1
Changed files (2)
src-self-hosted
test
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.* = .{
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;
+    });
 }