Commit b15958c557

Vexu <git@vexu.eu>
2020-02-14 22:41:18
fix c tokenizer bug
1 parent 9e1afdc
Changed files (2)
lib/std/c/tokenizer.zig
@@ -616,6 +616,7 @@ pub const Tokenizer = struct {
                 },
                 .BackSlash => switch (c) {
                     '\n' => {
+                        result.start = self.index + 1;
                         state = .Start;
                     },
                     '\r' => {
@@ -631,6 +632,7 @@ pub const Tokenizer = struct {
                 },
                 .BackSlashCr => switch (c) {
                     '\n' => {
+                        result.start = self.index + 1;
                         state = .Start;
                     },
                     else => {
test/translate_c.zig
@@ -3,6 +3,13 @@ const builtin = @import("builtin");
 const Target = @import("std").Target;
 
 pub fn addCases(cases: *tests.TranslateCContext) void {
+    cases.add("macro line continuation",
+        \\#define FOO -\
+        \\BAR
+    , &[_][]const u8{
+        \\pub const FOO = -BAR;
+    });
+
     cases.add("function prototype translated as optional",
         \\typedef void (*fnptr_ty)(void);
         \\typedef __attribute__((cdecl)) void (*fnptr_attr_ty)(void);