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 {
921921 semicolon_token: TokenIndex,
922922 };
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) {
925925 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);
927927 }
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 {
930930 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);
932932 }
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 {
935935 const trailer_flags = TrailerFlags.init(trailers);
936936 const bytes = try allocator.alignedAlloc(u8, @alignOf(VarDecl), sizeInBytes(trailer_flags));
937937 const var_decl = @ptrCast(*VarDecl, bytes.ptr);
......@@ -954,22 +954,22 @@ pub const Node = struct {
954954 pub fn iterate(self: *const VarDecl, index: usize) ?*Node {
955955 var i = index;
956956
957 if (self.getTrailer("type_node")) |type_node| {
957 if (self.getTrailer(.type_node)) |type_node| {
958958 if (i < 1) return type_node;
959959 i -= 1;
960960 }
961961
962 if (self.getTrailer("align_node")) |align_node| {
962 if (self.getTrailer(.align_node)) |align_node| {
963963 if (i < 1) return align_node;
964964 i -= 1;
965965 }
966966
967 if (self.getTrailer("section_node")) |section_node| {
967 if (self.getTrailer(.section_node)) |section_node| {
968968 if (i < 1) return section_node;
969969 i -= 1;
970970 }
971971
972 if (self.getTrailer("init_node")) |init_node| {
972 if (self.getTrailer(.init_node)) |init_node| {
973973 if (i < 1) return init_node;
974974 i -= 1;
975975 }
......@@ -978,11 +978,11 @@ pub const Node = struct {
978978 }
979979
980980 pub fn firstToken(self: *const VarDecl) TokenIndex {
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;
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;
985 assert(self.getTrailer("lib_name") == null);
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;
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;
985 assert(self.getTrailer(.lib_name) == null);
986986 return self.mut_token;
987987 }
988988
......@@ -1320,34 +1320,34 @@ pub const Node = struct {
13201320 std.debug.print("{*} flags: {b} name_token: {} {*} params_len: {}\n", .{
13211321 self,
13221322 self.trailer_flags.bits,
1323 self.getTrailer("name_token"),
1323 self.getTrailer(.name_token),
13241324 self.trailer_flags.ptrConst(trailers_start, "name_token"),
13251325 self.params_len,
13261326 });
13271327 }
13281328
13291329 pub fn body(self: *const FnProto) ?*Node {
1330 return self.getTrailer("body_node");
1330 return self.getTrailer(.body_node);
13311331 }
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) {
13341334 const trailers_start = @alignCast(
13351335 @alignOf(ParamDecl),
13361336 @ptrCast([*]const u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,
13371337 );
1338 return self.trailer_flags.get(trailers_start, name);
1338 return self.trailer_flags.get(trailers_start, field);
13391339 }
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 {
13421342 const trailers_start = @alignCast(
13431343 @alignOf(ParamDecl),
13441344 @ptrCast([*]u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,
13451345 );
1346 self.trailer_flags.set(trailers_start, name, value);
1346 self.trailer_flags.set(trailers_start, field, value);
13471347 }
13481348
13491349 /// 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 {
13511351 const trailer_flags = TrailerFlags.init(trailers);
13521352 const bytes = try allocator.alignedAlloc(u8, @alignOf(FnProto), sizeInBytes(
13531353 required.params_len,
......@@ -1376,7 +1376,7 @@ pub const Node = struct {
13761376 pub fn iterate(self: *const FnProto, index: usize) ?*Node {
13771377 var i = index;
13781378
1379 if (self.getTrailer("lib_name")) |lib_name| {
1379 if (self.getTrailer(.lib_name)) |lib_name| {
13801380 if (i < 1) return lib_name;
13811381 i -= 1;
13821382 }
......@@ -1394,12 +1394,12 @@ pub const Node = struct {
13941394 }
13951395 i -= params_len;
13961396
1397 if (self.getTrailer("align_expr")) |align_expr| {
1397 if (self.getTrailer(.align_expr)) |align_expr| {
13981398 if (i < 1) return align_expr;
13991399 i -= 1;
14001400 }
14011401
1402 if (self.getTrailer("section_expr")) |section_expr| {
1402 if (self.getTrailer(.section_expr)) |section_expr| {
14031403 if (i < 1) return section_expr;
14041404 i -= 1;
14051405 }
......@@ -1421,9 +1421,9 @@ pub const Node = struct {
14211421 }
14221422
14231423 pub fn firstToken(self: *const FnProto) TokenIndex {
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;
1426 assert(self.getTrailer("lib_name") == null);
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;
1426 assert(self.getTrailer(.lib_name) == null);
14271427 return self.fn_token;
14281428 }
14291429
......@@ -2673,24 +2673,24 @@ pub const Node = struct {
26732673 };
26742674
26752675 pub fn getRHS(self: *const ControlFlowExpression) ?*Node {
2676 return self.getTrailer("rhs");
2676 return self.getTrailer(.rhs);
26772677 }
26782678
26792679 pub fn getLabel(self: *const ControlFlowExpression) ?TokenIndex {
2680 return self.getTrailer("label");
2680 return self.getTrailer(.label);
26812681 }
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) {
26842684 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);
26862686 }
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 {
26892689 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);
26912691 }
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 {
26942694 const trailer_flags = TrailerFlags.init(trailers);
26952695 const bytes = try allocator.alignedAlloc(u8, @alignOf(ControlFlowExpression), sizeInBytes(trailer_flags));
26962696 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
232232 .FnProto => {
233233 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| {
238238 try renderExpression(allocator, stream, tree, indent, start_col, decl, .Space);
239239 try renderExpression(allocator, stream, tree, indent, start_col, body_node, space);
240240 } else {
......@@ -257,7 +257,7 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr
257257 .VarDecl => {
258258 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);
261261 try renderVarDecl(allocator, stream, tree, indent, start_col, var_decl);
262262 },
263263
......@@ -1520,23 +1520,23 @@ fn renderExpression(
15201520 .FnProto => {
15211521 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| {
15241524 const visib_token = tree.token_ids[visib_token_index];
15251525 assert(visib_token == .Keyword_pub or visib_token == .Keyword_export);
15261526
15271527 try renderToken(tree, stream, visib_token_index, indent, start_col, Space.Space); // pub
15281528 }
15291529
1530 if (fn_proto.getTrailer("extern_export_inline_token")) |extern_export_inline_token| {
1531 if (fn_proto.getTrailer("is_extern_prototype") == null)
1530 if (fn_proto.getTrailer(.extern_export_inline_token)) |extern_export_inline_token| {
1531 if (fn_proto.getTrailer(.is_extern_prototype) == null)
15321532 try renderToken(tree, stream, extern_export_inline_token, indent, start_col, Space.Space); // extern/export/inline
15331533 }
15341534
1535 if (fn_proto.getTrailer("lib_name")) |lib_name| {
1535 if (fn_proto.getTrailer(.lib_name)) |lib_name| {
15361536 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space);
15371537 }
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: {
15401540 try renderToken(tree, stream, fn_proto.fn_token, indent, start_col, Space.Space); // fn
15411541 try renderToken(tree, stream, name_token, indent, start_col, Space.None); // name
15421542 break :blk tree.nextToken(name_token);
......@@ -1549,11 +1549,11 @@ fn renderExpression(
15491549 const rparen = tree.prevToken(
15501550 // the first token for the annotation expressions is the left
15511551 // 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|
15531553 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|
15551555 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|
15571557 tree.prevToken(tree.prevToken(callconv_expr.firstToken()))
15581558 else switch (fn_proto.return_type) {
15591559 .Explicit => |node| node.firstToken(),
......@@ -1574,12 +1574,12 @@ fn renderExpression(
15741574 for (fn_proto.params()) |param_decl, i| {
15751575 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) {
15781578 const comma = tree.nextToken(param_decl.lastToken());
15791579 try renderToken(tree, stream, comma, indent, start_col, Space.Space); // ,
15801580 }
15811581 }
1582 if (fn_proto.getTrailer("var_args_token")) |var_args_token| {
1582 if (fn_proto.getTrailer(.var_args_token)) |var_args_token| {
15831583 try renderToken(tree, stream, var_args_token, indent, start_col, Space.None);
15841584 }
15851585 } else {
......@@ -1591,7 +1591,7 @@ fn renderExpression(
15911591 try stream.writeByteNTimes(' ', new_indent);
15921592 try renderParamDecl(allocator, stream, tree, new_indent, start_col, param_decl, Space.Comma);
15931593 }
1594 if (fn_proto.getTrailer("var_args_token")) |var_args_token| {
1594 if (fn_proto.getTrailer(.var_args_token)) |var_args_token| {
15951595 try stream.writeByteNTimes(' ', new_indent);
15961596 try renderToken(tree, stream, var_args_token, new_indent, start_col, Space.Comma);
15971597 }
......@@ -1600,7 +1600,7 @@ fn renderExpression(
16001600
16011601 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| {
16041604 const align_rparen = tree.nextToken(align_expr.lastToken());
16051605 const align_lparen = tree.prevToken(align_expr.firstToken());
16061606 const align_kw = tree.prevToken(align_lparen);
......@@ -1611,7 +1611,7 @@ fn renderExpression(
16111611 try renderToken(tree, stream, align_rparen, indent, start_col, Space.Space); // )
16121612 }
16131613
1614 if (fn_proto.getTrailer("section_expr")) |section_expr| {
1614 if (fn_proto.getTrailer(.section_expr)) |section_expr| {
16151615 const section_rparen = tree.nextToken(section_expr.lastToken());
16161616 const section_lparen = tree.prevToken(section_expr.firstToken());
16171617 const section_kw = tree.prevToken(section_lparen);
......@@ -1622,7 +1622,7 @@ fn renderExpression(
16221622 try renderToken(tree, stream, section_rparen, indent, start_col, Space.Space); // )
16231623 }
16241624
1625 if (fn_proto.getTrailer("callconv_expr")) |callconv_expr| {
1625 if (fn_proto.getTrailer(.callconv_expr)) |callconv_expr| {
16261626 const callconv_rparen = tree.nextToken(callconv_expr.lastToken());
16271627 const callconv_lparen = tree.prevToken(callconv_expr.firstToken());
16281628 const callconv_kw = tree.prevToken(callconv_lparen);
......@@ -1631,9 +1631,9 @@ fn renderExpression(
16311631 try renderToken(tree, stream, callconv_lparen, indent, start_col, Space.None); // (
16321632 try renderExpression(allocator, stream, tree, indent, start_col, callconv_expr, Space.None);
16331633 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) {
16351635 try stream.writeAll("callconv(.C) ");
1636 } else if (fn_proto.getTrailer("is_async") != null) {
1636 } else if (fn_proto.getTrailer(.is_async) != null) {
16371637 try stream.writeAll("callconv(.Async) ");
16381638 }
16391639
......@@ -2221,69 +2221,69 @@ fn renderVarDecl(
22212221 start_col: *usize,
22222222 var_decl: *ast.Node.VarDecl,
22232223) (@TypeOf(stream).Error || Error)!void {
2224 if (var_decl.getTrailer("visib_token")) |visib_token| {
2224 if (var_decl.getTrailer(.visib_token)) |visib_token| {
22252225 try renderToken(tree, stream, visib_token, indent, start_col, Space.Space); // pub
22262226 }
22272227
2228 if (var_decl.getTrailer("extern_export_token")) |extern_export_token| {
2228 if (var_decl.getTrailer(.extern_export_token)) |extern_export_token| {
22292229 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| {
22322232 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space); // "lib"
22332233 }
22342234 }
22352235
2236 if (var_decl.getTrailer("comptime_token")) |comptime_token| {
2236 if (var_decl.getTrailer(.comptime_token)) |comptime_token| {
22372237 try renderToken(tree, stream, comptime_token, indent, start_col, Space.Space); // comptime
22382238 }
22392239
2240 if (var_decl.getTrailer("thread_local_token")) |thread_local_token| {
2240 if (var_decl.getTrailer(.thread_local_token)) |thread_local_token| {
22412241 try renderToken(tree, stream, thread_local_token, indent, start_col, Space.Space); // threadlocal
22422242 }
22432243 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 and
2246 (var_decl.getTrailer("align_node") != null or
2247 var_decl.getTrailer("section_node") != null or
2248 var_decl.getTrailer("init_node") != null))
2245 const name_space = if (var_decl.getTrailer(.type_node) == null and
2246 (var_decl.getTrailer(.align_node) != null or
2247 var_decl.getTrailer(.section_node) != null or
2248 var_decl.getTrailer(.init_node) != null))
22492249 Space.Space
22502250 else
22512251 Space.None;
22522252 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| {
22552255 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 or
2257 var_decl.getTrailer("section_node") != null or
2258 var_decl.getTrailer("init_node") != null) Space.Space else Space.None;
2256 const s = if (var_decl.getTrailer(.align_node) != null or
2257 var_decl.getTrailer(.section_node) != null or
2258 var_decl.getTrailer(.init_node) != null) Space.Space else Space.None;
22592259 try renderExpression(allocator, stream, tree, indent, start_col, type_node, s);
22602260 }
22612261
2262 if (var_decl.getTrailer("align_node")) |align_node| {
2262 if (var_decl.getTrailer(.align_node)) |align_node| {
22632263 const lparen = tree.prevToken(align_node.firstToken());
22642264 const align_kw = tree.prevToken(lparen);
22652265 const rparen = tree.nextToken(align_node.lastToken());
22662266 try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align
22672267 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (
22682268 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;
22702270 try renderToken(tree, stream, rparen, indent, start_col, s); // )
22712271 }
22722272
2273 if (var_decl.getTrailer("section_node")) |section_node| {
2273 if (var_decl.getTrailer(.section_node)) |section_node| {
22742274 const lparen = tree.prevToken(section_node.firstToken());
22752275 const section_kw = tree.prevToken(lparen);
22762276 const rparen = tree.nextToken(section_node.lastToken());
22772277 try renderToken(tree, stream, section_kw, indent, start_col, Space.None); // linksection
22782278 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (
22792279 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;
22812281 try renderToken(tree, stream, rparen, indent, start_col, s); // )
22822282 }
22832283
2284 if (var_decl.getTrailer("init_node")) |init_node| {
2284 if (var_decl.getTrailer(.init_node)) |init_node| {
22852285 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); // =
22872287 try renderExpression(allocator, stream, tree, indent, start_col, init_node, Space.None);
22882288 }
22892289