authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2019-06-27 02:00:30+03:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2019-06-27 02:00:30+03:00
logde369de312584c64ec162972ba14e95b7a17e531
tree7b8dc8634de72200b9c06498b4c06b615c8decc0
parent01ff0d4d629c3800ebac68edfd91edb570aeaa59
signaturelock-open Commit is signed but in an unrecognized format.

fix comments getting removed after empty comments


2 files changed, 32 insertions(+), 9 deletions(-)

std/zig/parser_test.zig+14
...@@ -2246,6 +2246,20 @@ test "zig fmt: if type expr" {...@@ -2246,6 +2246,20 @@ test "zig fmt: if type expr" {
2246 );2246 );
2247}2247}
22482248
2249test "zig fmt: comment after empty comment" {
2250 try testTransform(
2251 \\const x = true; //
2252 \\//
2253 \\//
2254 \\//a
2255 \\
2256 ,
2257 \\const x = true;
2258 \\//a
2259 \\
2260 );
2261}
2262
2249const std = @import("std");2263const std = @import("std");
2250const mem = std.mem;2264const mem = std.mem;
2251const warn = std.debug.warn;2265const warn = std.debug.warn;
std/zig/render.zig+18-9
...@@ -1941,15 +1941,24 @@ fn renderTokenOffset(...@@ -1941,15 +1941,24 @@ fn renderTokenOffset(
1941 }1941 }
1942 }1942 }
19431943
1944 const comment_is_empty = mem.trimRight(u8, tree.tokenSlicePtr(next_token), " ").len == 2;1944 while (true) {
1945 if (comment_is_empty) {1945 const comment_is_empty = mem.trimRight(u8, tree.tokenSlicePtr(next_token), " ").len == 2;
1946 switch (space) {1946 if (comment_is_empty) {
1947 Space.Newline => {1947 switch (space) {
1948 try stream.writeByte('\n');1948 Space.Newline => {
1949 start_col.* = 0;1949 offset += 1;
1950 return;1950 token = next_token;
1951 },1951 next_token = tree.tokens.at(token_index + offset);
1952 else => {},1952 if (next_token.id != .LineComment) {
1953 try stream.writeByte('\n');
1954 start_col.* = 0;
1955 return;
1956 }
1957 },
1958 else => break,
1959 }
1960 } else {
1961 break;
1953 }1962 }
1954 }1963 }
19551964