aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-11-22 14:10:52 +0200
committerVeikka Tuominen <git@vexu.eu>2022-11-23 22:16:31 +0200
commit8eea73fb922c1c7fab4b8bf1717588464691a66e (patch)
tree6b80dd1b1d2e1993e05e6d3c19cbc5ba4d424c5e /lib/std
parent4cea15f12bdaf1603d60cf80e767dd8f2bb48b26 (diff)
downloadzig-8eea73fb922c1c7fab4b8bf1717588464691a66e.tar.gz
zig-8eea73fb922c1c7fab4b8bf1717588464691a66e.zip
add tests for tuple declarations
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/zig/parse.zig2
-rw-r--r--lib/std/zig/render.zig19
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
}