spaces around slice operator if operands are infix

See #1003
This commit is contained in:
Andrew Kelley 2018-05-30 15:33:58 -04:00
parent 2c96f19fd3
commit 93b51b0e40
2 changed files with 15 additions and 2 deletions

View File

@ -1,3 +1,12 @@
test "zig fmt: spaces around slice operator" {
try testCanonical(
\\var a = b[c..d];
\\var a = b[c + 1 .. d];
\\var a = b[c .. d + 1];
\\
);
}
test "zig fmt: async call in if condition" {
try testCanonical(
\\comptime {

View File

@ -530,9 +530,13 @@ fn renderExpression(
const lbracket = tree.prevToken(range.start.firstToken());
const dotdot = tree.nextToken(range.start.lastToken());
const spaces_around_op = range.start.id == ast.Node.Id.InfixOp or
(if (range.end) |end| end.id == ast.Node.Id.InfixOp else false);
const op_space = if (spaces_around_op) Space.Space else Space.None;
try renderToken(tree, stream, lbracket, indent, start_col, Space.None); // [
try renderExpression(allocator, stream, tree, indent, start_col, range.start, Space.None);
try renderToken(tree, stream, dotdot, indent, start_col, Space.None); // ..
try renderExpression(allocator, stream, tree, indent, start_col, range.start, op_space);
try renderToken(tree, stream, dotdot, indent, start_col, op_space); // ..
if (range.end) |end| {
try renderExpression(allocator, stream, tree, indent, start_col, end, Space.None);
}