zig fmt: Special case un-indent comma after multiline string in param list

This commit is contained in:
Lachlan Easton 2020-09-15 18:49:59 +10:00
parent 1aacedf6e1
commit 4496a6c9cc
2 changed files with 16 additions and 2 deletions

View File

@ -3389,6 +3389,13 @@ test "zig fmt: Indent comma correctly after multiline string literals in arg lis
\\ g.GtkMessageType.GTK_MESSAGE_WARNING,
\\ null,
\\ );
\\
\\ z.display_message_dialog(*const [323:0]u8,
\\ \\Message Text
\\ \\------------
\\ \\xxxxxxxxxxxx
\\ \\xxxxxxxxxxxx
\\ , g.GtkMessageType.GTK_MESSAGE_WARNING, null);
\\}
\\
);

View File

@ -1071,6 +1071,13 @@ fn renderExpression(
if (i + 1 < params.len) {
const next_node = params[i + 1];
try renderExpression(allocator, ais, tree, param_node, Space.None);
// Unindent the comma for multiline string literals
const maybe_multiline_string = param_node.firstToken();
const is_multiline_string = tree.token_ids[maybe_multiline_string] == .MultilineStringLiteralLine;
if (is_multiline_string) ais.popIndent();
defer if (is_multiline_string) ais.pushIndent();
const comma = tree.nextToken(param_node.lastToken());
try renderToken(tree, ais, comma, Space.Newline); // ,
try renderExtraNewline(tree, ais, next_node);