authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2019-10-15 14:06:08+03:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-15 17:58:02-04:00
log7495fd8cb9eea3d571ec62eff069b443ac0e3a6a
tree06d54e8fadb3033ccf058dee64ef806ddfde52b4
parentf7f3dedb1de405e0123c93a4a9e54503e02942ee

fix struct align fmt


2 files changed, 21 insertions(+), 3 deletions(-)

lib/std/zig/parser_test.zig+6
......@@ -173,6 +173,12 @@ test "zig fmt: aligned struct field" {
173173 \\};
174174 \\
175175 );
176 try testCanonical(
177 \\pub const S = struct {
178 \\ f: i32 align(32) = 1,
179 \\};
180 \\
181 );
176182}
177183
178184test "zig fmt: preserve space between async fn definitions" {
lib/std/zig/render.zig+15-3
......@@ -272,7 +272,7 @@ fn renderTopLevelDecl(allocator: *mem.Allocator, stream: var, tree: *ast.Tree, i
272272 try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align
273273 try renderToken(tree, stream, lparen_token, indent, start_col, Space.None); // (
274274 try renderExpression(allocator, stream, tree, indent, start_col, align_value_expr, Space.None); // alignment
275 try renderToken(tree, stream, rparen_token, indent, start_col, Space.Comma); // )
275 try renderToken(tree, stream, rparen_token, indent, start_col, Space.Comma); // ),
276276 } else {
277277 try renderExpression(allocator, stream, tree, indent, start_col, field.type_expr.?, Space.Comma); // type,
278278 }
......@@ -283,8 +283,20 @@ fn renderTopLevelDecl(allocator: *mem.Allocator, stream: var, tree: *ast.Tree, i
283283 } else {
284284 try renderToken(tree, stream, field.name_token, indent, start_col, Space.None); // name
285285 try renderToken(tree, stream, tree.nextToken(field.name_token), indent, start_col, Space.Space); // :
286 try renderExpression(allocator, stream, tree, indent, start_col, field.type_expr.?, Space.Space); // type
287 try renderToken(tree, stream, tree.nextToken(field.type_expr.?.lastToken()), indent, start_col, Space.Space); // =
286
287 if (field.align_expr) |align_value_expr| {
288 try renderExpression(allocator, stream, tree, indent, start_col, field.type_expr.?, Space.Space); // type
289 const lparen_token = tree.prevToken(align_value_expr.firstToken());
290 const align_kw = tree.prevToken(lparen_token);
291 const rparen_token = tree.nextToken(align_value_expr.lastToken());
292 try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align
293 try renderToken(tree, stream, lparen_token, indent, start_col, Space.None); // (
294 try renderExpression(allocator, stream, tree, indent, start_col, align_value_expr, Space.None); // alignment
295 try renderToken(tree, stream, rparen_token, indent, start_col, Space.Space); // )
296 } else {
297 try renderExpression(allocator, stream, tree, indent, start_col, field.type_expr.?, Space.Space); // type
298 }
299 try renderToken(tree, stream, tree.prevToken(field.value_expr.?.firstToken()), indent, start_col, Space.Space); // =
288300 return renderExpression(allocator, stream, tree, indent, start_col, field.value_expr.?, Space.Comma); // value,
289301 }
290302 },