authorgravatar for tetralux@teknik.ioTetralux <tetralux@teknik.io> 2019-08-22 22:58:38+00:00
committergravatar for tetralux@teknik.ioTetralux <tetralux@teknik.io> 2019-08-22 22:58:38+00:00
log43587af01acba98d9c09c4e0cf20343be8d7c81b
tree266f2fa9e96ca32744ab63986f5fdc6d2fc1ba97
parent3ec10ea174d5738098e9bd1ef709b552603cc3b4
signaturelock-open Commit is signed but in an unrecognized format.

rendering of align(N) on struct fields


2 files changed, 23 insertions(+), 1 deletions(-)

std/zig/parser_test.zig+9
...@@ -166,6 +166,15 @@ test "zig fmt: doc comments on param decl" {...@@ -166,6 +166,15 @@ test "zig fmt: doc comments on param decl" {
166 );166 );
167}167}
168168
169test "zig fmt: aligned struct field" {
170 try testCanonical(
171 \\pub const S = struct {
172 \\ f: i32 align(32),
173 \\};
174 \\
175 );
176}
177
169test "zig fmt: preserve space between async fn definitions" {178test "zig fmt: preserve space between async fn definitions" {
170 try testCanonical(179 try testCanonical(
171 \\async fn a() void {}180 \\async fn a() void {}
std/zig/render.zig+14-1
...@@ -206,7 +206,20 @@ fn renderTopLevelDecl(allocator: *mem.Allocator, stream: var, tree: *ast.Tree, i...@@ -206,7 +206,20 @@ fn renderTopLevelDecl(allocator: *mem.Allocator, stream: var, tree: *ast.Tree, i
206 } else if (field.type_expr != null and field.value_expr == null) {206 } else if (field.type_expr != null and field.value_expr == null) {
207 try renderToken(tree, stream, field.name_token, indent, start_col, Space.None); // name207 try renderToken(tree, stream, field.name_token, indent, start_col, Space.None); // name
208 try renderToken(tree, stream, tree.nextToken(field.name_token), indent, start_col, Space.Space); // :208 try renderToken(tree, stream, tree.nextToken(field.name_token), indent, start_col, Space.Space); // :
209 return renderExpression(allocator, stream, tree, indent, start_col, field.type_expr.?, Space.Comma); // type,209
210 if (field.align_expr) |align_value_expr| {
211 try renderExpression(allocator, stream, tree, indent, start_col, field.type_expr.?, Space.Space); // type
212 const lparen_token = tree.prevToken(align_value_expr.firstToken());
213 const align_kw = tree.prevToken(lparen_token);
214 const rparen_token = tree.nextToken(align_value_expr.lastToken());
215 try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align
216 try renderToken(tree, stream, lparen_token, indent, start_col, Space.None); // (
217 try renderExpression(allocator, stream, tree, indent, start_col, align_value_expr, Space.None); // alignment
218 try renderToken(tree, stream, rparen_token, indent, start_col, Space.Comma); // )
219 } else {
220 try renderExpression(allocator, stream, tree, indent, start_col, field.type_expr.?, Space.Comma); // type,
221 }
222
210 } else if (field.type_expr == null and field.value_expr != null) {223 } else if (field.type_expr == null and field.value_expr != null) {
211 try renderToken(tree, stream, field.name_token, indent, start_col, Space.Space); // name224 try renderToken(tree, stream, field.name_token, indent, start_col, Space.Space); // name
212 try renderToken(tree, stream, tree.nextToken(field.name_token), indent, start_col, Space.Space); // =225 try renderToken(tree, stream, tree.nextToken(field.name_token), indent, start_col, Space.Space); // =