authorgravatar for timonkruiper@gmail.comTimon Kruiper <timonkruiper@gmail.com> 2019-06-14 17:05:16+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-23 14:51:30-04:00
log59850c1ce12a325c8602d9201ab4a62ce12865bc
tree98eb155a0df61675ce55d20eb5ef43167a1cd7a6
parent57aa8997bd0b651d56a22efee46598fff167253d

Fixed an integer overflow in zig fmt and added testcase


2 files changed, 33 insertions(+), 1 deletions(-)

std/zig/parser_test.zig+26
...@@ -2267,6 +2267,32 @@ test "zig fmt: file ends with struct field" {...@@ -2267,6 +2267,32 @@ test "zig fmt: file ends with struct field" {
2267 );2267 );
2268}2268}
22692269
2270test "zig fmt: comments at several places in struct init" {
2271 try testTransform(
2272 \\var bar = Bar{
2273 \\ .x = 10, // test
2274 \\ .y = "test"
2275 \\ // test
2276 \\};
2277 \\
2278 ,
2279 \\var bar = Bar{
2280 \\ .x = 10, // test
2281 \\ .y = "test", // test
2282 \\};
2283 \\
2284 );
2285
2286 try testCanonical(
2287 \\var bar = Bar{ // test
2288 \\ .x = 10, // test
2289 \\ .y = "test",
2290 \\ // test
2291 \\};
2292 \\
2293 );
2294}
2295
2270const std = @import("std");2296const std = @import("std");
2271const mem = std.mem;2297const mem = std.mem;
2272const warn = std.debug.warn;2298const warn = std.debug.warn;
std/zig/render.zig+7-1
...@@ -2020,7 +2020,13 @@ fn renderTokenOffset(...@@ -2020,7 +2020,13 @@ fn renderTokenOffset(
20202020
2021 const after_comment_token = tree.tokens.at(token_index + offset);2021 const after_comment_token = tree.tokens.at(token_index + offset);
2022 const next_line_indent = switch (after_comment_token.id) {2022 const next_line_indent = switch (after_comment_token.id) {
2023 Token.Id.RParen, Token.Id.RBrace, Token.Id.RBracket => indent - indent_delta,2023 Token.Id.RParen, Token.Id.RBrace, Token.Id.RBracket => blk: {
2024 if (indent > indent_delta) {
2025 break :blk indent - indent_delta;
2026 } else {
2027 break :blk 0;
2028 }
2029 },
2024 else => indent,2030 else => indent,
2025 };2031 };
2026 try stream.writeByteNTimes(' ', next_line_indent);2032 try stream.writeByteNTimes(' ', next_line_indent);