authorgravatar for me@tadeo.caTadeo Kondrak <me@tadeo.ca> 2020-08-27 15:02:17-06:00
committergravatar for me@tadeo.caTadeo Kondrak <me@tadeo.ca> 2020-08-27 15:21:18-06:00
logce8a3ef2de347c50d173948b335e1ee205723974
tree12fcd64dbce4b24072a2e3993a5a7e983dd4537c
parentf94583076ee517be311df6c70654e0cc41bf2b16
signaturelock-open Commit is signed but in an unrecognized format.

std.zig: Update to new std.meta.TrailerFlags API


2 files changed, 72 insertions(+), 72 deletions(-)

lib/std/zig/ast.zig+34-34
...@@ -921,17 +921,17 @@ pub const Node = struct {...@@ -921,17 +921,17 @@ pub const Node = struct {
921 semicolon_token: TokenIndex,921 semicolon_token: TokenIndex,
922 };922 };
923923
924 pub fn getTrailer(self: *const VarDecl, comptime name: []const u8) ?TrailerFlags.Field(name) {924 pub fn getTrailer(self: *const VarDecl, comptime field: TrailerFlags.FieldEnum) ?TrailerFlags.Field(field) {
925 const trailers_start = @ptrCast([*]const u8, self) + @sizeOf(VarDecl);925 const trailers_start = @ptrCast([*]const u8, self) + @sizeOf(VarDecl);
926 return self.trailer_flags.get(trailers_start, name);926 return self.trailer_flags.get(trailers_start, field);
927 }927 }
928928
929 pub fn setTrailer(self: *VarDecl, comptime name: []const u8, value: TrailerFlags.Field(name)) void {929 pub fn setTrailer(self: *VarDecl, comptime field: TrailerFlags.FieldEnum, value: TrailerFlags.Field(field)) void {
930 const trailers_start = @ptrCast([*]u8, self) + @sizeOf(VarDecl);930 const trailers_start = @ptrCast([*]u8, self) + @sizeOf(VarDecl);
931 self.trailer_flags.set(trailers_start, name, value);931 self.trailer_flags.set(trailers_start, field, value);
932 }932 }
933933
934 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: anytype) !*VarDecl {934 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: TrailerFlags.InitStruct) !*VarDecl {
935 const trailer_flags = TrailerFlags.init(trailers);935 const trailer_flags = TrailerFlags.init(trailers);
936 const bytes = try allocator.alignedAlloc(u8, @alignOf(VarDecl), sizeInBytes(trailer_flags));936 const bytes = try allocator.alignedAlloc(u8, @alignOf(VarDecl), sizeInBytes(trailer_flags));
937 const var_decl = @ptrCast(*VarDecl, bytes.ptr);937 const var_decl = @ptrCast(*VarDecl, bytes.ptr);
...@@ -954,22 +954,22 @@ pub const Node = struct {...@@ -954,22 +954,22 @@ pub const Node = struct {
954 pub fn iterate(self: *const VarDecl, index: usize) ?*Node {954 pub fn iterate(self: *const VarDecl, index: usize) ?*Node {
955 var i = index;955 var i = index;
956956
957 if (self.getTrailer("type_node")) |type_node| {957 if (self.getTrailer(.type_node)) |type_node| {
958 if (i < 1) return type_node;958 if (i < 1) return type_node;
959 i -= 1;959 i -= 1;
960 }960 }
961961
962 if (self.getTrailer("align_node")) |align_node| {962 if (self.getTrailer(.align_node)) |align_node| {
963 if (i < 1) return align_node;963 if (i < 1) return align_node;
964 i -= 1;964 i -= 1;
965 }965 }
966966
967 if (self.getTrailer("section_node")) |section_node| {967 if (self.getTrailer(.section_node)) |section_node| {
968 if (i < 1) return section_node;968 if (i < 1) return section_node;
969 i -= 1;969 i -= 1;
970 }970 }
971971
972 if (self.getTrailer("init_node")) |init_node| {972 if (self.getTrailer(.init_node)) |init_node| {
973 if (i < 1) return init_node;973 if (i < 1) return init_node;
974 i -= 1;974 i -= 1;
975 }975 }
...@@ -978,11 +978,11 @@ pub const Node = struct {...@@ -978,11 +978,11 @@ pub const Node = struct {
978 }978 }
979979
980 pub fn firstToken(self: *const VarDecl) TokenIndex {980 pub fn firstToken(self: *const VarDecl) TokenIndex {
981 if (self.getTrailer("visib_token")) |visib_token| return visib_token;981 if (self.getTrailer(.visib_token)) |visib_token| return visib_token;
982 if (self.getTrailer("thread_local_token")) |thread_local_token| return thread_local_token;982 if (self.getTrailer(.thread_local_token)) |thread_local_token| return thread_local_token;
983 if (self.getTrailer("comptime_token")) |comptime_token| return comptime_token;983 if (self.getTrailer(.comptime_token)) |comptime_token| return comptime_token;
984 if (self.getTrailer("extern_export_token")) |extern_export_token| return extern_export_token;984 if (self.getTrailer(.extern_export_token)) |extern_export_token| return extern_export_token;
985 assert(self.getTrailer("lib_name") == null);985 assert(self.getTrailer(.lib_name) == null);
986 return self.mut_token;986 return self.mut_token;
987 }987 }
988988
...@@ -1320,34 +1320,34 @@ pub const Node = struct {...@@ -1320,34 +1320,34 @@ pub const Node = struct {
1320 std.debug.print("{*} flags: {b} name_token: {} {*} params_len: {}\n", .{1320 std.debug.print("{*} flags: {b} name_token: {} {*} params_len: {}\n", .{
1321 self,1321 self,
1322 self.trailer_flags.bits,1322 self.trailer_flags.bits,
1323 self.getTrailer("name_token"),1323 self.getTrailer(.name_token),
1324 self.trailer_flags.ptrConst(trailers_start, "name_token"),1324 self.trailer_flags.ptrConst(trailers_start, "name_token"),
1325 self.params_len,1325 self.params_len,
1326 });1326 });
1327 }1327 }
13281328
1329 pub fn body(self: *const FnProto) ?*Node {1329 pub fn body(self: *const FnProto) ?*Node {
1330 return self.getTrailer("body_node");1330 return self.getTrailer(.body_node);
1331 }1331 }
13321332
1333 pub fn getTrailer(self: *const FnProto, comptime name: []const u8) ?TrailerFlags.Field(name) {1333 pub fn getTrailer(self: *const FnProto, comptime field: TrailerFlags.FieldEnum) ?TrailerFlags.Field(field) {
1334 const trailers_start = @alignCast(1334 const trailers_start = @alignCast(
1335 @alignOf(ParamDecl),1335 @alignOf(ParamDecl),
1336 @ptrCast([*]const u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,1336 @ptrCast([*]const u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,
1337 );1337 );
1338 return self.trailer_flags.get(trailers_start, name);1338 return self.trailer_flags.get(trailers_start, field);
1339 }1339 }
13401340
1341 pub fn setTrailer(self: *FnProto, comptime name: []const u8, value: TrailerFlags.Field(name)) void {1341 pub fn setTrailer(self: *FnProto, comptime field: TrailerFlags.FieldEnum, value: TrailerFlags.Field(field)) void {
1342 const trailers_start = @alignCast(1342 const trailers_start = @alignCast(
1343 @alignOf(ParamDecl),1343 @alignOf(ParamDecl),
1344 @ptrCast([*]u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,1344 @ptrCast([*]u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,
1345 );1345 );
1346 self.trailer_flags.set(trailers_start, name, value);1346 self.trailer_flags.set(trailers_start, field, value);
1347 }1347 }
13481348
1349 /// After this the caller must initialize the params list.1349 /// After this the caller must initialize the params list.
1350 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: anytype) !*FnProto {1350 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: TrailerFlags.InitStruct) !*FnProto {
1351 const trailer_flags = TrailerFlags.init(trailers);1351 const trailer_flags = TrailerFlags.init(trailers);
1352 const bytes = try allocator.alignedAlloc(u8, @alignOf(FnProto), sizeInBytes(1352 const bytes = try allocator.alignedAlloc(u8, @alignOf(FnProto), sizeInBytes(
1353 required.params_len,1353 required.params_len,
...@@ -1376,7 +1376,7 @@ pub const Node = struct {...@@ -1376,7 +1376,7 @@ pub const Node = struct {
1376 pub fn iterate(self: *const FnProto, index: usize) ?*Node {1376 pub fn iterate(self: *const FnProto, index: usize) ?*Node {
1377 var i = index;1377 var i = index;
13781378
1379 if (self.getTrailer("lib_name")) |lib_name| {1379 if (self.getTrailer(.lib_name)) |lib_name| {
1380 if (i < 1) return lib_name;1380 if (i < 1) return lib_name;
1381 i -= 1;1381 i -= 1;
1382 }1382 }
...@@ -1394,12 +1394,12 @@ pub const Node = struct {...@@ -1394,12 +1394,12 @@ pub const Node = struct {
1394 }1394 }
1395 i -= params_len;1395 i -= params_len;
13961396
1397 if (self.getTrailer("align_expr")) |align_expr| {1397 if (self.getTrailer(.align_expr)) |align_expr| {
1398 if (i < 1) return align_expr;1398 if (i < 1) return align_expr;
1399 i -= 1;1399 i -= 1;
1400 }1400 }
14011401
1402 if (self.getTrailer("section_expr")) |section_expr| {1402 if (self.getTrailer(.section_expr)) |section_expr| {
1403 if (i < 1) return section_expr;1403 if (i < 1) return section_expr;
1404 i -= 1;1404 i -= 1;
1405 }1405 }
...@@ -1421,9 +1421,9 @@ pub const Node = struct {...@@ -1421,9 +1421,9 @@ pub const Node = struct {
1421 }1421 }
14221422
1423 pub fn firstToken(self: *const FnProto) TokenIndex {1423 pub fn firstToken(self: *const FnProto) TokenIndex {
1424 if (self.getTrailer("visib_token")) |visib_token| return visib_token;1424 if (self.getTrailer(.visib_token)) |visib_token| return visib_token;
1425 if (self.getTrailer("extern_export_inline_token")) |extern_export_inline_token| return extern_export_inline_token;1425 if (self.getTrailer(.extern_export_inline_token)) |extern_export_inline_token| return extern_export_inline_token;
1426 assert(self.getTrailer("lib_name") == null);1426 assert(self.getTrailer(.lib_name) == null);
1427 return self.fn_token;1427 return self.fn_token;
1428 }1428 }
14291429
...@@ -2673,24 +2673,24 @@ pub const Node = struct {...@@ -2673,24 +2673,24 @@ pub const Node = struct {
2673 };2673 };
26742674
2675 pub fn getRHS(self: *const ControlFlowExpression) ?*Node {2675 pub fn getRHS(self: *const ControlFlowExpression) ?*Node {
2676 return self.getTrailer("rhs");2676 return self.getTrailer(.rhs);
2677 }2677 }
26782678
2679 pub fn getLabel(self: *const ControlFlowExpression) ?TokenIndex {2679 pub fn getLabel(self: *const ControlFlowExpression) ?TokenIndex {
2680 return self.getTrailer("label");2680 return self.getTrailer(.label);
2681 }2681 }
26822682
2683 pub fn getTrailer(self: *const ControlFlowExpression, comptime name: []const u8) ?TrailerFlags.Field(name) {2683 pub fn getTrailer(self: *const ControlFlowExpression, comptime field: TrailerFlags.FieldEnum) ?TrailerFlags.Field(field) {
2684 const trailers_start = @ptrCast([*]const u8, self) + @sizeOf(ControlFlowExpression);2684 const trailers_start = @ptrCast([*]const u8, self) + @sizeOf(ControlFlowExpression);
2685 return self.trailer_flags.get(trailers_start, name);2685 return self.trailer_flags.get(trailers_start, field);
2686 }2686 }
26872687
2688 pub fn setTrailer(self: *ControlFlowExpression, comptime name: []const u8, value: TrailerFlags.Field(name)) void {2688 pub fn setTrailer(self: *ControlFlowExpression, comptime field: TrailerFlags.FieldEnum, value: TrailerFlags.Field(field)) void {
2689 const trailers_start = @ptrCast([*]u8, self) + @sizeOf(ControlFlowExpression);2689 const trailers_start = @ptrCast([*]u8, self) + @sizeOf(ControlFlowExpression);
2690 self.trailer_flags.set(trailers_start, name, value);2690 self.trailer_flags.set(trailers_start, field, value);
2691 }2691 }
26922692
2693 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: anytype) !*ControlFlowExpression {2693 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: TrailerFlags.InitStruct) !*ControlFlowExpression {
2694 const trailer_flags = TrailerFlags.init(trailers);2694 const trailer_flags = TrailerFlags.init(trailers);
2695 const bytes = try allocator.alignedAlloc(u8, @alignOf(ControlFlowExpression), sizeInBytes(trailer_flags));2695 const bytes = try allocator.alignedAlloc(u8, @alignOf(ControlFlowExpression), sizeInBytes(trailer_flags));
2696 const ctrl_flow_expr = @ptrCast(*ControlFlowExpression, bytes.ptr);2696 const ctrl_flow_expr = @ptrCast(*ControlFlowExpression, bytes.ptr);
lib/std/zig/render.zig+38-38
...@@ -232,9 +232,9 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr...@@ -232,9 +232,9 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr
232 .FnProto => {232 .FnProto => {
233 const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", decl);233 const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", decl);
234234
235 try renderDocComments(tree, stream, fn_proto, fn_proto.getTrailer("doc_comments"), indent, start_col);235 try renderDocComments(tree, stream, fn_proto, fn_proto.getTrailer(.doc_comments), indent, start_col);
236236
237 if (fn_proto.getTrailer("body_node")) |body_node| {237 if (fn_proto.getTrailer(.body_node)) |body_node| {
238 try renderExpression(allocator, stream, tree, indent, start_col, decl, .Space);238 try renderExpression(allocator, stream, tree, indent, start_col, decl, .Space);
239 try renderExpression(allocator, stream, tree, indent, start_col, body_node, space);239 try renderExpression(allocator, stream, tree, indent, start_col, body_node, space);
240 } else {240 } else {
...@@ -257,7 +257,7 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr...@@ -257,7 +257,7 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr
257 .VarDecl => {257 .VarDecl => {
258 const var_decl = @fieldParentPtr(ast.Node.VarDecl, "base", decl);258 const var_decl = @fieldParentPtr(ast.Node.VarDecl, "base", decl);
259259
260 try renderDocComments(tree, stream, var_decl, var_decl.getTrailer("doc_comments"), indent, start_col);260 try renderDocComments(tree, stream, var_decl, var_decl.getTrailer(.doc_comments), indent, start_col);
261 try renderVarDecl(allocator, stream, tree, indent, start_col, var_decl);261 try renderVarDecl(allocator, stream, tree, indent, start_col, var_decl);
262 },262 },
263263
...@@ -1520,23 +1520,23 @@ fn renderExpression(...@@ -1520,23 +1520,23 @@ fn renderExpression(
1520 .FnProto => {1520 .FnProto => {
1521 const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", base);1521 const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", base);
15221522
1523 if (fn_proto.getTrailer("visib_token")) |visib_token_index| {1523 if (fn_proto.getTrailer(.visib_token)) |visib_token_index| {
1524 const visib_token = tree.token_ids[visib_token_index];1524 const visib_token = tree.token_ids[visib_token_index];
1525 assert(visib_token == .Keyword_pub or visib_token == .Keyword_export);1525 assert(visib_token == .Keyword_pub or visib_token == .Keyword_export);
15261526
1527 try renderToken(tree, stream, visib_token_index, indent, start_col, Space.Space); // pub1527 try renderToken(tree, stream, visib_token_index, indent, start_col, Space.Space); // pub
1528 }1528 }
15291529
1530 if (fn_proto.getTrailer("extern_export_inline_token")) |extern_export_inline_token| {1530 if (fn_proto.getTrailer(.extern_export_inline_token)) |extern_export_inline_token| {
1531 if (fn_proto.getTrailer("is_extern_prototype") == null)1531 if (fn_proto.getTrailer(.is_extern_prototype) == null)
1532 try renderToken(tree, stream, extern_export_inline_token, indent, start_col, Space.Space); // extern/export/inline1532 try renderToken(tree, stream, extern_export_inline_token, indent, start_col, Space.Space); // extern/export/inline
1533 }1533 }
15341534
1535 if (fn_proto.getTrailer("lib_name")) |lib_name| {1535 if (fn_proto.getTrailer(.lib_name)) |lib_name| {
1536 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space);1536 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space);
1537 }1537 }
15381538
1539 const lparen = if (fn_proto.getTrailer("name_token")) |name_token| blk: {1539 const lparen = if (fn_proto.getTrailer(.name_token)) |name_token| blk: {
1540 try renderToken(tree, stream, fn_proto.fn_token, indent, start_col, Space.Space); // fn1540 try renderToken(tree, stream, fn_proto.fn_token, indent, start_col, Space.Space); // fn
1541 try renderToken(tree, stream, name_token, indent, start_col, Space.None); // name1541 try renderToken(tree, stream, name_token, indent, start_col, Space.None); // name
1542 break :blk tree.nextToken(name_token);1542 break :blk tree.nextToken(name_token);
...@@ -1549,11 +1549,11 @@ fn renderExpression(...@@ -1549,11 +1549,11 @@ fn renderExpression(
1549 const rparen = tree.prevToken(1549 const rparen = tree.prevToken(
1550 // the first token for the annotation expressions is the left1550 // the first token for the annotation expressions is the left
1551 // parenthesis, hence the need for two prevToken1551 // parenthesis, hence the need for two prevToken
1552 if (fn_proto.getTrailer("align_expr")) |align_expr|1552 if (fn_proto.getTrailer(.align_expr)) |align_expr|
1553 tree.prevToken(tree.prevToken(align_expr.firstToken()))1553 tree.prevToken(tree.prevToken(align_expr.firstToken()))
1554 else if (fn_proto.getTrailer("section_expr")) |section_expr|1554 else if (fn_proto.getTrailer(.section_expr)) |section_expr|
1555 tree.prevToken(tree.prevToken(section_expr.firstToken()))1555 tree.prevToken(tree.prevToken(section_expr.firstToken()))
1556 else if (fn_proto.getTrailer("callconv_expr")) |callconv_expr|1556 else if (fn_proto.getTrailer(.callconv_expr)) |callconv_expr|
1557 tree.prevToken(tree.prevToken(callconv_expr.firstToken()))1557 tree.prevToken(tree.prevToken(callconv_expr.firstToken()))
1558 else switch (fn_proto.return_type) {1558 else switch (fn_proto.return_type) {
1559 .Explicit => |node| node.firstToken(),1559 .Explicit => |node| node.firstToken(),
...@@ -1574,12 +1574,12 @@ fn renderExpression(...@@ -1574,12 +1574,12 @@ fn renderExpression(
1574 for (fn_proto.params()) |param_decl, i| {1574 for (fn_proto.params()) |param_decl, i| {
1575 try renderParamDecl(allocator, stream, tree, indent, start_col, param_decl, Space.None);1575 try renderParamDecl(allocator, stream, tree, indent, start_col, param_decl, Space.None);
15761576
1577 if (i + 1 < fn_proto.params_len or fn_proto.getTrailer("var_args_token") != null) {1577 if (i + 1 < fn_proto.params_len or fn_proto.getTrailer(.var_args_token) != null) {
1578 const comma = tree.nextToken(param_decl.lastToken());1578 const comma = tree.nextToken(param_decl.lastToken());
1579 try renderToken(tree, stream, comma, indent, start_col, Space.Space); // ,1579 try renderToken(tree, stream, comma, indent, start_col, Space.Space); // ,
1580 }1580 }
1581 }1581 }
1582 if (fn_proto.getTrailer("var_args_token")) |var_args_token| {1582 if (fn_proto.getTrailer(.var_args_token)) |var_args_token| {
1583 try renderToken(tree, stream, var_args_token, indent, start_col, Space.None);1583 try renderToken(tree, stream, var_args_token, indent, start_col, Space.None);
1584 }1584 }
1585 } else {1585 } else {
...@@ -1591,7 +1591,7 @@ fn renderExpression(...@@ -1591,7 +1591,7 @@ fn renderExpression(
1591 try stream.writeByteNTimes(' ', new_indent);1591 try stream.writeByteNTimes(' ', new_indent);
1592 try renderParamDecl(allocator, stream, tree, new_indent, start_col, param_decl, Space.Comma);1592 try renderParamDecl(allocator, stream, tree, new_indent, start_col, param_decl, Space.Comma);
1593 }1593 }
1594 if (fn_proto.getTrailer("var_args_token")) |var_args_token| {1594 if (fn_proto.getTrailer(.var_args_token)) |var_args_token| {
1595 try stream.writeByteNTimes(' ', new_indent);1595 try stream.writeByteNTimes(' ', new_indent);
1596 try renderToken(tree, stream, var_args_token, new_indent, start_col, Space.Comma);1596 try renderToken(tree, stream, var_args_token, new_indent, start_col, Space.Comma);
1597 }1597 }
...@@ -1600,7 +1600,7 @@ fn renderExpression(...@@ -1600,7 +1600,7 @@ fn renderExpression(
16001600
1601 try renderToken(tree, stream, rparen, indent, start_col, Space.Space); // )1601 try renderToken(tree, stream, rparen, indent, start_col, Space.Space); // )
16021602
1603 if (fn_proto.getTrailer("align_expr")) |align_expr| {1603 if (fn_proto.getTrailer(.align_expr)) |align_expr| {
1604 const align_rparen = tree.nextToken(align_expr.lastToken());1604 const align_rparen = tree.nextToken(align_expr.lastToken());
1605 const align_lparen = tree.prevToken(align_expr.firstToken());1605 const align_lparen = tree.prevToken(align_expr.firstToken());
1606 const align_kw = tree.prevToken(align_lparen);1606 const align_kw = tree.prevToken(align_lparen);
...@@ -1611,7 +1611,7 @@ fn renderExpression(...@@ -1611,7 +1611,7 @@ fn renderExpression(
1611 try renderToken(tree, stream, align_rparen, indent, start_col, Space.Space); // )1611 try renderToken(tree, stream, align_rparen, indent, start_col, Space.Space); // )
1612 }1612 }
16131613
1614 if (fn_proto.getTrailer("section_expr")) |section_expr| {1614 if (fn_proto.getTrailer(.section_expr)) |section_expr| {
1615 const section_rparen = tree.nextToken(section_expr.lastToken());1615 const section_rparen = tree.nextToken(section_expr.lastToken());
1616 const section_lparen = tree.prevToken(section_expr.firstToken());1616 const section_lparen = tree.prevToken(section_expr.firstToken());
1617 const section_kw = tree.prevToken(section_lparen);1617 const section_kw = tree.prevToken(section_lparen);
...@@ -1622,7 +1622,7 @@ fn renderExpression(...@@ -1622,7 +1622,7 @@ fn renderExpression(
1622 try renderToken(tree, stream, section_rparen, indent, start_col, Space.Space); // )1622 try renderToken(tree, stream, section_rparen, indent, start_col, Space.Space); // )
1623 }1623 }
16241624
1625 if (fn_proto.getTrailer("callconv_expr")) |callconv_expr| {1625 if (fn_proto.getTrailer(.callconv_expr)) |callconv_expr| {
1626 const callconv_rparen = tree.nextToken(callconv_expr.lastToken());1626 const callconv_rparen = tree.nextToken(callconv_expr.lastToken());
1627 const callconv_lparen = tree.prevToken(callconv_expr.firstToken());1627 const callconv_lparen = tree.prevToken(callconv_expr.firstToken());
1628 const callconv_kw = tree.prevToken(callconv_lparen);1628 const callconv_kw = tree.prevToken(callconv_lparen);
...@@ -1631,9 +1631,9 @@ fn renderExpression(...@@ -1631,9 +1631,9 @@ fn renderExpression(
1631 try renderToken(tree, stream, callconv_lparen, indent, start_col, Space.None); // (1631 try renderToken(tree, stream, callconv_lparen, indent, start_col, Space.None); // (
1632 try renderExpression(allocator, stream, tree, indent, start_col, callconv_expr, Space.None);1632 try renderExpression(allocator, stream, tree, indent, start_col, callconv_expr, Space.None);
1633 try renderToken(tree, stream, callconv_rparen, indent, start_col, Space.Space); // )1633 try renderToken(tree, stream, callconv_rparen, indent, start_col, Space.Space); // )
1634 } else if (fn_proto.getTrailer("is_extern_prototype") != null) {1634 } else if (fn_proto.getTrailer(.is_extern_prototype) != null) {
1635 try stream.writeAll("callconv(.C) ");1635 try stream.writeAll("callconv(.C) ");
1636 } else if (fn_proto.getTrailer("is_async") != null) {1636 } else if (fn_proto.getTrailer(.is_async) != null) {
1637 try stream.writeAll("callconv(.Async) ");1637 try stream.writeAll("callconv(.Async) ");
1638 }1638 }
16391639
...@@ -2221,69 +2221,69 @@ fn renderVarDecl(...@@ -2221,69 +2221,69 @@ fn renderVarDecl(
2221 start_col: *usize,2221 start_col: *usize,
2222 var_decl: *ast.Node.VarDecl,2222 var_decl: *ast.Node.VarDecl,
2223) (@TypeOf(stream).Error || Error)!void {2223) (@TypeOf(stream).Error || Error)!void {
2224 if (var_decl.getTrailer("visib_token")) |visib_token| {2224 if (var_decl.getTrailer(.visib_token)) |visib_token| {
2225 try renderToken(tree, stream, visib_token, indent, start_col, Space.Space); // pub2225 try renderToken(tree, stream, visib_token, indent, start_col, Space.Space); // pub
2226 }2226 }
22272227
2228 if (var_decl.getTrailer("extern_export_token")) |extern_export_token| {2228 if (var_decl.getTrailer(.extern_export_token)) |extern_export_token| {
2229 try renderToken(tree, stream, extern_export_token, indent, start_col, Space.Space); // extern2229 try renderToken(tree, stream, extern_export_token, indent, start_col, Space.Space); // extern
22302230
2231 if (var_decl.getTrailer("lib_name")) |lib_name| {2231 if (var_decl.getTrailer(.lib_name)) |lib_name| {
2232 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space); // "lib"2232 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space); // "lib"
2233 }2233 }
2234 }2234 }
22352235
2236 if (var_decl.getTrailer("comptime_token")) |comptime_token| {2236 if (var_decl.getTrailer(.comptime_token)) |comptime_token| {
2237 try renderToken(tree, stream, comptime_token, indent, start_col, Space.Space); // comptime2237 try renderToken(tree, stream, comptime_token, indent, start_col, Space.Space); // comptime
2238 }2238 }
22392239
2240 if (var_decl.getTrailer("thread_local_token")) |thread_local_token| {2240 if (var_decl.getTrailer(.thread_local_token)) |thread_local_token| {
2241 try renderToken(tree, stream, thread_local_token, indent, start_col, Space.Space); // threadlocal2241 try renderToken(tree, stream, thread_local_token, indent, start_col, Space.Space); // threadlocal
2242 }2242 }
2243 try renderToken(tree, stream, var_decl.mut_token, indent, start_col, Space.Space); // var2243 try renderToken(tree, stream, var_decl.mut_token, indent, start_col, Space.Space); // var
22442244
2245 const name_space = if (var_decl.getTrailer("type_node") == null and2245 const name_space = if (var_decl.getTrailer(.type_node) == null and
2246 (var_decl.getTrailer("align_node") != null or2246 (var_decl.getTrailer(.align_node) != null or
2247 var_decl.getTrailer("section_node") != null or2247 var_decl.getTrailer(.section_node) != null or
2248 var_decl.getTrailer("init_node") != null))2248 var_decl.getTrailer(.init_node) != null))
2249 Space.Space2249 Space.Space
2250 else2250 else
2251 Space.None;2251 Space.None;
2252 try renderToken(tree, stream, var_decl.name_token, indent, start_col, name_space);2252 try renderToken(tree, stream, var_decl.name_token, indent, start_col, name_space);
22532253
2254 if (var_decl.getTrailer("type_node")) |type_node| {2254 if (var_decl.getTrailer(.type_node)) |type_node| {
2255 try renderToken(tree, stream, tree.nextToken(var_decl.name_token), indent, start_col, Space.Space);2255 try renderToken(tree, stream, tree.nextToken(var_decl.name_token), indent, start_col, Space.Space);
2256 const s = if (var_decl.getTrailer("align_node") != null or2256 const s = if (var_decl.getTrailer(.align_node) != null or
2257 var_decl.getTrailer("section_node") != null or2257 var_decl.getTrailer(.section_node) != null or
2258 var_decl.getTrailer("init_node") != null) Space.Space else Space.None;2258 var_decl.getTrailer(.init_node) != null) Space.Space else Space.None;
2259 try renderExpression(allocator, stream, tree, indent, start_col, type_node, s);2259 try renderExpression(allocator, stream, tree, indent, start_col, type_node, s);
2260 }2260 }
22612261
2262 if (var_decl.getTrailer("align_node")) |align_node| {2262 if (var_decl.getTrailer(.align_node)) |align_node| {
2263 const lparen = tree.prevToken(align_node.firstToken());2263 const lparen = tree.prevToken(align_node.firstToken());
2264 const align_kw = tree.prevToken(lparen);2264 const align_kw = tree.prevToken(lparen);
2265 const rparen = tree.nextToken(align_node.lastToken());2265 const rparen = tree.nextToken(align_node.lastToken());
2266 try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align2266 try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align
2267 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (2267 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (
2268 try renderExpression(allocator, stream, tree, indent, start_col, align_node, Space.None);2268 try renderExpression(allocator, stream, tree, indent, start_col, align_node, Space.None);
2269 const s = if (var_decl.getTrailer("section_node") != null or var_decl.getTrailer("init_node") != null) Space.Space else Space.None;2269 const s = if (var_decl.getTrailer(.section_node) != null or var_decl.getTrailer(.init_node) != null) Space.Space else Space.None;
2270 try renderToken(tree, stream, rparen, indent, start_col, s); // )2270 try renderToken(tree, stream, rparen, indent, start_col, s); // )
2271 }2271 }
22722272
2273 if (var_decl.getTrailer("section_node")) |section_node| {2273 if (var_decl.getTrailer(.section_node)) |section_node| {
2274 const lparen = tree.prevToken(section_node.firstToken());2274 const lparen = tree.prevToken(section_node.firstToken());
2275 const section_kw = tree.prevToken(lparen);2275 const section_kw = tree.prevToken(lparen);
2276 const rparen = tree.nextToken(section_node.lastToken());2276 const rparen = tree.nextToken(section_node.lastToken());
2277 try renderToken(tree, stream, section_kw, indent, start_col, Space.None); // linksection2277 try renderToken(tree, stream, section_kw, indent, start_col, Space.None); // linksection
2278 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (2278 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (
2279 try renderExpression(allocator, stream, tree, indent, start_col, section_node, Space.None);2279 try renderExpression(allocator, stream, tree, indent, start_col, section_node, Space.None);
2280 const s = if (var_decl.getTrailer("init_node") != null) Space.Space else Space.None;2280 const s = if (var_decl.getTrailer(.init_node) != null) Space.Space else Space.None;
2281 try renderToken(tree, stream, rparen, indent, start_col, s); // )2281 try renderToken(tree, stream, rparen, indent, start_col, s); // )
2282 }2282 }
22832283
2284 if (var_decl.getTrailer("init_node")) |init_node| {2284 if (var_decl.getTrailer(.init_node)) |init_node| {
2285 const s = if (init_node.tag == .MultilineStringLiteral) Space.None else Space.Space;2285 const s = if (init_node.tag == .MultilineStringLiteral) Space.None else Space.Space;
2286 try renderToken(tree, stream, var_decl.getTrailer("eq_token").?, indent, start_col, s); // =2286 try renderToken(tree, stream, var_decl.getTrailer(.eq_token).?, indent, start_col, s); // =
2287 try renderExpression(allocator, stream, tree, indent, start_col, init_node, Space.None);2287 try renderExpression(allocator, stream, tree, indent, start_col, init_node, Space.None);
2288 }2288 }
22892289