authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-02-05 17:46:15-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-02-05 17:46:15-07:00
log409ca8882939418b3d4cbd4be7a18daf1d4833aa
treec17fba6a7cc237996590c3c14254c432c84f9c5e
parent16a2562c3f12a5a4fe9875644b593bd571c2734c

zig fmt: trailing comma in fn parameter list


3 files changed, 69 insertions(+), 57 deletions(-)

lib/std/zig/ast.zig+2-2
...@@ -231,7 +231,6 @@ pub const Tree = struct {...@@ -231,7 +231,6 @@ pub const Tree = struct {
231 .NullLiteral,231 .NullLiteral,
232 .UndefinedLiteral,232 .UndefinedLiteral,
233 .UnreachableLiteral,233 .UnreachableLiteral,
234 .EnumLiteral,
235 .StringLiteral,234 .StringLiteral,
236 .GroupedExpression,235 .GroupedExpression,
237 .BuiltinCallTwo,236 .BuiltinCallTwo,
...@@ -256,6 +255,7 @@ pub const Tree = struct {...@@ -256,6 +255,7 @@ pub const Tree = struct {
256 .StructInitDot,255 .StructInitDot,
257 .StructInitDotTwo,256 .StructInitDotTwo,
258 .StructInitDotTwoComma,257 .StructInitDotTwoComma,
258 .EnumLiteral,
259 => return main_tokens[n] - 1,259 => return main_tokens[n] - 1,
260260
261 .Catch,261 .Catch,
...@@ -494,6 +494,7 @@ pub const Tree = struct {...@@ -494,6 +494,7 @@ pub const Tree = struct {
494 .UnreachableLiteral,494 .UnreachableLiteral,
495 .Identifier,495 .Identifier,
496 .Deref,496 .Deref,
497 .EnumLiteral,
497 => return main_tokens[n] + end_offset,498 => return main_tokens[n] + end_offset,
498499
499 .Call,500 .Call,
...@@ -682,7 +683,6 @@ pub const Tree = struct {...@@ -682,7 +683,6 @@ pub const Tree = struct {
682 .Switch => unreachable, // TODO683 .Switch => unreachable, // TODO
683 .If => unreachable, // TODO684 .If => unreachable, // TODO
684 .Continue => unreachable, // TODO685 .Continue => unreachable, // TODO
685 .EnumLiteral => unreachable, // TODO
686 .ErrorSetDecl => unreachable, // TODO686 .ErrorSetDecl => unreachable, // TODO
687 .AsmSimple => unreachable, // TODO687 .AsmSimple => unreachable, // TODO
688 .Asm => unreachable, // TODO688 .Asm => unreachable, // TODO
lib/std/zig/parser_test.zig+38-38
...@@ -225,44 +225,44 @@ test "zig fmt: container declaration, transform trailing comma" {...@@ -225,44 +225,44 @@ test "zig fmt: container declaration, transform trailing comma" {
225 );225 );
226}226}
227227
228//test "zig fmt: trailing comma in fn parameter list" {228test "zig fmt: trailing comma in fn parameter list" {
229// try testCanonical(229 try testCanonical(
230// \\pub fn f(230 \\pub fn f(
231// \\ a: i32,231 \\ a: i32,
232// \\ b: i32,232 \\ b: i32,
233// \\) i32 {}233 \\) i32 {}
234// \\pub fn f(234 \\pub fn f(
235// \\ a: i32,235 \\ a: i32,
236// \\ b: i32,236 \\ b: i32,
237// \\) align(8) i32 {}237 \\) align(8) i32 {}
238// \\pub fn f(238 \\pub fn f(
239// \\ a: i32,239 \\ a: i32,
240// \\ b: i32,240 \\ b: i32,
241// \\) linksection(".text") i32 {}241 \\) linksection(".text") i32 {}
242// \\pub fn f(242 \\pub fn f(
243// \\ a: i32,243 \\ a: i32,
244// \\ b: i32,244 \\ b: i32,
245// \\) callconv(.C) i32 {}245 \\) callconv(.C) i32 {}
246// \\pub fn f(246 \\pub fn f(
247// \\ a: i32,247 \\ a: i32,
248// \\ b: i32,248 \\ b: i32,
249// \\) align(8) linksection(".text") i32 {}249 \\) align(8) linksection(".text") i32 {}
250// \\pub fn f(250 \\pub fn f(
251// \\ a: i32,251 \\ a: i32,
252// \\ b: i32,252 \\ b: i32,
253// \\) align(8) callconv(.C) i32 {}253 \\) align(8) callconv(.C) i32 {}
254// \\pub fn f(254 \\pub fn f(
255// \\ a: i32,255 \\ a: i32,
256// \\ b: i32,256 \\ b: i32,
257// \\) align(8) linksection(".text") callconv(.C) i32 {}257 \\) align(8) linksection(".text") callconv(.C) i32 {}
258// \\pub fn f(258 \\pub fn f(
259// \\ a: i32,259 \\ a: i32,
260// \\ b: i32,260 \\ b: i32,
261// \\) linksection(".text") callconv(.C) i32 {}261 \\) linksection(".text") callconv(.C) i32 {}
262// \\262 \\
263// );263 );
264//}264}
265//265
266//test "zig fmt: comptime struct field" {266//test "zig fmt: comptime struct field" {
267// try testCanonical(267// try testCanonical(
268// \\const Foo = struct {268// \\const Foo = struct {
lib/std/zig/render.zig+29-17
...@@ -1138,13 +1138,10 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -1138,13 +1138,10 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
1138 // return renderToken(ais, tree, asm_node.rparen, space);1138 // return renderToken(ais, tree, asm_node.rparen, space);
1139 //},1139 //},
11401140
1141 .EnumLiteral => unreachable, // TODO1141 .EnumLiteral => {
1142 //.EnumLiteral => {1142 try renderToken(ais, tree, main_tokens[node] - 1, .None); // .
1143 // const enum_literal = @fieldParentPtr(ast.Node.EnumLiteral, "base", base);1143 return renderToken(ais, tree, main_tokens[node], space); // name
11441144 },
1145 // try renderToken(ais, tree, enum_literal.dot, Space.None); // .
1146 // return renderToken(ais, tree, enum_literal.name, space); // name
1147 //},
11481145
1149 .FnDecl => unreachable,1146 .FnDecl => unreachable,
1150 .ContainerField => unreachable,1147 .ContainerField => unreachable,
...@@ -1538,6 +1535,7 @@ fn renderBuiltinCall(...@@ -1538,6 +1535,7 @@ fn renderBuiltinCall(
15381535
1539fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.Full.FnProto, space: Space) Error!void {1536fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.Full.FnProto, space: Space) Error!void {
1540 const token_tags = tree.tokens.items(.tag);1537 const token_tags = tree.tokens.items(.tag);
1538 const token_starts = tree.tokens.items(.start);
15411539
1542 const after_fn_token = fn_proto.ast.fn_token + 1;1540 const after_fn_token = fn_proto.ast.fn_token + 1;
1543 const lparen = if (token_tags[after_fn_token] == .Identifier) blk: {1541 const lparen = if (token_tags[after_fn_token] == .Identifier) blk: {
...@@ -1552,21 +1550,35 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.Full.FnProto, space: S...@@ -1552,21 +1550,35 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.Full.FnProto, space: S
15521550
1553 const maybe_bang = tree.firstToken(fn_proto.ast.return_type) - 1;1551 const maybe_bang = tree.firstToken(fn_proto.ast.return_type) - 1;
1554 const rparen = blk: {1552 const rparen = blk: {
1555 // The first token for the annotation expressions is the left1553 // These may appear in any order, so we have to check the token_starts array
1556 // parenthesis, hence the need for two previous tokens.1554 // to find out which is first.
1555 var rparen: ast.TokenIndex = maybe_bang;
1556 var smallest_start = token_starts[maybe_bang];
1557 if (fn_proto.ast.align_expr != 0) {1557 if (fn_proto.ast.align_expr != 0) {
1558 break :blk tree.firstToken(fn_proto.ast.align_expr) - 3;1558 const tok = tree.firstToken(fn_proto.ast.align_expr) - 3;
1559 const start = token_starts[tok];
1560 if (start < smallest_start) {
1561 rparen = tok;
1562 smallest_start = start;
1563 }
1559 }1564 }
1560 if (fn_proto.ast.section_expr != 0) {1565 if (fn_proto.ast.section_expr != 0) {
1561 break :blk tree.firstToken(fn_proto.ast.section_expr) - 3;1566 const tok = tree.firstToken(fn_proto.ast.section_expr) - 3;
1567 const start = token_starts[tok];
1568 if (start < smallest_start) {
1569 rparen = tok;
1570 smallest_start = start;
1571 }
1562 }1572 }
1563 if (fn_proto.ast.callconv_expr != 0) {1573 if (fn_proto.ast.callconv_expr != 0) {
1564 break :blk tree.firstToken(fn_proto.ast.callconv_expr) - 3;1574 const tok = tree.firstToken(fn_proto.ast.callconv_expr) - 3;
1565 }1575 const start = token_starts[tok];
1566 if (token_tags[maybe_bang] == .Bang) {1576 if (start < smallest_start) {
1567 break :blk maybe_bang - 1;1577 rparen = tok;
1578 smallest_start = start;
1579 }
1568 }1580 }
1569 break :blk maybe_bang;1581 break :blk rparen;
1570 };1582 };
1571 assert(token_tags[rparen] == .RParen);1583 assert(token_tags[rparen] == .RParen);
15721584
...@@ -1663,7 +1675,7 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.Full.FnProto, space: S...@@ -1663,7 +1675,7 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.Full.FnProto, space: S
1663 const param = fn_proto.ast.params[param_i];1675 const param = fn_proto.ast.params[param_i];
1664 param_i += 1;1676 param_i += 1;
1665 try renderExpression(ais, tree, param, .Comma);1677 try renderExpression(ais, tree, param, .Comma);
1666 last_param_token = tree.lastToken(param) + 2;1678 last_param_token = tree.lastToken(param) + 1;
1667 }1679 }
1668 ais.popIndent();1680 ais.popIndent();
1669 }1681 }