diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-11-22 14:10:52 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-11-23 22:16:31 +0200 |
| commit | 8eea73fb922c1c7fab4b8bf1717588464691a66e (patch) | |
| tree | 6b80dd1b1d2e1993e05e6d3c19cbc5ba4d424c5e /lib/std | |
| parent | 4cea15f12bdaf1603d60cf80e767dd8f2bb48b26 (diff) | |
| download | zig-8eea73fb922c1c7fab4b8bf1717588464691a66e.tar.gz zig-8eea73fb922c1c7fab4b8bf1717588464691a66e.zip | |
add tests for tuple declarations
Diffstat (limited to 'lib/std')
| -rw-r--r-- | lib/std/zig/parse.zig | 2 | ||||
| -rw-r--r-- | lib/std/zig/render.zig | 19 |
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/std/zig/parse.zig b/lib/std/zig/parse.zig index e0f0ebacbb..0226ec2e1d 100644 --- a/lib/std/zig/parse.zig +++ b/lib/std/zig/parse.zig @@ -884,7 +884,7 @@ const Parser = struct { var align_expr: Node.Index = 0; var type_expr: Node.Index = 0; - if (p.eatToken(.colon) != null or tuple_like) |_| { + if (p.eatToken(.colon) != null or tuple_like) { type_expr = try p.expectTypeExpr(); align_expr = try p.parseByteAlign(); } diff --git a/lib/std/zig/render.zig b/lib/std/zig/render.zig index 2c9ed8632f..160ec13f0c 100644 --- a/lib/std/zig/render.zig +++ b/lib/std/zig/render.zig @@ -1189,6 +1189,16 @@ fn renderContainerField( try renderToken(ais, tree, t, .space); // comptime } if (field.ast.type_expr == 0 and field.ast.value_expr == 0) { + if (field.ast.align_expr != 0) { + try renderIdentifier(ais, tree, field.ast.main_token, .space, .eagerly_unquote); // name + const lparen_token = tree.firstToken(field.ast.align_expr) - 1; + const align_kw = lparen_token - 1; + const rparen_token = tree.lastToken(field.ast.align_expr) + 1; + try renderToken(ais, tree, align_kw, .none); // align + try renderToken(ais, tree, lparen_token, .none); // ( + try renderExpression(gpa, ais, tree, field.ast.align_expr, .none); // alignment + return renderToken(ais, tree, rparen_token, .space); // ) + } return renderIdentifierComma(ais, tree, field.ast.main_token, space, .eagerly_unquote); // name } if (field.ast.type_expr != 0 and field.ast.value_expr == 0) { @@ -1211,6 +1221,15 @@ fn renderContainerField( } if (field.ast.type_expr == 0 and field.ast.value_expr != 0) { try renderIdentifier(ais, tree, field.ast.main_token, .space, .eagerly_unquote); // name + if (field.ast.align_expr != 0) { + const lparen_token = tree.firstToken(field.ast.align_expr) - 1; + const align_kw = lparen_token - 1; + const rparen_token = tree.lastToken(field.ast.align_expr) + 1; + try renderToken(ais, tree, align_kw, .none); // align + try renderToken(ais, tree, lparen_token, .none); // ( + try renderExpression(gpa, ais, tree, field.ast.align_expr, .none); // alignment + try renderToken(ais, tree, rparen_token, .space); // ) + } try renderToken(ais, tree, field.ast.main_token + 1, .space); // = return renderExpressionComma(gpa, ais, tree, field.ast.value_expr, space); // value } |
