Commit 93b51b0e40

Andrew Kelley <superjoe30@gmail.com>
2018-05-30 21:33:58
spaces around slice operator if operands are infix
See #1003
1 parent 2c96f19
Changed files (2)
std/zig/parser_test.zig
@@ -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 {
std/zig/render.zig
@@ -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);
                     }